diff options
author | Sudheendra K Srivathsa <sudheendraks@in.ibm.com> | 2016-08-03 06:25:00 -0400 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-08-25 14:34:52 -0400 |
commit | 40da72e30f4cc45dcacff9c8c223e682a69ee4a5 (patch) | |
tree | 7d84703d225621912558eaf87fe06b8b6a39cfdc /src/import/chips | |
parent | 415947b1acb37d65b4c9ffe0730fa8080fba3095 (diff) | |
download | talos-hostboot-40da72e30f4cc45dcacff9c8c223e682a69ee4a5.tar.gz talos-hostboot-40da72e30f4cc45dcacff9c8c223e682a69ee4a5.zip |
p9_setup_evid/p9_avsbus_voltage support for configurable buses/MVPD access
Change-Id: Ib14cced823da65799c9018e95d3f67383838f27c
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/27818
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Reviewed-by: Andres A. Lugo-Reyes <aalugore@us.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/27820
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips')
5 files changed, 38 insertions, 24 deletions
diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_avsbus_lib.C b/src/import/chips/p9/procedures/hwp/lib/p9_avsbus_lib.C index 29f0b2963..1175544a2 100644 --- a/src/import/chips/p9/procedures/hwp/lib/p9_avsbus_lib.C +++ b/src/import/chips/p9/procedures/hwp/lib/p9_avsbus_lib.C @@ -82,7 +82,7 @@ avsCRCcalc(const uint32_t i_data) fapi2::ReturnCode avsInitExtVoltageControl(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, - const p9avslib::avsBusNum i_avsBusNum, + const uint8_t i_avsBusNum, const uint8_t i_o2sBridgeNum) { diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_avsbus_lib.H b/src/import/chips/p9/procedures/hwp/lib/p9_avsbus_lib.H index 7c5a5b8fc..085b71d36 100644 --- a/src/import/chips/p9/procedures/hwp/lib/p9_avsbus_lib.H +++ b/src/import/chips/p9/procedures/hwp/lib/p9_avsbus_lib.H @@ -176,7 +176,7 @@ uint32_t avsCRCcalc(uint32_t i_data); fapi2::ReturnCode avsInitExtVoltageControl(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, - const p9avslib::avsBusNum i_avsBusNum, + const uint8_t i_avsBusNum, const uint8_t i_o2sBridgeNum); diff --git a/src/import/chips/p9/procedures/hwp/lib/p9_pstates.h b/src/import/chips/p9/procedures/hwp/lib/p9_pstates.h index 062ca2a23..27d8e771b 100644 --- a/src/import/chips/p9/procedures/hwp/lib/p9_pstates.h +++ b/src/import/chips/p9/procedures/hwp/lib/p9_pstates.h @@ -126,10 +126,11 @@ typedef uint16_t VidAVS; /// VPD #V Operating Points #define VPD_PV_POINTS 4 #define VPD_PV_ORDER_STR {"PowerSave", "Nominal ", "Turbo ", "UltraTurbo"} -#define POWERSAVE 0 -#define NOMINAL 1 +#define POWERSAVE 1 +#define NOMINAL 0 #define TURBO 2 #define ULTRA 3 +#define POWERBUS 4 #define VPD_PV_ORDER {POWERSAVE, NOMINAL, TURBO, ULTRA} /// IDDQ readings, diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.C b/src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.C index d2c3b0460..57b2c85f9 100644 --- a/src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.C +++ b/src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.C @@ -49,6 +49,7 @@ #include <p9_setup_evid.H> #include <p9_avsbus_lib.H> #include <p9_avsbus_scom.H> +#include <p9_pstate_parameter_block.H> enum P9_SETUP_EVID_CONSTANTS { @@ -288,6 +289,10 @@ p9_setup_evid(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, const // AVSBus configuration variables avsbus_attrs_t attrs; + AttributeList mvpd_attrs; + uint32_t attr_mvpd_data[PV_D][PV_W]; + uint32_t valid_pdv_points; + uint8_t present_chiplets; // Read attribute - FAPI_TRY(avsInitAttributes(i_target, &attrs, i_action)); @@ -297,47 +302,54 @@ p9_setup_evid(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target, const { // Initialize the buses FAPI_TRY(avsInitExtVoltageControl(i_target, - p9avslib::AVSBUSVDD, BRIDGE_NUMBER), + attrs.vdd_bus_num, BRIDGE_NUMBER), "Initializing avsBus VDD, bridge %d", BRIDGE_NUMBER); FAPI_TRY(avsInitExtVoltageControl(i_target, - p9avslib::AVSBUSVDN, BRIDGE_NUMBER), + attrs.vdn_bus_num, BRIDGE_NUMBER), "Initializing avsBus VDN, bridge %d", BRIDGE_NUMBER); - // Should not be needed, as same AVSBus and different rails - // should share same initialization information - //FAPI_TRY(avsInitExtVoltageControl(i_target, - // p9avslib::AVSBUSVCS, BRIDGE_NUMBER), - // "Initializing avsBus VCS, bridge %d", BRIDGE_NUMBER); + // Get #V data from MVPD to program VDD/VDN and VCS voltage values + FAPI_TRY(proc_get_mvpd_data(i_target, &mvpd_attrs, attr_mvpd_data, &valid_pdv_points, &present_chiplets)); - // Set Boot VDD Voltage + // Set Boot VDD Voltage - PowerSave Voltage from the MVPD data FAPI_TRY(avsVoltageWrite(i_target, attrs.vdd_bus_num, BRIDGE_NUMBER, attrs.vdd_rail_select, - (uint32_t)attrs.vdd_voltage_mv), + attr_mvpd_data[POWERSAVE][1]), "Setting VDD voltage via AVSBus %d, Bridge %d", attrs.vdd_bus_num, BRIDGE_NUMBER); - // Set Boot VDN Voltage + // Set Boot VDN Voltage - PowerBus Voltage from the MVPD data FAPI_TRY(avsVoltageWrite(i_target, attrs.vdn_bus_num, BRIDGE_NUMBER, attrs.vdn_rail_select, - (uint32_t)attrs.vdn_voltage_mv), + attr_mvpd_data[POWERBUS][1]), "Setting VDN voltage via AVSBus %d, Bridge %d", attrs.vdn_bus_num, BRIDGE_NUMBER); - // Set Boot VCS Voltage - FAPI_TRY(avsVoltageWrite(i_target, - attrs.vcs_bus_num, - BRIDGE_NUMBER, - attrs.vcs_rail_select, - (uint32_t)attrs.vcs_voltage_mv), - "Setting VCS voltage via AVSBus %d, Bridge %d", - attrs.vcs_bus_num, - BRIDGE_NUMBER); + // Set Boot VCS Voltage - UltraTurbo Voltage from the MVPD data + if(attrs.vcs_bus_num == 0xFF) + { + + FAPI_INF("VCS rail is not connected to AVSBus. Skipping VCS programming"); + + } + else + { + + FAPI_TRY(avsVoltageWrite(i_target, + attrs.vcs_bus_num, + BRIDGE_NUMBER, + attrs.vcs_rail_select, + attr_mvpd_data[ULTRA][1]), + "Setting VCS voltage via AVSBus %d, Bridge %d", + attrs.vcs_bus_num, + BRIDGE_NUMBER); + } } fapi_try_exit: diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.mk b/src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.mk index e9519c54f..fea2d2202 100644 --- a/src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.mk +++ b/src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.mk @@ -26,4 +26,5 @@ PROCEDURE=p9_setup_evid $(call ADD_MODULE_SRCDIR,$(PROCEDURE),$(PROJECT_ROOT)/chips/p9/procedures/hwp/lib) $(call ADD_MODULE_INCDIR,$(PROCEDURE),$(PROJECT_ROOT)/chips/p9/procedures/hwp/pm/include/registers) OBJS+=p9_avsbus_lib.o +OBJS+=p9_pstate_parameter_block.o $(call BUILD_PROCEDURE) |