blob: 29d244409897b98cf9374af8e8480fda06fcfe07 [file] [log] [blame]
From 85b90b1ceae68b9f473a12b652bdaf2c8d78a007 Mon Sep 17 00:00:00 2001
From: Prachi Gupta <pragupta@us.ibm.com>
Date: Wed, 7 Dec 2016 10:44:25 -0600
Subject: [PATCH 4/4] Add Hacked values for VPD attributes
Change-Id: Ida797dba646f0110637521daf27dfeea0f730959
---
src/usr/targeting/common/Targets.pm | 14 ++++++++
src/usr/targeting/common/processMrw.pl | 61 ++++++++++++++++++++++++++++++++++
2 files changed, 75 insertions(+)
diff --git a/src/usr/targeting/common/Targets.pm b/src/usr/targeting/common/Targets.pm
index 42780dd..25fe0cb 100644
--- a/src/usr/targeting/common/Targets.pm
+++ b/src/usr/targeting/common/Targets.pm
@@ -1655,6 +1655,20 @@ sub getAttributeField
}
## returns an attribute from a bus
+sub setBusAttribute
+{
+ my $self = shift;
+ my $target = shift;
+ my $busnum = shift;
+ my $attr = shift;
+ my $value = shift;
+ my $target_ptr = $self->getTarget($target);
+ $target_ptr->{CONNECTION}->{BUS}->[$busnum]->{bus_attribute}->{$attr}->{default}
+ = $value;
+ $self->log($target, "Setting Attribute (BusNum=$busnum): $attr=$value");
+}
+
+## returns an attribute from a bus
sub getBusAttribute
{
my $self = shift;
diff --git a/src/usr/targeting/common/processMrw.pl b/src/usr/targeting/common/processMrw.pl
index 312582d..bfe33a4 100644
--- a/src/usr/targeting/common/processMrw.pl
+++ b/src/usr/targeting/common/processMrw.pl
@@ -538,6 +538,7 @@ sub processProcessor
$targetObj->setAttributeField($target, "SCOM_SWITCHES", "useXscom", "0");
processMembufVpdAssociation($targetObj,$target);
+ processNodeVpd($targetObj, $target);
setupBars($targetObj,$target);
}
@@ -1110,10 +1111,70 @@ sub processOcc
$targetObj->setAttribute($target,"OCC_MASTER_CAPABLE",$master_capable);
}
+#@FIXME: This is just a hack to get the witherspoon xml to compile
+sub processNodeVpd
+{
+ my $targetObj = shift;
+ my $target = shift; #proc target
+ my $name = "EEPROM_VPD_PRIMARY_INFO";
+ foreach my $child (@{$targetObj->getTargetChildren($target)})
+ {
+ if ($targetObj->getType($child) eq "MCBIST")
+ {
+ foreach my $mcs (@{$targetObj->getTargetChildren($child)})
+ {
+ if ($targetObj->getType($mcs) eq "MCS")
+ {
+ my $path = "physical:sys-0/node-0";
+ my $port = 0x02;
+ my $addr = 0xE0;
+ my $engine = 1;
+ my $offset = 0x01;
+ my $mem = 0x01;
+ my $count = 2;
+ my $page = 0x50;
+ my $cycle = 0x05;
+ $targetObj->setAttributeField($mcs, $name, "i2cMasterPath", $path);
+ $targetObj->setAttributeField($mcs, $name, "port", $port);
+ $targetObj->setAttributeField($mcs, $name, "devAddr", $addr);
+ $targetObj->setAttributeField($mcs, $name, "engine", $engine);
+ $targetObj->setAttributeField($mcs, $name, "byteAddrOffset", $offset);
+ $targetObj->setAttributeField($mcs, $name, "maxMemorySizeKB", $mem);
+ $targetObj->setAttributeField($mcs, $name, "chipCount", $count);
+ $targetObj->setAttributeField($mcs, $name, "writePageSize", $page);
+ $targetObj->setAttributeField($mcs, $name, "writeCycleTime", $cycle);
+ }
+
+ }
+ }
+ }
+
+}
+
sub processMembufVpdAssociation
{
my $targetObj = shift;
my $target = shift;
+ my $dimms=$targetObj->findConnections($target,"I2C","SPD");
+ if ($dimms ne "") {
+ foreach my $dimm (@{$dimms->{CONN}}) {
+ my $dimm_target = $targetObj->getTargetParent($dimm->{DEST_PARENT});
+
+ #@FIXME: hacked value for now
+ my $addr = $targetObj->setBusAttribute($dimm->{SOURCE},
+ $dimm->{BUS_NUM}, "I2C_ADDRESS", 0xE0);
+
+ setEepromAttributes($targetObj,
+ "EEPROM_VPD_PRIMARY_INFO",$dimm_target,
+ $dimm);
+ my $i2cMasterPath = $targetObj->getAttributeField($dimm_target,
+ "EEPROM_VPD_PRIMARY_INFO", "i2cMasterPath");
+
+ $targetObj->setAttributeField($dimm_target,"TEMP_SENSOR_I2C_CONFIG",
+ "i2cMasterPath", $i2cMasterPath);
+ }
+ }
+
my $vpds=$targetObj->findConnections($target,"I2C","VPD");
if ($vpds ne "" ) {
my $vpd = $vpds->{CONN}->[0];
--
1.8.2.2