summaryrefslogtreecommitdiffstats
path: root/src/import/hwpf/fapi2/tools
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2016-07-07 13:28:43 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-08-12 09:49:14 -0400
commitc8f727501e2c392c04dd1c4cd8cdbf441ea7b37f (patch)
tree77b36ce3a8e8c6b1033530426e8474d6b28333d3 /src/import/hwpf/fapi2/tools
parent333bd2d69881f31cf6db145c33daf94c23397f9f (diff)
downloadtalos-hostboot-c8f727501e2c392c04dd1c4cd8cdbf441ea7b37f.tar.gz
talos-hostboot-c8f727501e2c392c04dd1c4cd8cdbf441ea7b37f.zip
Support HB to Cronus attribute dump/sync
Change-Id: I13a4c3b355df9114813df6e21d6f8f53e7ef30f1 RTC: 127348 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/26734 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: Matt K. Light <mklight@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/27399 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/hwpf/fapi2/tools')
-rwxr-xr-xsrc/import/hwpf/fapi2/tools/createIfAttrService.pl48
-rwxr-xr-xsrc/import/hwpf/fapi2/tools/parseAttributeInfo.pl101
2 files changed, 106 insertions, 43 deletions
diff --git a/src/import/hwpf/fapi2/tools/createIfAttrService.pl b/src/import/hwpf/fapi2/tools/createIfAttrService.pl
index b672da271..0468b335f 100755
--- a/src/import/hwpf/fapi2/tools/createIfAttrService.pl
+++ b/src/import/hwpf/fapi2/tools/createIfAttrService.pl
@@ -81,19 +81,18 @@ open(ASFILE, ">", $asFile);
#------------------------------------------------------------------------------
print ASFILE "// fapi2_attribute_service.C\n";
print ASFILE "// This file is generated by perl script createIfAttrService.pl\n\n";
+print ASFILE "#include <string.h>\n";
print ASFILE "#include <fapi2_attribute_service.H>\n";
print ASFILE "#include <fapi2_chip_ec_feature.H>\n";
print ASFILE "#include <plat_trace.H>\n\n";
+print ASFILE "\n\n";
+print ASFILE "#define FAPI_ATTR_GET_RAW(ID, TARGET, VAL) \\\n";
+print ASFILE " ID##_GETMACRO(ID, TARGET, VAL)\n\n";
print ASFILE "namespace fapi2\n";
print ASFILE "{\n\n";
-print ASFILE "template< TargetType K >\n";
-print ASFILE "ReturnCode getInitFileAttr(const AttributeId i_id,\n";
-print ASFILE " const Target<K>& i_pTarget,\n";
-print ASFILE " uint64_t & o_val,\n";
-print ASFILE " const uint32_t i_arrayIndex1,\n";
-print ASFILE " const uint32_t i_arrayIndex2,\n";
-print ASFILE " const uint32_t i_arrayIndex3,\n";
-print ASFILE " const uint32_t i_arrayIndex4)\n";
+print ASFILE "ReturnCode rawAccessAttr(const AttributeId i_id,\n";
+print ASFILE " const Target<TARGET_TYPE_ALL>& i_target,\n";
+print ASFILE " uint8_t * o_val)\n";
print ASFILE "{\n";
print ASFILE " ReturnCode l_rc;\n\n";
@@ -241,30 +240,13 @@ foreach my $argnum (0 .. $#ARGV)
if (exists $attr->{privileged})
{
- print ASFILE " l_rc = FAPI2_ATTR_GET_PRIVILEGED(fapi2::$attr->{id}, i_pTarget, l_attr);\n";
+ print ASFILE " l_rc = FAPI_ATTR_GET_RAW(fapi2::$attr->{id}, i_target, l_attr);\n";
}
else
{
- print ASFILE " l_rc = FAPI_ATTR_GET(fapi2::$attr->{id}, i_pTarget, l_attr);\n";
+ print ASFILE " l_rc = FAPI_ATTR_GET_RAW(fapi2::$attr->{id}, i_target, l_attr);\n";
}
- print ASFILE " o_val = l_attr";
-
- if ($numArrayDimensions >= 5)
- {
- print ("createIfAttrService.pl ERROR. More than 4 array dimensions!!\n");
- exit(1);
- }
- else
- {
- for (my $i = 0; $i < $numArrayDimensions; $i++)
- {
- print ASFILE "[i_arrayIndex";
- print ASFILE $i+1;
- print ASFILE "]";
- }
- }
-
- print ASFILE ";\n";
+ print ASFILE " memcpy(o_val, &l_attr, sizeof($attr->{id}_Type));\n";
print ASFILE " }\n";
}
}
@@ -282,16 +264,8 @@ print ASFILE " FAPI_ERR(\"getInitFileAttr: Unrecognized attr ID: 0x%x\",
print ASFILE " }\n\n";
print ASFILE " if (l_rc)\n";
print ASFILE " {\n";
-print ASFILE " if (i_pTarget)\n";
-print ASFILE " {\n";
print ASFILE " FAPI_ERR(\"getInitFileAttr: Error getting attr ID 0x%x from targType 0x%x\",\n";
-print ASFILE " i_id, i_pTarget->getType());\n";
-print ASFILE " }\n";
-print ASFILE " else\n";
-print ASFILE " {\n";
-print ASFILE " FAPI_ERR(\"getInitFileAttr: Error getting attr ID 0x%x from system target\",\n";
-print ASFILE " i_id);\n";
-print ASFILE " }\n";
+print ASFILE " i_id, i_target.getType());\n";
print ASFILE " }\n\n";
print ASFILE " return l_rc;\n";
print ASFILE "}\n\n";
diff --git a/src/import/hwpf/fapi2/tools/parseAttributeInfo.pl b/src/import/hwpf/fapi2/tools/parseAttributeInfo.pl
index 97e504b15..65c3cde5c 100755
--- a/src/import/hwpf/fapi2/tools/parseAttributeInfo.pl
+++ b/src/import/hwpf/fapi2/tools/parseAttributeInfo.pl
@@ -108,6 +108,12 @@ $fmFile .= "/";
$fmFile .= "fapi2AttrOverrideData.H";
open(FMFILE, ">", $fmFile);
+# TODO: This for platform use only, will support later via RTC 128106 for HB
+my $fsFile = $arg_output_dir;
+$fsFile .= "/";
+$fsFile .= "fapi2AttrSyncData.H";
+open(FSFILE, ">", $fsFile);
+
my $feFile = $arg_output_dir;
$feFile .= "/";
$feFile .= "fapi2AttrOverrideEnums.H";
@@ -119,9 +125,9 @@ open(FEFILE, ">", $feFile);
#------------------------------------------------------------------------------
print AIFILE "// attribute_ids.H\n";
print AIFILE "// This file is generated by perl script parseAttributeInfo.pl\n\n";
+print AIFILE "#include <target_types.H>\n\n";
print AIFILE "#ifndef ATTRIBUTEIDS_H_\n";
print AIFILE "#define ATTRIBUTEIDS_H_\n\n";
-print AIFILE "#include <target_types.H>\n\n";
print AIFILE "namespace fapi2\n";
print AIFILE "{\n\n";
print AIFILE "\/**\n";
@@ -146,13 +152,11 @@ print ECHFILE "struct int2Type {\n";
print ECHFILE "enum { value = I };\n";
print ECHFILE "};\n";
print ECHFILE "ReturnCode queryChipEcAndName(\n";
-print ECHFILE " const Target<fapi2::TARGET_TYPE_PROC_CHIP |\n";
-print ECHFILE " fapi2::TARGET_TYPE_MEMBUF_CHIP>& i_target,\n";
+print ECHFILE " const Target<fapi2::TARGET_TYPE_ALL>& i_target,\n";
print ECHFILE " fapi2::ATTR_NAME_Type& , fapi2::ATTR_EC_Type & );\n\n";
print ECHFILE "template<int T>\n";
print ECHFILE "ReturnCode queryChipEcFeature(int2Type<T> id,\n";
-print ECHFILE " const Target<fapi2::TARGET_TYPE_PROC_CHIP |\n";
-print ECHFILE " fapi2::TARGET_TYPE_MEMBUF_CHIP>& i_target,\n";
+print ECHFILE " const Target<fapi2::TARGET_TYPE_ALL>& i_target,\n";
print ECHFILE " uint8_t & o_hasFeature)\n";
print ECHFILE "{\n";
print ECHFILE " fapi2::ATTR_NAME_Type l_chipName;\n";
@@ -221,6 +225,24 @@ print FMFILE "const AttributeData g_FapiAttrs[] = {\n";
my %attrOverrideData = ();
#-------------------------------------------------------------------------------
+# Print header of fapi2AttrSyncData.H
+# ------------------------------------------------------------------------------
+print FSFILE "// fapi2AttrSyncData.H\n";
+print FSFILE "// This file is generated by perl script parseAttributeInfo.pl\n\n";
+print FSFILE "#ifndef FAPI2ATTRSYNCDATA_H_\n";
+print FSFILE "#define FAPI2ATTRSYNCDATA_H_\n\n";
+print FSFILE "#include <target_types.H>\n\n";
+print FSFILE "namespace fapi2\n";
+print FSFILE "{\n\n";
+print FSFILE "struct AttributeSyncInfo\n";
+print FSFILE "{\n";
+print FSFILE " uint32_t iv_attrId;\n";
+print FSFILE " size_t iv_attrElemSizeBytes;\n";
+print FSFILE " size_t iv_dims[4];\n";
+print FSFILE "};\n\n";
+my %attrSyncData = ();
+
+#-------------------------------------------------------------------------------
# Print header of getFapiAttrEnumData.C
# ------------------------------------------------------------------------------
print FEFILE "const AttributeEnum g_FapiEnums[] = {\n";
@@ -325,6 +347,7 @@ foreach my $argnum (0 .. $#ARGV)
(@{$attributes->{attribute}})
{
my $attrOverride = "";
+ my $attrSync = "";
#----------------------------------------------------------------------
# Print a comment with the attribute ID attribute_ids.H
#----------------------------------------------------------------------
@@ -349,6 +372,7 @@ foreach my $argnum (0 .. $#ARGV)
#----------------------------------------------------------------------
$attrOverride .= "\t{\n";
$attrOverride .= "\t\t\"$attr->{id}\",\n";
+ $attrSync .= "\t{\n";
#----------------------------------------------------------------------
# Figure out the attribute array dimensions (if array)
@@ -390,6 +414,10 @@ foreach my $argnum (0 .. $#ARGV)
$attrOverride .= "\t\tsizeof(uint8_t),\n";
$attrOverride .= "\t\t{ $arrayDimString }\n";
$attrOverride .= "\t},\n";
+ $attrSync .= "\t\t0x$attrIdHash{$attr->{id}},\n";
+ $attrSync .= "\t\tsizeof(uint8_t),\n";
+ $attrSync .= "\t\t{ $arrayDimString }\n";
+ $attrSync .= "\t},\n";
}
else
{
@@ -399,24 +427,32 @@ foreach my $argnum (0 .. $#ARGV)
exit(1);
}
+ #These array/fapi sizes need to stay in sync
my @sizes = ( 'uint8', 'uint16', 'uint32', 'uint64', 'int8', 'int16', 'int32', 'int64' );
+ my @fapiSizes = ( 'u8', 'u16', 'u32', 'u64', 's8', 's16', 's32', 's64' );
my $actualSize = '';
+ my $actualFapi = '';
+ my $index = 0;
foreach my $size (@sizes)
{
if ($attr->{valueType} eq $size)
{
$actualSize = $size;
+ $actualFapi = @fapiSizes[$index];
last;
}
+ $index++;
}
if ($actualSize ne '')
{
print AIFILE "typedef ${actualSize}_t $attr->{id}_Type$arrayDimensions;\n";
- print ITFILE "$attr->{id},$attr->{id},0x$attrIdHash{$attr->{id}},u8" .
+ print ITFILE "$attr->{id},$attr->{id},0x$attrIdHash{$attr->{id}},$actualFapi" .
"$arrayDimensions\n";
$attrOverride .= "\t\t0x$attrIdHash{$attr->{id}},\n";
$attrOverride .= "\t\tsizeof(${actualSize}_t),\n";
+ $attrSync .= "\t\t0x$attrIdHash{$attr->{id}},\n";
+ $attrSync .= "\t\tsizeof(${actualSize}_t),\n";
}
else
{
@@ -426,6 +462,8 @@ foreach my $argnum (0 .. $#ARGV)
}
$attrOverride .= "\t\t{ $arrayDimString }\n";
$attrOverride .= "\t},\n";
+ $attrSync .= "\t\t{ $arrayDimString }\n";
+ $attrSync .= "\t},\n";
}
#----------------------------------------------------------------------
@@ -480,6 +518,8 @@ foreach my $argnum (0 .. $#ARGV)
}
print AIFILE "fapi2::$targType";
$targTypeCount++;
+
+ $attrSyncData{$targType}{$attr->{id}} = $attrSync;
}
print AIFILE ";\n";
@@ -725,6 +765,54 @@ foreach my $override (sort keys %attrOverrideData)
print FMFILE "};\n";
#------------------------------------------------------------------------------
+# Print content for fapi2AttrSyncData.H
+#------------------------------------------------------------------------------
+while ((my $syncTarget, my $syncList) = each(%attrSyncData))
+{
+ $syncTarget =~ s/TARGET_TYPE_//g;
+ #print "TYPE: $syncTarget\n";
+
+ print FSFILE "const AttributeSyncInfo g_${syncTarget}_syncInfo[] = {\n";
+ while ((my $attrName, my $attrData) = each(%{$syncList}))
+ {
+ print FSFILE "\n\t//$attrName\n";
+ print FSFILE "$attrData";
+ }
+ print FSFILE "};\n\n";
+}
+
+#print helper functions
+print FSFILE "const AttributeSyncInfo * get_fapi_target_attr_array(fapi2::TargetType i_type";
+print FSFILE ", size_t & o_size)\n";
+print FSFILE "{\n";
+print FSFILE "\tconst AttributeSyncInfo * l_arr = NULL;\n";
+print FSFILE "\to_size = 0;\n";
+print FSFILE "\tswitch(i_type)\n";
+print FSFILE "\t{\n";
+
+while ((my $syncTarget, my $syncList) = each(%attrSyncData))
+{
+ my $name = $syncTarget;
+ $syncTarget =~ s/TARGET_TYPE_//g;
+
+ print FSFILE "\t\tcase fapi2::$name :\n";
+ print FSFILE "\t\t\tl_arr = g_${syncTarget}_syncInfo;\n";
+ print FSFILE "\t\t\to_size = sizeof(g_${syncTarget}_syncInfo)/";
+ print FSFILE "sizeof(g_${syncTarget}_syncInfo[0]);\n";
+ print FSFILE "\t\t\tbreak;\n\n";
+}
+
+print FSFILE "\t\tdefault:\n";
+print FSFILE "\t\t\tl_arr = NULL;\n";
+print FSFILE "\t};\n";
+print FSFILE "\treturn l_arr;\n";
+print FSFILE "}\n";
+print FSFILE "}\n\n";
+print FSFILE "#endif\n";
+
+
+
+#------------------------------------------------------------------------------
# Print footer for getFapiAttrEnumData.C
#------------------------------------------------------------------------------
foreach my $override (sort @attrOverrideEnums)
@@ -743,5 +831,6 @@ close(ASFILE);
close(ITFILE);
close(ETFILE);
close(FMFILE);
+close(FSFILE);
close(FEFILE);
OpenPOWER on IntegriCloud