summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/usr/devtree/bld_devtree.C12
-rw-r--r--src/usr/xscom/xscom.C31
2 files changed, 17 insertions, 26 deletions
diff --git a/src/usr/devtree/bld_devtree.C b/src/usr/devtree/bld_devtree.C
index 698a525a6..d7986e9ee 100644
--- a/src/usr/devtree/bld_devtree.C
+++ b/src/usr/devtree/bld_devtree.C
@@ -711,19 +711,11 @@ void bld_xscom_node(devTree * i_dt, dtOffset_t & i_parentNode,
const char* todNodeName = "chiptod";
const char* pciNodeName = "pbcq";
- // Grab a system object to work with
- TARGETING::Target* sys = NULL;
- TARGETING::targetService().getTopLevelTarget(sys);
-
- uint64_t l_xscomBaseAddr =
- sys->getAttr<TARGETING::ATTR_XSCOM_BASE_ADDRESS>();
-
/**********************************************************/
/* Xscom node */
/**********************************************************/
- //@todo-Fix for P9-RTC:128077
- uint64_t l_xscomAddr = l_xscomBaseAddr +
- (static_cast<uint64_t>(i_chipid) << XSCOM_CHIP_SHIFT);
+ uint64_t l_xscomAddr =
+ i_pProc->getAttr<TARGETING::ATTR_XSCOM_BASE_ADDRESS>();
dtOffset_t xscomNode = i_dt->addNode(i_parentNode, xscomNodeName,
l_xscomAddr);
diff --git a/src/usr/xscom/xscom.C b/src/usr/xscom/xscom.C
index b4f4c3aa6..fb487c55b 100644
--- a/src/usr/xscom/xscom.C
+++ b/src/usr/xscom/xscom.C
@@ -551,9 +551,6 @@ uint64_t* getCpuIdVirtualAddress( XSComBase_t& o_mmioAddr )
void resetScomEngine(TARGETING::Target* i_target,
uint64_t* i_virtAddr)
{
- // @todo-RTC:128077 XSCOM support for P9
- return;
-
errlHndl_t l_err = NULL;
HMER l_hmer;
uint64_t io_buffer = 0;
@@ -561,14 +558,16 @@ void resetScomEngine(TARGETING::Target* i_target,
uint64_t* l_virtAddr = 0;
// xscom registers that need to be set.
- XscomAddrType_t XscomAddr[] = { {0x0202000F, CurThreadCpu},
- {0x02020007, TargetCpu},
- {0x02020009, TargetCpu},};
+ XscomAddrType_t XscomAddr[] = {
+ {0x00090018, CurThreadCpu}, //XSCOM_RCVED_STAT_REG
+ {0x00090012, TargetCpu}, //XSCOM_LOG_REG
+ {0x00090013, TargetCpu}, //XSCOM_ERR_REG
+ };
TRACFCOMP(g_trac_xscom,"resetScomEngine: XSCOM RESET INTIATED");
// Loop through the registers you want to write to 0
- for (int i = 0; i<3; i++)
+ for (size_t i = 0; i<(sizeof(XscomAddr)/sizeof(XscomAddr[0])); i++)
{
// First address we need to read is for the Cpu that this thread is
// running on. Need to find the virtAddr for that CPU.
@@ -627,8 +626,6 @@ void collectXscomFFDC(TARGETING::Target* i_target,
uint64_t* i_virtAddr,
errlHndl_t& io_errl)
{
-// @todo-RTC:128077 XSCOM support for P9
-#if (0)
errlHndl_t l_err = NULL;
HMER l_hmer;
uint64_t io_buffer = 0;
@@ -636,10 +633,12 @@ void collectXscomFFDC(TARGETING::Target* i_target,
uint64_t* l_virtAddr = 0;
// xscom registers that need to be set.
- XscomAddrType_t XscomAddr[4] = { {0x0202000F, CurThreadCpu},
- {0x02020004, TargetCpu},
- {0x02020007, TargetCpu},
- {0x02020009, TargetCpu},};
+ XscomAddrType_t XscomAddr[4] = {
+ {0x00090018, CurThreadCpu}, //XSCOM_RCVED_STAT_REG
+ {0x00090012, TargetCpu}, //XSCOM_LOG_REG
+ {0x00090013, TargetCpu}, //XSCOM_ERR_REG
+ {0x0009001C, TargetCpu}, //ADS_XSCOM_CMD_REG
+ };
TRACFCOMP(g_trac_xscom,"collectXscomFFDC: XSCOM COLLECT FFDC STARTED");
@@ -647,13 +646,14 @@ void collectXscomFFDC(TARGETING::Target* i_target,
ERRORLOG::ErrlUserDetailsLogRegister l_logReg(i_target);
// Loop through the addresses you want to collect.
- for (int i = 0; i<4; i++)
+ for (size_t i = 0; i<(sizeof(XscomAddr)/sizeof(XscomAddr[0])); i++)
{
// If collecting first address, need to collect from Source Chip
if (XscomAddr[i].target_type == CurThreadCpu)
{
- l_virtAddr = getCpuIdVirtualAddress();
+ XSComBase_t l_ignored = 0;
+ l_virtAddr = getCpuIdVirtualAddress(l_ignored);
}
else
{
@@ -695,7 +695,6 @@ void collectXscomFFDC(TARGETING::Target* i_target,
// Add the register FFDC to the errorlog passed in.
l_logReg.addToLog(io_errl);
-#endif
return;
}
OpenPOWER on IntegriCloud