use core::ops;
use crate::mci::{constants::*, err::MCIError};
use bitflags::bitflags;
use super::{FlagReg, Reg};
pub type MCIReg = Reg<MCIError>;
impl Clone for MCIReg {
fn clone(&self) -> Self {
Self::new(self.addr)
}
}
bitflags! {
#[derive(Clone, Copy)]
pub struct MCICtrl: u32 {
const CONTROLLER_RESET = 1 << 0; const FIFO_RESET = 1 << 1; const DMA_RESET = 1 << 2; const INT_ENABLE = 1 << 4; const DMA_ENABLE = 1 << 5; const READ_WAIT = 1 << 6; const SEND_IRQ_RESPONSE = 1 << 7; const ABORT_READ_DATA = 1 << 8; const SEND_CCSD = 1 << 9; const SEND_AUTO_STOP_CCSD = 1 << 10; const ENDIAN = 1 << 11; const CARD_VOLTAGE_A_MASK = 0xf << 16; const CARD_VOLTAGE_B_MASK = 0xf << 20; const ENABLE_OD_PULLUP = 1 << 24; const USE_INTERNAL_DMAC = 1 << 25; }
}
impl FlagReg for MCICtrl {
const REG: u32 = FSDIF_CNTRL_OFFSET;
}
bitflags! {
#[derive(Clone, Copy)]
pub struct MCIPwrEn: u32 {
const ENABLE = 1 << 0; }
}
impl FlagReg for MCIPwrEn {
const REG: u32 = FSDIF_PWREN_OFFSET;
}
bitflags! {
pub struct MCIClkDiv: u32 {
const CLK_DIVDER_BIT0 = 1 << 0;
const CLK_DIVDER_BIT1 = 1 << 1;
const CLK_DIVDER_BIT2 = 1 << 2;
const CLK_DIVDER_BIT3 = 1 << 3;
const CLK_DIVDER_BIT4 = 1 << 4;
const CLK_DIVDER_BIT5 = 1 << 5;
const CLK_DIVDER_BIT6 = 1 << 6;
const CLK_DIVDER_BIT7 = 1 << 7;
const CLK_DRV_BIT0 = 1 << 8;
const CLK_DRV_BIT1 = 1 << 9;
const CLK_DRV_BIT2 = 1 << 10;
const CLK_DRV_BIT3 = 1 << 11;
const CLK_DRV_BIT4 = 1 << 12;
const CLK_DRV_BIT5 = 1 << 13;
const CLK_DRV_BIT6 = 1 << 14;
const CLK_DRV_BIT7 = 1 << 15;
const CLK_SAMPLE_BIT0 = 1 << 16;
const CLK_SAMPLE_BIT1 = 1 << 17;
const CLK_SAMPLE_BIT2 = 1 << 18;
const CLK_SAMPLE_BIT3 = 1 << 19;
const CLK_SAMPLE_BIT4 = 1 << 20;
const CLK_SAMPLE_BIT5 = 1 << 21;
const CLK_SAMPLE_BIT6 = 1 << 22;
const CLK_SAMPLE_BIT7 = 1 << 23;
}
}
impl FlagReg for MCIClkDiv {
const REG: u32 = FSDIF_CLKDIV_OFFSET;
}
impl MCIClkDiv {
pub fn clk_sample_set(x: u32) -> Self {
Self::from_bits_truncate(set_reg32_bits!(x, 23, 16))
}
pub fn clk_drv_set(x: u32) -> Self {
Self::from_bits_truncate(set_reg32_bits!(x, 15, 8))
}
pub fn clk_divider_set(x: u32) -> Self {
Self::from_bits_truncate(set_reg32_bits!(x, 7, 0))
}
pub fn clk_div(samp: u32, drv: u32, div: u32) -> Self {
Self::clk_sample_set(samp) | Self::clk_drv_set(drv) | Self::clk_divider_set(div)
}
pub fn clk_divider_get(div_reg: u32) -> Self {
MCIClkDiv::from_bits_truncate(get_reg32_bits!(div_reg, 7, 0))
}
}
bitflags! {
#[derive(Clone, Copy)]
pub struct MCIClkEn: u32 {
const CCLK_ENABLE = 1 << 0;
const CLKENA_CCLK_LOW_POWER = 1<<16;
}
}
impl FlagReg for MCIClkEn {
const REG: u32 = FSDIF_CLKENA_OFFSET;
}
bitflags! {
pub struct MCITimeout: u32 {
const MAX_DATA_TIMEOUT = 0xffffff;
const MAX_RESP_TIMEOUT = 0xff;
const RESP_TIMEOUT_BIT0 = 1 << 0;
const RESP_TIMEOUT_BIT1 = 1 << 1;
const RESP_TIMEOUT_BIT2 = 1 << 2;
const RESP_TIMEOUT_BIT3 = 1 << 3;
const RESP_TIMEOUT_BIT4 = 1 << 4;
const RESP_TIMEOUT_BIT5 = 1 << 5;
const RESP_TIMEOUT_BIT6 = 1 << 6;
const RESP_TIMEOUT_BIT7 = 1 << 7;
const DATA_TIMEOUT_BIT0 = 1 << 8;
const DATA_TIMEOUT_BIT1 = 1 << 9;
const DATA_TIMEOUT_BIT2 = 1 << 10;
const DATA_TIMEOUT_BIT3 = 1 << 11;
const DATA_TIMEOUT_BIT4 = 1 << 12;
const DATA_TIMEOUT_BIT5 = 1 << 13;
const DATA_TIMEOUT_BIT6 = 1 << 14;
const DATA_TIMEOUT_BIT7 = 1 << 15;
const DATA_TIMEOUT_BIT8 = 1 << 16;
const DATA_TIMEOUT_BIT9 = 1 << 17;
const DATA_TIMEOUT_BIT10 = 1 << 18;
const DATA_TIMEOUT_BIT11 = 1 << 19;
const DATA_TIMEOUT_BIT12 = 1 << 20;
const DATA_TIMEOUT_BIT13 = 1 << 21;
const DATA_TIMEOUT_BIT14 = 1 << 22;
const DATA_TIMEOUT_BIT15 = 1 << 23;
const DATA_TIMEOUT_BIT16 = 1 << 24;
const DATA_TIMEOUT_BIT17 = 1 << 25;
const DATA_TIMEOUT_BIT18 = 1 << 26;
const DATA_TIMEOUT_BIT19 = 1 << 27;
const DATA_TIMEOUT_BIT20 = 1 << 28;
const DATA_TIMEOUT_BIT21 = 1 << 29;
const DATA_TIMEOUT_BIT22 = 1 << 30;
const DATA_TIMEOUT_BIT23 = 1 << 31;
}
}
impl FlagReg for MCITimeout {
const REG: u32 = FSDIF_TMOUT_OFFSET;
}
impl MCITimeout {
pub fn timeout_data(data_timeout: MCITimeout, resp_timeout: MCITimeout) -> MCITimeout {
MCITimeout::from_bits_truncate(
(genmask!(31, 8) & (data_timeout.bits() << 8)) | (genmask!(7, 0) & resp_timeout.bits()),
)
}
}
bitflags! {
pub struct MCICType: u32 {
const CARD0_WIDTH1_8BIT = 1 << 16;
const CARD0_WIDTH2_4BIT = 1 << 0;
const CARD0_WIDTH2_1BIT = 0;
}
}
impl From<u32> for MCICType {
fn from(val: u32) -> Self {
match val {
1 => Self::CARD0_WIDTH2_1BIT,
4 => Self::CARD0_WIDTH2_4BIT,
8 => Self::CARD0_WIDTH1_8BIT,
_ => panic!("Invalid card width: {}", val),
}
}
}
impl FlagReg for MCICType {
const REG: u32 = FSDIF_CTYPE_OFFSET;
}
bitflags! {
#[derive(Clone, Copy)]
pub struct MCIIntMask: u32 {
const CD_BIT = 1 << 0;
const RE_BIT = 1 << 1;
const CMD_BIT = 1 << 2;
const DTO_BIT = 1 << 3;
const TXDR_BIT = 1 << 4;
const RXDR_BIT = 1 << 5;
const RCRC_BIT = 1 << 6;
const DCRC_BIT = 1 << 7;
const RTO_BIT = 1 << 8;
const DRTO_BIT = 1 << 9;
const HTO_BIT = 1 << 10;
const FRUN_BIT = 1 << 11;
const HLE_BIT = 1 << 12;
const SBE_BCI_BIT = 1 << 13;
const ACD_BIT = 1 << 14;
const EBE_BIT = 1 << 15;
const SDIO_BIT = 1 << 16;
const ALL_BITS = 0x1FFFF;
const INTS_DATA_MASK = 0x2288;
const INTS_CMD_MASK = 0x5446;
}
}
impl FlagReg for MCIIntMask {
const REG: u32 = FSDIF_INT_MASK_OFFSET; }
bitflags! {
pub struct MCIMaskedInts: u32 {
const CD_BIT = 1 << 0;
const RE_BIT = 1 << 1;
const CMD_BIT = 1 << 2;
const DTO_BIT = 1 << 3;
const TXDR_BIT = 1 << 4;
const RXDR_BIT = 1 << 5;
const RCRC_BIT = 1 << 6;
const DCRC_BIT = 1 << 7;
const RTO_BIT = 1 << 8;
const DRTO_BIT = 1 << 9;
const HTO_BIT = 1 << 10;
const FRUN_BIT = 1 << 11;
const HLE_BIT = 1 << 12;
const SBE_BCI_BIT = 1 << 13;
const ACD_BIT = 1 << 14;
const EBE_BIT = 1 << 15;
const SDIO_BIT = 1 << 16;
const ALL_BITS = 0x1FFFF;
const INTS_CMD_MASK = 0x1546;
const INTS_DATA_MASK = 0x2288;
}
}
impl FlagReg for MCIMaskedInts {
const REG: u32 = FSDIF_MASKED_INTS_OFFSET;
}
bitflags! {
pub struct MCIRawInts: u32 {
const CD_BIT = 1 << 0;
const RE_BIT = 1 << 1;
const CMD_BIT = 1 << 2;
const DTO_BIT = 1 << 3;
const TXDR_BIT = 1 << 4;
const RXDR_BIT = 1 << 5;
const RCRC_BIT = 1 << 6;
const DCRC_BIT = 1 << 7;
const RTO_BIT = 1 << 8;
const DRTO_BIT = 1 << 9;
const HTO_BIT = 1 << 10;
const FRUN_BIT = 1 << 11;
const HLE_BIT = 1 << 12;
const SBE_BCI_BIT = 1 << 13;
const ACD_BIT = 1 << 14;
const EBE_BIT = 1 << 15;
const SDIO_BIT = 1 << 16;
const ALL_BITS = 0x1FFFF;
const INTS_CMD_MASK = 0x1546;
const INTS_DATA_MASK = 0x2288;
}
}
impl FlagReg for MCIRawInts {
const REG: u32 = FSDIF_RAW_INTS_OFFSET;
}
bitflags! {
#[derive(Clone, Copy)]
pub struct MCICmd: u32 {
const START = 1 << 31;
const USE_HOLD_REG = 1 << 29;
const VOLT_SWITCH = 1 << 28;
const BOOT_MODE = 1 << 27;
const DISABLE_BOOT = 1 << 26;
const EXPECT_BOOT_ACK = 1 << 25;
const ENABLE_BOOT = 1 << 24;
const UPD_CLK = 1 << 21;
const INIT = 1 << 15;
const STOP_ABORT = 1 << 14;
const WAIT_PRVDATA_COMPLETE = 1 << 13;
const SEND_AUTO_STOP = 1 << 12;
const DAT_WRITE = 1 << 10;
const DAT_EXP = 1 << 9;
const RESP_CRC = 1 << 8;
const RESP_LONG = 1 << 7;
const RESP_EXP = 1 << 6;
const CMD_INDEX_BIT5 = 1 << 5;
const CMD_INDEX_BIT4 = 1 << 4;
const CMD_INDEX_BIT3 = 1 << 3;
const CMD_INDEX_BIT2 = 1 << 2;
const CMD_INDEX_BIT1 = 1 << 1;
const CMD_INDEX_BIT0 = 1 << 0;
}
}
impl FlagReg for MCICmd {
const REG: u32 = FSDIF_CMD_OFFSET; }
impl MCICmd {
pub fn index_set(x: u32) -> Self {
Self::from_bits_truncate(set_reg32_bits!(x, 5, 0))
}
pub fn index_get(&self) -> u32 {
self.bits() & genmask!(5, 0)
}
}
bitflags! {
#[derive(Clone, Copy)]
pub struct MCIStatus: u32 {
const FIFO_RX = 1 << 0;
const FIFO_TX = 1 << 1;
const FIFO_EMPTY = 1 << 2;
const FIFO_FULL = 1 << 3;
const CMD_FSM_BIT0 = 1 << 4;
const CMD_FSM_BIT1 = 1 << 5;
const CMD_FSM_BIT2 = 1 << 6;
const CMD_FSM_BIT3 = 1 << 7;
const DATA3_STATUS = 1 << 8;
const DATA_BUSY = 1 << 9;
const DATA_STATE_MC_BUSY = 1 << 10;
const RESP_INDEX_BIT0 = 1 << 11;
const RESP_INDEX_BIT1 = 1 << 12;
const RESP_INDEX_BIT2 = 1 << 13;
const RESP_INDEX_BIT3 = 1 << 14;
const RESP_INDEX_BIT4 = 1 << 15;
const RESP_INDEX_BIT5 = 1 << 16;
const FIFO_CNT_BIT0 = 1 << 17;
const FIFO_CNT_BIT1 = 1 << 18;
const FIFO_CNT_BIT2 = 1 << 19;
const FIFO_CNT_BIT3 = 1 << 20;
const FIFO_CNT_BIT4 = 1 << 21;
const FIFO_CNT_BIT5 = 1 << 22;
const FIFO_CNT_BIT6 = 1 << 23;
const FIFO_CNT_BIT7 = 1 << 24;
const FIFO_CNT_BIT8 = 1 << 25;
const FIFO_CNT_BIT9 = 1 << 26;
const FIFO_CNT_BIT10 = 1 << 27;
const FIFO_CNT_BIT11 = 1 << 28;
const FIFO_CNT_BIT12 = 1 << 29;
const DMA_ACK = 1 << 30;
const DMA_REQ = 1 << 31;
}
}
impl FlagReg for MCIStatus {
const REG: u32 = FSDIF_STATUS_OFFSET;
}
bitflags! {
pub struct MCIFifoTh: u32 {
const DMA_TRANS_MASK = genmask!(30, 28);
const RX_WMARK_MASK = genmask!(27, 16);
const TX_WMARK_MASK = genmask!(11, 0);
const TX_WMARK_BIT0 = 1 << 0;
const TX_WMARK_BIT1 = 1 << 1;
const TX_WMARK_BIT2 = 1 << 2;
const TX_WMARK_BIT3 = 1 << 3;
const TX_WMARK_BIT4 = 1 << 4;
const TX_WMARK_BIT5 = 1 << 5;
const TX_WMARK_BIT6 = 1 << 6;
const TX_WMARK_BIT7 = 1 << 7;
const TX_WMARK_BIT8 = 1 << 8;
const TX_WMARK_BIT9 = 1 << 9;
const TX_WMARK_BIT10 = 1 << 10;
const TX_WMARK_BIT11 = 1 << 11;
const RX_WMARK_BIT0 = 1 << 16;
const RX_WMARK_BIT1 = 1 << 17;
const RX_WMARK_BIT2 = 1 << 18;
const RX_WMARK_BIT3 = 1 << 19;
const RX_WMARK_BIT4 = 1 << 20;
const RX_WMARK_BIT5 = 1 << 21;
const RX_WMARK_BIT6 = 1 << 22;
const RX_WMARK_BIT7 = 1 << 23;
const RX_WMARK_BIT8 = 1 << 24;
const RX_WMARK_BIT9 = 1 << 25;
const RX_WMARK_BIT10 = 1 << 26;
const RX_WMARK_BIT11 = 1 << 27;
const DMA_TRANS_BIT0 = 1 << 28;
const DMA_TRANS_BIT1 = 1 << 29;
const DMA_TRANS_BIT2 = 1 << 30;
}
}
impl MCIFifoTh {
pub const RX_WMARK: u32 = 0x7;
pub const TX_WMARK: u32 = 0x100;
pub fn fifoth(trans_size: MCIFifoThDMATransSize, rx_wmark: u32, tx_wmark: u32) -> Self {
let trans_size: u32 = trans_size.into();
(MCIFifoTh::DMA_TRANS_MASK & (trans_size << 28))
| (MCIFifoTh::RX_WMARK_MASK & (rx_wmark << 16))
| (MCIFifoTh::TX_WMARK_MASK & tx_wmark)
}
}
BitsOpsForU32!(MCIFifoTh);
impl FlagReg for MCIFifoTh {
const REG: u32 = FSDIF_FIFOTH_OFFSET;
}
pub enum MCIFifoThDMATransSize {
DMATrans1 = 0b000,
DMATrans4 = 0b001,
DMATrans8 = 0b010,
DMATrans16 = 0b011,
DMATrans32 = 0b100,
DMATrans64 = 0b101,
DMATrans128 = 0b110,
DMATrans256 = 0b111,
}
impl From<MCIFifoThDMATransSize> for u32 {
fn from(val: MCIFifoThDMATransSize) -> Self {
val as u32
}
}
bitflags! {
pub struct MCICardDetect: u32 {
const DETECTED = 1 << 0;
}
}
impl FlagReg for MCICardDetect {
const REG: u32 = FSDIF_CARD_DETECT_OFFSET; }
bitflags! {
pub struct MCICardWrtp: u32 {
const WRITE_PROTECTED = 1 << 0;
}
}
impl FlagReg for MCICardWrtp {
const REG: u32 = FSDIF_CARD_WRTPRT_OFFSET; }
bitflags! {
pub struct MCIClkSts: u32 {
const READY = 1 << 0;
}
}
impl FlagReg for MCIClkSts {
const REG: u32 = FSDIF_CKSTS_OFFSET; }
bitflags! {
#[derive(Clone, Copy)]
pub struct MCIUhsReg: u32 {
const VOLT_180 = 1 << 0;
const DDR = 1 << 16;
}
}
impl FlagReg for MCIUhsReg {
const REG: u32 = FSDIF_UHS_REG_OFFSET; }
bitflags! {
#[derive(Clone, Copy)]
pub struct MCICardReset: u32 {
const ENABLE = 1 << 0;
}
}
impl FlagReg for MCICardReset {
const REG: u32 = FSDIF_CARD_RESET_OFFSET; }
bitflags! {
#[derive(Clone, Copy)]
pub struct MCIBusMode: u32 {
const SWR = 1 << 0;
const FB = 1 << 1;
const DE = 1 << 7;
const PBL_BIT0 = 1 << 8;
const PBL_BIT1 = 1 << 9;
const PBL_BIT2 = 1 << 10;
}
}
impl FlagReg for MCIBusMode {
const REG: u32 = FSDIF_BUS_MODE_OFFSET; }
bitflags! {
pub struct MCIDMACStatus: u32 {
const TI = 1 << 0;
const RI = 1 << 1;
const FBE = 1 << 2;
const DU_BIT0 = 1 << 3;
const DU_BIT1 = 1 << 4;
const CES = 1 << 5;
const NIS = 1 << 8;
const AIS = 1 << 9;
const EB_BIT0 = 1 << 10;
const EB_BIT1 = 1 << 11;
const EB_BIT2 = 1 << 12;
const FSM_BIT0 = 1 << 13;
const FSM_BIT1 = 1 << 14;
const FSM_BIT2 = 1 << 15;
const FSM_BIT3 = 1 << 16;
const FSM_BIT4 = 1 << 17;
const FSM_BIT5 = 1 << 18;
const FSM_BIT6 = 1 << 19;
const FSM_BIT7 = 1 << 20;
const FSM_BIT8 = 1 << 21;
const FSM_BIT9 = 1 << 22;
const FSM_BIT10 = 1 << 23;
const FSM_BIT11 = 1 << 24;
const FSM_BIT12 = 1 << 25;
const FSM_BIT13 = 1 << 26;
const FSM_BIT14 = 1 << 27;
const FSM_BIT15 = 1 << 28;
const FSM_BIT16 = 1 << 29;
const FSM_BIT17 = 1 << 30;
const FSM_BIT18 = 1 << 31;
const ALL_BITS = 0x3ff;
const STATUS_EB_TX = 0b001;
const STATUS_EB_RX = 0b010;
}
}
impl FlagReg for MCIDMACStatus {
const REG: u32 = FSDIF_DMAC_STATUS_OFFSET; }
bitflags! {
pub struct MCIDMACIntEn: u32 {
const TI = 1 << 0;
const RI = 1 << 1;
const FBE = 1 << 2;
const DU = 1 << 4;
const CES = 1 << 5;
const NIS = 1 << 8;
const AIS = 1 << 9;
const ALL_BITS = 0x3ff;
const INTS_MASK = MCIDMACIntEn::FBE.bits() | MCIDMACIntEn::DU.bits() | MCIDMACIntEn::NIS.bits() | MCIDMACIntEn::AIS.bits();
}
}
impl FlagReg for MCIDMACIntEn {
const REG: u32 = FSDIF_DMAC_INT_EN_OFFSET; }
bitflags! {
pub struct MCICardThrctl: u32 {
const CARDRD = 1 << 0;
const BUSY_CLR = 1 << 1;
const CARDWR = 1 << 2;
const FIFO_DEPTH_BIT0 = 1 << 16;
const FIFO_DEPTH_BIT1 = 1 << 17;
const FIFO_DEPTH_BIT2 = 1 << 18;
const FIFO_DEPTH_BIT3 = 1 << 19;
const FIFO_DEPTH_BIT4 = 1 << 20;
const FIFO_DEPTH_BIT5 = 1 << 21;
const FIFO_DEPTH_BIT6 = 1 << 22;
const FIFO_DEPTH_BIT7 = 1 << 23;
const FIFO_DEPTH_BIT8 = 1 << 24;
const FIFO_DEPTH_BIT9 = 1 << 25;
const FIFO_DEPTH_BIT10 = 1 << 26;
const FIFO_DEPTH_BIT11 = 1 << 27;
const FIFO_DEPTH_BIT12 = 1 << 28;
}
}
impl FlagReg for MCICardThrctl {
const REG: u32 = FSDIF_CARD_THRCTL_OFFSET; }
impl From<MCIFifoDepth> for MCICardThrctl {
fn from(value: MCIFifoDepth) -> Self {
let value: u32 = value as u32;
let value: u32 = 1 << value;
MCICardThrctl::from_bits_truncate(value)
}
}
bitflags! {
#[derive(Clone, Copy)]
pub struct MCIClkSrc: u32 {
const UHS_EXT_MMC_VOLT = 1 << 0;
const UHS_EXT_CLK_ENA = 1 << 1;
const UHS_EXT_CLK_MUX = 1 << 31;
const UHS_CLK_DIV_MASK = genmask!(14, 8);
const UHS_CLK_DIV_BIT0 = 1 << 8;
const UHS_CLK_DIV_BIT1 = 1 << 9;
const UHS_CLK_DIV_BIT2 = 1 << 10;
const UHS_CLK_DIV_BIT3 = 1 << 11;
const UHS_CLK_DIV_BIT4 = 1 << 12;
const UHS_CLK_DIV_BIT5 = 1 << 13;
const UHS_CLK_DIV_BIT6 = 1 << 14;
const UHS_CLK_SAMP_MASK = genmask!(22, 16);
const UHS_CLK_SAMP_BIT0 = 1 << 16;
const UHS_CLK_SAMP_BIT1 = 1 << 17;
const UHS_CLK_SAMP_BIT2 = 1 << 18;
const UHS_CLK_SAMP_BIT3 = 1 << 19;
const UHS_CLK_SAMP_BIT4 = 1 << 20;
const UHS_CLK_SAMP_BIT5 = 1 << 21;
const UHS_CLK_SAMP_BIT6 = 1 << 22;
const UHS_CLK_DRV_MASK = genmask!(30, 24);
const UHS_CLK_DRV_BIT0 = 1 << 24;
const UHS_CLK_DRV_BIT1 = 1 << 25;
const UHS_CLK_DRV_BIT2 = 1 << 26;
const UHS_CLK_DRV_BIT3 = 1 << 27;
const UHS_CLK_DRV_BIT4 = 1 << 28;
const UHS_CLK_DRV_BIT5 = 1 << 29;
const UHS_CLK_DRV_BIT6 = 1 << 30;
}
}
impl FlagReg for MCIClkSrc {
const REG: u32 = FSDIF_CLK_SRC_OFFSET; }
impl MCIClkSrc {
pub fn uhs_clk_div(x: u32) -> Self {
Self::UHS_CLK_DIV_MASK & Self::from_bits_truncate(x << 8)
}
pub fn uhs_clk_samp(x: u32) -> Self {
Self::UHS_CLK_SAMP_MASK & Self::from_bits_truncate(x << 16)
}
pub fn uhs_clk_drv(x: u32) -> Self {
Self::UHS_CLK_DRV_MASK & Self::from_bits_truncate(x << 24)
}
pub fn uhs_reg(drv_phase: u32, samp_phase: u32, clk_div: u32) -> Self {
Self::uhs_clk_div(clk_div) | Self::uhs_clk_samp(samp_phase) | Self::uhs_clk_drv(drv_phase)
}
}
bitflags! {
pub struct MCIEmmcDdrReg: u32 {
const CYCLE = 1 << 0;
}
}
impl FlagReg for MCIEmmcDdrReg {
const REG: u32 = FSDIF_EMMC_DDR_REG_OFFSET; }
bitflags! {
pub struct MCIDescListAddrH: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIDescListAddrH {
const REG: u32 = FSDIF_DESC_LIST_ADDRH_OFFSET; }
bitflags! {
pub struct MCIDescListAddrL: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIDescListAddrL {
const REG: u32 = FSDIF_DESC_LIST_ADDRL_OFFSET; }
bitflags! {
pub struct MCIDataReg: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIDataReg {
const REG: u32 = FSDIF_DATA_OFFSET; }
bitflags! {
pub struct MCIBytCnt: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIBytCnt {
const REG: u32 = FSDIF_BYT_CNT_OFFSET; }
bitflags! {
pub struct MCIBlkSiz: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
const ALL_BITS = 0xFFFFFFFF;
}
}
impl FlagReg for MCIBlkSiz {
const REG: u32 = FSDIF_BLK_SIZ_OFFSET; }
bitflags! {
pub struct MCITranCardCnt:u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCITranCardCnt {
const REG: u32 = FSDIF_TRAN_CARD_CNT_OFFSET;
}
bitflags! {
pub struct MCITranFifoCnt:u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCITranFifoCnt {
const REG: u32 = FSDIF_TRAN_FIFO_CNT_OFFSET;
}
bitflags! {
pub struct MCIResp0:u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIResp0 {
const REG: u32 = FSDIF_RESP0_OFFSET;
}
bitflags! {
pub struct MCIResp1:u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIResp1 {
const REG: u32 = FSDIF_RESP1_OFFSET;
}
bitflags! {
pub struct MCIResp2:u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIResp2 {
const REG: u32 = FSDIF_RESP2_OFFSET;
}
bitflags! {
pub struct MCIResp3:u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIResp3 {
const REG: u32 = FSDIF_RESP3_OFFSET;
}
bitflags! {
pub struct MCICmdArg: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCICmdArg {
const REG: u32 = FSDIF_CMD_ARG_OFFSET;
}
bitflags! {
pub struct MCIDebnce: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIDebnce {
const REG: u32 = FSDIF_DEBNCE_OFFSET;
}
bitflags! {
pub struct MCIUid: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIUid {
const REG: u32 = FSDIF_UID_OFFSET;
}
bitflags! {
pub struct MCIVid: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIVid {
const REG: u32 = FSDIF_VID_OFFSET;
}
bitflags! {
pub struct MCIHwconf: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIHwconf {
const REG: u32 = FSDIF_HWCONF_OFFSET;
}
bitflags! {
pub struct MCICurDescAddrL: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCICurDescAddrL {
const REG: u32 = FSDIF_CUR_DESC_ADDRL_OFFSET;
}
bitflags! {
pub struct MCIDescAddrH: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIDescAddrH {
const REG: u32 = FSDIF_CUR_DESC_ADDRH_OFFSET;
}
bitflags! {
pub struct MCICurBufAddrL: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCICurBufAddrL {
const REG: u32 = FSDIF_CUR_BUF_ADDRL_OFFSET;
}
bitflags! {
pub struct MCIBufAddrH: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIBufAddrH {
const REG: u32 = FSDIF_CUR_BUF_ADDRH_OFFSET;
}
bitflags! {
pub struct MCIEnableShift: u32 {
const BIT0 = 1 << 0;
const BIT1 = 1 << 1;
const BIT2 = 1 << 2;
const BIT3 = 1 << 3;
const BIT4 = 1 << 4;
const BIT5 = 1 << 5;
const BIT6 = 1 << 6;
const BIT7 = 1 << 7;
const BIT8 = 1 << 8;
const BIT9 = 1 << 9;
const BIT10 = 1 << 10;
const BIT11 = 1 << 11;
const BIT12 = 1 << 12;
const BIT13 = 1 << 13;
const BIT14 = 1 << 14;
const BIT15 = 1 << 15;
const BIT16 = 1 << 16;
const BIT17 = 1 << 17;
const BIT18 = 1 << 18;
const BIT19 = 1 << 19;
const BIT20 = 1 << 20;
const BIT21 = 1 << 21;
const BIT22 = 1 << 22;
const BIT23 = 1 << 23;
const BIT24 = 1 << 24;
const BIT25 = 1 << 25;
const BIT26 = 1 << 26;
const BIT27 = 1 << 27;
const BIT28 = 1 << 28;
const BIT29 = 1 << 29;
const BIT30 = 1 << 30;
const BIT31 = 1 << 31;
}
}
impl FlagReg for MCIEnableShift {
const REG: u32 = FSDIF_ENABLE_SHIFT_OFFSET;
}