diff options
Diffstat (limited to 'src/usr/pnor/pnor_hiomapdd.C')
-rw-r--r-- | src/usr/pnor/pnor_hiomapdd.C | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/usr/pnor/pnor_hiomapdd.C b/src/usr/pnor/pnor_hiomapdd.C index 5f998fca1..2b7acf863 100644 --- a/src/usr/pnor/pnor_hiomapdd.C +++ b/src/usr/pnor/pnor_hiomapdd.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2011,2018 */ +/* Contributors Listed Below - COPYRIGHT 2011,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -181,6 +181,14 @@ void getPnorInfo( PnorInfo_t& o_pnorInfo ) Singleton<PnorHiomapDD>::instance().getNorSize(); } +/** + * @brief Get HIOMAP PNOR access mode + */ +PNOR::hiomapMode getPnorAccessMode(void) +{ + return Singleton<PnorHiomapDD>::instance().getAccessMode(); +} + // Register access functions to DD framework DEVICE_REGISTER_ROUTE(DeviceFW::READ, DeviceFW::PNOR, @@ -218,18 +226,26 @@ uint32_t PnorHiomapDD::getNorWorkarounds(void) return iv_pnor->getNorWorkarounds(); } -static PnorIf* probeHiomapTransport(TARGETING::Target* i_target) +PNOR::hiomapMode PnorHiomapDD::getAccessMode(void) +{ + return iv_mode; +} + +static PnorIf* probeHiomapTransport(TARGETING::Target* i_target, + PNOR::hiomapMode& io_mode) { PnorIf* pnor; do { if ((pnor = PnorIpmiDD::probe(i_target))) { + io_mode = PNOR::PNOR_IPMI; break; } if ((pnor = PnorMboxDD::probe(i_target))) { + io_mode = PNOR::PNOR_MBOX; break; } } while (0); @@ -250,8 +266,9 @@ static PnorIf* probeHiomapTransport(TARGETING::Target* i_target) } PnorHiomapDD::PnorHiomapDD(TARGETING::Target* i_target) +:iv_mode(PNOR::PNOR_UNKNOWN) { - iv_pnor = probeHiomapTransport(i_target); + iv_pnor = probeHiomapTransport(i_target, iv_mode); } PnorHiomapDD::~PnorHiomapDD() |