Program Listing for File dma_control.h#
↰ Return to documentation for file (src/generated/structs/dma_control.h)
#pragma once
#ifndef RP2040_STRUCTS_DMA_CONTROL_H
#define RP2040_STRUCTS_DMA_CONTROL_H
#include "../enums/DMA_DATA_SIZE.h"
#include "../enums/DMA_RING_SIZE.h"
#include "../enums/DMA_TREQ_SEL.h"
#include "../ifgen/common.h"
namespace RP2040
{
struct dma_control
{
/* Constant attributes. */
static constexpr struct_id_t id = 5;
static constexpr std::size_t size =
64;
/* Fields. */
uint32_t READ_ADDR;
uint32_t WRITE_ADDR;
uint32_t
TRANS_COUNT;
uint32_t CTRL_TRIG;
uint32_t AL1_CTRL;
uint32_t AL1_READ_ADDR;
uint32_t AL1_WRITE_ADDR;
uint32_t
AL1_TRANS_COUNT_TRIG;
uint32_t AL2_CTRL;
uint32_t AL2_TRANS_COUNT;
uint32_t AL2_READ_ADDR;
uint32_t
AL2_WRITE_ADDR_TRIG;
uint32_t AL3_CTRL;
uint32_t AL3_WRITE_ADDR;
uint32_t AL3_TRANS_COUNT;
uint32_t AL3_READ_ADDR_TRIG;
/* Methods. */
inline bool get_CTRL_TRIG_EN()
{
return CTRL_TRIG & 1u;
}
inline void set_CTRL_TRIG_EN()
{
CTRL_TRIG |= 1u;
}
inline void clear_CTRL_TRIG_EN()
{
CTRL_TRIG &= ~(1u);
}
inline void toggle_CTRL_TRIG_EN()
{
CTRL_TRIG ^= 1u;
}
inline bool get_CTRL_TRIG_HIGH_PRIORITY()
{
return CTRL_TRIG & (1u << 1u);
}
inline void set_CTRL_TRIG_HIGH_PRIORITY()
{
CTRL_TRIG |= 1u << 1u;
}
inline void clear_CTRL_TRIG_HIGH_PRIORITY()
{
CTRL_TRIG &= ~(1u << 1u);
}
inline void toggle_CTRL_TRIG_HIGH_PRIORITY()
{
CTRL_TRIG ^= 1u << 1u;
}
inline DMA_DATA_SIZE get_CTRL_TRIG_DATA_SIZE()
{
return DMA_DATA_SIZE((CTRL_TRIG >> 2u) & 0b11u);
}
inline void set_CTRL_TRIG_DATA_SIZE(DMA_DATA_SIZE value)
{
uint32_t curr = CTRL_TRIG;
curr &= ~(0b11u << 2u);
curr |= (std::to_underlying(value) & 0b11u) << 2u;
CTRL_TRIG = curr;
}
inline bool get_CTRL_TRIG_INCR_READ()
{
return CTRL_TRIG & (1u << 4u);
}
inline void set_CTRL_TRIG_INCR_READ()
{
CTRL_TRIG |= 1u << 4u;
}
inline void clear_CTRL_TRIG_INCR_READ()
{
CTRL_TRIG &= ~(1u << 4u);
}
inline void toggle_CTRL_TRIG_INCR_READ()
{
CTRL_TRIG ^= 1u << 4u;
}
inline bool get_CTRL_TRIG_INCR_WRITE()
{
return CTRL_TRIG & (1u << 5u);
}
inline void set_CTRL_TRIG_INCR_WRITE()
{
CTRL_TRIG |= 1u << 5u;
}
inline void clear_CTRL_TRIG_INCR_WRITE()
{
CTRL_TRIG &= ~(1u << 5u);
}
inline void toggle_CTRL_TRIG_INCR_WRITE()
{
CTRL_TRIG ^= 1u << 5u;
}
inline DMA_RING_SIZE get_CTRL_TRIG_RING_SIZE()
{
return DMA_RING_SIZE((CTRL_TRIG >> 6u) & 0xfu);
}
inline void set_CTRL_TRIG_RING_SIZE(DMA_RING_SIZE value)
{
uint32_t curr = CTRL_TRIG;
curr &= ~(0xfu << 6u);
curr |= (std::to_underlying(value) & 0xfu) << 6u;
CTRL_TRIG = curr;
}
inline bool get_CTRL_TRIG_RING_SEL()
{
return CTRL_TRIG & (1u << 10u);
}
inline void set_CTRL_TRIG_RING_SEL()
{
CTRL_TRIG |= 1u << 10u;
}
inline void clear_CTRL_TRIG_RING_SEL()
{
CTRL_TRIG &= ~(1u << 10u);
}
inline void toggle_CTRL_TRIG_RING_SEL()
{
CTRL_TRIG ^= 1u << 10u;
}
inline uint8_t get_CTRL_TRIG_CHAIN_TO()
{
return (CTRL_TRIG >> 11u) & 0xfu;
}
inline void set_CTRL_TRIG_CHAIN_TO(uint8_t value)
{
uint32_t curr = CTRL_TRIG;
curr &= ~(0xfu << 11u);
curr |= (value & 0xfu) << 11u;
CTRL_TRIG = curr;
}
inline DMA_TREQ_SEL get_CTRL_TRIG_TREQ_SEL()
{
return DMA_TREQ_SEL((CTRL_TRIG >> 15u) & 0b111111u);
}
inline void set_CTRL_TRIG_TREQ_SEL(DMA_TREQ_SEL value)
{
uint32_t curr = CTRL_TRIG;
curr &= ~(0b111111u << 15u);
curr |= (std::to_underlying(value) & 0b111111u) << 15u;
CTRL_TRIG = curr;
}
inline bool get_CTRL_TRIG_IRQ_QUIET()
{
return CTRL_TRIG & (1u << 21u);
}
inline void set_CTRL_TRIG_IRQ_QUIET()
{
CTRL_TRIG |= 1u << 21u;
}
inline void clear_CTRL_TRIG_IRQ_QUIET()
{
CTRL_TRIG &= ~(1u << 21u);
}
inline void toggle_CTRL_TRIG_IRQ_QUIET()
{
CTRL_TRIG ^= 1u << 21u;
}
inline bool get_CTRL_TRIG_BSWAP()
{
return CTRL_TRIG & (1u << 22u);
}
inline void set_CTRL_TRIG_BSWAP()
{
CTRL_TRIG |= 1u << 22u;
}
inline void clear_CTRL_TRIG_BSWAP()
{
CTRL_TRIG &= ~(1u << 22u);
}
inline void toggle_CTRL_TRIG_BSWAP()
{
CTRL_TRIG ^= 1u << 22u;
}
inline bool get_CTRL_TRIG_SNIFF_EN()
{
return CTRL_TRIG & (1u << 23u);
}
inline void set_CTRL_TRIG_SNIFF_EN()
{
CTRL_TRIG |= 1u << 23u;
}
inline void clear_CTRL_TRIG_SNIFF_EN()
{
CTRL_TRIG &= ~(1u << 23u);
}
inline void toggle_CTRL_TRIG_SNIFF_EN()
{
CTRL_TRIG ^= 1u << 23u;
}
inline bool get_CTRL_TRIG_BUSY()
{
return CTRL_TRIG & (1u << 24u);
}
inline bool get_CTRL_TRIG_WRITE_ERROR()
{
return CTRL_TRIG & (1u << 29u);
}
inline void set_CTRL_TRIG_WRITE_ERROR()
{
CTRL_TRIG |= 1u << 29u;
}
inline void clear_CTRL_TRIG_WRITE_ERROR()
{
CTRL_TRIG &= ~(1u << 29u);
}
inline void toggle_CTRL_TRIG_WRITE_ERROR()
{
CTRL_TRIG ^= 1u << 29u;
}
inline bool get_CTRL_TRIG_READ_ERROR()
{
return CTRL_TRIG & (1u << 30u);
}
inline void set_CTRL_TRIG_READ_ERROR()
{
CTRL_TRIG |= 1u << 30u;
}
inline void clear_CTRL_TRIG_READ_ERROR()
{
CTRL_TRIG &= ~(1u << 30u);
}
inline void toggle_CTRL_TRIG_READ_ERROR()
{
CTRL_TRIG ^= 1u << 30u;
}
inline bool get_CTRL_TRIG_AHB_ERROR()
{
return CTRL_TRIG & (1u << 31u);
}
inline void get_CTRL_TRIG(bool &EN, bool &HIGH_PRIORITY,
DMA_DATA_SIZE &DATA_SIZE, bool &INCR_READ,
bool &INCR_WRITE, DMA_RING_SIZE &RING_SIZE,
bool &RING_SEL, uint8_t &CHAIN_TO,
DMA_TREQ_SEL &TREQ_SEL, bool &IRQ_QUIET,
bool &BSWAP, bool &SNIFF_EN, bool &BUSY,
bool &WRITE_ERROR, bool &READ_ERROR,
bool &AHB_ERROR)
{
uint32_t curr = CTRL_TRIG;
EN = curr & 1u;
HIGH_PRIORITY = curr & (1u << 1u);
DATA_SIZE = DMA_DATA_SIZE((curr >> 2u) & 0b11u);
INCR_READ = curr & (1u << 4u);
INCR_WRITE = curr & (1u << 5u);
RING_SIZE = DMA_RING_SIZE((curr >> 6u) & 0xfu);
RING_SEL = curr & (1u << 10u);
CHAIN_TO = (curr >> 11u) & 0xfu;
TREQ_SEL = DMA_TREQ_SEL((curr >> 15u) & 0b111111u);
IRQ_QUIET = curr & (1u << 21u);
BSWAP = curr & (1u << 22u);
SNIFF_EN = curr & (1u << 23u);
BUSY = curr & (1u << 24u);
WRITE_ERROR = curr & (1u << 29u);
READ_ERROR = curr & (1u << 30u);
AHB_ERROR = curr & (1u << 31u);
}
inline void set_CTRL_TRIG(bool EN, bool HIGH_PRIORITY,
DMA_DATA_SIZE DATA_SIZE, bool INCR_READ,
bool INCR_WRITE, DMA_RING_SIZE RING_SIZE,
bool RING_SEL, uint8_t CHAIN_TO,
DMA_TREQ_SEL TREQ_SEL, bool IRQ_QUIET,
bool BSWAP, bool SNIFF_EN, bool WRITE_ERROR,
bool READ_ERROR)
{
uint32_t curr = CTRL_TRIG;
curr &= ~(0b1u);
curr |= (EN & 0b1u);
curr &= ~(0b1u << 1u);
curr |= (HIGH_PRIORITY & 0b1u) << 1u;
curr &= ~(0b11u << 2u);
curr |= (std::to_underlying(DATA_SIZE) & 0b11u) << 2u;
curr &= ~(0b1u << 4u);
curr |= (INCR_READ & 0b1u) << 4u;
curr &= ~(0b1u << 5u);
curr |= (INCR_WRITE & 0b1u) << 5u;
curr &= ~(0xfu << 6u);
curr |= (std::to_underlying(RING_SIZE) & 0xfu) << 6u;
curr &= ~(0b1u << 10u);
curr |= (RING_SEL & 0b1u) << 10u;
curr &= ~(0xfu << 11u);
curr |= (CHAIN_TO & 0xfu) << 11u;
curr &= ~(0b111111u << 15u);
curr |= (std::to_underlying(TREQ_SEL) & 0b111111u) << 15u;
curr &= ~(0b1u << 21u);
curr |= (IRQ_QUIET & 0b1u) << 21u;
curr &= ~(0b1u << 22u);
curr |= (BSWAP & 0b1u) << 22u;
curr &= ~(0b1u << 23u);
curr |= (SNIFF_EN & 0b1u) << 23u;
curr &= ~(0b1u << 29u);
curr |= (WRITE_ERROR & 0b1u) << 29u;
curr &= ~(0b1u << 30u);
curr |= (READ_ERROR & 0b1u) << 30u;
CTRL_TRIG = curr;
}
inline bool get_AL1_CTRL_EN()
{
return AL1_CTRL & 1u;
}
inline void set_AL1_CTRL_EN()
{
AL1_CTRL |= 1u;
}
inline void clear_AL1_CTRL_EN()
{
AL1_CTRL &= ~(1u);
}
inline void toggle_AL1_CTRL_EN()
{
AL1_CTRL ^= 1u;
}
inline bool get_AL1_CTRL_HIGH_PRIORITY()
{
return AL1_CTRL & (1u << 1u);
}
inline void set_AL1_CTRL_HIGH_PRIORITY()
{
AL1_CTRL |= 1u << 1u;
}
inline void clear_AL1_CTRL_HIGH_PRIORITY()
{
AL1_CTRL &= ~(1u << 1u);
}
inline void toggle_AL1_CTRL_HIGH_PRIORITY()
{
AL1_CTRL ^= 1u << 1u;
}
inline DMA_DATA_SIZE get_AL1_CTRL_DATA_SIZE()
{
return DMA_DATA_SIZE((AL1_CTRL >> 2u) & 0b11u);
}
inline void set_AL1_CTRL_DATA_SIZE(DMA_DATA_SIZE value)
{
uint32_t curr = AL1_CTRL;
curr &= ~(0b11u << 2u);
curr |= (std::to_underlying(value) & 0b11u) << 2u;
AL1_CTRL = curr;
}
inline bool get_AL1_CTRL_INCR_READ()
{
return AL1_CTRL & (1u << 4u);
}
inline void set_AL1_CTRL_INCR_READ()
{
AL1_CTRL |= 1u << 4u;
}
inline void clear_AL1_CTRL_INCR_READ()
{
AL1_CTRL &= ~(1u << 4u);
}
inline void toggle_AL1_CTRL_INCR_READ()
{
AL1_CTRL ^= 1u << 4u;
}
inline bool get_AL1_CTRL_INCR_WRITE()
{
return AL1_CTRL & (1u << 5u);
}
inline void set_AL1_CTRL_INCR_WRITE()
{
AL1_CTRL |= 1u << 5u;
}
inline void clear_AL1_CTRL_INCR_WRITE()
{
AL1_CTRL &= ~(1u << 5u);
}
inline void toggle_AL1_CTRL_INCR_WRITE()
{
AL1_CTRL ^= 1u << 5u;
}
inline DMA_RING_SIZE get_AL1_CTRL_RING_SIZE()
{
return DMA_RING_SIZE((AL1_CTRL >> 6u) & 0xfu);
}
inline void set_AL1_CTRL_RING_SIZE(DMA_RING_SIZE value)
{
uint32_t curr = AL1_CTRL;
curr &= ~(0xfu << 6u);
curr |= (std::to_underlying(value) & 0xfu) << 6u;
AL1_CTRL = curr;
}
inline bool get_AL1_CTRL_RING_SEL()
{
return AL1_CTRL & (1u << 10u);
}
inline void set_AL1_CTRL_RING_SEL()
{
AL1_CTRL |= 1u << 10u;
}
inline void clear_AL1_CTRL_RING_SEL()
{
AL1_CTRL &= ~(1u << 10u);
}
inline void toggle_AL1_CTRL_RING_SEL()
{
AL1_CTRL ^= 1u << 10u;
}
inline uint8_t get_AL1_CTRL_CHAIN_TO()
{
return (AL1_CTRL >> 11u) & 0xfu;
}
inline void set_AL1_CTRL_CHAIN_TO(uint8_t value)
{
uint32_t curr = AL1_CTRL;
curr &= ~(0xfu << 11u);
curr |= (value & 0xfu) << 11u;
AL1_CTRL = curr;
}
inline DMA_TREQ_SEL get_AL1_CTRL_TREQ_SEL()
{
return DMA_TREQ_SEL((AL1_CTRL >> 15u) & 0b111111u);
}
inline void set_AL1_CTRL_TREQ_SEL(DMA_TREQ_SEL value)
{
uint32_t curr = AL1_CTRL;
curr &= ~(0b111111u << 15u);
curr |= (std::to_underlying(value) & 0b111111u) << 15u;
AL1_CTRL = curr;
}
inline bool get_AL1_CTRL_IRQ_QUIET()
{
return AL1_CTRL & (1u << 21u);
}
inline void set_AL1_CTRL_IRQ_QUIET()
{
AL1_CTRL |= 1u << 21u;
}
inline void clear_AL1_CTRL_IRQ_QUIET()
{
AL1_CTRL &= ~(1u << 21u);
}
inline void toggle_AL1_CTRL_IRQ_QUIET()
{
AL1_CTRL ^= 1u << 21u;
}
inline bool get_AL1_CTRL_BSWAP()
{
return AL1_CTRL & (1u << 22u);
}
inline void set_AL1_CTRL_BSWAP()
{
AL1_CTRL |= 1u << 22u;
}
inline void clear_AL1_CTRL_BSWAP()
{
AL1_CTRL &= ~(1u << 22u);
}
inline void toggle_AL1_CTRL_BSWAP()
{
AL1_CTRL ^= 1u << 22u;
}
inline bool get_AL1_CTRL_SNIFF_EN()
{
return AL1_CTRL & (1u << 23u);
}
inline void set_AL1_CTRL_SNIFF_EN()
{
AL1_CTRL |= 1u << 23u;
}
inline void clear_AL1_CTRL_SNIFF_EN()
{
AL1_CTRL &= ~(1u << 23u);
}
inline void toggle_AL1_CTRL_SNIFF_EN()
{
AL1_CTRL ^= 1u << 23u;
}
inline bool get_AL1_CTRL_BUSY()
{
return AL1_CTRL & (1u << 24u);
}
inline bool get_AL1_CTRL_WRITE_ERROR()
{
return AL1_CTRL & (1u << 29u);
}
inline void set_AL1_CTRL_WRITE_ERROR()
{
AL1_CTRL |= 1u << 29u;
}
inline void clear_AL1_CTRL_WRITE_ERROR()
{
AL1_CTRL &= ~(1u << 29u);
}
inline void toggle_AL1_CTRL_WRITE_ERROR()
{
AL1_CTRL ^= 1u << 29u;
}
inline bool get_AL1_CTRL_READ_ERROR()
{
return AL1_CTRL & (1u << 30u);
}
inline void set_AL1_CTRL_READ_ERROR()
{
AL1_CTRL |= 1u << 30u;
}
inline void clear_AL1_CTRL_READ_ERROR()
{
AL1_CTRL &= ~(1u << 30u);
}
inline void toggle_AL1_CTRL_READ_ERROR()
{
AL1_CTRL ^= 1u << 30u;
}
inline bool get_AL1_CTRL_AHB_ERROR()
{
return AL1_CTRL & (1u << 31u);
}
inline void get_AL1_CTRL(bool &EN, bool &HIGH_PRIORITY,
DMA_DATA_SIZE &DATA_SIZE, bool &INCR_READ,
bool &INCR_WRITE, DMA_RING_SIZE &RING_SIZE,
bool &RING_SEL, uint8_t &CHAIN_TO,
DMA_TREQ_SEL &TREQ_SEL, bool &IRQ_QUIET,
bool &BSWAP, bool &SNIFF_EN, bool &BUSY,
bool &WRITE_ERROR, bool &READ_ERROR,
bool &AHB_ERROR)
{
uint32_t curr = AL1_CTRL;
EN = curr & 1u;
HIGH_PRIORITY = curr & (1u << 1u);
DATA_SIZE = DMA_DATA_SIZE((curr >> 2u) & 0b11u);
INCR_READ = curr & (1u << 4u);
INCR_WRITE = curr & (1u << 5u);
RING_SIZE = DMA_RING_SIZE((curr >> 6u) & 0xfu);
RING_SEL = curr & (1u << 10u);
CHAIN_TO = (curr >> 11u) & 0xfu;
TREQ_SEL = DMA_TREQ_SEL((curr >> 15u) & 0b111111u);
IRQ_QUIET = curr & (1u << 21u);
BSWAP = curr & (1u << 22u);
SNIFF_EN = curr & (1u << 23u);
BUSY = curr & (1u << 24u);
WRITE_ERROR = curr & (1u << 29u);
READ_ERROR = curr & (1u << 30u);
AHB_ERROR = curr & (1u << 31u);
}
inline void set_AL1_CTRL(bool EN, bool HIGH_PRIORITY,
DMA_DATA_SIZE DATA_SIZE, bool INCR_READ,
bool INCR_WRITE, DMA_RING_SIZE RING_SIZE,
bool RING_SEL, uint8_t CHAIN_TO,
DMA_TREQ_SEL TREQ_SEL, bool IRQ_QUIET, bool BSWAP,
bool SNIFF_EN, bool WRITE_ERROR, bool READ_ERROR)
{
uint32_t curr = AL1_CTRL;
curr &= ~(0b1u);
curr |= (EN & 0b1u);
curr &= ~(0b1u << 1u);
curr |= (HIGH_PRIORITY & 0b1u) << 1u;
curr &= ~(0b11u << 2u);
curr |= (std::to_underlying(DATA_SIZE) & 0b11u) << 2u;
curr &= ~(0b1u << 4u);
curr |= (INCR_READ & 0b1u) << 4u;
curr &= ~(0b1u << 5u);
curr |= (INCR_WRITE & 0b1u) << 5u;
curr &= ~(0xfu << 6u);
curr |= (std::to_underlying(RING_SIZE) & 0xfu) << 6u;
curr &= ~(0b1u << 10u);
curr |= (RING_SEL & 0b1u) << 10u;
curr &= ~(0xfu << 11u);
curr |= (CHAIN_TO & 0xfu) << 11u;
curr &= ~(0b111111u << 15u);
curr |= (std::to_underlying(TREQ_SEL) & 0b111111u) << 15u;
curr &= ~(0b1u << 21u);
curr |= (IRQ_QUIET & 0b1u) << 21u;
curr &= ~(0b1u << 22u);
curr |= (BSWAP & 0b1u) << 22u;
curr &= ~(0b1u << 23u);
curr |= (SNIFF_EN & 0b1u) << 23u;
curr &= ~(0b1u << 29u);
curr |= (WRITE_ERROR & 0b1u) << 29u;
curr &= ~(0b1u << 30u);
curr |= (READ_ERROR & 0b1u) << 30u;
AL1_CTRL = curr;
}
inline bool get_AL2_CTRL_EN()
{
return AL2_CTRL & 1u;
}
inline void set_AL2_CTRL_EN()
{
AL2_CTRL |= 1u;
}
inline void clear_AL2_CTRL_EN()
{
AL2_CTRL &= ~(1u);
}
inline void toggle_AL2_CTRL_EN()
{
AL2_CTRL ^= 1u;
}
inline bool get_AL2_CTRL_HIGH_PRIORITY()
{
return AL2_CTRL & (1u << 1u);
}
inline void set_AL2_CTRL_HIGH_PRIORITY()
{
AL2_CTRL |= 1u << 1u;
}
inline void clear_AL2_CTRL_HIGH_PRIORITY()
{
AL2_CTRL &= ~(1u << 1u);
}
inline void toggle_AL2_CTRL_HIGH_PRIORITY()
{
AL2_CTRL ^= 1u << 1u;
}
inline DMA_DATA_SIZE get_AL2_CTRL_DATA_SIZE()
{
return DMA_DATA_SIZE((AL2_CTRL >> 2u) & 0b11u);
}
inline void set_AL2_CTRL_DATA_SIZE(DMA_DATA_SIZE value)
{
uint32_t curr = AL2_CTRL;
curr &= ~(0b11u << 2u);
curr |= (std::to_underlying(value) & 0b11u) << 2u;
AL2_CTRL = curr;
}
inline bool get_AL2_CTRL_INCR_READ()
{
return AL2_CTRL & (1u << 4u);
}
inline void set_AL2_CTRL_INCR_READ()
{
AL2_CTRL |= 1u << 4u;
}
inline void clear_AL2_CTRL_INCR_READ()
{
AL2_CTRL &= ~(1u << 4u);
}
inline void toggle_AL2_CTRL_INCR_READ()
{
AL2_CTRL ^= 1u << 4u;
}
inline bool get_AL2_CTRL_INCR_WRITE()
{
return AL2_CTRL & (1u << 5u);
}
inline void set_AL2_CTRL_INCR_WRITE()
{
AL2_CTRL |= 1u << 5u;
}
inline void clear_AL2_CTRL_INCR_WRITE()
{
AL2_CTRL &= ~(1u << 5u);
}
inline void toggle_AL2_CTRL_INCR_WRITE()
{
AL2_CTRL ^= 1u << 5u;
}
inline DMA_RING_SIZE get_AL2_CTRL_RING_SIZE()
{
return DMA_RING_SIZE((AL2_CTRL >> 6u) & 0xfu);
}
inline void set_AL2_CTRL_RING_SIZE(DMA_RING_SIZE value)
{
uint32_t curr = AL2_CTRL;
curr &= ~(0xfu << 6u);
curr |= (std::to_underlying(value) & 0xfu) << 6u;
AL2_CTRL = curr;
}
inline bool get_AL2_CTRL_RING_SEL()
{
return AL2_CTRL & (1u << 10u);
}
inline void set_AL2_CTRL_RING_SEL()
{
AL2_CTRL |= 1u << 10u;
}
inline void clear_AL2_CTRL_RING_SEL()
{
AL2_CTRL &= ~(1u << 10u);
}
inline void toggle_AL2_CTRL_RING_SEL()
{
AL2_CTRL ^= 1u << 10u;
}
inline uint8_t get_AL2_CTRL_CHAIN_TO()
{
return (AL2_CTRL >> 11u) & 0xfu;
}
inline void set_AL2_CTRL_CHAIN_TO(uint8_t value)
{
uint32_t curr = AL2_CTRL;
curr &= ~(0xfu << 11u);
curr |= (value & 0xfu) << 11u;
AL2_CTRL = curr;
}
inline DMA_TREQ_SEL get_AL2_CTRL_TREQ_SEL()
{
return DMA_TREQ_SEL((AL2_CTRL >> 15u) & 0b111111u);
}
inline void set_AL2_CTRL_TREQ_SEL(DMA_TREQ_SEL value)
{
uint32_t curr = AL2_CTRL;
curr &= ~(0b111111u << 15u);
curr |= (std::to_underlying(value) & 0b111111u) << 15u;
AL2_CTRL = curr;
}
inline bool get_AL2_CTRL_IRQ_QUIET()
{
return AL2_CTRL & (1u << 21u);
}
inline void set_AL2_CTRL_IRQ_QUIET()
{
AL2_CTRL |= 1u << 21u;
}
inline void clear_AL2_CTRL_IRQ_QUIET()
{
AL2_CTRL &= ~(1u << 21u);
}
inline void toggle_AL2_CTRL_IRQ_QUIET()
{
AL2_CTRL ^= 1u << 21u;
}
inline bool get_AL2_CTRL_BSWAP()
{
return AL2_CTRL & (1u << 22u);
}
inline void set_AL2_CTRL_BSWAP()
{
AL2_CTRL |= 1u << 22u;
}
inline void clear_AL2_CTRL_BSWAP()
{
AL2_CTRL &= ~(1u << 22u);
}
inline void toggle_AL2_CTRL_BSWAP()
{
AL2_CTRL ^= 1u << 22u;
}
inline bool get_AL2_CTRL_SNIFF_EN()
{
return AL2_CTRL & (1u << 23u);
}
inline void set_AL2_CTRL_SNIFF_EN()
{
AL2_CTRL |= 1u << 23u;
}
inline void clear_AL2_CTRL_SNIFF_EN()
{
AL2_CTRL &= ~(1u << 23u);
}
inline void toggle_AL2_CTRL_SNIFF_EN()
{
AL2_CTRL ^= 1u << 23u;
}
inline bool get_AL2_CTRL_BUSY()
{
return AL2_CTRL & (1u << 24u);
}
inline bool get_AL2_CTRL_WRITE_ERROR()
{
return AL2_CTRL & (1u << 29u);
}
inline void set_AL2_CTRL_WRITE_ERROR()
{
AL2_CTRL |= 1u << 29u;
}
inline void clear_AL2_CTRL_WRITE_ERROR()
{
AL2_CTRL &= ~(1u << 29u);
}
inline void toggle_AL2_CTRL_WRITE_ERROR()
{
AL2_CTRL ^= 1u << 29u;
}
inline bool get_AL2_CTRL_READ_ERROR()
{
return AL2_CTRL & (1u << 30u);
}
inline void set_AL2_CTRL_READ_ERROR()
{
AL2_CTRL |= 1u << 30u;
}
inline void clear_AL2_CTRL_READ_ERROR()
{
AL2_CTRL &= ~(1u << 30u);
}
inline void toggle_AL2_CTRL_READ_ERROR()
{
AL2_CTRL ^= 1u << 30u;
}
inline bool get_AL2_CTRL_AHB_ERROR()
{
return AL2_CTRL & (1u << 31u);
}
inline void get_AL2_CTRL(bool &EN, bool &HIGH_PRIORITY,
DMA_DATA_SIZE &DATA_SIZE, bool &INCR_READ,
bool &INCR_WRITE, DMA_RING_SIZE &RING_SIZE,
bool &RING_SEL, uint8_t &CHAIN_TO,
DMA_TREQ_SEL &TREQ_SEL, bool &IRQ_QUIET,
bool &BSWAP, bool &SNIFF_EN, bool &BUSY,
bool &WRITE_ERROR, bool &READ_ERROR,
bool &AHB_ERROR)
{
uint32_t curr = AL2_CTRL;
EN = curr & 1u;
HIGH_PRIORITY = curr & (1u << 1u);
DATA_SIZE = DMA_DATA_SIZE((curr >> 2u) & 0b11u);
INCR_READ = curr & (1u << 4u);
INCR_WRITE = curr & (1u << 5u);
RING_SIZE = DMA_RING_SIZE((curr >> 6u) & 0xfu);
RING_SEL = curr & (1u << 10u);
CHAIN_TO = (curr >> 11u) & 0xfu;
TREQ_SEL = DMA_TREQ_SEL((curr >> 15u) & 0b111111u);
IRQ_QUIET = curr & (1u << 21u);
BSWAP = curr & (1u << 22u);
SNIFF_EN = curr & (1u << 23u);
BUSY = curr & (1u << 24u);
WRITE_ERROR = curr & (1u << 29u);
READ_ERROR = curr & (1u << 30u);
AHB_ERROR = curr & (1u << 31u);
}
inline void set_AL2_CTRL(bool EN, bool HIGH_PRIORITY,
DMA_DATA_SIZE DATA_SIZE, bool INCR_READ,
bool INCR_WRITE, DMA_RING_SIZE RING_SIZE,
bool RING_SEL, uint8_t CHAIN_TO,
DMA_TREQ_SEL TREQ_SEL, bool IRQ_QUIET, bool BSWAP,
bool SNIFF_EN, bool WRITE_ERROR, bool READ_ERROR)
{
uint32_t curr = AL2_CTRL;
curr &= ~(0b1u);
curr |= (EN & 0b1u);
curr &= ~(0b1u << 1u);
curr |= (HIGH_PRIORITY & 0b1u) << 1u;
curr &= ~(0b11u << 2u);
curr |= (std::to_underlying(DATA_SIZE) & 0b11u) << 2u;
curr &= ~(0b1u << 4u);
curr |= (INCR_READ & 0b1u) << 4u;
curr &= ~(0b1u << 5u);
curr |= (INCR_WRITE & 0b1u) << 5u;
curr &= ~(0xfu << 6u);
curr |= (std::to_underlying(RING_SIZE) & 0xfu) << 6u;
curr &= ~(0b1u << 10u);
curr |= (RING_SEL & 0b1u) << 10u;
curr &= ~(0xfu << 11u);
curr |= (CHAIN_TO & 0xfu) << 11u;
curr &= ~(0b111111u << 15u);
curr |= (std::to_underlying(TREQ_SEL) & 0b111111u) << 15u;
curr &= ~(0b1u << 21u);
curr |= (IRQ_QUIET & 0b1u) << 21u;
curr &= ~(0b1u << 22u);
curr |= (BSWAP & 0b1u) << 22u;
curr &= ~(0b1u << 23u);
curr |= (SNIFF_EN & 0b1u) << 23u;
curr &= ~(0b1u << 29u);
curr |= (WRITE_ERROR & 0b1u) << 29u;
curr &= ~(0b1u << 30u);
curr |= (READ_ERROR & 0b1u) << 30u;
AL2_CTRL = curr;
}
inline bool get_AL3_CTRL_EN()
{
return AL3_CTRL & 1u;
}
inline void set_AL3_CTRL_EN()
{
AL3_CTRL |= 1u;
}
inline void clear_AL3_CTRL_EN()
{
AL3_CTRL &= ~(1u);
}
inline void toggle_AL3_CTRL_EN()
{
AL3_CTRL ^= 1u;
}
inline bool get_AL3_CTRL_HIGH_PRIORITY()
{
return AL3_CTRL & (1u << 1u);
}
inline void set_AL3_CTRL_HIGH_PRIORITY()
{
AL3_CTRL |= 1u << 1u;
}
inline void clear_AL3_CTRL_HIGH_PRIORITY()
{
AL3_CTRL &= ~(1u << 1u);
}
inline void toggle_AL3_CTRL_HIGH_PRIORITY()
{
AL3_CTRL ^= 1u << 1u;
}
inline DMA_DATA_SIZE get_AL3_CTRL_DATA_SIZE()
{
return DMA_DATA_SIZE((AL3_CTRL >> 2u) & 0b11u);
}
inline void set_AL3_CTRL_DATA_SIZE(DMA_DATA_SIZE value)
{
uint32_t curr = AL3_CTRL;
curr &= ~(0b11u << 2u);
curr |= (std::to_underlying(value) & 0b11u) << 2u;
AL3_CTRL = curr;
}
inline bool get_AL3_CTRL_INCR_READ()
{
return AL3_CTRL & (1u << 4u);
}
inline void set_AL3_CTRL_INCR_READ()
{
AL3_CTRL |= 1u << 4u;
}
inline void clear_AL3_CTRL_INCR_READ()
{
AL3_CTRL &= ~(1u << 4u);
}
inline void toggle_AL3_CTRL_INCR_READ()
{
AL3_CTRL ^= 1u << 4u;
}
inline bool get_AL3_CTRL_INCR_WRITE()
{
return AL3_CTRL & (1u << 5u);
}
inline void set_AL3_CTRL_INCR_WRITE()
{
AL3_CTRL |= 1u << 5u;
}
inline void clear_AL3_CTRL_INCR_WRITE()
{
AL3_CTRL &= ~(1u << 5u);
}
inline void toggle_AL3_CTRL_INCR_WRITE()
{
AL3_CTRL ^= 1u << 5u;
}
inline DMA_RING_SIZE get_AL3_CTRL_RING_SIZE()
{
return DMA_RING_SIZE((AL3_CTRL >> 6u) & 0xfu);
}
inline void set_AL3_CTRL_RING_SIZE(DMA_RING_SIZE value)
{
uint32_t curr = AL3_CTRL;
curr &= ~(0xfu << 6u);
curr |= (std::to_underlying(value) & 0xfu) << 6u;
AL3_CTRL = curr;
}
inline bool get_AL3_CTRL_RING_SEL()
{
return AL3_CTRL & (1u << 10u);
}
inline void set_AL3_CTRL_RING_SEL()
{
AL3_CTRL |= 1u << 10u;
}
inline void clear_AL3_CTRL_RING_SEL()
{
AL3_CTRL &= ~(1u << 10u);
}
inline void toggle_AL3_CTRL_RING_SEL()
{
AL3_CTRL ^= 1u << 10u;
}
inline uint8_t get_AL3_CTRL_CHAIN_TO()
{
return (AL3_CTRL >> 11u) & 0xfu;
}
inline void set_AL3_CTRL_CHAIN_TO(uint8_t value)
{
uint32_t curr = AL3_CTRL;
curr &= ~(0xfu << 11u);
curr |= (value & 0xfu) << 11u;
AL3_CTRL = curr;
}
inline DMA_TREQ_SEL get_AL3_CTRL_TREQ_SEL()
{
return DMA_TREQ_SEL((AL3_CTRL >> 15u) & 0b111111u);
}
inline void set_AL3_CTRL_TREQ_SEL(DMA_TREQ_SEL value)
{
uint32_t curr = AL3_CTRL;
curr &= ~(0b111111u << 15u);
curr |= (std::to_underlying(value) & 0b111111u) << 15u;
AL3_CTRL = curr;
}
inline bool get_AL3_CTRL_IRQ_QUIET()
{
return AL3_CTRL & (1u << 21u);
}
inline void set_AL3_CTRL_IRQ_QUIET()
{
AL3_CTRL |= 1u << 21u;
}
inline void clear_AL3_CTRL_IRQ_QUIET()
{
AL3_CTRL &= ~(1u << 21u);
}
inline void toggle_AL3_CTRL_IRQ_QUIET()
{
AL3_CTRL ^= 1u << 21u;
}
inline bool get_AL3_CTRL_BSWAP()
{
return AL3_CTRL & (1u << 22u);
}
inline void set_AL3_CTRL_BSWAP()
{
AL3_CTRL |= 1u << 22u;
}
inline void clear_AL3_CTRL_BSWAP()
{
AL3_CTRL &= ~(1u << 22u);
}
inline void toggle_AL3_CTRL_BSWAP()
{
AL3_CTRL ^= 1u << 22u;
}
inline bool get_AL3_CTRL_SNIFF_EN()
{
return AL3_CTRL & (1u << 23u);
}
inline void set_AL3_CTRL_SNIFF_EN()
{
AL3_CTRL |= 1u << 23u;
}
inline void clear_AL3_CTRL_SNIFF_EN()
{
AL3_CTRL &= ~(1u << 23u);
}
inline void toggle_AL3_CTRL_SNIFF_EN()
{
AL3_CTRL ^= 1u << 23u;
}
inline bool get_AL3_CTRL_BUSY()
{
return AL3_CTRL & (1u << 24u);
}
inline bool get_AL3_CTRL_WRITE_ERROR()
{
return AL3_CTRL & (1u << 29u);
}
inline void set_AL3_CTRL_WRITE_ERROR()
{
AL3_CTRL |= 1u << 29u;
}
inline void clear_AL3_CTRL_WRITE_ERROR()
{
AL3_CTRL &= ~(1u << 29u);
}
inline void toggle_AL3_CTRL_WRITE_ERROR()
{
AL3_CTRL ^= 1u << 29u;
}
inline bool get_AL3_CTRL_READ_ERROR()
{
return AL3_CTRL & (1u << 30u);
}
inline void set_AL3_CTRL_READ_ERROR()
{
AL3_CTRL |= 1u << 30u;
}
inline void clear_AL3_CTRL_READ_ERROR()
{
AL3_CTRL &= ~(1u << 30u);
}
inline void toggle_AL3_CTRL_READ_ERROR()
{
AL3_CTRL ^= 1u << 30u;
}
inline bool get_AL3_CTRL_AHB_ERROR()
{
return AL3_CTRL & (1u << 31u);
}
inline void get_AL3_CTRL(bool &EN, bool &HIGH_PRIORITY,
DMA_DATA_SIZE &DATA_SIZE, bool &INCR_READ,
bool &INCR_WRITE, DMA_RING_SIZE &RING_SIZE,
bool &RING_SEL, uint8_t &CHAIN_TO,
DMA_TREQ_SEL &TREQ_SEL, bool &IRQ_QUIET,
bool &BSWAP, bool &SNIFF_EN, bool &BUSY,
bool &WRITE_ERROR, bool &READ_ERROR,
bool &AHB_ERROR)
{
uint32_t curr = AL3_CTRL;
EN = curr & 1u;
HIGH_PRIORITY = curr & (1u << 1u);
DATA_SIZE = DMA_DATA_SIZE((curr >> 2u) & 0b11u);
INCR_READ = curr & (1u << 4u);
INCR_WRITE = curr & (1u << 5u);
RING_SIZE = DMA_RING_SIZE((curr >> 6u) & 0xfu);
RING_SEL = curr & (1u << 10u);
CHAIN_TO = (curr >> 11u) & 0xfu;
TREQ_SEL = DMA_TREQ_SEL((curr >> 15u) & 0b111111u);
IRQ_QUIET = curr & (1u << 21u);
BSWAP = curr & (1u << 22u);
SNIFF_EN = curr & (1u << 23u);
BUSY = curr & (1u << 24u);
WRITE_ERROR = curr & (1u << 29u);
READ_ERROR = curr & (1u << 30u);
AHB_ERROR = curr & (1u << 31u);
}
inline void set_AL3_CTRL(bool EN, bool HIGH_PRIORITY,
DMA_DATA_SIZE DATA_SIZE, bool INCR_READ,
bool INCR_WRITE, DMA_RING_SIZE RING_SIZE,
bool RING_SEL, uint8_t CHAIN_TO,
DMA_TREQ_SEL TREQ_SEL, bool IRQ_QUIET, bool BSWAP,
bool SNIFF_EN, bool WRITE_ERROR, bool READ_ERROR)
{
uint32_t curr = AL3_CTRL;
curr &= ~(0b1u);
curr |= (EN & 0b1u);
curr &= ~(0b1u << 1u);
curr |= (HIGH_PRIORITY & 0b1u) << 1u;
curr &= ~(0b11u << 2u);
curr |= (std::to_underlying(DATA_SIZE) & 0b11u) << 2u;
curr &= ~(0b1u << 4u);
curr |= (INCR_READ & 0b1u) << 4u;
curr &= ~(0b1u << 5u);
curr |= (INCR_WRITE & 0b1u) << 5u;
curr &= ~(0xfu << 6u);
curr |= (std::to_underlying(RING_SIZE) & 0xfu) << 6u;
curr &= ~(0b1u << 10u);
curr |= (RING_SEL & 0b1u) << 10u;
curr &= ~(0xfu << 11u);
curr |= (CHAIN_TO & 0xfu) << 11u;
curr &= ~(0b111111u << 15u);
curr |= (std::to_underlying(TREQ_SEL) & 0b111111u) << 15u;
curr &= ~(0b1u << 21u);
curr |= (IRQ_QUIET & 0b1u) << 21u;
curr &= ~(0b1u << 22u);
curr |= (BSWAP & 0b1u) << 22u;
curr &= ~(0b1u << 23u);
curr |= (SNIFF_EN & 0b1u) << 23u;
curr &= ~(0b1u << 29u);
curr |= (WRITE_ERROR & 0b1u) << 29u;
curr &= ~(0b1u << 30u);
curr |= (READ_ERROR & 0b1u) << 30u;
AL3_CTRL = curr;
}
};
static_assert(sizeof(dma_control) == dma_control::size);
static_assert(ifgen_struct<dma_control>);
}; // namespace RP2040
#endif