diff options
author | Girisankar Paulraj <gpaulraj@in.ibm.com> | 2016-08-01 11:24:22 -0500 |
---|---|---|
committer | Sachin Gupta <sgupta2m@in.ibm.com> | 2016-09-26 03:13:01 -0400 |
commit | 04178df318b913df7f5b8b30df36a52545806521 (patch) | |
tree | bd99b99ba590d5ac5265e96861bcc1456a204d6d /src/import/chips/p9/utils/imageProcs/p9_tor.C | |
parent | 9a31688300f6e401ebfe02fb6a815c9310d634de (diff) | |
download | talos-sbe-04178df318b913df7f5b8b30df36a52545806521.tar.gz talos-sbe-04178df318b913df7f5b8b30df36a52545806521.zip |
TOR API OVERRIDE support
iv_num_variant changed as 1 for override function and added
condition as work only on seeprom image override section.
Added ringVaraint suppot to accommudate latest p9_ring_apply
changes
Change-Id: I1bf149a65a625a181246fec9a6d17fe38218c9a0
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/27706
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Prachi Gupta <pragupta@us.ibm.com>
Reviewed-by: Kahn C. Evans <kahnevan@us.ibm.com>
Reviewed-by: Martin Peschke <mpeschke@de.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/30257
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'src/import/chips/p9/utils/imageProcs/p9_tor.C')
-rw-r--r-- | src/import/chips/p9/utils/imageProcs/p9_tor.C | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/import/chips/p9/utils/imageProcs/p9_tor.C b/src/import/chips/p9/utils/imageProcs/p9_tor.C index 23b6a7c8..923bb9c0 100644 --- a/src/import/chips/p9/utils/imageProcs/p9_tor.C +++ b/src/import/chips/p9/utils/imageProcs/p9_tor.C @@ -95,6 +95,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer int temp = i_ddLevel >> 2; uint32_t* deltaRingRS4_4B; uint32_t sbe_offset = 0; + RingVariantOrder* ring_variant_order = NULL; if (i_magic == P9_XIP_MAGIC_HW) { @@ -114,7 +115,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer GenRingIdList* ring_id_list_common = NULL; GenRingIdList* ring_id_list_instance = NULL; CHIPLET_DATA l_cpltData; - uint8_t iv_num_variant = 0; + uint8_t iv_num_variant = 1; switch (l) { @@ -123,6 +124,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(PERV::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) PERV::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) PERV::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) PERV::RING_VARIANT_ORDER; break; case N0_CPLT : @@ -130,6 +132,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(N0::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) N0::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) N0::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) N0::RING_VARIANT_ORDER; break; case N1_CPLT : @@ -137,6 +140,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(N1::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) N1::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) N1::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) N1::RING_VARIANT_ORDER; break; case N2_CPLT : @@ -144,6 +148,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(N2::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) N2::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) N2::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) N2::RING_VARIANT_ORDER; break; case N3_CPLT : @@ -151,6 +156,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(N3::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) N3::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) N3::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) N3::RING_VARIANT_ORDER; break; case XB_CPLT : @@ -158,6 +164,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(XB::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) XB::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) XB::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) XB::RING_VARIANT_ORDER; break; case MC_CPLT : @@ -165,6 +172,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(MC::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) MC::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) MC::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) MC::RING_VARIANT_ORDER; break; case OB0_CPLT : @@ -172,6 +180,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(OB0::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) OB0::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) OB0::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) OB0::RING_VARIANT_ORDER; break; case OB1_CPLT : @@ -179,6 +188,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(OB1::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) OB1::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) OB1::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) OB1::RING_VARIANT_ORDER; break; case OB2_CPLT : @@ -186,6 +196,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(OB2::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) OB2::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) OB2::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) OB2::RING_VARIANT_ORDER; break; case OB3_CPLT : @@ -193,6 +204,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(OB3::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) OB3::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) OB3::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) OB3::RING_VARIANT_ORDER; break; case PCI0_CPLT : @@ -200,6 +212,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(PCI0::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) PCI0::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) PCI0::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) PCI0::RING_VARIANT_ORDER; break; @@ -208,6 +221,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(PCI1::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) PCI1::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) PCI1::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) PCI1::RING_VARIANT_ORDER; break; case PCI2_CPLT : @@ -215,6 +229,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(PCI2::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) PCI2::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) PCI2::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) PCI2::RING_VARIANT_ORDER; break; case EQ_CPLT : @@ -222,6 +237,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(EQ::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) EQ::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) EQ::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) EQ::RING_VARIANT_ORDER; break; case EC_CPLT : @@ -229,12 +245,15 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer iv_num_variant = (uint8_t)sizeof(EC::RingVariants) / sizeof(uint16_t); ring_id_list_common = (GenRingIdList*) EC::RING_ID_LIST_COMMON; ring_id_list_instance = (GenRingIdList*) EC::RING_ID_LIST_INSTANCE; + ring_variant_order = (RingVariantOrder*) EC::RING_VARIANT_ORDER; break; default : MY_INF("Not valid selection\n"); } + iv_num_variant = (i_RingVariant == OVERRIDE) ? 1 : iv_num_variant; + if(i_dbgl > 1) { MY_INF(" No of CommonRing %d, No of InstanceRing %d, No of Variants %d \n", @@ -256,7 +275,8 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer if((strcmp( (ring_id_list_common + i)->ringName, RING_PROPERTIES[i_ringId].iv_name) == 0) - && ( i_RingVariant == j )) + && ( i_RingVariant == ring_variant_order->variant[j] + || (i_RingVariant == OVERRIDE && i_magic == P9_XIP_MAGIC_SEEPROM))) { strcpy(o_ringName, RING_PROPERTIES[i_ringId].iv_name); int var = l * 8 + i_ddLevel + temp; @@ -362,7 +382,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer if( io_instanceId >= (ring_id_list_instance + 0)->instanceIdMin && io_instanceId <= (ring_id_list_instance + 0)->instanceIdMax) { - if( i == io_instanceId && k == i_RingVariant ) + if( i == io_instanceId && i_RingVariant == ring_variant_order->variant[k] ) { strcpy(o_ringName, RING_PROPERTIES[i_ringId].iv_name); uint32_t var = l * 8 + i_ddLevel + temp + 4; |