Program Listing for File resets.h#

Return to documentation for file (src/generated/structs/resets.h)

#pragma once

#include "../ifgen/common.h"

namespace RP2040
{

struct [[gnu::packed]] resets
{
    /* Constant attributes. */
    static constexpr std::size_t size = 12;
    /* Fields. */
    uint32_t RESET;
    uint32_t WDSEL;
    const uint32_t RESET_DONE =
        {};
    /* Methods. */

    inline bool get_RESET_adc() volatile
    {
        return RESET & (1u << 0u);
    }

    inline void set_RESET_adc() volatile
    {
        RESET |= 1u << 0u;
    }

    inline void clear_RESET_adc() volatile
    {
        RESET &= ~(1u << 0u);
    }

    inline void toggle_RESET_adc() volatile
    {
        RESET ^= 1u << 0u;
    }

    inline bool get_RESET_busctrl() volatile
    {
        return RESET & (1u << 1u);
    }

    inline void set_RESET_busctrl() volatile
    {
        RESET |= 1u << 1u;
    }

    inline void clear_RESET_busctrl() volatile
    {
        RESET &= ~(1u << 1u);
    }

    inline void toggle_RESET_busctrl() volatile
    {
        RESET ^= 1u << 1u;
    }

    inline bool get_RESET_dma() volatile
    {
        return RESET & (1u << 2u);
    }

    inline void set_RESET_dma() volatile
    {
        RESET |= 1u << 2u;
    }

    inline void clear_RESET_dma() volatile
    {
        RESET &= ~(1u << 2u);
    }

    inline void toggle_RESET_dma() volatile
    {
        RESET ^= 1u << 2u;
    }

    inline bool get_RESET_i2c0() volatile
    {
        return RESET & (1u << 3u);
    }

    inline void set_RESET_i2c0() volatile
    {
        RESET |= 1u << 3u;
    }

    inline void clear_RESET_i2c0() volatile
    {
        RESET &= ~(1u << 3u);
    }

    inline void toggle_RESET_i2c0() volatile
    {
        RESET ^= 1u << 3u;
    }

    inline bool get_RESET_i2c1() volatile
    {
        return RESET & (1u << 4u);
    }

    inline void set_RESET_i2c1() volatile
    {
        RESET |= 1u << 4u;
    }

    inline void clear_RESET_i2c1() volatile
    {
        RESET &= ~(1u << 4u);
    }

    inline void toggle_RESET_i2c1() volatile
    {
        RESET ^= 1u << 4u;
    }

    inline bool get_RESET_io_bank0() volatile
    {
        return RESET & (1u << 5u);
    }

    inline void set_RESET_io_bank0() volatile
    {
        RESET |= 1u << 5u;
    }

    inline void clear_RESET_io_bank0() volatile
    {
        RESET &= ~(1u << 5u);
    }

    inline void toggle_RESET_io_bank0() volatile
    {
        RESET ^= 1u << 5u;
    }

    inline bool get_RESET_io_qspi() volatile
    {
        return RESET & (1u << 6u);
    }

    inline void set_RESET_io_qspi() volatile
    {
        RESET |= 1u << 6u;
    }

    inline void clear_RESET_io_qspi() volatile
    {
        RESET &= ~(1u << 6u);
    }

    inline void toggle_RESET_io_qspi() volatile
    {
        RESET ^= 1u << 6u;
    }

    inline bool get_RESET_jtag() volatile
    {
        return RESET & (1u << 7u);
    }

    inline void set_RESET_jtag() volatile
    {
        RESET |= 1u << 7u;
    }

    inline void clear_RESET_jtag() volatile
    {
        RESET &= ~(1u << 7u);
    }

    inline void toggle_RESET_jtag() volatile
    {
        RESET ^= 1u << 7u;
    }

    inline bool get_RESET_pads_bank0() volatile
    {
        return RESET & (1u << 8u);
    }

    inline void set_RESET_pads_bank0() volatile
    {
        RESET |= 1u << 8u;
    }

    inline void clear_RESET_pads_bank0() volatile
    {
        RESET &= ~(1u << 8u);
    }

    inline void toggle_RESET_pads_bank0() volatile
    {
        RESET ^= 1u << 8u;
    }

    inline bool get_RESET_pads_qspi() volatile
    {
        return RESET & (1u << 9u);
    }

    inline void set_RESET_pads_qspi() volatile
    {
        RESET |= 1u << 9u;
    }

    inline void clear_RESET_pads_qspi() volatile
    {
        RESET &= ~(1u << 9u);
    }

    inline void toggle_RESET_pads_qspi() volatile
    {
        RESET ^= 1u << 9u;
    }

