summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorElizabeth K. Liner <eliner@us.ibm.com>2017-06-21 11:12:07 -0400
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-06-22 15:41:10 -0400
commit30db3842625fe111a3d609773da25b97147af5ba (patch)
treea90ba56b68774d7b508ad4aac6455e99aa9bcde3 /src
parent8f1c6259e6d88a9490755e7e8385f953f6559a0b (diff)
downloadtalos-hostboot-30db3842625fe111a3d609773da25b97147af5ba.tar.gz
talos-hostboot-30db3842625fe111a3d609773da25b97147af5ba.zip
Revert "ProcessMRW changes for dynamic i2c devices"
This reverts commit 651ed35f1c045ea0c52ac659f9c27d757a351877. Change-Id: I6152ddd93890383f6c22ff07241ce5d078ab40fc Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42221 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> 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: Nicholas E. Bofferding <bofferdn@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/usr/i2c/i2c.C12
-rw-r--r--src/usr/targeting/common/Targets.pm16
-rw-r--r--src/usr/targeting/common/processMrw.pl190
-rw-r--r--src/usr/targeting/common/xmltohb/attribute_types_openpower.xml4
-rw-r--r--src/usr/targeting/common/xmltohb/target_types_openpower.xml6
5 files changed, 12 insertions, 216 deletions
diff --git a/src/usr/i2c/i2c.C b/src/usr/i2c/i2c.C
index e969bae78..0c9215387 100755
--- a/src/usr/i2c/i2c.C
+++ b/src/usr/i2c/i2c.C
@@ -3858,6 +3858,9 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster,
case EEPROM::VPD_BACKUP:
l_currentDI.devicePurpose =
TARGETING::HDAT_I2C_DEVICE_PURPOSE_MODULE_VPD;
+ //TODO RTC:165485 this isn't currently right. we'll need
+ //to add the changes in the enum and possibly the other
+ //struct/attribute.
break;
case EEPROM::SBE_PRIMARY:
case EEPROM::SBE_BACKUP:
@@ -3943,8 +3946,8 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster,
TARGETING::ATTR_HDAT_I2C_MASTER_PORT_type l_i2cMasterPort;
(*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_MASTER_PORT>(
l_i2cMasterPort);
- TARGETING::ATTR_HDAT_I2C_DEVICE_TYPE_type l_i2cDevType;
- (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_DEVICE_TYPE>(
+ TARGETING::ATTR_HDAT_I2C_DEVTYPE_type l_i2cDevType;
+ (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_DEVTYPE>(
l_i2cDevType);
TARGETING::ATTR_HDAT_I2C_ADDR_type l_i2cAddr;
(*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_ADDR>(l_i2cAddr);
@@ -3954,8 +3957,8 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster,
TARGETING::ATTR_HDAT_I2C_BUS_FREQ_type l_i2cBusFreq;
(*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_BUS_FREQ>(
l_i2cBusFreq);
- TARGETING::ATTR_HDAT_I2C_DEVICE_PURPOSE_type l_i2cDevPurpose;
- (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_DEVICE_PURPOSE>(
+ TARGETING::ATTR_HDAT_I2C_DEV_PURPOSE_type l_i2cDevPurpose;
+ (*childItr)->tryGetAttr<TARGETING::ATTR_HDAT_I2C_DEV_PURPOSE>(
l_i2cDevPurpose);
uint8_t l_arrayLength =
@@ -3971,7 +3974,6 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster,
l_idx++)
{
DeviceInfo_t l_currentDevice;
- l_currentDevice.masterChip = (*childItr);
l_currentDevice.engine = l_i2cEngine[l_idx];
l_currentDevice.masterPort = l_i2cMasterPort[l_idx];
l_currentDevice.addr = l_i2cAddr[l_idx];
diff --git a/src/usr/targeting/common/Targets.pm b/src/usr/targeting/common/Targets.pm
index 6c58d7188..2e732a2ab 100644
--- a/src/usr/targeting/common/Targets.pm
+++ b/src/usr/targeting/common/Targets.pm
@@ -1727,18 +1727,6 @@ sub getBusAttribute
->{default};
}
-## returns a boolean for if a given bus attribute is defined
-sub isBusAttributeDefined
-{
- my $self = shift;
- my $target = shift;
- my $busnum = shift;
- my $attr = shift;
- my $target_ptr = $self->getTarget($target);
-
- return defined($target_ptr->{CONNECTION}->{BUS}->[$busnum]->{bus_attribute}
- ->{$attr}->{default});
-}
## returns a pointer to an array of children target names
sub getTargetChildren
@@ -2082,10 +2070,6 @@ to value C<VALUE>. This is for complex attributes.
Gets the attribute C<ATTRIBUTE_NAME> from bus C<TARGET_STRING> bus number
C<INDEX>.
-=item isBusAttributeDefined(C<TARGET_STRING>,C<INDEX>.C<ATTRIBUTE_NAME>)
-
-Looks for a specific attribute and returns if it exists or not
-
=item getTargetChildren(C<TARGET_STRING>)
Returns an array of target strings representing all the children of target
diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl
index 33acf4b19..15a25d571 100644
--- a/src/usr/targeting/common/processMrw.pl
+++ b/src/usr/targeting/common/processMrw.pl
@@ -512,15 +512,6 @@ sub processProcessor
$targetObj->setMasterProc($target);
}
- # I2C arrays
- my @engine = ();
- my @port = ();
- my @slavePort = ();
- my @addr = ();
- my @speed = ();
- my @type = ();
- my @purpose = ();
-
$targetObj->log($target, "Processing PROC");
foreach my $child (@{ $targetObj->getTargetChildren($target) })
{
@@ -576,58 +567,8 @@ sub processProcessor
{
processOcc($targetObj, $child, $target);
}
- # Ideally this should be $child_type eq "I2C", but we need a change
- # in serverwiz and the witherspoon.xml first
- elsif (index($child,"i2c-master") != -1)
- {
- my ($i2cEngine, $i2cPort, $i2cSlavePort, $i2cAddr,
- $i2cSpeed, $i2cType, $i2cPurpose) =
- processI2C($targetObj, $child, $target);
-
- # Add this I2C device's information to the proc array
- push(@engine,@$i2cEngine);
- push(@port,@$i2cPort);
- push(@slavePort,@$i2cSlavePort);
- push(@addr,@$i2cAddr);
- push(@speed,@$i2cSpeed);
- push(@type,@$i2cType);
- push(@purpose,@$i2cPurpose);
-
- }
}
- # Add final I2C arrays to processor
- my $size = scalar @engine;
- my $engine_attr = $engine[0];
- my $port_attr = $port[0];
- my $slave_attr = $slavePort[0];
- my $addr_attr = $addr[0];
- my $speed_attr = $speed[0];
- my $type_attr = "0x".$type[0];
- my $purpose_attr = "0x".$purpose[0];
-
- # Parse out array to print as a string
- foreach my $n (1..($size-1))
- {
- $engine_attr .= ",".$engine[$n];
- $port_attr .= ",".$port[$n];
- $slave_attr .= ",".$slavePort[$n];
- $addr_attr .= ",".$addr[$n];
- $speed_attr .= ",".$speed[$n];
- $type_attr .= ",0x".$type[$n];
- $purpose_attr .= ",0x".$purpose[$n];
- }
-
- # Set the arrays to the corresponding attribute on the proc
- $targetObj->setAttribute($target,"HDAT_I2C_ENGINE",$engine_attr);
- $targetObj->setAttribute($target,"HDAT_I2C_MASTER_PORT",$port_attr);
- $targetObj->setAttribute($target,"HDAT_I2C_SLAVE_PORT",$slave_attr);
- $targetObj->setAttribute($target,"HDAT_I2C_ADDR",$addr_attr);
- $targetObj->setAttribute($target,"HDAT_I2C_BUS_FREQ",$speed_attr);
- $targetObj->setAttribute($target,"HDAT_I2C_DEVICE_TYPE",$type_attr);
- $targetObj->setAttribute($target,"HDAT_I2C_DEVICE_PURPOSE",$purpose_attr);
- $targetObj->setAttribute($target,"HDAT_I2C_ELEMENTS",$size);
-
## update path for mvpd's and sbe's
my $path = $targetObj->getAttribute($target, "PHYS_PATH");
my $model = $targetObj->getAttribute($target, "MODEL");
@@ -1562,137 +1503,6 @@ sub getI2cMapField
return $hexfield;
}
-#------------------------------------------------------------------------------
-# I2C
-#
-sub processI2C
-{
- my $targetObj = shift; # Top Hierarchy of targeting structure
- my $target = shift; # I2C targetInstance
- my $parentTarget = shift; # Processor target
-
- # Initialize output arrays
- my @i2cEngine = ();
- my @i2cPort = ();
- my @i2cSlave = ();
- my @i2cAddr = ();
- my @i2cSpeed = ();
- my @i2cType = ();
- my @i2cPurpose = ();
-
- # Step 1: get I2C_ENGINE and PORT from <targetInstance>
-
- my $engine = $targetObj->getAttribute($target, "I2C_ENGINE");
- if($engine eq "") {$engine = "0xFF";}
-
- my $port = $targetObj->getAttribute($target, "I2C_PORT");
- if($port eq "") {$port = "0xFF";}
-
- # Step 2: get I2C_ADDRESS and I2C_SPEED from <bus>
- # This is different for each connection.
-
- my $i2cs = $targetObj->findConnections($parentTarget, "I2C","");
- if ($i2cs ne "")
- {
- # This gives all i2c connections
- foreach my $i2c (@{$i2cs->{CONN}})
- {
- # Here we are checking that the i2c source matches our target
- my $source = $i2c->{SOURCE};
- if ($source ne $target)
- {
- next;
- }
-
- # Most I2C devices will default the slave port, it is only valid
- # for gpio expanders.
- my $slavePort = "0xFF";
-
- my @source_array = split(/-/,$source);
- my $source_idx = scalar @source_array;
-
- # If the last part of the source only includes numbers
- if($source_array[$source_idx-1] =~ /^[0-9,.E]+$/)
- {
- $slavePort = $source_array[$source_idx-1];
- }
-
- my $addr;
- my $speed;
- my $type;
- my $purpose;
-
- # For all these attributes, we need to check if they're defined,
- # and if not we set them to a default value.
- if ($targetObj->isBusAttributeDefined(
- $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_ADDRESS"))
- {
- $addr = $targetObj->getBusAttribute(
- $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_ADDRESS");
- }
-
- if ($addr eq "") {$addr = "0xFF";}
-
- if ($targetObj->isBusAttributeDefined(
- $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_SPEED"))
- {
- $speed = $targetObj->getBusAttribute(
- $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_SPEED");
- }
-
- if ($speed eq "") {$speed = "0";}
-
- if ($targetObj->isBusAttributeDefined(
- $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_TYPE"))
- {
- $type = $targetObj->getBusAttribute(
- $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_TYPE");
- }
-
- if ($type eq "")
- {
- $type = "FF";
- }
- else
- {
- $type = $targetObj->getEnumValue("HDAT_I2C_DEVICE_TYPE",$type);
- }
-
- if ($targetObj->isBusAttributeDefined(
- $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_PURPOSE"))
- {
- $purpose = $targetObj->getBusAttribute(
- $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_PURPOSE");
- }
-
- if ($purpose eq "")
- {
- $purpose = "FF";
- }
- else
- {
- $purpose = $targetObj->getEnumValue("HDAT_I2C_DEVICE_PURPOSE",
- $purpose);
- }
-
- # Step 3: For each connection, create an instance in the array
- # for the DeviceInfo_t struct.
- push @i2cEngine, $engine;
- push @i2cPort, $port;
- push @i2cSlave, $slavePort;
- push @i2cAddr, $addr;
- push @i2cSpeed, $speed;
- push @i2cType, $type;
- push @i2cPurpose, $purpose;
-
- }
- }
-
- # Return this i2c device's information back to the processor
- return (\@i2cEngine, \@i2cPort, \@i2cSlave, \@i2cAddr,
- \@i2cSpeed, \@i2cType, \@i2cPurpose);
-}
-
sub setEepromAttributes
{
diff --git a/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml b/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml
index 2635b8ea4..b0a571f96 100644
--- a/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml
+++ b/src/usr/targeting/common/xmltohb/attribute_types_openpower.xml
@@ -191,7 +191,7 @@
</attribute>
<attribute>
- <id>HDAT_I2C_DEVICE_TYPE</id>
+ <id>HDAT_I2C_DEVTYPE</id>
<description>
This attribute holds the values of the I2C device type from the i2c
device connections as defined in the MRW. It is parsed into a
@@ -255,7 +255,7 @@
</attribute>
<attribute>
- <id>HDAT_I2C_DEVICE_PURPOSE</id>
+ <id>HDAT_I2C_DEV_PURPOSE</id>
<description>
This attribute holds the values of the I2C device purpose from the i2c
device connections as defined in the MRW. It is parsed into a
diff --git a/src/usr/targeting/common/xmltohb/target_types_openpower.xml b/src/usr/targeting/common/xmltohb/target_types_openpower.xml
index 83abac457..e039b77dc 100644
--- a/src/usr/targeting/common/xmltohb/target_types_openpower.xml
+++ b/src/usr/targeting/common/xmltohb/target_types_openpower.xml
@@ -32,14 +32,14 @@
=====================================================================
-->
<targetTypeExtension>
- <id>chip-processor</id>
+ <id>base</id>
<attribute><id>HDAT_I2C_ENGINE</id></attribute>
<attribute><id>HDAT_I2C_MASTER_PORT</id></attribute>
- <attribute><id>HDAT_I2C_DEVICE_TYPE</id></attribute>
+ <attribute><id>HDAT_I2C_DEVTYPE</id></attribute>
<attribute><id>HDAT_I2C_ADDR</id></attribute>
<attribute><id>HDAT_I2C_SLAVE_PORT</id></attribute>
<attribute><id>HDAT_I2C_BUS_FREQ</id></attribute>
- <attribute><id>HDAT_I2C_DEVICE_PURPOSE</id></attribute>
+ <attribute><id>HDAT_I2C_DEV_PURPOSE</id></attribute>
<attribute><id>HDAT_I2C_ELEMENTS</id></attribute>
<attribute>
<id>IPMI_INSTANCE</id>
OpenPOWER on IntegriCloud