1 #pragma once 2 3 #include <libipl.H> 4 5 extern "C" 6 { 7 #include <libpdbg.h> 8 } 9 10 namespace openpower 11 { 12 namespace phal 13 { 14 15 /** 16 * @brief This function will initialize required phal 17 * libraries. 18 * Throws an exception on error. 19 * 20 * @param[in] mode - IPL mode, default IPL_AUTOBOOT 21 * 22 */ 23 void phal_init(enum ipl_mode mode = IPL_AUTOBOOT); 24 25 /** 26 * @brief Check if primary processor or not 27 * 28 * @param[in] procTarget - Processor target to check if primary or not 29 * 30 * @return True/False 31 */ 32 bool isPrimaryProc(struct pdbg_target* procTarget); 33 34 /** 35 * @brief Read the input CFAM register 36 * 37 * @param[in] procTarget - Processor target to perform the operation on 38 * @param[in] reg - The register address to read 39 * @param[out] val - The value read from the register 40 * 41 * @return 0 on success, non-0 on failure 42 */ 43 uint32_t getCFAM(struct pdbg_target* procTarget, const uint32_t reg, 44 uint32_t& val); 45 46 /** 47 * @brief Write the input CFAM register 48 * 49 * @param[in] procTarget - Processor target to perform the operation on 50 * @param[in] reg - The register address to write 51 * @param[out] val - The value to write to the register 52 * 53 * @return 0 on success, non-0 on failure 54 */ 55 uint32_t putCFAM(struct pdbg_target* procTarget, const uint32_t reg, 56 const uint32_t val); 57 58 /** 59 * @brief Helper function to find FSI target needed for FSI operations 60 * 61 * @param[in] procTarget - Processor target to find the FSI target on 62 * 63 * @return Valid pointer to FSI target on success, nullptr on failure 64 */ 65 pdbg_target* getFsiTarget(struct pdbg_target* procTarget); 66 67 /** 68 * @brief Helper function to probe the processor target 69 * 70 * The probe call only has to happen once per application start so ensure 71 * this function only probes once no matter how many times it's called. 72 * 73 * @param[in] procTarget - Processor target to probe 74 * 75 * @return 0 on success, non-0 on failure 76 */ 77 uint32_t probeTarget(struct pdbg_target* procTarget); 78 79 } // namespace phal 80 } // namespace openpower 81