    inline bool get_RESET_pio0() volatile
    {
        return RESET & (1u << 10u);
    }

    inline void set_RESET_pio0() volatile
    {
        RESET |= 1u << 10u;
    }

    inline void clear_RESET_pio0() volatile
    {
        RESET &= ~(1u << 10u);
    }

    inline void toggle_RESET_pio0() volatile
    {
        RESET ^= 1u << 10u;
    }

    inline bool get_RESET_pio1() volatile
    {
        return RESET & (1u << 11u);
    }

    inline void set_RESET_pio1() volatile
    {
        RESET |= 1u << 11u;
    }

    inline void clear_RESET_pio1() volatile
    {
        RESET &= ~(1u << 11u);
    }

    inline void toggle_RESET_pio1() volatile
    {
        RESET ^= 1u << 11u;
    }

    inline bool get_RESET_pll_sys() volatile
    {
        return RESET & (1u << 12u);
    }

    inline void set_RESET_pll_sys() volatile
    {
        RESET |= 1u << 12u;
    }

    inline void clear_RESET_pll_sys() volatile
    {
        RESET &= ~(1u << 12u);
    }

    inline void toggle_RESET_pll_sys() volatile
    {
        RESET ^= 1u << 12u;
    }

    inline bool get_RESET_pll_usb() volatile
    {
        return RESET & (1u << 13u);
    }

    inline void set_RESET_pll_usb() volatile
    {
        RESET |= 1u << 13u;
    }

    inline void clear_RESET_pll_usb() volatile
    {
        RESET &= ~(1u << 13u);
    }

    inline void toggle_RESET_pll_usb() volatile
    {
        RESET ^= 1u << 13u;
    }

    inline bool get_RESET_pwm() volatile
    {
        return RESET & (1u << 14u);
    }

    inline void set_RESET_pwm() volatile
    {
        RESET |= 1u << 14u;
    }

    inline void clear_RESET_pwm() volatile
    {
        RESET &= ~(1u << 14u);
    }

    inline void toggle_RESET_pwm() volatile
    {
        RESET ^= 1u << 14u;
    }

    inline bool get_RESET_rtc() volatile
    {
        return RESET & (1u << 15u);
    }

    inline void set_RESET_rtc() volatile
    {
        RESET |= 1u << 15u;
    }

    inline void clear_RESET_rtc() volatile
    {
        RESET &= ~(1u << 15u);
    }

    inline void toggle_RESET_rtc() volatile
    {
        RESET ^= 1u << 15u;
    }

    inline bool get_RESET_spi0() volatile
    {
        return RESET & (1u << 16u);
    }

    inline void set_RESET_spi0() volatile
    {
        RESET |= 1u << 16u;
    }

    inline void clear_RESET_spi0() volatile
    {
        RESET &= ~(1u << 16u);
    }

    inline void toggle_RESET_spi0() volatile
    {
        RESET ^= 1u << 16u;
    }

    inline bool get_RESET_spi1() volatile
    {
        return RESET & (1u << 17u);
    }

    inline void set_RESET_spi1() volatile
    {
        RESET |= 1u << 17u;
    }

    inline void clear_RESET_spi1() volatile
    {
        RESET &= ~(1u << 17u);
    }

    inline void toggle_RESET_spi1() volatile
    {
        RESET ^= 1u << 17u;
    }

    inline bool get_RESET_syscfg() volatile
    {
        return RESET & (1u << 18u);
    }

    inline void set_RESET_syscfg() volatile
    {
        RESET |= 1u << 18u;
    }

    inline void clear_RESET_syscfg() volatile
    {
        RESET &= ~(1u << 18u);
    }

    inline void toggle_RESET_syscfg() volatile
    {
        RESET ^= 1u << 18u;
    }

    inline bool get_RESET_sysinfo() volatile
    {
        return RESET & (1u << 19u);
    }

    inline void set_RESET_sysinfo() volatile
    {
        RESET |= 1u << 19u;
    }

    inline void clear_RESET_sysinfo() volatile
    {
        RESET &= ~(1u << 19u);
    }

    inline void toggle_RESET_sysinfo() volatile
    {
        RESET ^= 1u << 19u;
    }

    inline bool get_RESET_tbman() volatile
    {
        return RESET & (1u << 20u);
    }

    inline void set_RESET_tbman() volatile
    {
        RESET |= 1u << 20u;
    }

    inline void clear_RESET_tbman() volatile
    {
        RESET &= ~(1u << 20u);
    }

    inline void toggle_RESET_tbman() volatile
    {
        RESET ^= 1u << 20u;
    }

    inline bool get_RESET_timer() volatile
    {
        return RESET & (1u << 21u);
    }

