diff options
Diffstat (limited to 'openpower/patches/p8dtu-patches/hostboot-p8/0012-Set-OPAL_MODEL-to-p8dtu1u-or-p8dtu2u-for-1U-and-2U-s.patch')
-rw-r--r-- | openpower/patches/p8dtu-patches/hostboot-p8/0012-Set-OPAL_MODEL-to-p8dtu1u-or-p8dtu2u-for-1U-and-2U-s.patch | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/openpower/patches/p8dtu-patches/hostboot-p8/0012-Set-OPAL_MODEL-to-p8dtu1u-or-p8dtu2u-for-1U-and-2U-s.patch b/openpower/patches/p8dtu-patches/hostboot-p8/0012-Set-OPAL_MODEL-to-p8dtu1u-or-p8dtu2u-for-1U-and-2U-s.patch new file mode 100644 index 00000000..bc4f4926 --- /dev/null +++ b/openpower/patches/p8dtu-patches/hostboot-p8/0012-Set-OPAL_MODEL-to-p8dtu1u-or-p8dtu2u-for-1U-and-2U-s.patch @@ -0,0 +1,118 @@ +From 1e6bb450cf94fc3ade70f82703e6c57a30bbebaa Mon Sep 17 00:00:00 2001 +From: Jim Yuan <jim.yuan@supermicro.com> +Date: Wed, 10 Aug 2016 10:41:32 -0700 +Subject: [PATCH 12/14] Set OPAL_MODEL to p8dtu1u or p8dtu2u for 1U and 2U + system. + +Signed-off-by: Jim Yuan <jim.yuan@supermicro.com> +--- + src/usr/hwpf/hwp/start_payload/start_payload.C | 66 +++++++++++++++++++++- + .../common/xmltohb/attribute_types_hb.xml | 1 + + 2 files changed, 66 insertions(+), 1 deletion(-) + +diff --git a/src/usr/hwpf/hwp/start_payload/start_payload.C b/src/usr/hwpf/hwp/start_payload/start_payload.C +index ad155f19e..80e62a0b6 100644 +--- a/src/usr/hwpf/hwp/start_payload/start_payload.C ++++ b/src/usr/hwpf/hwp/start_payload/start_payload.C +@@ -89,6 +89,8 @@ + #include <config.h> + #include <ipmi/ipmiwatchdog.H> + #include <ipmi/ipmiif.H> //jim ++#include <string.h> //jim ++ + #include <vpd/vpd_if.H> + + #include <hwpf/hwpf_reasoncodes.H> +@@ -487,6 +489,67 @@ void setAPSSGainOffsetFromPWSInfo(void) + assert(0); + } + } ++ ++ ++void setOpalMode (void) ++{ ++ ++ uint8_t riser_id = 0 ; ++ errlHndl_t l_err = NULL; ++ size_t len = 4; ++ ++ //create request data buffer ++ uint8_t* data = new uint8_t[len]; ++ ++ IPMI::completion_code cc = IPMI::CC_UNKBAD; ++ ++ data[0] = 0x3; ++ data[1] = 0x70; ++ data[2] = 0x1; ++ data[3] = 0x2; //offset 0x2 for UIO info ++ l_err = IPMI::sendrecv(IPMI::master_readwrite(), cc, len, data); ++ ++ if( l_err == NULL ) ++ { ++ if( cc == IPMI::CC_OK ) ++ { ++ riser_id = data[0]; ++ } ++ ++ delete[] data; ++ } ++ ++ATTR_OPAL_MODEL_type l_model = {0}; ++ ++TARGETING::Target* sys = NULL; ++targetService().getTopLevelTarget(sys); ++ ++sys->tryGetAttr<TARGETING::ATTR_OPAL_MODEL>(l_model); ++TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "OPAL Mode is %s", l_model); ++TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "Riser ID is %d", riser_id); ++ ++if (riser_id == 0x9) ++ { ++ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "1U OPAL Mode"); ++ strcpy (l_model, "supermicro,p8dtu1u"); ++ ++ } ++else //(riser_id == 0x19) ++ { ++ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "2U OPAL Mode"); ++ strcpy (l_model, "supermicro,p8dtu2u"); ++ } ++ ++if (!sys->trySetAttr<TARGETING::ATTR_OPAL_MODEL>(l_model)) ++ { ++ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "set OPAL Mode failed"); ++ assert(0); ++ } ++ ++sys->tryGetAttr<TARGETING::ATTR_OPAL_MODEL>(l_model); ++TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "after set, OPAL Mode is %s", l_model); ++ ++} + // + // Wrapper function to call host_runtime_setup + // +@@ -529,7 +592,8 @@ void* call_host_runtime_setup( void *io_pArgs ) + } + + setAPSSGainOffsetFromPWSInfo(); //jim add code before activate OCC. START_OCC_DURING_BOOT is defined in config. +- ++ setOpalMode(); //jim ++ + bool l_activateOCC = is_avp_load(); + + #ifdef CONFIG_START_OCC_DURING_BOOT +diff --git a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml +index 64a0c9bae..3cfdb9aa0 100644 +--- a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml ++++ b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml +@@ -966,6 +966,7 @@ + </simpleType> + <persistency>non-volatile</persistency> + <readable/> ++ <writeable/> + </attribute> + + <attribute> +-- +2.16.2.windows.1 + |