summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/dram_initialization
diff options
context:
space:
mode:
authorMatt Ploetz <maploetz@us.ibm.com>2014-01-31 13:25:09 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-02-04 14:22:51 -0600
commit2e275ed1bdae42e16cfcf7dd7720e3c2d418b8dc (patch)
tree1db963937acad07c9fa916dbdc5758d9c799097c /src/usr/hwpf/hwp/dram_initialization
parent7cc368715011b180c9954269846e4ce8d0267aea (diff)
downloadtalos-hostboot-2e275ed1bdae42e16cfcf7dd7720e3c2d418b8dc.tar.gz
talos-hostboot-2e275ed1bdae42e16cfcf7dd7720e3c2d418b8dc.zip
INITPROC: Hostboot - SW244656 Thermal Sensor Reading Control
Change-Id: I784be7f2698a1932d6d2acf720263c43a395e281 CQ: SW244656 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/8484 Tested-by: Jenkins Server Reviewed-by: MIKE J. JONES <mjjones@us.ibm.com> Reviewed-by: Brian H. Horton <brianh@linux.ibm.com> Reviewed-by: STEPHEN M. CPREK <smcprek@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/dram_initialization')
-rw-r--r--src/usr/hwpf/hwp/dram_initialization/mss_thermal_init/mss_thermal_init.C25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/usr/hwpf/hwp/dram_initialization/mss_thermal_init/mss_thermal_init.C b/src/usr/hwpf/hwp/dram_initialization/mss_thermal_init/mss_thermal_init.C
index 0f9205648..790415c95 100644
--- a/src/usr/hwpf/hwp/dram_initialization/mss_thermal_init/mss_thermal_init.C
+++ b/src/usr/hwpf/hwp/dram_initialization/mss_thermal_init/mss_thermal_init.C
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: mss_thermal_init.C,v 1.12 2014/01/06 19:49:16 pardeik Exp $
+// $Id: mss_thermal_init.C,v 1.13 2014/01/30 22:00:51 pardeik Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/centaur/working/procedures/ipl/fapi/mss_thermal_init.C,v $
//------------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2011
@@ -47,6 +47,8 @@
//------------------------------------------------------------------------------
// Version:| Author: | Date: | Comment:
//---------|----------|---------|-----------------------------------------------
+// 1.13 | pardeik |30-JAN-14| workaround for SW243504 (enable sensors on master
+// | i2c bus if ATTR_MRW_CDIMM_MASTER_I2C_TEMP_SENSOR_ENABLE=ON)
// 1.12 | pardeik |06-JAN-14| enable writing of safemode IPL throttles
// 1.11 | pardeik |20-DEC-13| Only get sensor map attributes if a custom dimm
// 1.10 | pardeik |21-NOV-13| added support for dimm temperature sensor attributes
@@ -168,6 +170,7 @@ fapi::ReturnCode mss_thermal_init(const fapi::Target & i_target)
uint8_t l_data_scac_addrmap_offset;
uint8_t l_i2c_bus_encode;
uint8_t l_sensor_map_mask;
+ uint8_t l_master_i2c_temp_sensor_enable;
//********************************************
// Centaur internal temperature polling setup
@@ -243,13 +246,16 @@ fapi::ReturnCode mss_thermal_init(const fapi::Target & i_target)
FAPI_INF("ATTR_EFF_CUSTOM_DIMM: %d", l_custom_dimm[l_mba_pos]);
}
- // Get attributes for dimm temperature sensor mapping for only a custom dimm so we don't get an error
+ // Get attributes for dimm temperature sensor mapping for only a custom dimm so we don't get an error
+ // Get attritute for custom dimms for enablement on the master i2c bus
if ((l_custom_dimm[0] == fapi::ENUM_ATTR_EFF_CUSTOM_DIMM_YES) || (l_custom_dimm[1] == fapi::ENUM_ATTR_EFF_CUSTOM_DIMM_YES))
{
l_rc = FAPI_ATTR_GET(ATTR_VPD_CDIMM_SENSOR_MAP_PRIMARY, &i_target, l_cdimm_sensor_map_primary);
if (l_rc) return l_rc;
l_rc = FAPI_ATTR_GET(ATTR_VPD_CDIMM_SENSOR_MAP_SECONDARY, &i_target, l_cdimm_sensor_map_secondary);
if (l_rc) return l_rc;
+ l_rc = FAPI_ATTR_GET(ATTR_MRW_CDIMM_MASTER_I2C_TEMP_SENSOR_ENABLE, NULL, l_master_i2c_temp_sensor_enable);
+ if (l_rc) return l_rc;
}
// Configure Centaur Thermal Cache
@@ -413,7 +419,20 @@ fapi::ReturnCode mss_thermal_init(const fapi::Target & i_target)
}
if ((l_cdimm_sensor_map & l_sensor_map_mask) != 0)
{
- l_ecmd_rc |= l_data_scac_enable.setBit(l_cdimm_number_dimm_temp_sensors);
+ // Only enable the sensor for custom dimms based on the attribute
+ // Put in for i2c multimaster issue SW243504
+ if ( (k==0)
+ &&
+ (l_master_i2c_temp_sensor_enable ==
+ ENUM_ATTR_MRW_CDIMM_MASTER_I2C_TEMP_SENSOR_ENABLE_OFF)
+ )
+ {
+ // do nothing here - do not enable the sensor
+ }
+ else
+ {
+ l_ecmd_rc |= l_data_scac_enable.setBit(l_cdimm_number_dimm_temp_sensors);
+ }
l_i2c_address_map = i + l_i2c_bus_encode;
l_data_scac_addrmap_offset = l_cdimm_number_dimm_temp_sensors * 4;
l_ecmd_rc |= l_data_scac_addrmap.insert(l_i2c_address_map, l_data_scac_addrmap_offset , 4, 4);
OpenPOWER on IntegriCloud