    inline void set_RESET_timer() volatile
    {
        RESET |= 1u << 21u;
    }

    inline void clear_RESET_timer() volatile
    {
        RESET &= ~(1u << 21u);
    }

    inline void toggle_RESET_timer() volatile
    {
        RESET ^= 1u << 21u;
    }

    inline bool get_RESET_uart0() volatile
    {
        return RESET & (1u << 22u);
    }

    inline void set_RESET_uart0() volatile
    {
        RESET |= 1u << 22u;
    }

    inline void clear_RESET_uart0() volatile
    {
        RESET &= ~(1u << 22u);
    }

    inline void toggle_RESET_uart0() volatile
    {
        RESET ^= 1u << 22u;
    }

    inline bool get_RESET_uart1() volatile
    {
        return RESET & (1u << 23u);
    }

    inline void set_RESET_uart1() volatile
    {
        RESET |= 1u << 23u;
    }

    inline void clear_RESET_uart1() volatile
    {
        RESET &= ~(1u << 23u);
    }

    inline void toggle_RESET_uart1() volatile
    {
        RESET ^= 1u << 23u;
    }

    inline bool get_RESET_usbctrl() volatile
    {
        return RESET & (1u << 24u);
    }

    inline void set_RESET_usbctrl() volatile
    {
        RESET |= 1u << 24u;
    }

    inline void clear_RESET_usbctrl() volatile
    {
        RESET &= ~(1u << 24u);
    }

    inline void toggle_RESET_usbctrl() volatile
    {
        RESET ^= 1u << 24u;
    }

    inline void get_RESET(bool &adc, bool &busctrl, bool &dma, bool &i2c0,
                          bool &i2c1, bool &io_bank0, bool &io_qspi,
                          bool &jtag, bool &pads_bank0, bool &pads_qspi,
                          bool &pio0, bool &pio1, bool &pll_sys, bool &pll_usb,
                          bool &pwm, bool &rtc, bool &spi0, bool &spi1,
                          bool &syscfg, bool &sysinfo, bool &tbman,
                          bool &timer, bool &uart0, bool &uart1,
                          bool &usbctrl) volatile
    {
        uint32_t curr = RESET;

        adc = curr & (1u << 0u);
        busctrl = curr & (1u << 1u);
        dma = curr & (1u << 2u);
        i2c0 = curr & (1u << 3u);
        i2c1 = curr & (1u << 4u);
        io_bank0 = curr & (1u << 5u);
        io_qspi = curr & (1u << 6u);
        jtag = curr & (1u << 7u);
        pads_bank0 = curr & (1u << 8u);
        pads_qspi = curr & (1u << 9u);
        pio0 = curr & (1u << 10u);
        pio1 = curr & (1u << 11u);
        pll_sys = curr & (1u << 12u);
        pll_usb = curr & (1u << 13u);
        pwm = curr & (1u << 14u);
        rtc = curr & (1u << 15u);
        spi0 = curr & (1u << 16u);
        spi1 = curr & (1u << 17u);
        syscfg = curr & (1u << 18u);
        sysinfo = curr & (1u << 19u);
        tbman = curr & (1u << 20u);
        timer = curr & (1u << 21u);
        uart0 = curr & (1u << 22u);
        uart1 = curr & (1u << 23u);
        usbctrl = curr & (1u << 24u);
    }

