7#ifndef _HARDWARE_RESETS_H
8#define _HARDWARE_RESETS_H
11#include "hardware/structs/resets.h"
60#ifndef PARAM_ASSERTIONS_ENABLED_HARDWARE_RESETS
61#ifdef PARAM_ASSERTIONS_ENABLED_RESET
62#define PARAM_ASSERTIONS_ENABLED_HARDWARE_RESETS PARAM_ASSERTIONS_ENABLED_RESET
64#define PARAM_ASSERTIONS_ENABLED_HARDWARE_RESETS 0
71static __force_inline void reset_block_reg_mask(io_rw_32 *reset, uint32_t mask) {
75static __force_inline void unreset_block_reg_mask(io_rw_32 *reset, uint32_t mask) {
79static __force_inline void unreset_block_reg_mask_wait_blocking(io_rw_32 *reset, io_ro_32 *reset_done, uint32_t mask) {
81 while (~*reset_done & mask)
93 reset_block_reg_mask(&resets_hw->reset, bits);
102 unreset_block_reg_mask(&resets_hw->reset, bits);
111 unreset_block_reg_mask_wait_blocking(&resets_hw->reset, &resets_hw->reset_done, bits);
116#ifndef HARDWARE_RESETS_ENABLE_SDK1XX_COMPATIBILITY
117#define HARDWARE_RESETS_ENABLE_SDK1XX_COMPATIBILITY 1
120#if HARDWARE_RESETS_ENABLE_SDK1XX_COMPATIBILITY
140 reset_block_reg_mask(&resets_hw->reset, 1u << block_num);
149 invalid_params_if(HARDWARE_RESETS, block_num > NUM_RESETS);
150 unreset_block_reg_mask(&resets_hw->reset, 1u << block_num);
159 invalid_params_if(HARDWARE_RESETS, block_num > NUM_RESETS);
160 unreset_block_reg_mask_wait_blocking(&resets_hw->reset, &resets_hw->reset_done, 1u << block_num);
169 invalid_params_if(HARDWARE_RESETS, block_num > NUM_RESETS);
170 reset_block_reg_mask(&resets_hw->reset, 1u << block_num);
171 unreset_block_reg_mask_wait_blocking(&resets_hw->reset, &resets_hw->reset_done, 1u << block_num);
static __force_inline void hw_set_bits(io_rw_32 *addr, uint32_t mask)
Atomically set the specified bits to 1 in a HW register.
Definition address_mapped.h:135
static __force_inline void hw_clear_bits(io_rw_32 *addr, uint32_t mask)
Atomically clear the specified bits to 0 in a HW register.
Definition address_mapped.h:145
static void unreset_block_num(uint block_num)
bring specified HW block out of reset
Definition resets.h:148
static __force_inline void unreset_block_mask(uint32_t bits)
bring specified HW blocks out of reset
Definition resets.h:101
static void reset_block_num(uint32_t block_num)
Reset the specified HW block.
Definition resets.h:139
static __force_inline void reset_block_mask(uint32_t bits)
Reset the specified HW blocks.
Definition resets.h:92
static void reset_unreset_block_num_wait_blocking(uint block_num)
Reset the specified HW block, and then bring at back out of reset and wait for completion.
Definition resets.h:168
static void unreset_block_num_wait_blocking(uint block_num)
Bring specified HW block out of reset and wait for completion.
Definition resets.h:158
static __force_inline void unreset_block_mask_wait_blocking(uint32_t bits)
Bring specified HW blocks out of reset and wait for completion.
Definition resets.h:110