diff options
Diffstat (limited to 'src/import/hwpf/fapi2/include/plat/plat_vpd_access.H')
-rw-r--r-- | src/import/hwpf/fapi2/include/plat/plat_vpd_access.H | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/src/import/hwpf/fapi2/include/plat/plat_vpd_access.H b/src/import/hwpf/fapi2/include/plat/plat_vpd_access.H index bc82a1d3..430aad87 100644 --- a/src/import/hwpf/fapi2/include/plat/plat_vpd_access.H +++ b/src/import/hwpf/fapi2/include/plat/plat_vpd_access.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016 */ +/* Contributors Listed Below - COPYRIGHT 2016,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -50,10 +50,47 @@ inline fapi2::ReturnCode platGetVPD(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& else { o_blob[0] = 111; + } + + return l_rc; +} + +// platform specific for OCMB target -- test code only +inline fapi2::ReturnCode platGetVPD(const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>& i_target, + VPDInfo<fapi2::TARGET_TYPE_OCMB_CHIP>& io_vpd_info, + uint8_t* o_blob) +{ + fapi2::ReturnCode l_rc = fapi2::FAPI2_RC_SUCCESS; + + if( o_blob == nullptr ) + { + io_vpd_info.iv_size = 128; + } + else + { + //-- Implementation Example/Suggestion for 'EFD' -- + // Check byte 2 for DDR4 or DDR5 + // Check bytes 205-206 of SPD for supported speeds + // Look at EFD metadata in 277-415 + // Walk through all present EFD blocks looking for + // a match for speed, rank, channel/position + // Copy entire EFD block into o_blob + // Update output variables with the metadata that + // should be used to decode the block + + if( io_vpd_info.iv_omi_freq_mhz == 25600 ) + { + o_blob[0] = 0x40; + } + else if( io_vpd_info.iv_omi_freq_mhz == 21330 ) + { + o_blob[0] = 0x10; + } - io_vpd_info.iv_freq_mhz = 10000; - io_vpd_info.iv_rank_count_dimm_0 = 1; - io_vpd_info.iv_rank_count_dimm_1 = 8; + io_vpd_info.iv_efd_type = 0x11; + io_vpd_info.iv_dmb_mfg_id = 0x2980; + io_vpd_info.iv_dmb_revision = 0x00; + io_vpd_info.iv_ddr_mode = 0x0C; } |