summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h
diff options
context:
space:
mode:
authorPrasad Bg Ranganath <prasadbgr@in.ibm.com>2017-05-02 13:12:59 -0500
committerChristian R. Geddes <crgeddes@us.ibm.com>2017-06-01 06:44:20 -0400
commit2309514197db436f8bb6bd0615834c3611c9f89b (patch)
treeb319ea474c5e108a99a34388949dc7cbf2e261ac /src/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h
parent7b062f2d2684bbe5e84ffd529d7a789380238405 (diff)
downloadtalos-hostboot-2309514197db436f8bb6bd0615834c3611c9f89b.tar.gz
talos-hostboot-2309514197db436f8bb6bd0615834c3611c9f89b.zip
p9_pstate_parameter_block: Pound W enhancement for VID Compare
- Add changes to Compare VID slopes support - Added changes for threshold slopes Change-Id: I6ce9f7630cf8f8bbb19a2914da43c24308c3c7fd RTC:172523 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39955 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: CHRISTOPHER M. RIEDL <cmriedl@us.ibm.com> Reviewed-by: Juan R. Medina <jrmedina@us.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39961 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h')
-rw-r--r--src/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h65
1 files changed, 26 insertions, 39 deletions
diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h b/src/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h
index 2b162e417..274ad92de 100644
--- a/src/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h
+++ b/src/import/chips/p9/procedures/hwp/lib/p9_pstates_cmeqm.h
@@ -168,11 +168,12 @@ typedef struct
{
uint16_t ivdd_tdp_ac_current_10ma;
uint16_t ivdd_tdp_dc_current_10ma;
- uint8_t vdm_overvold_small_thresholds;
+ uint8_t vdm_overvolt_small_thresholds;
uint8_t vdm_large_extreme_thresholds;
- uint8_t vdm_small_frequency_drop;
- uint8_t vdm_large_frequency_drop;
- uint16_t vdm_spare;
+ uint8_t vdm_small_large_normal_freq;
+ uint8_t vdm_large_small_normal_freq;
+ uint8_t vdm_vid_compare_ivid;
+ uint8_t vdm_spare;
} poundw_entry_t;
typedef struct
@@ -186,45 +187,18 @@ typedef struct
typedef struct
{
- poundw_entry_t poundw_nominal;
- poundw_entry_t poundw_powersave;
- poundw_entry_t poundw_turbo;
- poundw_entry_t poundw_ultraturbo;
+ poundw_entry_t poundw[NUM_OP_POINTS];
resistance_entry_t resistance_data;
uint64_t reserved1;
uint16_t reserved2;
} PoundW_data;
+
/// VDM/Droop Parameter Block
///
typedef struct
{
- uint8_t vid_compare_override_mv_enable;
- uint8_t vid_compare_override_mv[VPD_PV_POINTS];
- uint8_t vdm_response;
-
- // For the following *_enable fields, bits are defined to indicate
- // which of the respective *override* array entries are valid.
- // bit 0: UltraTurbo; bit 1: Turbo; bit 2: Nominal; bit 3: PowSave
- uint8_t droop_small_override_enable;
- uint8_t droop_large_override_enable;
- uint8_t droop_extreme_override_enable;
- uint8_t overvolt_override_enable;
- uint8_t fmin_override_khz_enable;
- uint8_t fmax_override_khz_enable;
-
- // The respecitve *_enable above indicate which index values are valid
- uint8_t droop_small_override[VPD_PV_POINTS];
- uint8_t droop_large_override[VPD_PV_POINTS];
- uint8_t droop_extreme_override[VPD_PV_POINTS];
- uint8_t overvolt_override[VPD_PV_POINTS];
- uint8_t fmin_override_khz[VPD_PV_POINTS];
- uint8_t fmax_override_khz[VPD_PV_POINTS];
-
- /// Pad structure to 8-byte alignment
- /// @todo pad once fully structure is complete.
- // uint8_t pad[1];
-
-} VDMParmBlock;
+ PoundW_data vpd_w_data;
+} LP_VDMParmBlock;
/// The layout of the data created by the Pstate table creation firmware for
@@ -278,6 +252,7 @@ typedef struct iVRMInfo
} IvrmParmBlock;
+typedef uint8_t CompareVIDPoints;
/// The layout of the data created by the Pstate table creation firmware for
/// comsumption by the CME Quad Manager. This data will reside in the Core
@@ -297,7 +272,7 @@ typedef struct
/// VPD operating points are stored without load-line correction. Frequencies
/// are in MHz, voltages are specified in units of 5mV, and currents are
/// in units of 500mA.
- VpdOperatingPoint operating_points[VPD_PV_POINTS];
+ VpdOperatingPoint operating_points[NUM_OP_POINTS];
/// Loadlines and Distribution values for the VDD rail
SysPowerDistParms vdd_sysparm;
@@ -308,7 +283,7 @@ typedef struct
/// in setting the external voltages. This is used to recompute the Vin voltage
/// based on the Global Actual Pstate .
/// Values in 0.5%
- VpdBias ext_biases[VPD_PV_POINTS];
+ VpdBias ext_biases[NUM_OP_POINTS];
/// Internal Biases
///
@@ -316,7 +291,7 @@ typedef struct
/// in setting the internal voltages (eg Vout to the iVRMs) as part of the
/// Local Actual Pstate.
/// Values in 0.5%
- VpdBias int_biases[VPD_PV_POINTS];
+ VpdBias int_biases[NUM_OP_POINTS];
/// IVRM Data
IvrmParmBlock ivrm;
@@ -325,11 +300,23 @@ typedef struct
ResonantClockingSetup resclk;
/// VDM Data
- VDMParmBlock vdm;
+ LP_VDMParmBlock vdm;
/// DPLL pstate 0 value
uint32_t dpll_pstate0_value;
+ // Biased Compare VID operating points
+ CompareVIDPoints vid_point_set[NUM_OP_POINTS];
+
+ // Biased Threshold operation points
+ int8_t threshold_set[NUM_OP_POINTS][NUM_THRESHOLD_POINTS];
+
+ //pstate-volt compare slopes
+ uint16_t PsVIDCompSlopes[VPD_NUM_SLOPES_REGION];
+
+ //pstate-volt threshold slopes
+ uint16_t PsVDMThreshSlopes[VPD_NUM_SLOPES_REGION][NUM_THRESHOLD_POINTS];
+
} LocalPstateParmBlock;
#ifdef __cplusplus
OpenPOWER on IntegriCloud