diff options
author | Nick Bofferding <bofferdn@us.ibm.com> | 2017-06-21 00:56:34 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-06-30 10:18:19 -0400 |
commit | f70e2531c2b0bafc08151294d904991f0e376493 (patch) | |
tree | b84608e68dfdac046ddae2a84fd3943e3795828b /src/usr | |
parent | 3cce42179f9e5494ae832b00cd84dd10669d9029 (diff) | |
download | talos-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-x | src/usr/targeting/common/processMrw.pl | 34 |
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; |