Program Listing for File vreg_and_chip_reset.h#

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

#pragma once

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

namespace RP2040
{

struct [[gnu::packed]] vreg_and_chip_reset
{
    /* Constant attributes. */
    static constexpr std::size_t size =
        12;
    /* Fields. */
    uint32_t VREG;
    uint32_t BOD;
    uint32_t CHIP_RESET;
    /* Methods. */

    inline bool get_VREG_EN() volatile
    {
        return VREG & (1u << 0u);
    }

    inline void set_VREG_EN() volatile
    {
        VREG |= 1u << 0u;
    }

    inline void clear_VREG_EN() volatile
    {
        VREG &= ~(1u << 0u);
    }

    inline void toggle_VREG_EN() volatile
    {
        VREG ^= 1u << 0u;
    }

    inline bool get_VREG_HIZ() volatile
    {
        return VREG & (1u << 1u);
    }

    inline void set_VREG_HIZ() volatile
    {
        VREG |= 1u << 1u;
    }

    inline void clear_VREG_HIZ() volatile
    {
        VREG &= ~(1u << 1u);
    }

    inline void toggle_VREG_HIZ() volatile
    {
        VREG ^= 1u << 1u;
    }

    inline uint8_t get_VREG_VSEL() volatile
    {
        return (VREG >> 4u) & 0b1111u;
    }

    inline void set_VREG_VSEL(uint8_t value) volatile
    {
        uint32_t curr = VREG;

        curr &= ~(0b1111u << 4u);
        curr |= (value & 0b1111u) << 4u;

        VREG = curr;
    }

    inline bool get_VREG_ROK() volatile
    {
        return VREG & (1u << 12u);
    }

    inline void get_VREG(bool &EN, bool &HIZ, uint8_t &VSEL,
                         bool &ROK) volatile
    {
        uint32_t curr = VREG;

        EN = curr & (1u << 0u);
        HIZ = curr & (1u << 1u);
        VSEL = (curr >> 4u) & 0b1111u;
        ROK = curr & (1u << 12u);
    }

    inline void set_VREG(bool EN, bool HIZ, uint8_t VSEL) volatile
    {
        uint32_t curr = VREG;

        curr &= ~(0b1u << 0u);
        curr |= (EN & 0b1u) << 0u;
        curr &= ~(0b1u << 1u);
        curr |= (HIZ & 0b1u) << 1u;
        curr &= ~(0b1111u << 4u);
        curr |= (VSEL & 0b1111u) << 4u;

        VREG = curr;
    }

    inline bool get_BOD_EN() volatile
    {
        return BOD & (1u << 0u);
    }

    inline void set_BOD_EN() volatile
    {
        BOD |= 1u << 0u;
    }

    inline void clear_BOD_EN() volatile
    {
        BOD &= ~(1u << 0u);
    }

    inline void toggle_BOD_EN() volatile
    {
        BOD ^= 1u << 0u;
    }

    inline uint8_t get_BOD_VSEL() volatile
    {
        return (BOD >> 4u) & 0b1111u;
    }

    inline void set_BOD_VSEL(uint8_t value) volatile
    {
        uint32_t curr = BOD;

        curr &= ~(0b1111u << 4u);
        curr |= (value & 0b1111u) << 4u;

        BOD = curr;
    }

    inline void get_BOD(bool &EN, uint8_t &VSEL) volatile
    {
        uint32_t curr = BOD;

        EN = curr & (1u << 0u);
        VSEL = (curr >> 4u) & 0b1111u;
    }

    inline void set_BOD(bool EN, uint8_t VSEL) volatile
    {
        uint32_t curr = BOD;

        curr &= ~(0b1u << 0u);
        curr |= (EN & 0b1u) << 0u;
        curr &= ~(0b1111u << 4u);
        curr |= (VSEL & 0b1111u) << 4u;

        BOD = curr;
    }

    inline bool get_CHIP_RESET_HAD_POR() volatile
    {
        return CHIP_RESET & (1u << 8u);
    }

    inline bool get_CHIP_RESET_HAD_RUN() volatile
    {
        return CHIP_RESET & (1u << 16u);
    }

    inline bool get_CHIP_RESET_HAD_PSM_RESTART() volatile
    {
        return CHIP_RESET & (1u << 20u);
    }

    inline bool get_CHIP_RESET_PSM_RESTART_FLAG() volatile
    {
        return CHIP_RESET & (1u << 24u);
    }

    inline void set_CHIP_RESET_PSM_RESTART_FLAG() volatile
    {
        CHIP_RESET |= 1u << 24u;
    }

    inline void clear_CHIP_RESET_PSM_RESTART_FLAG() volatile
    {
        CHIP_RESET &= ~(1u << 24u);
    }

    inline void toggle_CHIP_RESET_PSM_RESTART_FLAG() volatile
    {
        CHIP_RESET ^= 1u << 24u;
    }

    inline void get_CHIP_RESET(bool &HAD_POR, bool &HAD_RUN,
                               bool &HAD_PSM_RESTART,
                               bool &PSM_RESTART_FLAG) volatile
    {
        uint32_t curr = CHIP_RESET;

        HAD_POR = curr & (1u << 8u);
        HAD_RUN = curr & (1u << 16u);
        HAD_PSM_RESTART = curr & (1u << 20u);
        PSM_RESTART_FLAG = curr & (1u << 24u);
    }
};

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

static volatile vreg_and_chip_reset *const VREG_AND_CHIP_RESET =
    reinterpret_cast<vreg_and_chip_reset *>(0x40064000);

}; // namespace RP2040