    inline void set_RESET(bool adc, bool busctrl, bool dma, bool i2c0,
                          bool i2c1, bool io_bank0, bool io_qspi, bool jtag,
                          bool pads_bank0, bool pads_qspi, bool pio0,
                          bool pio1, bool pll_sys, bool pll_usb, bool pwm,
                          bool rtc, bool spi0, bool spi1, bool syscfg,
                          bool sysinfo, bool tbman, bool timer, bool uart0,
                          bool uart1, bool usbctrl) volatile
    {
        uint32_t curr = RESET;

        curr &= ~(0b1u << 0u);
        curr |= (adc & 0b1u) << 0u;
        curr &= ~(0b1u << 1u);
        curr |= (busctrl & 0b1u) << 1u;
        curr &= ~(0b1u << 2u);
        curr |= (dma & 0b1u) << 2u;
        curr &= ~(0b1u << 3u);
        curr |= (i2c0 & 0b1u) << 3u;
        curr &= ~(0b1u << 4u);
        curr |= (i2c1 & 0b1u) << 4u;
        curr &= ~(0b1u << 5u);
        curr |= (io_bank0 & 0b1u) << 5u;
        curr &= ~(0b1u << 6u);
        curr |= (io_qspi & 0b1u) << 6u;
        curr &= ~(0b1u << 7u);
        curr |= (jtag & 0b1u) << 7u;
        curr &= ~(0b1u << 8u);
        curr |= (pads_bank0 & 0b1u) << 8u;
        curr &= ~(0b1u << 9u);
        curr |= (pads_qspi & 0b1u) << 9u;
        curr &= ~(0b1u << 10u);
        curr |= (pio0 & 0b1u) << 10u;
        curr &= ~(0b1u << 11u);
        curr |= (pio1 & 0b1u) << 11u;
        curr &= ~(0b1u << 12u);
        curr |= (pll_sys & 0b1u) << 12u;
        curr &= ~(0b1u << 13u);
        curr |= (pll_usb & 0b1u) << 13u;
        curr &= ~(0b1u << 14u);
        curr |= (pwm & 0b1u) << 14u;
        curr &= ~(0b1u << 15u);
        curr |= (rtc & 0b1u) << 15u;
        curr &= ~(0b1u << 16u);
        curr |= (spi0 & 0b1u) << 16u;
        curr &= ~(0b1u << 17u);
        curr |= (spi1 & 0b1u) << 17u;
        curr &= ~(0b1u << 18u);
        curr |= (syscfg & 0b1u) << 18u;
        curr &= ~(0b1u << 19u);
        curr |= (sysinfo & 0b1u) << 19u;
        curr &= ~(0b1u << 20u);
        curr |= (tbman & 0b1u) << 20u;
        curr &= ~(0b1u << 21u);
        curr |= (timer & 0b1u) << 21u;
        curr &= ~(0b1u << 22u);
        curr |= (uart0 & 0b1u) << 22u;
        curr &= ~(0b1u << 23u);
        curr |= (uart1 & 0b1u) << 23u;
        curr &= ~(0b1u << 24u);
        curr |= (usbctrl & 0b1u) << 24u;

        RESET = curr;
    }

    inline bool get_WDSEL_adc() volatile
    {
        return WDSEL & (1u << 0u);
    }

    inline void set_WDSEL_adc() volatile
    {
        WDSEL |= 1u << 0u;
    }

    inline void clear_WDSEL_adc() volatile
    {
        WDSEL &= ~(1u << 0u);
    }

    inline void toggle_WDSEL_adc() volatile
    {
        WDSEL ^= 1u << 0u;
    }

    inline bool get_WDSEL_busctrl() volatile
    {
        return WDSEL & (1u << 1u);
    }

    inline void set_WDSEL_busctrl() volatile
    {
        WDSEL |= 1u << 1u;
    }

    inline void clear_WDSEL_busctrl() volatile
    {
        WDSEL &= ~(1u << 1u);
    }

    inline void toggle_WDSEL_busctrl() volatile
    {
        WDSEL ^= 1u << 1u;
    }

    inline bool get_WDSEL_dma() volatile
    {
        return WDSEL & (1u << 2u);
    }

    inline void set_WDSEL_dma() volatile
    {
        WDSEL |= 1u << 2u;
    }

    inline void clear_WDSEL_dma() volatile
    {
        WDSEL &= ~(1u << 2u);
    }

    inline void toggle_WDSEL_dma() volatile
    {
        WDSEL ^= 1u << 2u;
    }

    inline bool get_WDSEL_i2c0() volatile
    {
        return WDSEL & (1u << 3u);
    }

    inline void set_WDSEL_i2c0() volatile
    {
        WDSEL |= 1u << 3u;
    }

    inline void clear_WDSEL_i2c0() volatile
    {
        WDSEL &= ~(1u << 3u);
    }

    inline void toggle_WDSEL_i2c0() volatile
    {
        WDSEL ^= 1u << 3u;
    }

    inline bool get_WDSEL_i2c1() volatile
    {
        return WDSEL & (1u << 4u);
    }

    inline void set_WDSEL_i2c1() volatile
    {
        WDSEL |= 1u << 4u;
    }

    inline void clear_WDSEL_i2c1() volatile
    {
        WDSEL &= ~(1u << 4u);
    }

    inline void toggle_WDSEL_i2c1() volatile
    {
        WDSEL ^= 1u << 4u;
    }

    inline bool get_WDSEL_io_bank0() volatile
    {
        return WDSEL & (1u << 5u);
    }

    inline void set_WDSEL_io_bank0() volatile
    {
        WDSEL |= 1u << 5u;
    }

    inline void clear_WDSEL_io_bank0() volatile
    {
        WDSEL &= ~(1u << 5u);
    }

    inline void toggle_WDSEL_io_bank0() volatile
    {
        WDSEL ^= 1u << 5u;
    }

    inline bool get_WDSEL_io_qspi() volatile
    {
        return WDSEL & (1u << 6u);
    }

