summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorNick Bofferding <bofferdn@us.ibm.com>2017-06-21 00:56:34 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-06-30 10:18:19 -0400
commitf70e2531c2b0bafc08151294d904991f0e376493 (patch)
treeb84608e68dfdac046ddae2a84fd3943e3795828b /src/usr
parent3cce42179f9e5494ae832b00cd84dd10669d9029 (diff)
downloadtalos-hostboot-f70e2531c2b0bafc08151294d904991f0e376493.tar.gz
talos-hostboot-f70e2531c2b0bafc08151294d904991f0e376493.zip
Fix i2c GPIO expander port parsing in MRW tooling
Change-Id: Ic7aa44e3fdf5a0c801ed79b626a96d864b13add7 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42179 Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@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: Marshall J. Wilks <mjwilks@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr')
-rwxr-xr-xsrc/usr/targeting/common/processMrw.pl34
1 files changed, 28 insertions, 6 deletions
diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl
index fee956c24..71cc82b14 100755
--- a/src/usr/targeting/common/processMrw.pl
+++ b/src/usr/targeting/common/processMrw.pl
@@ -1644,14 +1644,36 @@ sub processI2C
# Most I2C devices will default the slave port, it is only valid
# for gpio expanders.
my $slavePort = "0xFF";
+ my $purpose = undef;
+ if ($targetObj->isBusAttributeDefined(
+ $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_PURPOSE"))
+ {
+ $purpose = $targetObj->getBusAttribute(
+ $i2c->{SOURCE},$i2c->{BUS_NUM},"I2C_PURPOSE");
+ }
- 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]+$/)
+ if( defined $purpose
+ && $purpose ne "")
{
- $slavePort = $source_array[$source_idx-1];
+ my $parent = $targetObj->getTargetParent($i2c->{DEST});
+ foreach my $aTarget ( sort keys %{ $targetObj->getAllTargets()})
+ {
+ if($aTarget =~ m/$parent/)
+ {
+ if ($targetObj->isBadAttribute($aTarget,"PIN_NAME"))
+ {
+ next;
+ }
+
+ my $pin = $targetObj->getAttribute($aTarget,
+ "PIN_NAME");
+ if($pin eq $purpose)
+ {
+ ($slavePort) = $aTarget =~ m/\-([0-9]+)$/g;
+ last;
+ }
+ }
+ }
}
my $addr;
OpenPOWER on IntegriCloud