Skip to content

Commit

Permalink
Cumulus: support MCFGPA_HOLE0_UPPER_ADDRESS_AT_END_OF_RANGE bit setting
Browse files Browse the repository at this point in the history
Change-Id: Iab5fb30bdbb2d27e98f15d64081e52d4326dde50
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/47140
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: LENNARD G. STREAT <lstreat@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Joseph J. McGill <jmcgill@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/47141
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
  • Loading branch information
ibmthi authored and dcrowell77 committed Oct 10, 2017
1 parent 1debaa8 commit 475bc8d
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions src/import/chips/p9/procedures/hwp/nest/p9_mss_setup_bars.C
Expand Up @@ -1065,6 +1065,35 @@ fapi_try_exit:
return fapi2::current_err;
}

///
/// @brief Set MCFGPA MEMORY HOLE UPPER_ADDRESS_AT_END_OF_RANGE bit
///
/// @param[in] i_target MC target (MCS or MI)
/// @param[in/out] io_data Data buffer
///
/// @return FAPI2_RC_SUCCESS if success, else error code.
///
template<fapi2::TargetType T>
void setUpperAddrEndOfRangeBit(const fapi2::Target<T>& i_target,
fapi2::buffer<uint64_t>& io_scomData);

/// MC = MCS (Nimbus)
template<>
void setUpperAddrEndOfRangeBit(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
fapi2::buffer<uint64_t>& io_scomData)
{
// This bit is not used in Nimbus
return;
}

/// MC = MI (Cumulus)
template<>
void setUpperAddrEndOfRangeBit(const fapi2::Target<fapi2::TARGET_TYPE_MI>& i_target,
fapi2::buffer<uint64_t>& io_scomData)
{
io_scomData.setBit<MCS_MCFGPA_RESERVED_1>();
return;
}

///
/// @brief Write BAR data to a memory controller
Expand Down Expand Up @@ -1201,6 +1230,9 @@ fapi2::ReturnCode writeMCBarData(
// MCFGPA HOLE0 valid (bit 0)
l_scomData.setBit<MCS_MCFGPA_HOLE0_VALID>();

// MCFGPA_HOLE0_UPPER_ADDRESS_AT_END_OF_RANGE
setUpperAddrEndOfRangeBit(l_target, l_scomData);

// Hole 0 lower addr
// 0b0000000001 = 4GB
l_scomData.insertFromRight<MCS_MCFGPA_HOLE0_LOWER_ADDRESS,
Expand All @@ -1219,6 +1251,9 @@ fapi2::ReturnCode writeMCBarData(
// MCFGPA HOLE1 valid (bit 0)
l_scomData.setBit<MCS_MCFGPA_HOLE0_VALID>();

// MCFGPA_HOLE1_UPPER_ADDRESS_AT_END_OF_RANGE
setUpperAddrEndOfRangeBit(l_target, l_scomData);

// Hole 1 lower addr
// 0b0000000001 = 4GB
l_scomData.insertFromRight<MCS_MCFGPA_HOLE1_LOWER_ADDRESS,
Expand Down Expand Up @@ -1246,6 +1281,9 @@ fapi2::ReturnCode writeMCBarData(
// MCFGPMA HOLE0 valid (bit 0)
l_scomData.setBit<MCS_MCFGPMA_HOLE0_VALID>();

// MCFGPA_HOLE0_UPPER_ADDRESS_AT_END_OF_RANGE
setUpperAddrEndOfRangeBit(l_target, l_scomData);

// Hole 0 lower addr
// 0b0000000001 = 4GB
l_scomData.insertFromRight<MCS_MCFGPMA_HOLE0_LOWER_ADDRESS,
Expand All @@ -1265,6 +1303,9 @@ fapi2::ReturnCode writeMCBarData(
// 0b0000000001 = 4GB
l_scomData.setBit<MCS_MCFGPMA_HOLE1_VALID>();

// MCFGPA_HOLE1_UPPER_ADDRESS_AT_END_OF_RANGE
setUpperAddrEndOfRangeBit(l_target, l_scomData);

// Hole 1 lower addr
l_scomData.insertFromRight<MCS_MCFGPMA_HOLE1_LOWER_ADDRESS,
MCS_MCFGPMA_HOLE1_LOWER_ADDRESS_LEN>(
Expand Down

0 comments on commit 475bc8d

Please sign in to comment.