summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/usr/i2c/eepromddreasoncodes.H6
-rw-r--r--src/usr/devtree/HBconfig5
-rw-r--r--src/usr/hwpf/hwp/dmi_training/HBconfig3
-rwxr-xr-xsrc/usr/i2c/eepromdd.C87
-rw-r--r--src/usr/vpd/cvpd.C1
-rw-r--r--src/usr/vpd/mvpd.C1
6 files changed, 86 insertions, 17 deletions
diff --git a/src/include/usr/i2c/eepromddreasoncodes.H b/src/include/usr/i2c/eepromddreasoncodes.H
index 6b76a8842..2137f807d 100644
--- a/src/include/usr/i2c/eepromddreasoncodes.H
+++ b/src/include/usr/i2c/eepromddreasoncodes.H
@@ -5,7 +5,9 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* COPYRIGHT International Business Machines Corp. 2011,2014 */
+/* Contributors Listed Below - COPYRIGHT 2011,2014 */
+/* [+] International Business Machines Corp. */
+/* */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
@@ -67,7 +69,7 @@ enum eepromReasonCode
EEPROM_INVALID_DEVICE_TYPE = EEPROM_COMP_ID | 0x02,
EEPROM_ATTR_INFO_NOT_FOUND = EEPROM_COMP_ID | 0x03,
EEPROM_INVALID_CHIP = EEPROM_COMP_ID | 0x04,
- EEPROM_DIMM_I2C_MASTER_PATH_ERROR = EEPROM_COMP_ID | 0x05,
+ EEPROM_I2C_MASTER_PATH_ERROR = EEPROM_COMP_ID | 0x05,
EEPROM_TARGET_NULL = EEPROM_COMP_ID | 0x06,
EEPROM_INVALID_ADDR_OFFSET_SIZE = EEPROM_COMP_ID | 0x07,
EEPROM_OVERFLOW_ERROR = EEPROM_COMP_ID | 0x08,
diff --git a/src/usr/devtree/HBconfig b/src/usr/devtree/HBconfig
index 9b103c80a..3ce7d2c19 100644
--- a/src/usr/devtree/HBconfig
+++ b/src/usr/devtree/HBconfig
@@ -1,6 +1,7 @@
config DISABLE_HOSTBOOT_RUNTIME
- default y if !HAVE_MBVPD
+ default n
help
Disable the Hostboot Runtime (HBRT)
-
+# Was default y if !HAVE_MBVPD
+# Story 116907 Enable HBRT for OpenPower
diff --git a/src/usr/hwpf/hwp/dmi_training/HBconfig b/src/usr/hwpf/hwp/dmi_training/HBconfig
index 75f7cee6f..4464aa10e 100644
--- a/src/usr/hwpf/hwp/dmi_training/HBconfig
+++ b/src/usr/hwpf/hwp/dmi_training/HBconfig
@@ -1,5 +1,4 @@
config NO_DMI_EREPAIR
- default y if !HAVE_MBVPD
+ default n
help
Do not apply erepair information on the DMI bus during boot
-
diff --git a/src/usr/i2c/eepromdd.C b/src/usr/i2c/eepromdd.C
index 41297cfaf..d8c244af6 100755
--- a/src/usr/i2c/eepromdd.C
+++ b/src/usr/i2c/eepromdd.C
@@ -1001,6 +1001,25 @@ errlHndl_t eepromReadAttributes ( TARGETING::Target * i_target,
o_i2cInfo.devSize_KB = eepromData.maxMemorySizeKB;
o_i2cInfo.writeCycleTime = eepromData.writeCycleTime;
+ // @todo RTC:116428 - forcing the attribute data for now
+ // until we can pull it from the MRW
+ if( TARGETING::TYPE_MEMBUF ==
+ i_target->getAttr<TARGETING::ATTR_TYPE>() )
+ {
+ o_i2cInfo.port = 2;
+ o_i2cInfo.devAddr = 0xA0;
+ o_i2cInfo.engine = 1;
+ TARGETING::EntityPath epath(TARGETING::EntityPath::PATH_PHYSICAL);
+ epath.addLast(TARGETING::TYPE_SYS,0);
+ epath.addLast(TARGETING::TYPE_NODE,0);
+ epath.addLast(TARGETING::TYPE_PROC,0);
+ o_i2cInfo.i2cMasterPath = epath;
+ o_i2cInfo.writePageSize = 32;
+ o_i2cInfo.devSize_KB = 0x40;
+ o_i2cInfo.writeCycleTime = 20;
+ eepromData.byteAddrOffset = 2;
+ }
+
// Convert attribute info to eeprom_addr_size_t enum
if ( eepromData.byteAddrOffset == 0x2 )
{
@@ -1094,25 +1113,48 @@ errlHndl_t eepromGetI2CMasterTarget ( TARGETING::Target * i_target,
ERR_MRK"eepromGetI2CMasterTarget() - "
"i2cMasterPath attribute path doesn't exist!" );
+ // Compress the entity path
+ uint64_t l_epCompressed = 0;
+ for( uint32_t i = 0; i < i_i2cInfo.i2cMasterPath.size(); i++ )
+ {
+ // Path element: type:8 instance:8
+ l_epCompressed |=
+ i_i2cInfo.i2cMasterPath[i].type << (16*(3-i));
+ l_epCompressed |=
+ i_i2cInfo.i2cMasterPath[i].instance << ((16*(3-i))-8);
+
+ // Can only fit 4 path elements into 64 bits
+ if ( i == 3 )
+ {
+ break;
+ }
+ }
+
/*@
* @errortype
- * @reasoncode EEPROM_DIMM_I2C_MASTER_PATH_ERROR
+ * @reasoncode EEPROM_I2C_MASTER_PATH_ERROR
* @severity ERRORLOG::ERRL_SEV_UNRECOVERABLE
* @moduleid EEPROM_GETI2CMASTERTARGET
- * @userdata1 Attribute Chip Type Enum
- * @userdata2 HUID of target
- * @devdesc DIMM I2C master entity path doesn't exist.
+ * @userdata1[00:31] Attribute Chip Type Enum
+ * @userdata1[32:63] HUID of target
+ * @userdata2 Compressed Entity Path
+ * @devdesc I2C master entity path doesn't exist.
*/
err = new ERRORLOG::ErrlEntry(
ERRORLOG::ERRL_SEV_UNRECOVERABLE,
EEPROM_GETI2CMASTERTARGET,
- EEPROM_DIMM_I2C_MASTER_PATH_ERROR,
- i_i2cInfo.chip,
- TARGETING::get_huid(i_target),
+ EEPROM_I2C_MASTER_PATH_ERROR,
+ TWO_UINT32_TO_UINT64(
+ i_i2cInfo.chip,
+ TARGETING::get_huid(i_target) ),
+ l_epCompressed,
true /*Add HB SW Callout*/ );
err->collectTrace( EEPROM_COMP_NAME );
+ ERRORLOG::ErrlUserDetailsString(
+ i_i2cInfo.i2cMasterPath.toString()).addToLog(err);
+
break;
}
@@ -1125,24 +1167,47 @@ errlHndl_t eepromGetI2CMasterTarget ( TARGETING::Target * i_target,
ERR_MRK"eepromGetI2CMasterTarget() - I2C Master "
"Path target was NULL!" );
+ // Compress the entity path
+ uint64_t l_epCompressed = 0;
+ for( uint32_t i = 0; i < i_i2cInfo.i2cMasterPath.size(); i++ )
+ {
+ // Path element: type:8 instance:8
+ l_epCompressed |=
+ i_i2cInfo.i2cMasterPath[i].type << (16*(3-i));
+ l_epCompressed |=
+ i_i2cInfo.i2cMasterPath[i].instance << ((16*(3-i))-8);
+
+ // Can only fit 4 path elements into 64 bits
+ if ( i == 3 )
+ {
+ break;
+ }
+ }
+
/*@
* @errortype
* @reasoncode EEPROM_TARGET_NULL
* @severity ERRORLOG::ERRL_SEV_UNRECOVERABLE
* @moduleid EEPROM_GETI2CMASTERTARGET
- * @userdata1 Attribute Chip Type Enum
- * @userdata2 HUID of target
+ * @userdata1[00:31] Attribute Chip Type Enum
+ * @userdata1[32:63] HUID of target
+ * @userdata2 Compressed Entity Path
* @devdesc I2C master path target is null.
*/
err = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_UNRECOVERABLE,
EEPROM_GETI2CMASTERTARGET,
EEPROM_TARGET_NULL,
- i_i2cInfo.chip,
- TARGETING::get_huid(i_target),
+ TWO_UINT32_TO_UINT64(
+ i_i2cInfo.chip,
+ TARGETING::get_huid(i_target) ),
+ l_epCompressed,
true /*Add HB SW Callout*/ );
err->collectTrace( EEPROM_COMP_NAME );
+ ERRORLOG::ErrlUserDetailsString(
+ i_i2cInfo.i2cMasterPath.toString()).addToLog(err);
+
break;
}
diff --git a/src/usr/vpd/cvpd.C b/src/usr/vpd/cvpd.C
index 0febca385..1c4b5fb28 100644
--- a/src/usr/vpd/cvpd.C
+++ b/src/usr/vpd/cvpd.C
@@ -196,6 +196,7 @@ bool VPD::cvpdPresent( TARGETING::Target * i_target )
IpVpdFacade::input_args_t args;
args.record = CVPD::VEIR;
args.keyword = CVPD::PF ;
+ args.location = VPD::AUTOSELECT;
size_t kwlen = 0;
errlHndl_t l_errl = Singleton<CvpdFacade>::instance().read(
i_target,
diff --git a/src/usr/vpd/mvpd.C b/src/usr/vpd/mvpd.C
index 9c3d6119f..1d794e10e 100644
--- a/src/usr/vpd/mvpd.C
+++ b/src/usr/vpd/mvpd.C
@@ -192,6 +192,7 @@ bool VPD::mvpdPresent( TARGETING::Target * i_target )
IpVpdFacade::input_args_t args;
args.record = MVPD::CP00;
args.keyword = MVPD::VD;
+ args.location = VPD::AUTOSELECT;
size_t kwlen = 0;
errlHndl_t l_errl = Singleton<MvpdFacade>::instance().read(
i_target,
OpenPOWER on IntegriCloud