summaryrefslogtreecommitdiffstats
path: root/src/import/chips
diff options
context:
space:
mode:
authorSudheendra K Srivathsa <sudheendraks@in.ibm.com>2016-08-03 06:25:00 -0400
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-08-25 14:34:52 -0400
commit40da72e30f4cc45dcacff9c8c223e682a69ee4a5 (patch)
tree7d84703d225621912558eaf87fe06b8b6a39cfdc /src/import/chips
parent415947b1acb37d65b4c9ffe0730fa8080fba3095 (diff)
downloadtalos-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')
-rw-r--r--src/import/chips/p9/procedures/hwp/lib/p9_avsbus_lib.C2
-rw-r--r--src/import/chips/p9/procedures/hwp/lib/p9_avsbus_lib.H2
-rw-r--r--src/import/chips/p9/procedures/hwp/lib/p9_pstates.h5
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.C52
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_setup_evid.mk1
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)
OpenPOWER on IntegriCloud