    inline void set_WDSEL_io_qspi() volatile
    {
        WDSEL |= 1u << 6u;
    }

    inline void clear_WDSEL_io_qspi() volatile
    {
        WDSEL &= ~(1u << 6u);
    }

    inline void toggle_WDSEL_io_qspi() volatile
    {
        WDSEL ^= 1u << 6u;
    }

    inline bool get_WDSEL_jtag() volatile
    {
        return WDSEL & (1u << 7u);
    }

    inline void set_WDSEL_jtag() volatile
    {
        WDSEL |= 1u << 7u;
    }

    inline void clear_WDSEL_jtag() volatile
    {
        WDSEL &= ~(1u << 7u);
    }

    inline void toggle_WDSEL_jtag() volatile
    {
        WDSEL ^= 1u << 7u;
    }

    inline bool get_WDSEL_pads_bank0() volatile
    {
        return WDSEL & (1u << 8u);
    }

    inline void set_WDSEL_pads_bank0() volatile
    {
        WDSEL |= 1u << 8u;
    }

    inline void clear_WDSEL_pads_bank0() volatile
    {
        WDSEL &= ~(1u << 8u);
    }

    inline void toggle_WDSEL_pads_bank0() volatile
    {
        WDSEL ^= 1u << 8u;
    }

    inline bool get_WDSEL_pads_qspi() volatile
    {
        return WDSEL & (1u << 9u);
    }

    inline void set_WDSEL_pads_qspi() volatile
    {
        WDSEL |= 1u << 9u;
    }

    inline void clear_WDSEL_pads_qspi() volatile
    {
        WDSEL &= ~(1u << 9u);
    }

    inline void toggle_WDSEL_pads_qspi() volatile
    {
        WDSEL ^= 1u << 9u;
    }

    inline bool get_WDSEL_pio0() volatile
    {
        return WDSEL & (1u << 10u);
    }

    inline void set_WDSEL_pio0() volatile
    {
        WDSEL |= 1u << 10u;
    }

    inline void clear_WDSEL_pio0() volatile
    {
        WDSEL &= ~(1u << 10u);
    }

    inline void toggle_WDSEL_pio0() volatile
    {
        WDSEL ^= 1u << 10u;
    }

    inline bool get_WDSEL_pio1() volatile
    {
        return WDSEL & (1u << 11u);
    }

    inline void set_WDSEL_pio1() volatile
    {
        WDSEL |= 1u << 11u;
    }

    inline void clear_WDSEL_pio1() volatile
    {
        WDSEL &= ~(1u << 11u);
    }

    inline void toggle_WDSEL_pio1() volatile
    {
        WDSEL ^= 1u << 11u;
    }

    inline bool get_WDSEL_pll_sys() volatile
    {
        return WDSEL & (1u << 12u);
    }

    inline void set_WDSEL_pll_sys() volatile
    {
        WDSEL |= 1u << 12u;
    }

    inline void clear_WDSEL_pll_sys() volatile
    {
        WDSEL &= ~(1u << 12u);
    }

    inline void toggle_WDSEL_pll_sys() volatile
    {
        WDSEL ^= 1u << 12u;
    }

    inline bool get_WDSEL_pll_usb() volatile
    {
        return WDSEL & (1u << 13u);
    }

    inline void set_WDSEL_pll_usb() volatile
    {
        WDSEL |= 1u << 13u;
    }

    inline void clear_WDSEL_pll_usb() volatile
    {
        WDSEL &= ~(1u << 13u);
    }

    inline void toggle_WDSEL_pll_usb() volatile
    {
        WDSEL ^= 1u << 13u;
    }

    inline bool get_WDSEL_pwm() volatile
    {
        return WDSEL & (1u << 14u);
    }

    inline void set_WDSEL_pwm() volatile
    {
        WDSEL |= 1u << 14u;
    }

    inline void clear_WDSEL_pwm() volatile
    {
        WDSEL &= ~(1u << 14u);
    }

    inline void toggle_WDSEL_pwm() volatile
    {
        WDSEL ^= 1u << 14u;
    }

    inline bool get_WDSEL_rtc() volatile
    {
        return WDSEL & (1u << 15u);
    }

    inline void set_WDSEL_rtc() volatile
    {
        WDSEL |= 1u << 15u;
    }

    inline void clear_WDSEL_rtc() volatile
    {
        WDSEL &= ~(1u << 15u);
    }

    inline void toggle_WDSEL_rtc() volatile
    {
        WDSEL ^= 1u << 15u;
    }

    inline bool get_WDSEL_spi0() volatile
    {
        return WDSEL & (1u << 16u);
    }

