Prachi Gupta | a40a3ac | 2016-11-29 23:17:19 -0600 | [diff] [blame] | 1 | From 85b90b1ceae68b9f473a12b652bdaf2c8d78a007 Mon Sep 17 00:00:00 2001 |
| 2 | From: Prachi Gupta <pragupta@us.ibm.com> |
| 3 | Date: Wed, 7 Dec 2016 10:44:25 -0600 |
| 4 | Subject: [PATCH 4/4] Add Hacked values for VPD attributes |
| 5 | |
| 6 | Change-Id: Ida797dba646f0110637521daf27dfeea0f730959 |
| 7 | --- |
| 8 | src/usr/targeting/common/Targets.pm | 14 ++++++++ |
| 9 | src/usr/targeting/common/processMrw.pl | 61 ++++++++++++++++++++++++++++++++++ |
| 10 | 2 files changed, 75 insertions(+) |
| 11 | |
| 12 | diff --git a/src/usr/targeting/common/Targets.pm b/src/usr/targeting/common/Targets.pm |
| 13 | index 42780dd..25fe0cb 100644 |
| 14 | --- a/src/usr/targeting/common/Targets.pm |
| 15 | +++ b/src/usr/targeting/common/Targets.pm |
| 16 | @@ -1655,6 +1655,20 @@ sub getAttributeField |
| 17 | } |
| 18 | |
| 19 | ## returns an attribute from a bus |
| 20 | +sub setBusAttribute |
| 21 | +{ |
| 22 | + my $self = shift; |
| 23 | + my $target = shift; |
| 24 | + my $busnum = shift; |
| 25 | + my $attr = shift; |
| 26 | + my $value = shift; |
| 27 | + my $target_ptr = $self->getTarget($target); |
| 28 | + $target_ptr->{CONNECTION}->{BUS}->[$busnum]->{bus_attribute}->{$attr}->{default} |
| 29 | + = $value; |
| 30 | + $self->log($target, "Setting Attribute (BusNum=$busnum): $attr=$value"); |
| 31 | +} |
| 32 | + |
| 33 | +## returns an attribute from a bus |
| 34 | sub getBusAttribute |
| 35 | { |
| 36 | my $self = shift; |
| 37 | diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl |
| 38 | index 312582d..bfe33a4 100644 |
| 39 | --- a/src/usr/targeting/common/processMrw.pl |
| 40 | +++ b/src/usr/targeting/common/processMrw.pl |
| 41 | @@ -538,6 +538,7 @@ sub processProcessor |
| 42 | $targetObj->setAttributeField($target, "SCOM_SWITCHES", "useXscom", "0"); |
| 43 | |
| 44 | processMembufVpdAssociation($targetObj,$target); |
| 45 | + processNodeVpd($targetObj, $target); |
| 46 | setupBars($targetObj,$target); |
| 47 | } |
| 48 | |
| 49 | @@ -1110,10 +1111,70 @@ sub processOcc |
| 50 | $targetObj->setAttribute($target,"OCC_MASTER_CAPABLE",$master_capable); |
| 51 | } |
| 52 | |
| 53 | +#@FIXME: This is just a hack to get the witherspoon xml to compile |
| 54 | +sub processNodeVpd |
| 55 | +{ |
| 56 | + my $targetObj = shift; |
| 57 | + my $target = shift; #proc target |
| 58 | + my $name = "EEPROM_VPD_PRIMARY_INFO"; |
| 59 | + foreach my $child (@{$targetObj->getTargetChildren($target)}) |
| 60 | + { |
| 61 | + if ($targetObj->getType($child) eq "MCBIST") |
| 62 | + { |
| 63 | + foreach my $mcs (@{$targetObj->getTargetChildren($child)}) |
| 64 | + { |
| 65 | + if ($targetObj->getType($mcs) eq "MCS") |
| 66 | + { |
| 67 | + my $path = "physical:sys-0/node-0"; |
| 68 | + my $port = 0x02; |
| 69 | + my $addr = 0xE0; |
| 70 | + my $engine = 1; |
| 71 | + my $offset = 0x01; |
| 72 | + my $mem = 0x01; |
| 73 | + my $count = 2; |
| 74 | + my $page = 0x50; |
| 75 | + my $cycle = 0x05; |
| 76 | + $targetObj->setAttributeField($mcs, $name, "i2cMasterPath", $path); |
| 77 | + $targetObj->setAttributeField($mcs, $name, "port", $port); |
| 78 | + $targetObj->setAttributeField($mcs, $name, "devAddr", $addr); |
| 79 | + $targetObj->setAttributeField($mcs, $name, "engine", $engine); |
| 80 | + $targetObj->setAttributeField($mcs, $name, "byteAddrOffset", $offset); |
| 81 | + $targetObj->setAttributeField($mcs, $name, "maxMemorySizeKB", $mem); |
| 82 | + $targetObj->setAttributeField($mcs, $name, "chipCount", $count); |
| 83 | + $targetObj->setAttributeField($mcs, $name, "writePageSize", $page); |
| 84 | + $targetObj->setAttributeField($mcs, $name, "writeCycleTime", $cycle); |
| 85 | + } |
| 86 | + |
| 87 | + } |
| 88 | + } |
| 89 | + } |
| 90 | + |
| 91 | +} |
| 92 | + |
| 93 | sub processMembufVpdAssociation |
| 94 | { |
| 95 | my $targetObj = shift; |
| 96 | my $target = shift; |
| 97 | + my $dimms=$targetObj->findConnections($target,"I2C","SPD"); |
| 98 | + if ($dimms ne "") { |
| 99 | + foreach my $dimm (@{$dimms->{CONN}}) { |
| 100 | + my $dimm_target = $targetObj->getTargetParent($dimm->{DEST_PARENT}); |
| 101 | + |
| 102 | + #@FIXME: hacked value for now |
| 103 | + my $addr = $targetObj->setBusAttribute($dimm->{SOURCE}, |
| 104 | + $dimm->{BUS_NUM}, "I2C_ADDRESS", 0xE0); |
| 105 | + |
| 106 | + setEepromAttributes($targetObj, |
| 107 | + "EEPROM_VPD_PRIMARY_INFO",$dimm_target, |
| 108 | + $dimm); |
| 109 | + my $i2cMasterPath = $targetObj->getAttributeField($dimm_target, |
| 110 | + "EEPROM_VPD_PRIMARY_INFO", "i2cMasterPath"); |
| 111 | + |
| 112 | + $targetObj->setAttributeField($dimm_target,"TEMP_SENSOR_I2C_CONFIG", |
| 113 | + "i2cMasterPath", $i2cMasterPath); |
| 114 | + } |
| 115 | + } |
| 116 | + |
| 117 | my $vpds=$targetObj->findConnections($target,"I2C","VPD"); |
| 118 | if ($vpds ne "" ) { |
| 119 | my $vpd = $vpds->{CONN}->[0]; |
| 120 | -- |
| 121 | 1.8.2.2 |
| 122 | |