Skip to content

Commit

Permalink
Enablement of support for Stumped and Cmsk rings
Browse files Browse the repository at this point in the history
- Currently its enabled for ec_func ring only
- Introduced new function read_scan_data_care_ring()
  to read scan data & care bits for rings
- Updated scan address for cmsk ring
- Both ec_func's stumped and cmsk rs4 rings treated as
  non-overrides

Change-Id: Id684ecb68d987f6ecd3f2e0476ab9aa2adce338f
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/38788
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Claus M. Olsen <cmolsen@us.ibm.com>
Reviewed-by: Prem Shanker Jha <premjha2@in.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/38791
Reviewed-by: Hostboot Team <hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
  • Loading branch information
sumitk56 authored and sgupta2m committed May 26, 2017
1 parent 59ccf27 commit 4e43ed9
Show file tree
Hide file tree
Showing 5 changed files with 207 additions and 93 deletions.
11 changes: 6 additions & 5 deletions src/import/chips/p9/utils/imageProcs/p9_ringId.C
Original file line number Diff line number Diff line change
Expand Up @@ -435,11 +435,12 @@ namespace EC
{
const GenRingIdList RING_ID_LIST_COMMON[] =
{
{ "ec_func" , 0x00, 0x20, 0x20, EKB_RING , 0x2003700F},
{ "ec_gptr" , 0x01, 0x20, 0x20, EKB_RING , 0x20037002},
{ "ec_time" , 0x02, 0x20, 0x20, VPD_RING , 0x20037007},
{ "ec_mode" , 0x03, 0x20, 0x20, EKB_RING , 0x20037001},
{ "ec_abst" , 0x04, 0x20, 0x20, EKB_RING , 0x20037005},
{ "ec_func" , 0x00, 0x20, 0x20, EKB_STUMPED_RING , 0x2003700F},
{ "ec_gptr" , 0x01, 0x20, 0x20, EKB_RING , 0x20037002},
{ "ec_time" , 0x02, 0x20, 0x20, VPD_RING , 0x20037007},
{ "ec_mode" , 0x03, 0x20, 0x20, EKB_RING , 0x20037001},
{ "ec_abst" , 0x04, 0x20, 0x20, EKB_RING , 0x20037005},
{ "ec_cmsk" , 0xFF, 0xFF, 0xFF, EKB_CMSK_RING , 0x2003700A},
};
const GenRingIdList RING_ID_LIST_INSTANCE[] =
{
Expand Down
11 changes: 8 additions & 3 deletions src/import/chips/p9/utils/imageProcs/p9_ringId.H
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ enum RingClass
{
EKB_RING,
EKB_FSM_RING,
EKB_STUMPED_RING,
EKB_CMSK_RING,
VPD_RING,
NUM_RING_CLASSES
};
Expand Down Expand Up @@ -837,14 +839,15 @@ enum RingOffset
ec_time = 2,
ec_mode = 3,
ec_abst = 4,
ec_cmsk = 5,
// Instance Rings
ec_repr = (0 | INSTANCE_RING_MARK)
};

static const CHIPLET_DATA g_ecData =
{
32, // Core Chiplet ID range is 32-55. The base ID is 32.
5, // 5 common rings for Core chiplet
6, // 6 common rings for Core chiplet
1, // 1 instance specific ring for each Core chiplet
1
};
Expand Down Expand Up @@ -1124,7 +1127,8 @@ static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] =
{ EQ::eq_inex_bucket_1 , "eq_inex_bucket_1" , EQ_TYPE }, // 248
{ EQ::eq_inex_bucket_2 , "eq_inex_bucket_2" , EQ_TYPE }, // 249
{ EQ::eq_inex_bucket_3 , "eq_inex_bucket_3" , EQ_TYPE }, // 250
{ EQ::eq_inex_bucket_4 , "eq_inex_bucket_4" , EQ_TYPE } // 251
{ EQ::eq_inex_bucket_4 , "eq_inex_bucket_4" , EQ_TYPE }, // 251
{ EC::ec_cmsk , "ec_cmsk" , EC_TYPE }, // 252
};
#endif
#ifdef __PPE__
Expand Down Expand Up @@ -1381,7 +1385,8 @@ static const ringProperties_t RING_PROPERTIES[NUM_RING_IDS] =
{ EQ::eq_inex_bucket_1 , EQ_TYPE }, // 248
{ EQ::eq_inex_bucket_2 , EQ_TYPE }, // 249
{ EQ::eq_inex_bucket_3 , EQ_TYPE }, // 250
{ EQ::eq_inex_bucket_4 , EQ_TYPE } // 251
{ EQ::eq_inex_bucket_4 , EQ_TYPE }, // 251
{ EC::ec_cmsk , EC_TYPE }, // 252
};
#endif

Expand Down
4 changes: 4 additions & 0 deletions src/import/chips/p9/utils/imageProcs/p9_ring_id.h
Original file line number Diff line number Diff line change
Expand Up @@ -349,6 +349,10 @@ enum RingID
eq_inex_bucket_2 = 249,
eq_inex_bucket_3 = 250,
eq_inex_bucket_4 = 251,

// CMSK ring
ec_cmsk = 252,

//***************************
// Rings needed for SBE - End
//***************************
Expand Down
34 changes: 33 additions & 1 deletion src/import/chips/p9/utils/imageProcs/p9_scan_compression.H
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
/// 3 - An 8-bit type field distinguishing different scan data types
/// (0 for non-CMSK, 1 for CMSK).
///
/// 4:5 - The 16-bit size of the uncompressed scan data with
/// 4:5 - The 16-bit size of the compressed scan data with
/// this header in \e bytes. This is not the exact length of actual scan data
/// in bits, but the number of bytes used by the RS4 encoding to store those
/// compressed scan bits.
Expand Down Expand Up @@ -245,6 +245,38 @@ int
rs4_redundant(const CompressedScanData* i_data, int* o_redundant);


/// Check for CMSK ring in RS4
///
/// \param[in] i_rs4 A pointer to the RS4 CompressedScanData [header + data]
///
/// \returns 1 if CMSK ring found, 0 otherwise
int rs4_is_cmsk(CompressedScanData* i_rs4);


/// Embed CMSK ring into an RS4 ring
///
/// \param[inout] io_rs4 A pointer to the CompressedScanData [header + data]
///
/// \param[in] i_rs4_cmsk A pointer to the cmsk CompressedScanData header + data to be embedded
///
/// \returns See \ref scan_compression_codes
int rs4_embed_cmsk(CompressedScanData** io_rs4,
CompressedScanData* i_rs4_cmsk);


/// Extract Stump & CMSK rings from an RS4 ring
///
/// \param[in] i_rs4 A pointer to the CompressedScanData [header + data]
///
/// \param[inout] i_rs4_stump A pointer to the Stump CompressedScanData [header + data]
///
/// \param[inout] i_rs4_cmsk A pointer to the Cmsk CompressedScanData [header + data]
///
/// \returns See \ref scan_compression_codes
int rs4_extract_cmsk(CompressedScanData* i_rs4,
CompressedScanData** io_rs4_stump,
CompressedScanData** io_rs4_cmsk);

#endif // __ASSEMBLER__


Expand Down

0 comments on commit 4e43ed9

Please sign in to comment.