    inline void set_WDSEL_spi0() volatile
    {
        WDSEL |= 1u << 16u;
    }

    inline void clear_WDSEL_spi0() volatile
    {
        WDSEL &= ~(1u << 16u);
    }

    inline void toggle_WDSEL_spi0() volatile
    {
        WDSEL ^= 1u << 16u;
    }

    inline bool get_WDSEL_spi1() volatile
    {
        return WDSEL & (1u << 17u);
    }

    inline void set_WDSEL_spi1() volatile
    {
        WDSEL |= 1u << 17u;
    }

    inline void clear_WDSEL_spi1() volatile
    {
        WDSEL &= ~(1u << 17u);
    }

    inline void toggle_WDSEL_spi1() volatile
    {
        WDSEL ^= 1u << 17u;
    }

    inline bool get_WDSEL_syscfg() volatile
    {
        return WDSEL & (1u << 18u);
    }

    inline void set_WDSEL_syscfg() volatile
    {
        WDSEL |= 1u << 18u;
    }

    inline void clear_WDSEL_syscfg() volatile
    {
        WDSEL &= ~(1u << 18u);
    }

    inline void toggle_WDSEL_syscfg() volatile
    {
        WDSEL ^= 1u << 18u;
    }

    inline bool get_WDSEL_sysinfo() volatile
    {
        return WDSEL & (1u << 19u);
    }

    inline void set_WDSEL_sysinfo() volatile
    {
        WDSEL |= 1u << 19u;
    }

    inline void clear_WDSEL_sysinfo() volatile
    {
        WDSEL &= ~(1u << 19u);
    }

    inline void toggle_WDSEL_sysinfo() volatile
    {
        WDSEL ^= 1u << 19u;
    }

    inline bool get_WDSEL_tbman() volatile
    {
        return WDSEL & (1u << 20u);
    }

    inline void set_WDSEL_tbman() volatile
    {
        WDSEL |= 1u << 20u;
    }

    inline void clear_WDSEL_tbman() volatile
    {
        WDSEL &= ~(1u << 20u);
    }

    inline void toggle_WDSEL_tbman() volatile
    {
        WDSEL ^= 1u << 20u;
    }

    inline bool get_WDSEL_timer() volatile
    {
        return WDSEL & (1u << 21u);
    }

    inline void set_WDSEL_timer() volatile
    {
        WDSEL |= 1u << 21u;
    }

    inline void clear_WDSEL_timer() volatile
    {
        WDSEL &= ~(1u << 21u);
    }

    inline void toggle_WDSEL_timer() volatile
    {
        WDSEL ^= 1u << 21u;
    }

    inline bool get_WDSEL_uart0() volatile
    {
        return WDSEL & (1u << 22u);
    }

    inline void set_WDSEL_uart0() volatile
    {
        WDSEL |= 1u << 22u;
    }

    inline void clear_WDSEL_uart0() volatile
    {
        WDSEL &= ~(1u << 22u);
    }

    inline void toggle_WDSEL_uart0() volatile
    {
        WDSEL ^= 1u << 22u;
    }

    inline bool get_WDSEL_uart1() volatile
    {
        return WDSEL & (1u << 23u);
    }

    inline void set_WDSEL_uart1() volatile
    {
        WDSEL |= 1u << 23u;
    }

    inline void clear_WDSEL_uart1() volatile
    {
        WDSEL &= ~(1u << 23u);
    }

    inline void toggle_WDSEL_uart1() volatile
    {
        WDSEL ^= 1u << 23u;
    }

    inline bool get_WDSEL_usbctrl() volatile
    {
        return WDSEL & (1u << 24u);
    }

    inline void set_WDSEL_usbctrl() volatile
    {
        WDSEL |= 1u << 24u;
    }

    inline void clear_WDSEL_usbctrl() volatile
    {
        WDSEL &= ~(1u << 24u);
    }

    inline void toggle_WDSEL_usbctrl() volatile
    {
        WDSEL ^= 1u << 24u;
    }

