rp2040/driver/inc/resets.h

72 lines
2.0 KiB
C
Raw Permalink Normal View History

2025-03-23 21:25:33 +08:00
#ifndef __HARDWARE_RESET_H__
#define __HARDWARE_RESET_H__
#include "resets_reg.h"
2025-03-29 16:32:49 +08:00
#define RESETS_BLOCK_ADC (1 << 0)
#define RESETS_BLOCK_BUSCTRL (1 << 1)
#define RESETS_BLOCK_DMA (1 << 2)
#define RESETS_BLOCK_I2C0 (1 << 3)
#define RESETS_BLOCK_I2C1 (1 << 4)
#define RESETS_BLOCK_IO_BANK0 (1 << 5)
#define RESETS_BLOCK_IO_QSPI (1 << 6)
#define RESETS_BLOCK_JTAG (1 << 7)
#define RESETS_BLOCK_PADS_BANK0 (1 << 8)
#define RESETS_BLOCK_PADS_QSPI (1 << 9)
#define RESETS_BLOCK_PIO0 (1 << 10)
#define RESETS_BLOCK_PIO1 (1 << 11)
#define RESETS_BLOCK_SYSPLL (1 << 12)
#define RESETS_BLOCK_USBPLL (1 << 13)
#define RESETS_BLOCK_PWM (1 << 14)
#define RESETS_BLOCK_RTC (1 << 15)
#define RESETS_BLOCK_SPI0 (1 << 16)
#define RESETS_BLOCK_SPI1 (1 << 17)
#define RESETS_BLOCK_SYSCFG (1 << 18)
#define RESETS_BLOCK_SYSINFO (1 << 19)
#define RESETS_BLOCK_TBMAN (1 << 20)
#define RESETS_BLOCK_TIMER (1 << 21)
#define RESETS_BLOCK_UART0 (1 << 22)
#define RESETS_BLOCK_UART1 (1 << 23)
#define RESETS_BLOCK_USBCTRL (1 << 24)
#define RESETS_BLOCK_ALL ((1 << 25) - 1)
2025-03-23 21:25:33 +08:00
#ifdef __cplusplus
extern "C" {
#endif
static inline void reset_blocks(uint32_t bits) {
hw_set_bits(&resets_hw->reset, bits);
}
static inline void unreset_blocks(uint32_t bits) {
hw_clear_bits(&resets_hw->reset, bits);
}
static inline void unreset_blocks_wait(uint32_t bits) {
hw_clear_bits(&resets_hw->reset, bits);
while (!(resets_hw->reset_done & bits));
}
static inline void reset_unreset_blocks_wait(uint32_t bits) {
reset_blocks(bits);
unreset_blocks_wait(bits);
}
static inline void reset_watchdog_bound(uint32_t bits) {
hw_set_bits(&resets_hw->wdsel, bits);
}
static inline void reset_watchdog_unbound(uint32_t bits) {
hw_clear_bits(&resets_hw->wdsel, bits);
}
static inline uint32_t reset_watchdog_get_bound_state(void) {
return resets_hw->wdsel;
}
#ifdef __cplusplus
}
#endif
#endif /* __HARDWARE_RESET_H__ */