summaryrefslogtreecommitdiffstats
path: root/src/occ_405/homer.c
diff options
context:
space:
mode:
authorWael El-Essawy <welessa@us.ibm.com>2016-10-04 09:09:45 -0500
committerWael El-Essawy <welessa@us.ibm.com>2016-10-11 17:44:46 -0400
commit609700b4ae20895c3d0713c8cfcb4717915b2bcd (patch)
tree3db0853a5230446428e865fe75cbc36ed6524b23 /src/occ_405/homer.c
parentc21550d3951c6b88f12de2b5aa9565a6c23b6bd4 (diff)
downloadtalos-occ-609700b4ae20895c3d0713c8cfcb4717915b2bcd.tar.gz
talos-occ-609700b4ae20895c3d0713c8cfcb4717915b2bcd.zip
Use HOMER Init Data
Enable reading and usage of HOMER init data. i.e. nest frequency, attention type... Change-Id: Ic9e0bc47fc110983e7e995191eda1ed6578a1ae8 RTC: 145754 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/30674 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: William A. Bryan <wilbryan@us.ibm.com> Reviewed-by: Martha Broyles <mbroyles@us.ibm.com> Reviewed-by: Wael El-Essawy <welessa@us.ibm.com>
Diffstat (limited to 'src/occ_405/homer.c')
-rwxr-xr-xsrc/occ_405/homer.c84
1 files changed, 22 insertions, 62 deletions
diff --git a/src/occ_405/homer.c b/src/occ_405/homer.c
index 3107006..ef06fd0 100755
--- a/src/occ_405/homer.c
+++ b/src/occ_405/homer.c
@@ -66,7 +66,7 @@ homer_rc_t __attribute__((optimize("O1"))) homer_hd_map_read_unmap(const homer_r
#endif
homer_rc_t l_rc = HOMER_SUCCESS;
- occHostConfigDataArea_t *l_hdcfg_data = (occHostConfigDataArea_t *) HOMER_BASE_ADDRESS;
+ occHostConfigDataArea_t *l_hdcfg_data = (occHostConfigDataArea_t *) HOMER_HD_ADDRESS;
// Validate the pointers
if (!o_host_data || !o_ssx_rc || ((uint32_t)o_host_data % 4))
@@ -100,73 +100,33 @@ homer_rc_t __attribute__((optimize("O1"))) homer_hd_map_read_unmap(const homer_r
{
// Check version, if ok handle ID requested. We need to support
// current version as well as older ones
- if ((HOMER_VERSION_MIN > l_hdcfg_data->version)
- ||
- (HOMER_VERSION_MAX < l_hdcfg_data->version))
+ if (HOMER_VERSION_P9 != l_hdcfg_data->version)
{
l_rc = HOMER_UNSUPPORTED_HD_VERSION;
}
else
{
- // Version guaranteed to be within supported range
-
- // HOMER Version 1 support
- if (HOMER_VERSION_1 == l_hdcfg_data->version)
- {
- switch (i_id)
- {
- case HOMER_VERSION:
- *(uint32_t *)o_host_data = l_hdcfg_data->version;
- break;
- case HOMER_NEST_FREQ:
- *(uint32_t *)o_host_data = l_hdcfg_data->nestFrequency;
- break;
- default:
- l_rc = HOMER_UNKNOWN_ID;
- break;
- }
- }
- else if (HOMER_VERSION_2 == l_hdcfg_data->version)
- {
- switch (i_id)
- {
- case HOMER_VERSION:
- *(uint32_t *)o_host_data = l_hdcfg_data->version;
- break;
- case HOMER_NEST_FREQ:
- *(uint32_t *)o_host_data = l_hdcfg_data->nestFrequency;
- break;
- case HOMER_INT_TYPE:
- *(uint32_t *)o_host_data = l_hdcfg_data->occInterruptType;
- break;
- default:
- l_rc = HOMER_UNKNOWN_ID;
- break;
- }
- }
- else if (HOMER_VERSION_3 == l_hdcfg_data->version)
+ // HOMER_VERSION_P9 == l_hdcfg_data->version
+ switch (i_id)
{
- switch (i_id)
- {
- case HOMER_VERSION:
- *(uint32_t *)o_host_data = l_hdcfg_data->version;
- break;
- case HOMER_NEST_FREQ:
- *(uint32_t *)o_host_data = l_hdcfg_data->nestFrequency;
- break;
- case HOMER_INT_TYPE:
- *(uint32_t *)o_host_data = l_hdcfg_data->occInterruptType;
- break;
- case HOMER_FIR_MASTER:
- *(uint32_t *)o_host_data = l_hdcfg_data->firMaster;
- break;
- case HOMER_FIR_PARMS:
- memcpy(o_host_data, &(l_hdcfg_data->firParms[0]), HOMER_FIR_PARM_SIZE);
- break;
- default:
- l_rc = HOMER_UNKNOWN_ID;
- break;
- }
+ case HOMER_VERSION:
+ *(uint32_t *)o_host_data = l_hdcfg_data->version;
+ break;
+ case HOMER_NEST_FREQ:
+ *(uint32_t *)o_host_data = l_hdcfg_data->nestFrequency;
+ break;
+ case HOMER_INT_TYPE:
+ *(uint32_t *)o_host_data = l_hdcfg_data->occInterruptType;
+ break;
+ case HOMER_FIR_MASTER:
+ *(uint32_t *)o_host_data = l_hdcfg_data->firMaster;
+ break;
+ case HOMER_FIR_PARMS:
+ memcpy(o_host_data, &(l_hdcfg_data->firParms[0]), HOMER_FIR_PARM_SIZE);
+ break;
+ default:
+ l_rc = HOMER_UNKNOWN_ID;
+ break;
}
}
#if PPC405_MMU_SUPPORT
OpenPOWER on IntegriCloud