    inline void get_WDSEL(bool &adc, bool &busctrl, bool &dma, bool &i2c0,
                          bool &i2c1, bool &io_bank0, bool &io_qspi,
                          bool &jtag, bool &pads_bank0, bool &pads_qspi,
                          bool &pio0, bool &pio1, bool &pll_sys, bool &pll_usb,
                          bool &pwm, bool &rtc, bool &spi0, bool &spi1,
                          bool &syscfg, bool &sysinfo, bool &tbman,
                          bool &timer, bool &uart0, bool &uart1,
                          bool &usbctrl) volatile
    {
        uint32_t curr = WDSEL;

        adc = curr & (1u << 0u);
        busctrl = curr & (1u << 1u);
        dma = curr & (1u << 2u);
        i2c0 = curr & (1u << 3u);
        i2c1 = curr & (1u << 4u);
        io_bank0 = curr & (1u << 5u);
        io_qspi = curr & (1u << 6u);
        jtag = curr & (1u << 7u);
        pads_bank0 = curr & (1u << 8u);
        pads_qspi = curr & (1u << 9u);
        pio0 = curr & (1u << 10u);
        pio1 = curr & (1u << 11u);
        pll_sys = curr & (1u << 12u);
        pll_usb = curr & (1u << 13u);
        pwm = curr & (1u << 14u);
        rtc = curr & (1u << 15u);
        spi0 = curr & (1u << 16u);
        spi1 = curr & (1u << 17u);
        syscfg = curr & (1u << 18u);
        sysinfo = curr & (1u << 19u);
        tbman = curr & (1u << 20u);
        timer = curr & (1u << 21u);
        uart0 = curr & (1u << 22u);
        uart1 = curr & (1u << 23u);
        usbctrl = curr & (1u << 24u);
    }

    inline void set_WDSEL(bool adc, bool busctrl, bool dma, bool i2c0,
                          bool i2c1, bool io_bank0, bool io_qspi, bool jtag,
                          bool pads_bank0, bool pads_qspi, bool pio0,
                          bool pio1, bool pll_sys, bool pll_usb, bool pwm,
                          bool rtc, bool spi0, bool spi1, bool syscfg,
                          bool sysinfo, bool tbman, bool timer, bool uart0,
                          bool uart1, bool usbctrl) volatile
    {
        uint32_t curr = WDSEL;

        curr &= ~(0b1u << 0u);
        curr |= (adc & 0b1u) << 0u;
        curr &= ~(0b1u << 1u);
        curr |= (busctrl & 0b1u) << 1u;
        curr &= ~(0b1u << 2u);
        curr |= (dma & 0b1u) << 2u;
        curr &= ~(0b1u << 3u);
        curr |= (i2c0 & 0b1u) << 3u;
        curr &= ~(0b1u << 4u);
        curr |= (i2c1 & 0b1u) << 4u;
        curr &= ~(0b1u << 5u);
        curr |= (io_bank0 & 0b1u) << 5u;
        curr &= ~(0b1u << 6u);
        curr |= (io_qspi & 0b1u) << 6u;
        curr &= ~(0b1u << 7u);
        curr |= (jtag & 0b1u) << 7u;
        curr &= ~(0b1u << 8u);
        curr |= (pads_bank0 & 0b1u) << 8u;
        curr &= ~(0b1u << 9u);
        curr |= (pads_qspi & 0b1u) << 9u;
        curr &= ~(0b1u << 10u);
        curr |= (pio0 & 0b1u) << 10u;
        curr &= ~(0b1u << 11u);
        curr |= (pio1 & 0b1u) << 11u;
        curr &= ~(0b1u << 12u);
        curr |= (pll_sys & 0b1u) << 12u;
        curr &= ~(0b1u << 13u);
        curr |= (pll_usb & 0b1u) << 13u;
        curr &= ~(0b1u << 14u);
        curr |= (pwm & 0b1u) << 14u;
        curr &= ~(0b1u << 15u);
        curr |= (rtc & 0b1u) << 15u;
        curr &= ~(0b1u << 16u);
        curr |= (spi0 & 0b1u) << 16u;
        curr &= ~(0b1u << 17u);
        curr |= (spi1 & 0b1u) << 17u;
        curr &= ~(0b1u << 18u);
        curr |= (syscfg & 0b1u) << 18u;
        curr &= ~(0b1u << 19u);
        curr |= (sysinfo & 0b1u) << 19u;
        curr &= ~(0b1u << 20u);
        curr |= (tbman & 0b1u) << 20u;
        curr &= ~(0b1u << 21u);
        curr |= (timer & 0b1u) << 21u;
        curr &= ~(0b1u << 22u);
        curr |= (uart0 & 0b1u) << 22u;
        curr &= ~(0b1u << 23u);
        curr |= (uart1 & 0b1u) << 23u;
        curr &= ~(0b1u << 24u);
        curr |= (usbctrl & 0b1u) << 24u;

        WDSEL = curr;
    }

    inline bool get_RESET_DONE_adc() volatile
    {
        return RESET_DONE & (1u << 0u);
    }

    inline bool get_RESET_DONE_busctrl() volatile
    {
        return RESET_DONE & (1u << 1u);
    }

    inline bool get_RESET_DONE_dma() volatile
    {
        return RESET_DONE & (1u << 2u);
    }

