diff options
author | Norman James <njames@us.ibm.com> | 2014-09-23 14:47:34 -0500 |
---|---|---|
committer | Andrew J. Geissler <andrewg@us.ibm.com> | 2014-12-18 09:13:52 -0600 |
commit | 492738975921b5eeab19573cc47a5536e867cb02 (patch) | |
tree | 5dbaa546c5f6b23231c75c377d99e02814ac01bb /src/include/usr | |
parent | 9e91fa4f9e2ce76c458f8839e2f573c3cbc90797 (diff) | |
download | talos-hostboot-492738975921b5eeab19573cc47a5536e867cb02.tar.gz talos-hostboot-492738975921b5eeab19573cc47a5536e867cb02.zip |
Added callout interface for parts such as PNOR and SBE
Parts supported for callout are PNOR, SBE, VRM, GPIO, etc
Change-Id: I6734d58e8e44a7bfd71e87cc4f910bce9473f86d
RTC: 109945
CMVC-Coreq: 945677
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/13547
Tested-by: Jenkins Server
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Reviewed-by: STEPHEN M. CPREK <smcprek@us.ibm.com>
Reviewed-by: Andrew J. Geissler <andrewg@us.ibm.com>
Diffstat (limited to 'src/include/usr')
-rw-r--r-- | src/include/usr/errl/errlentry.H | 32 | ||||
-rw-r--r-- | src/include/usr/errl/errludcallout.H | 26 | ||||
-rw-r--r-- | src/include/usr/hwas/common/hwasCallout.H | 47 |
3 files changed, 103 insertions, 2 deletions
diff --git a/src/include/usr/errl/errlentry.H b/src/include/usr/errl/errlentry.H index 1081f365d..4f164d523 100644 --- a/src/include/usr/errl/errlentry.H +++ b/src/include/usr/errl/errlentry.H @@ -506,6 +506,28 @@ public: i_deconfigState = HWAS::NO_DECONFIG, const HWAS::GARD_ErrorType i_gardErrorType = HWAS::GARD_NULL); + /** + * @brief Add a part callout. + * The i_target is used to identify the associated target. This target + * may not be a FRU + * + * @param[in] i_target The hardware target that owns this part + * @param[in] i_partType The hardware part type + * @param[in] i_priority Priority of the callout + * @param[in] i_deconfigState Enum indicating whether the failing part + * should be deconfigured. + * @param[in] i_gardErrorType To indicate what type of failure occured + * + * @return void + */ + void addPartCallout(const TARGETING::Target *i_target, + const HWAS::partTypeEnum i_partType, + const HWAS::callOutPriority i_priority, + const HWAS::DeconfigEnum + i_deconfigState = HWAS::NO_DECONFIG, + const HWAS::GARD_ErrorType + i_gardErrorType = HWAS::GARD_NULL); + /** * @brief Add a bus callout @@ -606,6 +628,16 @@ private: epubSubSystem_t getSubSystem( HWAS::clockTypeEnum i_clockType ) const; /** + * @brief maps a part type to a subsystem ID + * + * @param[in] i_partType Bus Type. + * + * @return subsystem ID + */ + epubSubSystem_t getSubSystem( HWAS::partTypeEnum i_partType ) const; + + + /** * @brief The ErrlManager will call here to ask the * ErrlEntry to assign the time of commit, and to assign * the commiter's comp ID. diff --git a/src/include/usr/errl/errludcallout.H b/src/include/usr/errl/errludcallout.H index fcbbb6e4f..597a23088 100644 --- a/src/include/usr/errl/errludcallout.H +++ b/src/include/usr/errl/errludcallout.H @@ -5,7 +5,9 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2014 */ +/* Contributors Listed Below - COPYRIGHT 2012,2014 */ +/* [+] International Business Machines Corp. */ +/* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ @@ -83,6 +85,28 @@ private: const HWAS::DeconfigEnum i_deconfigState, const HWAS::GARD_ErrorType i_gardErrorType); /** + * @brief Construct a part callout user detail + * + * @param[in] i_pTargetData The hardware target data + * @param[in] i_targetDataLength length of i_pTargetData + * @param[in] i_partType part type Enum + * @param[in] i_priority Priority of the callout + * @param[in] i_deconfigState Enum indicating whether the failing part + * should be deconfigured. + * @param[in] i_gardErrorType To indicate what type of failure occured + * + * @return void + */ + ErrlUserDetailsCallout( + const void *i_pTargetData, + uint32_t i_targetDataLength, + const HWAS::partTypeEnum i_partType, + const HWAS::callOutPriority i_priority, + const HWAS::DeconfigEnum i_deconfigState, + const HWAS::GARD_ErrorType i_gardErrorType); + + + /** * @brief Construct a bus callout user detail * * @param[in] i_pTarget1Data The hardware target1 data diff --git a/src/include/usr/hwas/common/hwasCallout.H b/src/include/usr/hwas/common/hwasCallout.H index 2150a7ba2..36a316760 100644 --- a/src/include/usr/hwas/common/hwasCallout.H +++ b/src/include/usr/hwas/common/hwasCallout.H @@ -5,7 +5,9 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2014 */ +/* Contributors Listed Below - COPYRIGHT 2012,2014 */ +/* [+] International Business Machines Corp. */ +/* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ @@ -117,11 +119,23 @@ enum clockTypeEnum OSCPCICLK_TYPE = 4, }; +enum partTypeEnum +{ + FLASH_CONTROLLER_PART_TYPE = 1, + PNOR_PART_TYPE = 2, + SBE_SEEPROM_PART_TYPE = 3, + BOARD_VPD_PART_TYPE = 4, + LPC_SLAVE_PART_TYPE = 5, + CENTAUR_GPIO_EXPANDER_PART_TYPE = 6, + VOLTAGE_REGULATOR_PART_TYPE = 7, +}; + // const uint8_t HW_CALLOUT = 0x01; const uint8_t PROCEDURE_CALLOUT = 0x02; const uint8_t BUS_CALLOUT = 0x03; const uint8_t CLOCK_CALLOUT = 0x04; +const uint8_t PART_CALLOUT = 0x05; const uint8_t TARGET_IS_SENTINEL = 0xF0; @@ -150,6 +164,12 @@ typedef struct callout_ud GARD_ErrorType clkGardErrorType; // uint32_t // one Target will follow }; + struct { // type == PART_CALLOUT + partTypeEnum partType; // uint32_t + DeconfigEnum partDeconfigState; // uint32_t + GARD_ErrorType partGardErrorType; // uint32_t + // one Target will follow + }; }; } callout_ud_t; @@ -251,8 +271,33 @@ errlHndl_t platHandleClockCallout( DeconfigEnum i_deconfigState = DECONFIG, GARD_ErrorType i_gardErrorType = GARD_Fatal); +/** + * @brief platform specific code to handle a part callout that has been + * found in an errlog + * + * @param[in] i_pTarget associated target + * @param[in] i_partType Enum indicating which type of part + * @param[in] i_priority Enum indicating the priority of the callout + * @param[in] io_errl reference to errlHnld for this errlog + * @param[in] i_deconfigState Enum indicating whether to deconfig or not + * @param[in] i_gardErrType Enum indicating the type of failure + * + * @return errlHndl_t valid errlHndl_t handle if there was an error, + * NULL if no errors; + */ +errlHndl_t platHandlePartCallout( + TARGETING::Target *i_pTarget, + partTypeEnum i_partType, + callOutPriority i_priority, + errlHndl_t &io_errl, + DeconfigEnum i_deconfigState = DECONFIG, + GARD_ErrorType i_gardErrorType = GARD_Fatal); + + #endif // not PARSER + + }; // end namespace #endif |