summaryrefslogtreecommitdiffstats
path: root/import/chips/p9/procedures/hwp
diff options
context:
space:
mode:
Diffstat (limited to 'import/chips/p9/procedures/hwp')
-rw-r--r--import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H10
-rw-r--r--import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_occ_sram.H5
-rw-r--r--import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H2
-rw-r--r--import/chips/p9/procedures/hwp/lib/p9_pm_hcd_flags.h5
-rw-r--r--import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h47
-rw-r--r--import/chips/p9/procedures/hwp/lib/p9_pstates_common.h15
-rw-r--r--import/chips/p9/procedures/hwp/lib/p9_pstates_occ.h4
-rw-r--r--import/chips/p9/procedures/hwp/lib/p9_pstates_pgpe.h4
8 files changed, 88 insertions, 4 deletions
diff --git a/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H b/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H
index 2e6f5c5a..968d8184 100644
--- a/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H
+++ b/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_base.H
@@ -46,7 +46,7 @@
/// Image Magic Numbers
-HCD_CONST64(CPMR_MAGIC_NUMBER, ULL(0x43504d525f312e30)) // CPMR_1.0
+HCD_CONST64(CPMR_MAGIC_NUMBER, ULL(0x43504d525f322e30)) // CPMR_2.0
HCD_CONST64(CME_MAGIC_NUMBER , ULL(0x434d455f5f312e30)) // CME__1.0
HCD_CONST64(QPMR_MAGIC_NUMBER, ULL(0x51504d525f312e30)) // QPMR_1.0
@@ -434,6 +434,7 @@ HCD_CONST(CME_QM_FLAG_SYS_WOF_ENABLE, 0x1000)
HCD_CONST(CME_QM_FLAG_SYS_DYN_FMIN_ENABLE, 0x0800)
HCD_CONST(CME_QM_FLAG_SYS_DYN_FMAX_ENABLE, 0x0400)
HCD_CONST(CME_QM_FLAG_SYS_JUMP_PROTECT, 0x0200)
+HCD_CONST(CME_QM_FLAG_PER_QUAD_VDM_ENABLE, 0x0100)
HCD_CONST(CME_QM_FLAG_PSTATE_PHANTOM_HALT_EN, 0x0001)
/// CME Hcode
@@ -460,6 +461,13 @@ HCD_CONST(CME_QUAD_PSTATE_SIZE, HALF_KB)
HCD_CONST(CME_REGION_SIZE, (64 * ONE_KB))
+
+// HOMER compatibility
+
+HCD_CONST(STOP_API_CPU_SAVE_VER, 0x02)
+HCD_CONST(SELF_SAVE_RESTORE_VER, 0x02)
+HCD_CONST(SMF_SUPPORT_SIGNATURE_OFFSET, 0x1300)
+HCD_CONST(SMF_SELF_SIGNATURE, (0x5f534d46))
// Debug
HCD_CONST(CPMR_TRACE_REGION_OFFSET, (512 * ONE_KB))
diff --git a/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_occ_sram.H b/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_occ_sram.H
index 8a4fc997..844bc715 100644
--- a/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_occ_sram.H
+++ b/import/chips/p9/procedures/hwp/lib/p9_hcd_memmap_occ_sram.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HCODE Project */
/* */
-/* COPYRIGHT 2015,2018 */
+/* COPYRIGHT 2015,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -76,6 +76,7 @@ HCD_CONST(OCC_SRAM_OCC_REGION_SIZE, (512 * ONE_KB))
HCD_CONST(OCC_SRAM_BEFORE_PGPE_REGION_SIZE_TOTAL,
(OCC_SRAM_IPC_REGION_SIZE + OCC_SRAM_GPE0_REGION_SIZE + OCC_SRAM_GPE1_REGION_SIZE))
+
//--------------------------------------------------------------------------------------
/// PGPE Base
@@ -192,5 +193,7 @@ HCD_CONST( OCC_SRAM_PGPE_TRACE_START,
(OCC_SRAM_PGPE_HEADER_ADDR + PGPE_HEADER_SIZE));
+HCD_CONST(OCC_SRAM_SHARED_DATA_BASE_ADDR,
+ (OCC_SRAM_PGPE_BASE_ADDR + OCC_SRAM_PGPE_REGION_SIZE - PGPE_OCC_SHARED_SRAM_SIZE))
#endif /* __P9_HCD_MEMMAP_OCC_SRAM_H__ */
diff --git a/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H b/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H
index eeae5161..69acacb0 100644
--- a/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H
+++ b/import/chips/p9/procedures/hwp/lib/p9_hcode_image_defines.H
@@ -374,8 +374,10 @@ HCD_HDR_UINT32(g_wof_table_length, 0 ); // WOF Table length
HCD_HDR_UINT32(g_pgpe_core_throttle_assert_cnt, 0 ); // Core throttle assert count
HCD_HDR_UINT32(g_pgpe_core_throttle_deassert_cnt, 0 ); // Core throttle de-aasert count
HCD_HDR_UINT32(g_pgpe_aux_controls, 0 ); // Auxiliary Controls
+HCD_HDR_UINT32(g_pgpe_optrace_pointer, 0 ); // Operational Trace OCC SRAM Pointer
HCD_HDR_UINT32(g_pgpe_doptrace_offset, 0 ); // Deep Operational Trace Main Memory Buffer Offset
HCD_HDR_UINT32(g_pgpe_doptrace_length, 0 ); // Deep Opeartional Trace Main Memory Buffer Length
+HCD_HDR_UINT32(g_pgpe_wof_values_address, 0 ); // SRAM address where PGPE Produced WOF values are located
#ifdef __ASSEMBLER__
.endm
#else
diff --git a/import/chips/p9/procedures/hwp/lib/p9_pm_hcd_flags.h b/import/chips/p9/procedures/hwp/lib/p9_pm_hcd_flags.h
index 13509e17..1b940919 100644
--- a/import/chips/p9/procedures/hwp/lib/p9_pm_hcd_flags.h
+++ b/import/chips/p9/procedures/hwp/lib/p9_pm_hcd_flags.h
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HCODE Project */
/* */
-/* COPYRIGHT 2015,2018 */
+/* COPYRIGHT 2015,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -65,6 +65,7 @@ enum PM_GPE_OCCFLG_DEFS
PIB_I2C_MASTER_ENGINE_2_LOCK_BIT1 = 19, //BIT0 ored BIT1 gives the field
PIB_I2C_MASTER_ENGINE_3_LOCK_BIT0 = 20, //BIT0 ored BIT1 gives the field
PIB_I2C_MASTER_ENGINE_3_LOCK_BIT1 = 21, //BIT0 ored BIT1 gives the field
+ PGPE_OCS_DIRTY = 26,
PGPE_PM_RESET_SUPPRESS = 27,
WOF_HCODE_MODE_BIT0 = 28,
WOF_HCODE_MODE_BIT1 = 29,
@@ -77,6 +78,7 @@ enum PM_GPE_OCCFLG2_DEFS
{
OCCFLG2_DEAD_CORES_START = 0,
OCCFLG2_DEAD_CORES_LENGTH = 24,
+ OCCFLG2_ENABLE_PRODUCE_WOF_VALUES = 24,
OCCFLG2_PGPE_HCODE_FIT_ERR_INJ = 27,
PM_CALLOUT_ACTIVE = 28,
STOP_RECOVERY_TRIGGER_ENABLE = 29,
@@ -127,6 +129,7 @@ enum PM_CME_FLAGS_DEFS
CME_FLAGS_DROOP_SUSPEND_ENTRY = 14,
CME_FLAGS_SAFE_MODE = 16,
CME_FLAGS_PSTATES_SUSPENDED = 17,
+ CME_FLAGS_DB0_COMM_RECV_STARVATION_CNT_ENABLED = 18,
CME_FLAGS_SPWU_CHECK_ENABLE = 22,
CME_FLAGS_BLOCK_ENTRY_STOP11 = 23,
CME_FLAGS_PSTATES_ENABLED = 24,
diff --git a/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h b/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h
index 1958a801..4c7bef05 100644
--- a/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h
+++ b/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h
@@ -35,6 +35,7 @@
#define __P9_PSTATES_CME_H__
#include <p9_pstates_common.h>
+#include <p9_hcd_memmap_base.H>
/// @}
@@ -161,6 +162,23 @@ typedef struct
uint16_t r_core_header;
} resistance_entry_t;
+typedef struct __attribute__((packed))
+{
+ uint16_t r_package_common;
+ uint16_t r_quad;
+ uint16_t r_core;
+ uint16_t r_quad_header;
+ uint16_t r_core_header;
+ uint8_t r_vdm_cal_version;
+ uint8_t r_avg_min_scale_fact;
+ uint16_t r_undervolt_vmin_floor_limit;
+ uint8_t r_min_bin_protect_pc_adder;
+ uint8_t r_min_bin_protect_bin_adder;
+ uint8_t r_undervolt_allowed;
+ uint8_t reserve[10];
+}
+resistance_entry_per_quad_t;
+
typedef struct
{
poundw_entry_t poundw[NUM_OP_POINTS];
@@ -178,6 +196,35 @@ typedef struct
PoundW_data vpd_w_data;
} LP_VDMParmBlock;
+typedef struct __attribute__((packed))
+{
+ uint16_t ivdd_tdp_ac_current_10ma;
+ uint16_t ivdd_tdp_dc_current_10ma;
+ uint8_t vdm_overvolt_small_thresholds;
+ uint8_t vdm_large_extreme_thresholds;
+ uint8_t vdm_normal_freq_drop; // N_S and N_L Drop
+ uint8_t vdm_normal_freq_return; // L_S and S_N Return
+ uint8_t vdm_vid_compare_per_quad[MAX_QUADS_PER_CHIP];
+ uint8_t vdm_cal_state_avg_min_per_quad[MAX_QUADS_PER_CHIP];
+ uint16_t vdm_cal_state_vmin;
+ uint8_t vdm_cal_state_avg_core_dts;
+ uint16_t vdm_cal_state_avg_core_current;
+ uint16_t vdm_spare;
+}
+poundw_entry_per_quad_t;
+
+typedef struct __attribute__((packed))
+{
+ poundw_entry_per_quad_t poundw[NUM_OP_POINTS];
+ resistance_entry_per_quad_t resistance_data;
+}
+PoundW_data_per_quad;
+
+
+typedef struct
+{
+ PoundW_data_per_quad vpd_w_data;
+} LP_VDMParmBlock_PerQuad;
/// The layout of the data created by the Pstate table creation firmware for
/// comsumption by the Pstate GPE. This data will reside in the Quad
diff --git a/import/chips/p9/procedures/hwp/lib/p9_pstates_common.h b/import/chips/p9/procedures/hwp/lib/p9_pstates_common.h
index f97ea82f..5d3c1dbe 100644
--- a/import/chips/p9/procedures/hwp/lib/p9_pstates_common.h
+++ b/import/chips/p9/procedures/hwp/lib/p9_pstates_common.h
@@ -240,6 +240,21 @@ typedef struct
} SysPowerDistParms;
+/// AVSBUS Topology
+///
+/// AVS Bus and Rail numbers for VDD, VDN, VCS, and VIO
+///
+typedef struct
+{
+ uint8_t vdd_avsbus_num;
+ uint8_t vdd_avsbus_rail;
+ uint8_t vdn_avsbus_num;
+ uint8_t vdn_avsbus_rail;
+ uint8_t vcs_avsbus_num;
+ uint8_t vcs_avsbus_rail;
+ uint8_t vio_avsbus_num;
+ uint8_t vio_avsbus_rail;
+} AvsBusTopology_t;
//
// WOF Voltage, Frequency Ratio Tables
diff --git a/import/chips/p9/procedures/hwp/lib/p9_pstates_occ.h b/import/chips/p9/procedures/hwp/lib/p9_pstates_occ.h
index 086776e3..053f6d95 100644
--- a/import/chips/p9/procedures/hwp/lib/p9_pstates_occ.h
+++ b/import/chips/p9/procedures/hwp/lib/p9_pstates_occ.h
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HCODE Project */
/* */
-/* COPYRIGHT 2015,2018 */
+/* COPYRIGHT 2015,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -205,6 +205,8 @@ typedef struct
// AC tdp vdd nominal
uint16_t lac_tdp_vdd_nominal_10ma;
+ AvsBusTopology_t avs_bus_topology;
+
} __attribute__((aligned(128))) OCCPstateParmBlock;
#ifdef __cplusplus
diff --git a/import/chips/p9/procedures/hwp/lib/p9_pstates_pgpe.h b/import/chips/p9/procedures/hwp/lib/p9_pstates_pgpe.h
index ebddeaed..93972404 100644
--- a/import/chips/p9/procedures/hwp/lib/p9_pstates_pgpe.h
+++ b/import/chips/p9/procedures/hwp/lib/p9_pstates_pgpe.h
@@ -350,6 +350,10 @@ typedef struct
//Jump-value slopes
int16_t PsVDMJumpSlopes[VPD_NUM_SLOPES_REGION][NUM_JUMP_VALUES];
+ uint8_t pad2[2];
+
+ //AvsBusTopology
+ AvsBusTopology_t avs_bus_topology;
// @todo DPLL Droop Settings. These need communication to SGPE for STOP
OpenPOWER on IntegriCloud