    inline bool get_RESET_DONE_i2c0() volatile
    {
        return RESET_DONE & (1u << 3u);
    }

    inline bool get_RESET_DONE_i2c1() volatile
    {
        return RESET_DONE & (1u << 4u);
    }

    inline bool get_RESET_DONE_io_bank0() volatile
    {
        return RESET_DONE & (1u << 5u);
    }

    inline bool get_RESET_DONE_io_qspi() volatile
    {
        return RESET_DONE & (1u << 6u);
    }

    inline bool get_RESET_DONE_jtag() volatile
    {
        return RESET_DONE & (1u << 7u);
    }

    inline bool get_RESET_DONE_pads_bank0() volatile
    {
        return RESET_DONE & (1u << 8u);
    }

    inline bool get_RESET_DONE_pads_qspi() volatile
    {
        return RESET_DONE & (1u << 9u);
    }

    inline bool get_RESET_DONE_pio0() volatile
    {
        return RESET_DONE & (1u << 10u);
    }

    inline bool get_RESET_DONE_pio1() volatile
    {
        return RESET_DONE & (1u << 11u);
    }

    inline bool get_RESET_DONE_pll_sys() volatile
    {
        return RESET_DONE & (1u << 12u);
    }

    inline bool get_RESET_DONE_pll_usb() volatile
    {
        return RESET_DONE & (1u << 13u);
    }

    inline bool get_RESET_DONE_pwm() volatile
    {
        return RESET_DONE & (1u << 14u);
    }

    inline bool get_RESET_DONE_rtc() volatile
    {
        return RESET_DONE & (1u << 15u);
    }

    inline bool get_RESET_DONE_spi0() volatile
    {
        return RESET_DONE & (1u << 16u);
    }

    inline bool get_RESET_DONE_spi1() volatile
    {
        return RESET_DONE & (1u << 17u);
    }

    inline bool get_RESET_DONE_syscfg() volatile
    {
        return RESET_DONE & (1u << 18u);
    }

    inline bool get_RESET_DONE_sysinfo() volatile
    {
        return RESET_DONE & (1u << 19u);
    }

    inline bool get_RESET_DONE_tbman() volatile
    {
        return RESET_DONE & (1u << 20u);
    }

    inline bool get_RESET_DONE_timer() volatile
    {
        return RESET_DONE & (1u << 21u);
    }

    inline bool get_RESET_DONE_uart0() volatile
    {
        return RESET_DONE & (1u << 22u);
    }

    inline bool get_RESET_DONE_uart1() volatile
    {
        return RESET_DONE & (1u << 23u);
    }

    inline bool get_RESET_DONE_usbctrl() volatile
    {
        return RESET_DONE & (1u << 24u);
    }

    inline void get_RESET_DONE(bool &adc, bool &busctrl, bool &dma, bool &i2c0,
                               bool &i2c1, bool &io_bank0, bool &io_qspi,
                               bool &jtag, bool &pads_bank0, bool &pads_qspi,
                               bool &pio0, bool &pio1, bool &pll_sys,
                               bool &pll_usb, bool &pwm, bool &rtc, bool &spi0,
                               bool &spi1, bool &syscfg, bool &sysinfo,
                               bool &tbman, bool &timer, bool &uart0,
                               bool &uart1, bool &usbctrl) volatile
    {
        uint32_t curr = RESET_DONE;

        adc = curr & (1u << 0u);
        busctrl = curr & (1u << 1u);
        dma = curr & (1u << 2u);
        i2c0 = curr & (1u << 3u);
        i2c1 = curr & (1u << 4u);
        io_bank0 = curr & (1u << 5u);
        io_qspi = curr & (1u << 6u);
        jtag = curr & (1u << 7u);
        pads_bank0 = curr & (1u << 8u);
        pads_qspi = curr & (1u << 9u);
        pio0 = curr & (1u << 10u);
        pio1 = curr & (1u << 11u);
        pll_sys = curr & (1u << 12u);
        pll_usb = curr & (1u << 13u);
        pwm = curr & (1u << 14u);
        rtc = curr & (1u << 15u);
        spi0 = curr & (1u << 16u);
        spi1 = curr & (1u << 17u);
        syscfg = curr & (1u << 18u);
        sysinfo = curr & (1u << 19u);
        tbman = curr & (1u << 20u);
        timer = curr & (1u << 21u);
        uart0 = curr & (1u << 22u);
        uart1 = curr & (1u << 23u);
        usbctrl = curr & (1u << 24u);
    }
};

static_assert(sizeof(resets) == resets::size);

static volatile resets *const RESETS = reinterpret_cast<resets *>(0x4000c000);

}; // namespace RP2040