From d9924e34b630b7a57ab036dfb9f02808a5fec607 Mon Sep 17 00:00:00 2001 From: Girisankar Paulraj Date: Mon, 13 Jun 2016 04:22:11 -0500 Subject: Added 0b0,1,2 and 3 chiplet TOR block copy support. Based on vpd module ring requirement, ob chiplet is separated based on each chiplet instance. So, ob becomes as ob0, 0b1, 0b2 and 0b3. Added more logic to traverse over above defined chiplets. Change-Id: I85b04c33236a03ac49676522325f5e140067e8f1 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/25706 Tested-by: Jenkins Server Tested-by: Hostboot CI Reviewed-by: Claus M. Olsen Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA Reviewed-by: Martin Peschke Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/25944 Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell --- src/import/chips/p9/utils/imageProcs/p9_tor.C | 44 +++++++++++++++++++++++++++ src/import/chips/p9/utils/imageProcs/p9_tor.H | 23 ++++++++------ 2 files changed, 57 insertions(+), 10 deletions(-) (limited to 'src/import') diff --git a/src/import/chips/p9/utils/imageProcs/p9_tor.C b/src/import/chips/p9/utils/imageProcs/p9_tor.C index 95097cca5..16d464bb3 100644 --- a/src/import/chips/p9/utils/imageProcs/p9_tor.C +++ b/src/import/chips/p9/utils/imageProcs/p9_tor.C @@ -161,6 +161,34 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer ring_id_list_instance = (GenRingIdList*) MC::RING_ID_LIST_INSTANCE; break; + case OB0_CPLT : + l_cpltData = OB0::g_ob0Data; + 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; + break; + + case OB1_CPLT : + l_cpltData = OB1::g_ob1Data; + 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; + break; + + case OB2_CPLT : + l_cpltData = OB2::g_ob2Data; + 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; + break; + + case OB3_CPLT : + l_cpltData = OB3::g_ob3Data; + 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; + break; + case PCI0_CPLT : l_cpltData = PCI0::g_pci0Data; iv_num_variant = (uint8_t)sizeof(PCI0::RingVariants) / sizeof(uint16_t); @@ -168,6 +196,7 @@ int get_ring_from_sbe_image ( void* i_ringSectionPtr, // Image pointer ring_id_list_instance = (GenRingIdList*) PCI0::RING_ID_LIST_INSTANCE; break; + case PCI1_CPLT : l_cpltData = PCI1::g_pci1Data; iv_num_variant = (uint8_t)sizeof(PCI1::RingVariants) / sizeof(uint16_t); @@ -1183,6 +1212,21 @@ int tor_get_ring( void* l_sbeTorId = MC_CPLT; break; + case 9 : + l_sbeTorId = OB0_CPLT; + break; + + case 10 : + l_sbeTorId = OB1_CPLT; + break; + + case 11 : + l_sbeTorId = OB2_CPLT; + break; + + case 12 : + l_sbeTorId = OB3_CPLT; + break; case 13 : l_sbeTorId = PCI0_CPLT; diff --git a/src/import/chips/p9/utils/imageProcs/p9_tor.H b/src/import/chips/p9/utils/imageProcs/p9_tor.H index 0144394c5..35ef10293 100644 --- a/src/import/chips/p9/utils/imageProcs/p9_tor.H +++ b/src/import/chips/p9/utils/imageProcs/p9_tor.H @@ -61,6 +61,7 @@ typedef struct } TorPpeBlock_t; + #define IMGBUILD_TGR_RING_FOUND 0 #define IMGBUILD_TGR_RING_BLOCKS_FOUND 0 #define IMGBUILD_TGR_RING_NOT_FOUND 1 // Ring is not found in HW image. @@ -140,12 +141,16 @@ typedef enum SbeTorId N3_CPLT = 4, XB_CPLT = 5, MC_CPLT = 6, - PCI0_CPLT = 7, - PCI1_CPLT = 8, - PCI2_CPLT = 9, - EQ_CPLT = 10, - EC_CPLT = 11, - SBE_NOOF_CHIPLETS = 12 + OB0_CPLT = 7, + OB1_CPLT = 8, + OB2_CPLT = 9, + OB3_CPLT = 10, + PCI0_CPLT = 11, + PCI1_CPLT = 12, + PCI2_CPLT = 13, + EQ_CPLT = 14, + EC_CPLT = 15, + SBE_NOOF_CHIPLETS = 16 } SbeTorId_t; typedef enum CmeTorId { @@ -224,8 +229,7 @@ int tor_get_ring( void* RingBlockType_t i_RingBlockType, // 0: single ring, 1: ring block void** io_ringBlockPtr, // Addr of ring buffer uint32_t& io_ringBlockSize, // size of ring data - char* o_ringName // Ring name - ); + char* o_ringName); // Ring name int tor_get_single_ring ( void* i_ringSectionPt, // Ring address Ptr any of .rings, .overrides and .overlays. @@ -247,8 +251,7 @@ int tor_get_block_of_rings ( void* RingVariant_t i_RingVariant, // base,cache,etc uint8_t i_instanceId, // Chiplet Instance ID void** io_ringBlockPtr, // Addr of ring buffer - uint32_t& io_ringBlockSize // size of ring data - ); + uint32_t& io_ringBlockSize); // size of ring data }; #endif //_P9_TOR_H_ -- cgit v1.2.1