5 #include "sw/device/silicon_creator/lib/drivers/pwrmgr.h"
9 #include "sw/device/silicon_creator/lib/drivers/ibex.h"
12 #include "pwrmgr_regs.h"
16 kAllResetsEnable = (1 << kTopEarlgreyPowerManagerResetRequestsLast) - 1,
17 kSyncConfig = (1 << PWRMGR_CFG_CDC_SYNC_SYNC_BIT),
20 static_assert(kAllResetsEnable == 0x1,
21 "Number of reset requests changed, update expectation if this is "
24 PWRMGR_RESET_EN_EN_FIELD_WIDTH == 1,
25 "RESET_EN field width changed, kAllResetsEnable may need to be updated");
27 void pwrmgr_cdc_sync(uint32_t n) {
30 uint32_t cpu_cycle_timeout =
35 while (abs_mmio_read32(kBase + PWRMGR_CFG_CDC_SYNC_REG_OFFSET)) {
36 if (ibex_mcycle32() > cpu_cycle_timeout) {
44 abs_mmio_write32(kBase + PWRMGR_CFG_CDC_SYNC_REG_OFFSET, kSyncConfig);
45 while (abs_mmio_read32(kBase + PWRMGR_CFG_CDC_SYNC_REG_OFFSET)) {
46 if (ibex_mcycle32() > cpu_cycle_timeout)
53 void pwrmgr_all_resets_enable(
void) {