diff options
Diffstat (limited to 'src/import/chips/centaur/utils')
-rw-r--r-- | src/import/chips/centaur/utils/imageProcs/cen_ringId.C | 76 | ||||
-rw-r--r-- | src/import/chips/centaur/utils/imageProcs/cen_ringId.H | 40 |
2 files changed, 104 insertions, 12 deletions
diff --git a/src/import/chips/centaur/utils/imageProcs/cen_ringId.C b/src/import/chips/centaur/utils/imageProcs/cen_ringId.C index cc953bea..e19aa46e 100644 --- a/src/import/chips/centaur/utils/imageProcs/cen_ringId.C +++ b/src/import/chips/centaur/utils/imageProcs/cen_ringId.C @@ -23,6 +23,9 @@ /* */ /* IBM_PROLOG_END_TAG */ +#include <string.h> +#include <common_ringId.H> + namespace CEN_RID { @@ -140,4 +143,75 @@ const RingVariantOrder RING_VARIANT_ORDER[] = { BASE, RL, NOT_VALID }; }; // namespace CEN -}; // namespace CENTAUR +}; // namespace CEN_RID + + +using namespace CEN_RID; + +ChipletType_t CEN_RID::ringid_get_chiplet(RingId_t i_ringId) +{ + return RING_PROPERTIES[i_ringId].iv_type; +} + +void CEN_RID::ringid_get_chiplet_properties( + ChipletType_t i_chiplet, + ChipletData_t** o_cpltData, + GenRingIdList** o_ringComm, + GenRingIdList** o_ringInst, + RingVariantOrder** o_varOrder, + uint8_t* o_varNumb) +{ + switch (i_chiplet) + { + case CEN_TYPE : + *o_cpltData = (ChipletData_t*) &CEN::g_chipletData; + *o_ringComm = (GenRingIdList*) CEN::RING_ID_LIST_COMMON; + *o_ringInst = NULL; + *o_varOrder = (RingVariantOrder*) CEN::RING_VARIANT_ORDER; + *o_varNumb = (*(*o_cpltData)).iv_num_ring_variants; + break; + + default : + *o_cpltData = NULL; + *o_ringComm = NULL; + *o_ringInst = NULL; + *o_varOrder = NULL; + *o_varNumb = 0; + break; + } +} + +GenRingIdList* CEN_RID::ringid_get_ring_properties(RingId_t i_ringId) +{ + ChipletData_t* l_cpltData; + GenRingIdList* l_ringList[2]; // 0: common, 1: instance + RingVariantOrder* l_varOrder; + uint8_t l_varNumb; + int i, j, n; + + CEN_RID::ringid_get_chiplet_properties( + CEN_RID::ringid_get_chiplet(i_ringId), + &l_cpltData, &l_ringList[0], &l_ringList[1], &l_varOrder, &l_varNumb); + + if (!l_ringList[0]) + { + return NULL; + } + + for (j = 0; j < 2; j++) // 0: common, 1: instance + { + n = (j ? l_cpltData->iv_num_instance_rings + : l_cpltData->iv_num_common_rings); + + for (i = 0; i < n; i++) + { + if (!strcmp(l_ringList[j][i].ringName, + RING_PROPERTIES[i_ringId].iv_name)) + { + return &(l_ringList[j][i]); + } + } + } + + return NULL; +} diff --git a/src/import/chips/centaur/utils/imageProcs/cen_ringId.H b/src/import/chips/centaur/utils/imageProcs/cen_ringId.H index 617a184a..593fa6a6 100644 --- a/src/import/chips/centaur/utils/imageProcs/cen_ringId.H +++ b/src/import/chips/centaur/utils/imageProcs/cen_ringId.H @@ -42,12 +42,6 @@ namespace CEN extern const GenRingIdList RING_ID_LIST_COMMON[]; extern const RingVariantOrder RING_VARIANT_ORDER[]; -struct RingVariants -{ - uint16_t iv_base; - uint16_t iv_riskLevel; -}; - enum RingOffset { // Common Rings @@ -156,19 +150,19 @@ enum RingOffset // ** none ** }; -static const CHIPLET_DATA g_cenData = +static const ChipletData_t g_chipletData = { 0x01, // Centaur chiplet ID NUM_RING_IDS, // Num of common rings for Centaur chiplet 0, // Num of instance rings for Centaur chiplet - 0 + 0, + 2, // Num of ring variants: BASE, RL }; - }; // namespace CEN #ifndef __PPE__ -static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] = +static const RingProperties_t RING_PROPERTIES[NUM_RING_IDS] = { { CEN::tcm_perv_cmsk, "tcm_perv_cmsk", CEN_TYPE }, { CEN::tcm_perv_lbst, "tcm_perv_lbst", CEN_TYPE }, @@ -275,7 +269,7 @@ static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] = #else -static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] = +static const RingProperties_t RING_PROPERTIES[NUM_RING_IDS] = { { CEN::tcm_perv_cmsk, CEN_TYPE }, { CEN::tcm_perv_lbst, CEN_TYPE }, @@ -382,4 +376,28 @@ static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] = #endif // __PPE__ + + +// returns our own chiplet enum value for this ringId +ChipletType_t +ringid_get_chiplet( + RingId_t i_ringId); + +// returns data structures defined for chiplet type +// as determined by ringId +void +ringid_get_chiplet_properties( + ChipletType_t i_chiplet, + ChipletData_t** o_cpltData, + GenRingIdList** o_ringComm, + GenRingIdList** o_ringInst, + RingVariantOrder** o_varOrder, + uint8_t* o_varNumb); + +// returns properties of a ring as determined by ringId +GenRingIdList* +ringid_get_ring_properties( + RingId_t i_ringId); + + #endif // _CEN_RINGID_H_ |