6804 lines
328 KiB
C
6804 lines
328 KiB
C
/*
|
|
* Copyright (c) 2012, Freescale Semiconductor, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED
|
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
|
* SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
|
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
|
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
|
* OF SUCH DAMAGE.
|
|
*/
|
|
/*
|
|
* WARNING! DO NOT EDIT THIS FILE DIRECTLY!
|
|
*
|
|
* This file was generated automatically and any changes may be lost.
|
|
*/
|
|
#ifndef __HW_USDHC_REGISTERS_H__
|
|
#define __HW_USDHC_REGISTERS_H__
|
|
|
|
#include "regs.h"
|
|
|
|
/*
|
|
* i.MX6DQ USDHC
|
|
*
|
|
* uSDHC
|
|
*
|
|
* Registers defined in this header file:
|
|
* - HW_USDHC_DS_ADDR - DMA System Address
|
|
* - HW_USDHC_BLK_ATT - Block Attributes
|
|
* - HW_USDHC_CMD_ARG - Command Argument
|
|
* - HW_USDHC_CMD_XFR_TYP - Command Transfer Type
|
|
* - HW_USDHC_CMD_RSP0 - Command Response0
|
|
* - HW_USDHC_CMD_RSP1 - Command Response1
|
|
* - HW_USDHC_CMD_RSP2 - Command Response2
|
|
* - HW_USDHC_CMD_RSP3 - Command Response3
|
|
* - HW_USDHC_DATA_BUFF_ACC_PORT - Data Buffer Access Port
|
|
* - HW_USDHC_PRES_STATE - Present State
|
|
* - HW_USDHC_PROT_CTRL - Protocol Control
|
|
* - HW_USDHC_SYS_CTRL - System Control
|
|
* - HW_USDHC_INT_STATUS - Interrupt Status
|
|
* - HW_USDHC_INT_STATUS_EN - Interrupt Status Enable
|
|
* - HW_USDHC_INT_SIGNAL_EN - Interrupt Signal Enable
|
|
* - HW_USDHC_AUTOCMD12_ERR_STATUS - Auto CMD12 Error Status
|
|
* - HW_USDHC_HOST_CTRL_CAP - Host Controller Capabilities
|
|
* - HW_USDHC_WTMK_LVL - Watermark Level
|
|
* - HW_USDHC_MIX_CTRL - Mixer Control
|
|
* - HW_USDHC_FORCE_EVENT - Force Event
|
|
* - HW_USDHC_ADMA_ERR_STATUS - ADMA Error Status Register
|
|
* - HW_USDHC_ADMA_SYS_ADDR - ADMA System Address
|
|
* - HW_USDHC_DLL_CTRL - DLL (Delay Line) Control
|
|
* - HW_USDHC_DLL_STATUS - DLL Status
|
|
* - HW_USDHC_CLK_TUNE_CTRL_STATUS - CLK Tuning Control and Status
|
|
* - HW_USDHC_VEND_SPEC - Vendor Specific Register
|
|
* - HW_USDHC_MMC_BOOT - MMC Boot Register
|
|
* - HW_USDHC_VEND_SPEC2 - Vendor Specific 2 Register
|
|
*
|
|
* - hw_usdhc_t - Struct containing all module registers.
|
|
*/
|
|
|
|
//! @name Module base addresses
|
|
//@{
|
|
#ifndef REGS_USDHC_BASE
|
|
#define HW_USDHC_INSTANCE_COUNT (4) //!< Number of instances of the USDHC module.
|
|
#define HW_USDHC1 (1) //!< Instance number for USDHC1.
|
|
#define HW_USDHC2 (2) //!< Instance number for USDHC2.
|
|
#define HW_USDHC3 (3) //!< Instance number for USDHC3.
|
|
#define HW_USDHC4 (4) //!< Instance number for USDHC4.
|
|
#define REGS_USDHC1_BASE (0x02190000) //!< Base address for USDHC instance number 1.
|
|
#define REGS_USDHC2_BASE (0x02194000) //!< Base address for USDHC instance number 2.
|
|
#define REGS_USDHC3_BASE (0x02198000) //!< Base address for USDHC instance number 3.
|
|
#define REGS_USDHC4_BASE (0x0219c000) //!< Base address for USDHC instance number 4.
|
|
|
|
//! @brief Get the base address of USDHC by instance number.
|
|
//! @param x USDHC instance number, from 1 through 4.
|
|
#define REGS_USDHC_BASE(x) ( (x) == HW_USDHC1 ? REGS_USDHC1_BASE : (x) == HW_USDHC2 ? REGS_USDHC2_BASE : (x) == HW_USDHC3 ? REGS_USDHC3_BASE : (x) == HW_USDHC4 ? REGS_USDHC4_BASE : 0x00d00000)
|
|
|
|
//! @brief Get the instance number given a base address.
|
|
//! @param b Base address for an instance of USDHC.
|
|
#define REGS_USDHC_INSTANCE(b) ( (b) == REGS_USDHC1_BASE ? HW_USDHC1 : (b) == REGS_USDHC2_BASE ? HW_USDHC2 : (b) == REGS_USDHC3_BASE ? HW_USDHC3 : (b) == REGS_USDHC4_BASE ? HW_USDHC4 : 0)
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_DS_ADDR - DMA System Address
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_DS_ADDR - DMA System Address (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register contains the physical system memory address used for DMA transfers.
|
|
*/
|
|
typedef union _hw_usdhc_ds_addr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_ds_addr_bitfields
|
|
{
|
|
unsigned RESERVED0 : 2; //!< [1:0] Reserved
|
|
unsigned DS_ADDR : 30; //!< [31:2] DMA System Address:
|
|
} B;
|
|
} hw_usdhc_ds_addr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_DS_ADDR register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_DS_ADDR_ADDR(x) (REGS_USDHC_BASE(x) + 0x0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_DS_ADDR(x) (*(volatile hw_usdhc_ds_addr_t *) HW_USDHC_DS_ADDR_ADDR(x))
|
|
#define HW_USDHC_DS_ADDR_RD(x) (HW_USDHC_DS_ADDR(x).U)
|
|
#define HW_USDHC_DS_ADDR_WR(x, v) (HW_USDHC_DS_ADDR(x).U = (v))
|
|
#define HW_USDHC_DS_ADDR_SET(x, v) (HW_USDHC_DS_ADDR_WR(x, HW_USDHC_DS_ADDR_RD(x) | (v)))
|
|
#define HW_USDHC_DS_ADDR_CLR(x, v) (HW_USDHC_DS_ADDR_WR(x, HW_USDHC_DS_ADDR_RD(x) & ~(v)))
|
|
#define HW_USDHC_DS_ADDR_TOG(x, v) (HW_USDHC_DS_ADDR_WR(x, HW_USDHC_DS_ADDR_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_DS_ADDR bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_DS_ADDR, field DS_ADDR[31:2] (RW)
|
|
*
|
|
* DMA System Address: This register contains the 32-bit system memory address for a DMA transfer.
|
|
* Since the address must be word (4 bytes) aligned, the least 2 bits are reserved, always 0. When
|
|
* the uSDHC stops a DMA transfer, this register points to the system address of the next contiguous
|
|
* data position. It can be accessed only when no transaction is executing (i.e. after a transaction
|
|
* has stopped). Read operation during transfers may return an invalid value. The Host Driver shall
|
|
* initialize this register before starting a DMA transaction. After DMA has stopped, the system
|
|
* address of the next contiguous data position can be read from this register. This register is
|
|
* protected during a data transfer. When data lines are active, write to this register is ignored.
|
|
* The Host driver shall wait, until the DLA bit in the Present State register is cleared, before
|
|
* writing to this register. The uSDHC internal DMA does not support a virtual memory system. It
|
|
* only supports continuous physical memory access. And due to AHB burst limitations, if the burst
|
|
* must cross the 1 KB boundary, uSDHC will automatically change SEQ burst type to NSEQ. Since this
|
|
* register supports dynamic address reflecting, when TC bit is set, it automatically alters the
|
|
* value of internal address counter, so SW cannot change this register when TC bit is set. Such
|
|
* restriction is also listed in .
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DS_ADDR_DS_ADDR (2) //!< Bit position for USDHC_DS_ADDR_DS_ADDR.
|
|
#define BM_USDHC_DS_ADDR_DS_ADDR (0xfffffffc) //!< Bit mask for USDHC_DS_ADDR_DS_ADDR.
|
|
|
|
//! @brief Get value of USDHC_DS_ADDR_DS_ADDR from a register value.
|
|
#define BG_USDHC_DS_ADDR_DS_ADDR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DS_ADDR_DS_ADDR) >> BP_USDHC_DS_ADDR_DS_ADDR)
|
|
|
|
//! @brief Format value for bitfield USDHC_DS_ADDR_DS_ADDR.
|
|
#define BF_USDHC_DS_ADDR_DS_ADDR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_DS_ADDR_DS_ADDR) & BM_USDHC_DS_ADDR_DS_ADDR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DS_ADDR field to a new value.
|
|
#define BW_USDHC_DS_ADDR_DS_ADDR(x, v) (HW_USDHC_DS_ADDR_WR(x, (HW_USDHC_DS_ADDR_RD(x) & ~BM_USDHC_DS_ADDR_DS_ADDR) | BF_USDHC_DS_ADDR_DS_ADDR(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_BLK_ATT - Block Attributes
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_BLK_ATT - Block Attributes (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register is used to configure the number of data blocks and the number of bytes in each
|
|
* block.
|
|
*/
|
|
typedef union _hw_usdhc_blk_att
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_blk_att_bitfields
|
|
{
|
|
unsigned BLKSIZE : 13; //!< [12:0] Transfer Block Size:
|
|
unsigned RESERVED0 : 3; //!< [15:13] Reserved
|
|
unsigned BLKCNT : 16; //!< [31:16] Blocks Count For Current Transfer:
|
|
} B;
|
|
} hw_usdhc_blk_att_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_BLK_ATT register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_BLK_ATT_ADDR(x) (REGS_USDHC_BASE(x) + 0x4)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_BLK_ATT(x) (*(volatile hw_usdhc_blk_att_t *) HW_USDHC_BLK_ATT_ADDR(x))
|
|
#define HW_USDHC_BLK_ATT_RD(x) (HW_USDHC_BLK_ATT(x).U)
|
|
#define HW_USDHC_BLK_ATT_WR(x, v) (HW_USDHC_BLK_ATT(x).U = (v))
|
|
#define HW_USDHC_BLK_ATT_SET(x, v) (HW_USDHC_BLK_ATT_WR(x, HW_USDHC_BLK_ATT_RD(x) | (v)))
|
|
#define HW_USDHC_BLK_ATT_CLR(x, v) (HW_USDHC_BLK_ATT_WR(x, HW_USDHC_BLK_ATT_RD(x) & ~(v)))
|
|
#define HW_USDHC_BLK_ATT_TOG(x, v) (HW_USDHC_BLK_ATT_WR(x, HW_USDHC_BLK_ATT_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_BLK_ATT bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_BLK_ATT, field BLKSIZE[12:0] (RW)
|
|
*
|
|
* Transfer Block Size: This register specifies the block size for block data transfers. Values
|
|
* ranging from 1 byte up to the maximum buffer size can be set. It can be accessed only when no
|
|
* transaction is executing (i.e. after a transaction has stopped). Read operations during transfers
|
|
* may return an invalid value, and write operations will be ignored.
|
|
*
|
|
* Values:
|
|
* - 000 - No data transfer
|
|
* - 001 - 1 Byte
|
|
* - 002 - 2 Bytes
|
|
* - 003 - 3 Bytes
|
|
* - 004 - 4 Bytes
|
|
* - 200 - 512 Bytes
|
|
* - 1FF - 511 Bytes
|
|
* - 800 - 2048 Bytes
|
|
* - 1000 - 4096 Bytes
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_BLK_ATT_BLKSIZE (0) //!< Bit position for USDHC_BLK_ATT_BLKSIZE.
|
|
#define BM_USDHC_BLK_ATT_BLKSIZE (0x00001fff) //!< Bit mask for USDHC_BLK_ATT_BLKSIZE.
|
|
|
|
//! @brief Get value of USDHC_BLK_ATT_BLKSIZE from a register value.
|
|
#define BG_USDHC_BLK_ATT_BLKSIZE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_BLK_ATT_BLKSIZE) >> BP_USDHC_BLK_ATT_BLKSIZE)
|
|
|
|
//! @brief Format value for bitfield USDHC_BLK_ATT_BLKSIZE.
|
|
#define BF_USDHC_BLK_ATT_BLKSIZE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_BLK_ATT_BLKSIZE) & BM_USDHC_BLK_ATT_BLKSIZE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BLKSIZE field to a new value.
|
|
#define BW_USDHC_BLK_ATT_BLKSIZE(x, v) (HW_USDHC_BLK_ATT_WR(x, (HW_USDHC_BLK_ATT_RD(x) & ~BM_USDHC_BLK_ATT_BLKSIZE) | BF_USDHC_BLK_ATT_BLKSIZE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_BLK_ATT, field BLKCNT[31:16] (RW)
|
|
*
|
|
* Blocks Count For Current Transfer: This register is enabled when the Block Count Enable bit in
|
|
* the Transfer Mode register is set to 1 and is valid only for multiple block transfers. For single
|
|
* block transfer, this register will always read as 1. The Host Driver shall set this register to a
|
|
* value between 1 and the maximum block count. The uSDHC decrements the block count after each
|
|
* block transfer and stops when the count reaches zero. Setting the block count to 0 results in no
|
|
* data blocks being transferred. This register should be accessed only when no transaction is
|
|
* executing (i.e. after transactions are stopped). During data transfer, read operations on this
|
|
* register may return an invalid value and write operations are ignored. When saving transfer
|
|
* content as a result of a Suspend command, the number of blocks yet to be transferred can be
|
|
* determined by reading this register. The reading of this register should be applied after
|
|
* transfer is paused by stop at block gap operation and before sending the command marked as
|
|
* suspend. This is because when Suspend command is sent out, uSDHC will regard the current transfer
|
|
* is aborted and change BLKCNT register back to its original value instead of keeping the dynamical
|
|
* indicator of remained block count. When restoring transfer content prior to issuing a Resume
|
|
* command, the Host Driver shall restore the previously saved block count. Although the BLKCNT
|
|
* field is 0 after reset, the read of reset value is 0x1. This is because when MSBSEL bit is
|
|
* indicating a single block transfer, the read value of BLKCNT is always 1.
|
|
*
|
|
* Values:
|
|
* - 0000 - Stop Count
|
|
* - 0001 - 1 block
|
|
* - 0002 - 2 blocks
|
|
* - FFFF - 65535 blocks
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_BLK_ATT_BLKCNT (16) //!< Bit position for USDHC_BLK_ATT_BLKCNT.
|
|
#define BM_USDHC_BLK_ATT_BLKCNT (0xffff0000) //!< Bit mask for USDHC_BLK_ATT_BLKCNT.
|
|
|
|
//! @brief Get value of USDHC_BLK_ATT_BLKCNT from a register value.
|
|
#define BG_USDHC_BLK_ATT_BLKCNT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_BLK_ATT_BLKCNT) >> BP_USDHC_BLK_ATT_BLKCNT)
|
|
|
|
//! @brief Format value for bitfield USDHC_BLK_ATT_BLKCNT.
|
|
#define BF_USDHC_BLK_ATT_BLKCNT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_BLK_ATT_BLKCNT) & BM_USDHC_BLK_ATT_BLKCNT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BLKCNT field to a new value.
|
|
#define BW_USDHC_BLK_ATT_BLKCNT(x, v) (HW_USDHC_BLK_ATT_WR(x, (HW_USDHC_BLK_ATT_RD(x) & ~BM_USDHC_BLK_ATT_BLKCNT) | BF_USDHC_BLK_ATT_BLKCNT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_CMD_ARG - Command Argument
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_CMD_ARG - Command Argument (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register contains the SD/MMC Command Argument. .
|
|
*/
|
|
typedef union _hw_usdhc_cmd_arg
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_cmd_arg_bitfields
|
|
{
|
|
unsigned CMDARG : 32; //!< [31:0] Command Argument:
|
|
} B;
|
|
} hw_usdhc_cmd_arg_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_CMD_ARG register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_CMD_ARG_ADDR(x) (REGS_USDHC_BASE(x) + 0x8)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_CMD_ARG(x) (*(volatile hw_usdhc_cmd_arg_t *) HW_USDHC_CMD_ARG_ADDR(x))
|
|
#define HW_USDHC_CMD_ARG_RD(x) (HW_USDHC_CMD_ARG(x).U)
|
|
#define HW_USDHC_CMD_ARG_WR(x, v) (HW_USDHC_CMD_ARG(x).U = (v))
|
|
#define HW_USDHC_CMD_ARG_SET(x, v) (HW_USDHC_CMD_ARG_WR(x, HW_USDHC_CMD_ARG_RD(x) | (v)))
|
|
#define HW_USDHC_CMD_ARG_CLR(x, v) (HW_USDHC_CMD_ARG_WR(x, HW_USDHC_CMD_ARG_RD(x) & ~(v)))
|
|
#define HW_USDHC_CMD_ARG_TOG(x, v) (HW_USDHC_CMD_ARG_WR(x, HW_USDHC_CMD_ARG_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_CMD_ARG bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_CMD_ARG, field CMDARG[31:0] (RW)
|
|
*
|
|
* Command Argument: The SD/MMC Command Argument is specified as bits 39-8 of the Command Format in
|
|
* the SD or MMC Specification.This register is write protected when the Command Inhibit (CMD) bit
|
|
* in the Present State register is set.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CMD_ARG_CMDARG (0) //!< Bit position for USDHC_CMD_ARG_CMDARG.
|
|
#define BM_USDHC_CMD_ARG_CMDARG (0xffffffff) //!< Bit mask for USDHC_CMD_ARG_CMDARG.
|
|
|
|
//! @brief Get value of USDHC_CMD_ARG_CMDARG from a register value.
|
|
#define BG_USDHC_CMD_ARG_CMDARG(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CMD_ARG_CMDARG) >> BP_USDHC_CMD_ARG_CMDARG)
|
|
|
|
//! @brief Format value for bitfield USDHC_CMD_ARG_CMDARG.
|
|
#define BF_USDHC_CMD_ARG_CMDARG(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_CMD_ARG_CMDARG) & BM_USDHC_CMD_ARG_CMDARG)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CMDARG field to a new value.
|
|
#define BW_USDHC_CMD_ARG_CMDARG(x, v) (HW_USDHC_CMD_ARG_WR(x, (HW_USDHC_CMD_ARG_RD(x) & ~BM_USDHC_CMD_ARG_CMDARG) | BF_USDHC_CMD_ARG_CMDARG(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_CMD_XFR_TYP - Command Transfer Type
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_CMD_XFR_TYP - Command Transfer Type (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register is used to control the operation of data transfers. The Host Driver shall set this
|
|
* register before issuing a command followed by a data transfer, or before issuing a Resume
|
|
* command. To prevent data loss, the uSDHC prevents writing to the bits, that are involved in the
|
|
* data transfer of this register, when data transfer is active. These bits are DPSEL, MBSEL,
|
|
* DTDSEL, AC12EN, BCEN and DMAEN. The Host Driver shall check the Command Inhibit DAT bit (CDIHB)
|
|
* and the Command Inhibit CMD bit (CIHB) in the Present State register before writing to this
|
|
* register. When the CDIHB bit in the Present State register is set, any attempt to send a command
|
|
* with data by writing to this register is ignored; when the CIHB bit is set, any write to this
|
|
* register is ignored. On sending commands with data transfer invovled, it is mandatory that the
|
|
* block size is non-zero. Block count must also be non-zero, or indicated as single block transfer
|
|
* (bit 5 of this register is '0' when written), or block count is disabled (bit 1 of this register
|
|
* is '0' when written), otherwise uSDHC will ignore the sending of this command and do nothing. For
|
|
* write command, with all above restrictions, it is also mandatory that the write protect switch is
|
|
* not active (WPSPL bit of Present State Register is '1'), otherwise uSDHC will also ignore the
|
|
* command. If the commands with data transfer does not receive the response in 64 clock cycles,
|
|
* i.e., response time-out, uSDHC will regard the external device does not accept the command and
|
|
* abort the data transfer. In this scenario, the driver should issue the command again to re-try
|
|
* the transfer. It is also possible that for some reason the card responds the command but uSDHC
|
|
* does not receive the response, and if it is internal DMA (either simple DMA or ADMA) read
|
|
* operation, the external system memory is over-written by the internal DMA with data sent back
|
|
* from the card. The table below shows the summary of how register settings determine the type of
|
|
* data transfer. Transfer Type Register Setting for Various Transfer Types Multi/Single Block
|
|
* Select Block Count Enable Block Count Function 0 Don't Care Don't Care Single Transfer 1 0 Don't
|
|
* Care Infinite Transfer 1 1 Positive Number Multiple Transfer 1 1 Zero No Data Transfer The table
|
|
* below shows the relationship between the Command Index Check Enable and the Command CRC Check
|
|
* Enable, in regards to the Response Type bits as well as the name of the response type.
|
|
* Relationship Between Parameters and the Name of the Response Type Response Type Index Check
|
|
* Enable CRC Check Enable Name of Response Type 00 0 0 No Response 01 0 1 R2 10 0 0 R3,R4 10 1 1
|
|
* R1,R5,R6 11 1 1 R1b,R5b In the SDIO specification, response type notation for R5b is not defined.
|
|
* R5 includes R5b in the SDIO specification. But R5b is defined in this specification to specify
|
|
* that the uSDHC will check the busy status after receiving a response. For example, usually CMD52
|
|
* is used with R5, but the I/O abort command shall be used with R5b. The CRC field for R3 and R4 is
|
|
* expected to be all 1 bits. The CRC check shall be disabled for these response types.
|
|
*/
|
|
typedef union _hw_usdhc_cmd_xfr_typ
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_cmd_xfr_typ_bitfields
|
|
{
|
|
unsigned RESERVED0 : 16; //!< [15:0] Reserved
|
|
unsigned RSPTYP : 2; //!< [17:16] Response Type Select:
|
|
unsigned RESERVED1 : 1; //!< [18] Reserved
|
|
unsigned CCCEN : 1; //!< [19] Command CRC Check Enable:
|
|
unsigned CICEN : 1; //!< [20] Command Index Check Enable:
|
|
unsigned DPSEL : 1; //!< [21] Data Present Select:
|
|
unsigned CMDTYP : 2; //!< [23:22] Command Type:
|
|
unsigned CMDINX : 6; //!< [29:24] Command Index:
|
|
unsigned RESERVED2 : 2; //!< [31:30] Reserved
|
|
} B;
|
|
} hw_usdhc_cmd_xfr_typ_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_CMD_XFR_TYP register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_CMD_XFR_TYP_ADDR(x) (REGS_USDHC_BASE(x) + 0xc)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_CMD_XFR_TYP(x) (*(volatile hw_usdhc_cmd_xfr_typ_t *) HW_USDHC_CMD_XFR_TYP_ADDR(x))
|
|
#define HW_USDHC_CMD_XFR_TYP_RD(x) (HW_USDHC_CMD_XFR_TYP(x).U)
|
|
#define HW_USDHC_CMD_XFR_TYP_WR(x, v) (HW_USDHC_CMD_XFR_TYP(x).U = (v))
|
|
#define HW_USDHC_CMD_XFR_TYP_SET(x, v) (HW_USDHC_CMD_XFR_TYP_WR(x, HW_USDHC_CMD_XFR_TYP_RD(x) | (v)))
|
|
#define HW_USDHC_CMD_XFR_TYP_CLR(x, v) (HW_USDHC_CMD_XFR_TYP_WR(x, HW_USDHC_CMD_XFR_TYP_RD(x) & ~(v)))
|
|
#define HW_USDHC_CMD_XFR_TYP_TOG(x, v) (HW_USDHC_CMD_XFR_TYP_WR(x, HW_USDHC_CMD_XFR_TYP_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_CMD_XFR_TYP bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_CMD_XFR_TYP, field RSPTYP[17:16] (RW)
|
|
*
|
|
* Response Type Select:
|
|
*
|
|
* Values:
|
|
* - 00 - No Response
|
|
* - 01 - Response Length 136
|
|
* - 10 - Response Length 48
|
|
* - 11 - Response Length 48, check Busy after response
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CMD_XFR_TYP_RSPTYP (16) //!< Bit position for USDHC_CMD_XFR_TYP_RSPTYP.
|
|
#define BM_USDHC_CMD_XFR_TYP_RSPTYP (0x00030000) //!< Bit mask for USDHC_CMD_XFR_TYP_RSPTYP.
|
|
|
|
//! @brief Get value of USDHC_CMD_XFR_TYP_RSPTYP from a register value.
|
|
#define BG_USDHC_CMD_XFR_TYP_RSPTYP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CMD_XFR_TYP_RSPTYP) >> BP_USDHC_CMD_XFR_TYP_RSPTYP)
|
|
|
|
//! @brief Format value for bitfield USDHC_CMD_XFR_TYP_RSPTYP.
|
|
#define BF_USDHC_CMD_XFR_TYP_RSPTYP(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_CMD_XFR_TYP_RSPTYP) & BM_USDHC_CMD_XFR_TYP_RSPTYP)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RSPTYP field to a new value.
|
|
#define BW_USDHC_CMD_XFR_TYP_RSPTYP(x, v) (HW_USDHC_CMD_XFR_TYP_WR(x, (HW_USDHC_CMD_XFR_TYP_RD(x) & ~BM_USDHC_CMD_XFR_TYP_RSPTYP) | BF_USDHC_CMD_XFR_TYP_RSPTYP(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_CMD_XFR_TYP, field CCCEN[19] (RW)
|
|
*
|
|
* Command CRC Check Enable: If this bit is set to 1, the uSDHC shall check the CRC field in the
|
|
* response. If an error is detected, it is reported as a Command CRC Error. If this bit is set to
|
|
* 0, the CRC field is not checked. The number of bits checked by the CRC field value changes
|
|
* according to the length of the response. (Refer to RSPTYP[1:0] and .)
|
|
*
|
|
* Values:
|
|
* - 0 - Disable
|
|
* - 1 - Enable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CMD_XFR_TYP_CCCEN (19) //!< Bit position for USDHC_CMD_XFR_TYP_CCCEN.
|
|
#define BM_USDHC_CMD_XFR_TYP_CCCEN (0x00080000) //!< Bit mask for USDHC_CMD_XFR_TYP_CCCEN.
|
|
|
|
//! @brief Get value of USDHC_CMD_XFR_TYP_CCCEN from a register value.
|
|
#define BG_USDHC_CMD_XFR_TYP_CCCEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CMD_XFR_TYP_CCCEN) >> BP_USDHC_CMD_XFR_TYP_CCCEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_CMD_XFR_TYP_CCCEN.
|
|
#define BF_USDHC_CMD_XFR_TYP_CCCEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_CMD_XFR_TYP_CCCEN) & BM_USDHC_CMD_XFR_TYP_CCCEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CCCEN field to a new value.
|
|
#define BW_USDHC_CMD_XFR_TYP_CCCEN(x, v) (HW_USDHC_CMD_XFR_TYP_WR(x, (HW_USDHC_CMD_XFR_TYP_RD(x) & ~BM_USDHC_CMD_XFR_TYP_CCCEN) | BF_USDHC_CMD_XFR_TYP_CCCEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_CMD_XFR_TYP, field CICEN[20] (RW)
|
|
*
|
|
* Command Index Check Enable: If this bit is set to 1, the uSDHC will check the Index field in the
|
|
* response to see if it has the same value as the command index. If it is not, it is reported as a
|
|
* Command Index Error. If this bit is set to 0, the Index field is not checked.
|
|
*
|
|
* Values:
|
|
* - 0 - Disable
|
|
* - 1 - Enable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CMD_XFR_TYP_CICEN (20) //!< Bit position for USDHC_CMD_XFR_TYP_CICEN.
|
|
#define BM_USDHC_CMD_XFR_TYP_CICEN (0x00100000) //!< Bit mask for USDHC_CMD_XFR_TYP_CICEN.
|
|
|
|
//! @brief Get value of USDHC_CMD_XFR_TYP_CICEN from a register value.
|
|
#define BG_USDHC_CMD_XFR_TYP_CICEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CMD_XFR_TYP_CICEN) >> BP_USDHC_CMD_XFR_TYP_CICEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_CMD_XFR_TYP_CICEN.
|
|
#define BF_USDHC_CMD_XFR_TYP_CICEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_CMD_XFR_TYP_CICEN) & BM_USDHC_CMD_XFR_TYP_CICEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CICEN field to a new value.
|
|
#define BW_USDHC_CMD_XFR_TYP_CICEN(x, v) (HW_USDHC_CMD_XFR_TYP_WR(x, (HW_USDHC_CMD_XFR_TYP_RD(x) & ~BM_USDHC_CMD_XFR_TYP_CICEN) | BF_USDHC_CMD_XFR_TYP_CICEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_CMD_XFR_TYP, field DPSEL[21] (RW)
|
|
*
|
|
* Data Present Select: This bit is set to 1 to indicate that data is present and shall be
|
|
* transferred using the DAT line. It is set to 0 for the following: Commands using only the CMD
|
|
* line (e.g. CMD52). Commands with no data transfer, but using the busy signal on DAT[0] line (R1b
|
|
* or R5b e.g. CMD38) Note: In resume command, this bit shall be set, and other bits in this
|
|
* register shall be set the same as when the transfer was initially launched. When the Write
|
|
* Protect switch is on, (i.e. the WPSPL bit is active as '0'), any command with a write operation
|
|
* will be ignored. That is to say, when this bit is set, while the DTDSEL bit is 0, writes to the
|
|
* register Transfer Type are ignored.
|
|
*
|
|
* Values:
|
|
* - 0 - No Data Present
|
|
* - 1 - Data Present
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CMD_XFR_TYP_DPSEL (21) //!< Bit position for USDHC_CMD_XFR_TYP_DPSEL.
|
|
#define BM_USDHC_CMD_XFR_TYP_DPSEL (0x00200000) //!< Bit mask for USDHC_CMD_XFR_TYP_DPSEL.
|
|
|
|
//! @brief Get value of USDHC_CMD_XFR_TYP_DPSEL from a register value.
|
|
#define BG_USDHC_CMD_XFR_TYP_DPSEL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CMD_XFR_TYP_DPSEL) >> BP_USDHC_CMD_XFR_TYP_DPSEL)
|
|
|
|
//! @brief Format value for bitfield USDHC_CMD_XFR_TYP_DPSEL.
|
|
#define BF_USDHC_CMD_XFR_TYP_DPSEL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_CMD_XFR_TYP_DPSEL) & BM_USDHC_CMD_XFR_TYP_DPSEL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DPSEL field to a new value.
|
|
#define BW_USDHC_CMD_XFR_TYP_DPSEL(x, v) (HW_USDHC_CMD_XFR_TYP_WR(x, (HW_USDHC_CMD_XFR_TYP_RD(x) & ~BM_USDHC_CMD_XFR_TYP_DPSEL) | BF_USDHC_CMD_XFR_TYP_DPSEL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_CMD_XFR_TYP, field CMDTYP[23:22] (RW)
|
|
*
|
|
* Command Type: There are three types of special commands: Suspend, Resume and Abort. These bits
|
|
* shall be set to 00b for all other commands. Suspend Command: If the Suspend command succeeds, the
|
|
* uSDHC shall assume that the card bus has been released and that it is possible to issue the next
|
|
* command which uses the DAT line. Since the uSDHC does not monitor the content of command
|
|
* response, it does not know if the Suspend command succeeded or not. It is the Host Driver's
|
|
* responsibility to check the status of the Suspend command and send another command marked as
|
|
* Suspend to inform the uSDHC that a Suspend command was successfully issued. Refer to for more
|
|
* details. After the end bit of command is sent, the uSDHC de-asserts Read Wait for read
|
|
* transactions and stops checking busy for write transactions. In 4-bit mode, the interrupt cycle
|
|
* starts. If the Suspend command fails, the uSDHC will maintain its current state, and the Host
|
|
* Driver shall restart the transfer by setting the Continue Request bit in the Protocol Control
|
|
* register. Resume Command: The Host Driver re-starts the data transfer by restoring the registers
|
|
* saved before sending the Suspend Command and then sends the Resume Command. The uSDHC will check
|
|
* for a pending busy state before starting write transfers. Abort Command: If this command is set
|
|
* when executing a read transfer, the uSDHC will stop reads to the buffer. If this command is set
|
|
* when executing a write transfer, the uSDHC will stop driving the DAT line. After issuing the
|
|
* Abort command, the Host Driver should issue a software reset (Abort Transaction).
|
|
*
|
|
* Values:
|
|
* - 00 - Normal Other commands
|
|
* - 01 - Suspend CMD52 for writing Bus Suspend in CCCR
|
|
* - 10 - Resume CMD52 for writing Function Select in CCCR
|
|
* - 11 - Abort CMD12, CMD52 for writing I/O Abort in CCCR
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CMD_XFR_TYP_CMDTYP (22) //!< Bit position for USDHC_CMD_XFR_TYP_CMDTYP.
|
|
#define BM_USDHC_CMD_XFR_TYP_CMDTYP (0x00c00000) //!< Bit mask for USDHC_CMD_XFR_TYP_CMDTYP.
|
|
|
|
//! @brief Get value of USDHC_CMD_XFR_TYP_CMDTYP from a register value.
|
|
#define BG_USDHC_CMD_XFR_TYP_CMDTYP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CMD_XFR_TYP_CMDTYP) >> BP_USDHC_CMD_XFR_TYP_CMDTYP)
|
|
|
|
//! @brief Format value for bitfield USDHC_CMD_XFR_TYP_CMDTYP.
|
|
#define BF_USDHC_CMD_XFR_TYP_CMDTYP(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_CMD_XFR_TYP_CMDTYP) & BM_USDHC_CMD_XFR_TYP_CMDTYP)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CMDTYP field to a new value.
|
|
#define BW_USDHC_CMD_XFR_TYP_CMDTYP(x, v) (HW_USDHC_CMD_XFR_TYP_WR(x, (HW_USDHC_CMD_XFR_TYP_RD(x) & ~BM_USDHC_CMD_XFR_TYP_CMDTYP) | BF_USDHC_CMD_XFR_TYP_CMDTYP(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_CMD_XFR_TYP, field CMDINX[29:24] (RW)
|
|
*
|
|
* Command Index: These bits shall be set to the command number that is specified in bits 45-40 of
|
|
* the Command-Format in the SD Memory Card Physical Layer Specification and SDIO Card
|
|
* Specification.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CMD_XFR_TYP_CMDINX (24) //!< Bit position for USDHC_CMD_XFR_TYP_CMDINX.
|
|
#define BM_USDHC_CMD_XFR_TYP_CMDINX (0x3f000000) //!< Bit mask for USDHC_CMD_XFR_TYP_CMDINX.
|
|
|
|
//! @brief Get value of USDHC_CMD_XFR_TYP_CMDINX from a register value.
|
|
#define BG_USDHC_CMD_XFR_TYP_CMDINX(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CMD_XFR_TYP_CMDINX) >> BP_USDHC_CMD_XFR_TYP_CMDINX)
|
|
|
|
//! @brief Format value for bitfield USDHC_CMD_XFR_TYP_CMDINX.
|
|
#define BF_USDHC_CMD_XFR_TYP_CMDINX(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_CMD_XFR_TYP_CMDINX) & BM_USDHC_CMD_XFR_TYP_CMDINX)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CMDINX field to a new value.
|
|
#define BW_USDHC_CMD_XFR_TYP_CMDINX(x, v) (HW_USDHC_CMD_XFR_TYP_WR(x, (HW_USDHC_CMD_XFR_TYP_RD(x) & ~BM_USDHC_CMD_XFR_TYP_CMDINX) | BF_USDHC_CMD_XFR_TYP_CMDINX(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_CMD_RSP0 - Command Response0
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_CMD_RSP0 - Command Response0 (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register is used to store part 0 of the response bits from the card.
|
|
*/
|
|
typedef union _hw_usdhc_cmd_rsp0
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_cmd_rsp0_bitfields
|
|
{
|
|
unsigned CMDRSP0 : 32; //!< [31:0] Command Response 0:
|
|
} B;
|
|
} hw_usdhc_cmd_rsp0_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_CMD_RSP0 register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_CMD_RSP0_ADDR(x) (REGS_USDHC_BASE(x) + 0x10)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_CMD_RSP0(x) (*(volatile hw_usdhc_cmd_rsp0_t *) HW_USDHC_CMD_RSP0_ADDR(x))
|
|
#define HW_USDHC_CMD_RSP0_RD(x) (HW_USDHC_CMD_RSP0(x).U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_CMD_RSP0 bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_CMD_RSP0, field CMDRSP0[31:0] (RO)
|
|
*
|
|
* Command Response 0: Refer to for the mapping of command responses from the SD Bus to this
|
|
* register for each response type.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CMD_RSP0_CMDRSP0 (0) //!< Bit position for USDHC_CMD_RSP0_CMDRSP0.
|
|
#define BM_USDHC_CMD_RSP0_CMDRSP0 (0xffffffff) //!< Bit mask for USDHC_CMD_RSP0_CMDRSP0.
|
|
|
|
//! @brief Get value of USDHC_CMD_RSP0_CMDRSP0 from a register value.
|
|
#define BG_USDHC_CMD_RSP0_CMDRSP0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CMD_RSP0_CMDRSP0) >> BP_USDHC_CMD_RSP0_CMDRSP0)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_CMD_RSP1 - Command Response1
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_CMD_RSP1 - Command Response1 (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register is used to store part 1 of the response bits from the card.
|
|
*/
|
|
typedef union _hw_usdhc_cmd_rsp1
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_cmd_rsp1_bitfields
|
|
{
|
|
unsigned CMDRSP1 : 32; //!< [31:0] Command Response 1:
|
|
} B;
|
|
} hw_usdhc_cmd_rsp1_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_CMD_RSP1 register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_CMD_RSP1_ADDR(x) (REGS_USDHC_BASE(x) + 0x14)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_CMD_RSP1(x) (*(volatile hw_usdhc_cmd_rsp1_t *) HW_USDHC_CMD_RSP1_ADDR(x))
|
|
#define HW_USDHC_CMD_RSP1_RD(x) (HW_USDHC_CMD_RSP1(x).U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_CMD_RSP1 bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_CMD_RSP1, field CMDRSP1[31:0] (RO)
|
|
*
|
|
* Command Response 1: Refer to for the mapping of command responses from the SD Bus to this
|
|
* register for each response type.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CMD_RSP1_CMDRSP1 (0) //!< Bit position for USDHC_CMD_RSP1_CMDRSP1.
|
|
#define BM_USDHC_CMD_RSP1_CMDRSP1 (0xffffffff) //!< Bit mask for USDHC_CMD_RSP1_CMDRSP1.
|
|
|
|
//! @brief Get value of USDHC_CMD_RSP1_CMDRSP1 from a register value.
|
|
#define BG_USDHC_CMD_RSP1_CMDRSP1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CMD_RSP1_CMDRSP1) >> BP_USDHC_CMD_RSP1_CMDRSP1)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_CMD_RSP2 - Command Response2
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_CMD_RSP2 - Command Response2 (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register is used to store part 2 of the response bits from the card.
|
|
*/
|
|
typedef union _hw_usdhc_cmd_rsp2
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_cmd_rsp2_bitfields
|
|
{
|
|
unsigned CMDRSP2 : 32; //!< [31:0] Command Response 2:
|
|
} B;
|
|
} hw_usdhc_cmd_rsp2_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_CMD_RSP2 register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_CMD_RSP2_ADDR(x) (REGS_USDHC_BASE(x) + 0x18)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_CMD_RSP2(x) (*(volatile hw_usdhc_cmd_rsp2_t *) HW_USDHC_CMD_RSP2_ADDR(x))
|
|
#define HW_USDHC_CMD_RSP2_RD(x) (HW_USDHC_CMD_RSP2(x).U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_CMD_RSP2 bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_CMD_RSP2, field CMDRSP2[31:0] (RO)
|
|
*
|
|
* Command Response 2: Refer to for the mapping of command responses from the SD Bus to this
|
|
* register for each response type.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CMD_RSP2_CMDRSP2 (0) //!< Bit position for USDHC_CMD_RSP2_CMDRSP2.
|
|
#define BM_USDHC_CMD_RSP2_CMDRSP2 (0xffffffff) //!< Bit mask for USDHC_CMD_RSP2_CMDRSP2.
|
|
|
|
//! @brief Get value of USDHC_CMD_RSP2_CMDRSP2 from a register value.
|
|
#define BG_USDHC_CMD_RSP2_CMDRSP2(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CMD_RSP2_CMDRSP2) >> BP_USDHC_CMD_RSP2_CMDRSP2)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_CMD_RSP3 - Command Response3
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_CMD_RSP3 - Command Response3 (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register is used to store part 3 of the response bits from the card. The table below
|
|
* describes the mapping of command responses from the SD Bus to Command Response registers for each
|
|
* response type. In the table, R[ ] refers to a bit range within the response data as transmitted
|
|
* on the SD Bus. Response Bit Definition for Each Response Type Response Type Meaning of Response
|
|
* Response Field Response Register R1,R1b (normal response) Card Status R[39:8] CMDRSP0 R1b (Auto
|
|
* CMD12 response) Card Status for Auto CMD12 R[39:8] CMDRSP3 R2 (CID, CSD register) CID/CSD
|
|
* register [127:8] R[127:8] {CMDRSP3[23:0], CMDRSP2, CMDRSP1, CMDRSP0} R3 (OCR register) OCR
|
|
* register for memory R[39:8] CMDRSP0 R4 (OCR register) OCR register for I/O etc. R[39:8] CMDRSP0
|
|
* R5, R5b SDIO response R[39:8] CMDRSP0 R6 (Publish RCA) New Published RCA[31:16] and card
|
|
* status[15:0] R[39:9] CMDRSP0 This table shows that most responses with a length of 48 (R[47:0])
|
|
* have 32-bits of the response data (R[39:8]) stored in the CMDRSP0 register. Responses of type R1b
|
|
* (Auto CMD12 responses) have response data bits (R[39:8]) stored in the CMDRSP3 register.
|
|
* Responses with length 136 (R[135:0]) have 120-bits of the response data (R[127:8]) stored in the
|
|
* CMDRSP0, 1, 2, and 3 registers. To be able to read the response status efficiently, the uSDHC
|
|
* only stores part of the response data in the Command Response registers. This enables the Host
|
|
* Driver to efficiently read 32-bits of response data in one read cycle on a 32-bit bus system.
|
|
* Parts of the response, the Index field and the CRC, are checked by the uSDHC (as specified by the
|
|
* Command Index Check Enable and the Command CRC Check Enable bits in the Transfer Type register)
|
|
* and generate an error interrupt if any error is detected. The bit range for the CRC check depends
|
|
* on the response length. If the response length is 48, the uSDHC will check R[47:1], and if the
|
|
* response length is 136 the uSDHC will check R[119:1]. Since the uSDHC may have a multiple block
|
|
* data transfer executing concurrently with a CMD_wo_DAT command, the uSDHC stores the Auto CMD12
|
|
* response in the CMDRSP3 register. The CMD_wo_DAT response is stored in CMDRSP0. This allows the
|
|
* uSDHC to avoid overwriting the Auto CMD12 response with the CMD_wo_DAT and vice versa. When the
|
|
* uSDHC modifies part of the Command Response registers, as shown in the table above, it preserves
|
|
* the unmodified bits.
|
|
*/
|
|
typedef union _hw_usdhc_cmd_rsp3
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_cmd_rsp3_bitfields
|
|
{
|
|
unsigned CMDRSP3 : 32; //!< [31:0] Command Response 3:
|
|
} B;
|
|
} hw_usdhc_cmd_rsp3_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_CMD_RSP3 register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_CMD_RSP3_ADDR(x) (REGS_USDHC_BASE(x) + 0x1c)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_CMD_RSP3(x) (*(volatile hw_usdhc_cmd_rsp3_t *) HW_USDHC_CMD_RSP3_ADDR(x))
|
|
#define HW_USDHC_CMD_RSP3_RD(x) (HW_USDHC_CMD_RSP3(x).U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_CMD_RSP3 bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_CMD_RSP3, field CMDRSP3[31:0] (RO)
|
|
*
|
|
* Command Response 3: Refer to for the mapping of command responses from the SD Bus to this
|
|
* register for each response type.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CMD_RSP3_CMDRSP3 (0) //!< Bit position for USDHC_CMD_RSP3_CMDRSP3.
|
|
#define BM_USDHC_CMD_RSP3_CMDRSP3 (0xffffffff) //!< Bit mask for USDHC_CMD_RSP3_CMDRSP3.
|
|
|
|
//! @brief Get value of USDHC_CMD_RSP3_CMDRSP3 from a register value.
|
|
#define BG_USDHC_CMD_RSP3_CMDRSP3(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CMD_RSP3_CMDRSP3) >> BP_USDHC_CMD_RSP3_CMDRSP3)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_DATA_BUFF_ACC_PORT - Data Buffer Access Port
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_DATA_BUFF_ACC_PORT - Data Buffer Access Port (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This is a 32-bit data port register used to access the internal buffer.
|
|
*/
|
|
typedef union _hw_usdhc_data_buff_acc_port
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_data_buff_acc_port_bitfields
|
|
{
|
|
unsigned DATCONT : 32; //!< [31:0] Data Content:
|
|
} B;
|
|
} hw_usdhc_data_buff_acc_port_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_DATA_BUFF_ACC_PORT register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_DATA_BUFF_ACC_PORT_ADDR(x) (REGS_USDHC_BASE(x) + 0x20)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_DATA_BUFF_ACC_PORT(x) (*(volatile hw_usdhc_data_buff_acc_port_t *) HW_USDHC_DATA_BUFF_ACC_PORT_ADDR(x))
|
|
#define HW_USDHC_DATA_BUFF_ACC_PORT_RD(x) (HW_USDHC_DATA_BUFF_ACC_PORT(x).U)
|
|
#define HW_USDHC_DATA_BUFF_ACC_PORT_WR(x, v) (HW_USDHC_DATA_BUFF_ACC_PORT(x).U = (v))
|
|
#define HW_USDHC_DATA_BUFF_ACC_PORT_SET(x, v) (HW_USDHC_DATA_BUFF_ACC_PORT_WR(x, HW_USDHC_DATA_BUFF_ACC_PORT_RD(x) | (v)))
|
|
#define HW_USDHC_DATA_BUFF_ACC_PORT_CLR(x, v) (HW_USDHC_DATA_BUFF_ACC_PORT_WR(x, HW_USDHC_DATA_BUFF_ACC_PORT_RD(x) & ~(v)))
|
|
#define HW_USDHC_DATA_BUFF_ACC_PORT_TOG(x, v) (HW_USDHC_DATA_BUFF_ACC_PORT_WR(x, HW_USDHC_DATA_BUFF_ACC_PORT_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_DATA_BUFF_ACC_PORT bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_DATA_BUFF_ACC_PORT, field DATCONT[31:0] (RW)
|
|
*
|
|
* Data Content: The Buffer Data Port register is for 32-bit data access by the ARM platform or the
|
|
* external DMA. When the internal DMA is enabled, any write to this register is ignored, and any
|
|
* read from this register will always yield 0s.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DATA_BUFF_ACC_PORT_DATCONT (0) //!< Bit position for USDHC_DATA_BUFF_ACC_PORT_DATCONT.
|
|
#define BM_USDHC_DATA_BUFF_ACC_PORT_DATCONT (0xffffffff) //!< Bit mask for USDHC_DATA_BUFF_ACC_PORT_DATCONT.
|
|
|
|
//! @brief Get value of USDHC_DATA_BUFF_ACC_PORT_DATCONT from a register value.
|
|
#define BG_USDHC_DATA_BUFF_ACC_PORT_DATCONT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DATA_BUFF_ACC_PORT_DATCONT) >> BP_USDHC_DATA_BUFF_ACC_PORT_DATCONT)
|
|
|
|
//! @brief Format value for bitfield USDHC_DATA_BUFF_ACC_PORT_DATCONT.
|
|
#define BF_USDHC_DATA_BUFF_ACC_PORT_DATCONT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_DATA_BUFF_ACC_PORT_DATCONT) & BM_USDHC_DATA_BUFF_ACC_PORT_DATCONT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DATCONT field to a new value.
|
|
#define BW_USDHC_DATA_BUFF_ACC_PORT_DATCONT(x, v) (HW_USDHC_DATA_BUFF_ACC_PORT_WR(x, (HW_USDHC_DATA_BUFF_ACC_PORT_RD(x) & ~BM_USDHC_DATA_BUFF_ACC_PORT_DATCONT) | BF_USDHC_DATA_BUFF_ACC_PORT_DATCONT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_PRES_STATE - Present State
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_PRES_STATE - Present State (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* The Host Driver can get status of the uSDHC from this 32-bit read only register. The Host Driver
|
|
* can issue CMD0, CMD12, CMD13 (for memory) and CMD52 (for SDIO) when the DAT lines are busy during
|
|
* a data transfer. These commands can be issued when Command Inhibit (CMD) is set to zero. Other
|
|
* commands shall be issued when Command Inhibit (DAT) is set to zero. Possible changes to the SD
|
|
* Physical Specification may add other commands to this list in the future. Note: the reset value
|
|
* of Present State Register depend on testbench connectivity.
|
|
*/
|
|
typedef union _hw_usdhc_pres_state
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_pres_state_bitfields
|
|
{
|
|
unsigned CIHB : 1; //!< [0] Command Inhibit (CMD):
|
|
unsigned CDIHB : 1; //!< [1] Command Inhibit (DAT):
|
|
unsigned DLA : 1; //!< [2] Data Line Active
|
|
unsigned SDSTB : 1; //!< [3] SD Clock Stable
|
|
unsigned IPGOFF : 1; //!< [4] ipg_clk Gated Off Internally:
|
|
unsigned HCKOFF : 1; //!< [5] hclk Gated Off Internally:
|
|
unsigned PEROFF : 1; //!< [6] ipg_perclk Gated Off Internally:
|
|
unsigned SDOFF : 1; //!< [7] SD Clock Gated Off Internally:
|
|
unsigned WTA : 1; //!< [8] Write Transfer Active:
|
|
unsigned RTA : 1; //!< [9] Read Transfer Active:
|
|
unsigned BWEN : 1; //!< [10] Buffer Write Enable:
|
|
unsigned BREN : 1; //!< [11] Buffer Read Enable:
|
|
unsigned RTR : 1; //!< [12] Re-Tuning Request: (only for SD3.0 SDR104 mode)
|
|
unsigned RESERVED0 : 3; //!< [15:13] Reserved
|
|
unsigned CINST : 1; //!< [16] Card Inserted:
|
|
unsigned RESERVED1 : 1; //!< [17] Reserved
|
|
unsigned CDPL : 1; //!< [18] Card Detect Pin Level:
|
|
unsigned WPSPL : 1; //!< [19] Write Protect Switch Pin Level:
|
|
unsigned RESERVED2 : 3; //!< [22:20] Reserved
|
|
unsigned CLSL : 1; //!< [23] CMD Line Signal Level:
|
|
unsigned DLSL : 8; //!< [31:24] DAT[7:0] Line Signal Level:
|
|
} B;
|
|
} hw_usdhc_pres_state_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_PRES_STATE register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_PRES_STATE_ADDR(x) (REGS_USDHC_BASE(x) + 0x24)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_PRES_STATE(x) (*(volatile hw_usdhc_pres_state_t *) HW_USDHC_PRES_STATE_ADDR(x))
|
|
#define HW_USDHC_PRES_STATE_RD(x) (HW_USDHC_PRES_STATE(x).U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_PRES_STATE bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field CIHB[0] (RO)
|
|
*
|
|
* Command Inhibit (CMD): If this status bit is 0, it indicates that the CMD line is not in use and
|
|
* the uSDHC can issue a SD/MMC Command using the CMD line. This bit is set also immediately after
|
|
* the Transfer Type register is written. This bit is cleared when the command response is received.
|
|
* Even if the Command Inhibit (DAT) is set to 1, Commands using only the CMD line can be issued if
|
|
* this bit is 0. Changing from 1 to 0 generates a Command Complete interrupt in the Interrupt
|
|
* Status register. If the uSDHC cannot issue the command because of a command conflict error (Refer
|
|
* to Command CRC Error) or because of a Command Not Issued By Auto CMD12 Error, this bit will
|
|
* remain 1 and the Command Complete is not set. The Status of issuing an Auto CMD12 does not show
|
|
* on this bit.
|
|
*
|
|
* Values:
|
|
* - 0 - Can issue command using only CMD line
|
|
* - 1 - Cannot issue command
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_CIHB (0) //!< Bit position for USDHC_PRES_STATE_CIHB.
|
|
#define BM_USDHC_PRES_STATE_CIHB (0x00000001) //!< Bit mask for USDHC_PRES_STATE_CIHB.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_CIHB from a register value.
|
|
#define BG_USDHC_PRES_STATE_CIHB(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_CIHB) >> BP_USDHC_PRES_STATE_CIHB)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field CDIHB[1] (RO)
|
|
*
|
|
* Command Inhibit (DAT): This status bit is generated if either the DAT Line Active or the Read
|
|
* Transfer Active is set to 1. If this bit is 0, it indicates that the uSDHC can issue the next
|
|
* SD/MMC Command. Commands with a busy signal belong to Command Inhibit (DAT) (e.g. R1b, R5b type).
|
|
* Except in the case when the command busy is finished, changing from 1 to 0 generates a Transfer
|
|
* Complete interrupt in the Interrupt Status register. Note: The SD Host Driver can save registers
|
|
* for a suspend transaction after this bit has changed from 1 to 0.
|
|
*
|
|
* Values:
|
|
* - 0 - Can issue command which uses the DAT line
|
|
* - 1 - Cannot issue command which uses the DAT line
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_CDIHB (1) //!< Bit position for USDHC_PRES_STATE_CDIHB.
|
|
#define BM_USDHC_PRES_STATE_CDIHB (0x00000002) //!< Bit mask for USDHC_PRES_STATE_CDIHB.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_CDIHB from a register value.
|
|
#define BG_USDHC_PRES_STATE_CDIHB(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_CDIHB) >> BP_USDHC_PRES_STATE_CDIHB)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field DLA[2] (RO)
|
|
*
|
|
* Data Line Active This status bit indicates whether one of the DAT lines on the SD Bus is in use.
|
|
* In the case of read transactions: This status indicates if a read transfer is executing on the SD
|
|
* Bus. Changes in this value from 1 to 0, between data blocks, generates a Block Gap Event
|
|
* interrupt in the Interrupt Status register. This bit will be set in either of the following
|
|
* cases: After the end bit of the read command. When writing a 1 to the Continue Request bit in the
|
|
* Protocol Control register to restart a read transfer. This bit will be cleared in either of the
|
|
* following cases: (1) When the end bit of the last data block is sent from the SD Bus to the
|
|
* uSDHC. (2) When the Read Wait state is stopped by a Suspend command and the DAT2 line is
|
|
* released. The uSDHC will wait at the next block gap by driving Read Wait at the start of the
|
|
* interrupt cycle. If the Read Wait signal is already driven (data buffer cannot receive data), the
|
|
* uSDHC can wait for a current block gap by continuing to drive the Read Wait signal. It is
|
|
* necessary to support Read Wait in order to use the suspend / resume function. This bit will
|
|
* remain 1 during Read Wait. In the case of write transactions: This status indicates that a write
|
|
* transfer is executing on the SD Bus. Changes in this value from 1 to 0 generate a Transfer
|
|
* Complete interrupt in the Interrupt Status register. This bit will be set in either of the
|
|
* following cases: After the end bit of the write command. When writing to 1 to the Continue
|
|
* Request bit in the Protocol Control register to continue a write transfer. This bit will be
|
|
* cleared in either of the following cases: When the SD card releases Write Busy of the last data
|
|
* block, the uSDHC will also detect if the output is not busy. If the SD card does not drive the
|
|
* busy signal after the CRC status is received, the uSDHC shall assume the card drive "Not Busy".
|
|
* When the SD card releases write busy, prior to waiting for write transfer, and as a result of a
|
|
* Stop At Block Gap Request. In the case of command with busy pending: This status indicates that a
|
|
* busy state follows the command and the data line is in use. This bit will be cleared when the
|
|
* DAT0 line is released.
|
|
*
|
|
* Values:
|
|
* - 0 - DAT Line Inactive
|
|
* - 1 - DAT Line Active
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_DLA (2) //!< Bit position for USDHC_PRES_STATE_DLA.
|
|
#define BM_USDHC_PRES_STATE_DLA (0x00000004) //!< Bit mask for USDHC_PRES_STATE_DLA.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_DLA from a register value.
|
|
#define BG_USDHC_PRES_STATE_DLA(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_DLA) >> BP_USDHC_PRES_STATE_DLA)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field SDSTB[3] (RO)
|
|
*
|
|
* SD Clock Stable This status bit indicates that the internal card clock is stable. This bit is for
|
|
* the Host Driver to poll clock status when changing the clock frequency. It is recommended to
|
|
* clear FRC_SDCLK_ON bit in System Control register to remove glitches on the card clock when the
|
|
* frequency is changing. Before changing clock divisor value(SDCLKFS or DVS), Host Driver should
|
|
* make sure the SDSTB bit is high.
|
|
*
|
|
* Values:
|
|
* - 0 - clock is changing frequency and not stable
|
|
* - 1 - clock is stable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_SDSTB (3) //!< Bit position for USDHC_PRES_STATE_SDSTB.
|
|
#define BM_USDHC_PRES_STATE_SDSTB (0x00000008) //!< Bit mask for USDHC_PRES_STATE_SDSTB.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_SDSTB from a register value.
|
|
#define BG_USDHC_PRES_STATE_SDSTB(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_SDSTB) >> BP_USDHC_PRES_STATE_SDSTB)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field IPGOFF[4] (RO)
|
|
*
|
|
* ipg_clk Gated Off Internally: This status bit indicates that the ipg_clk is internally gated off.
|
|
* This bit is for the Host Driver to debug.
|
|
*
|
|
* Values:
|
|
* - 0 - ipg_clk is active
|
|
* - 1 - ipg_clk is gated off
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_IPGOFF (4) //!< Bit position for USDHC_PRES_STATE_IPGOFF.
|
|
#define BM_USDHC_PRES_STATE_IPGOFF (0x00000010) //!< Bit mask for USDHC_PRES_STATE_IPGOFF.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_IPGOFF from a register value.
|
|
#define BG_USDHC_PRES_STATE_IPGOFF(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_IPGOFF) >> BP_USDHC_PRES_STATE_IPGOFF)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field HCKOFF[5] (RO)
|
|
*
|
|
* hclk Gated Off Internally: This status bit indicates that the hclk is internally gated off. This
|
|
* bit is for the Host Driver to debug during a data transfer.
|
|
*
|
|
* Values:
|
|
* - 0 - hclk is active
|
|
* - 1 - hclk is gated off
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_HCKOFF (5) //!< Bit position for USDHC_PRES_STATE_HCKOFF.
|
|
#define BM_USDHC_PRES_STATE_HCKOFF (0x00000020) //!< Bit mask for USDHC_PRES_STATE_HCKOFF.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_HCKOFF from a register value.
|
|
#define BG_USDHC_PRES_STATE_HCKOFF(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_HCKOFF) >> BP_USDHC_PRES_STATE_HCKOFF)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field PEROFF[6] (RO)
|
|
*
|
|
* ipg_perclk Gated Off Internally: This status bit indicates that the ipg_perclk is internally
|
|
* gated off. This bit is for the Host Driver to debug transaction on the SD bus. When
|
|
* IPG_CLK_SOFT_EN is cleared, ipg_perclk will be gated off, otherwise ipg_perclk will be always
|
|
* active.
|
|
*
|
|
* Values:
|
|
* - 0 - ipg_perclk is active
|
|
* - 1 - ipg_perclk is gated off
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_PEROFF (6) //!< Bit position for USDHC_PRES_STATE_PEROFF.
|
|
#define BM_USDHC_PRES_STATE_PEROFF (0x00000040) //!< Bit mask for USDHC_PRES_STATE_PEROFF.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_PEROFF from a register value.
|
|
#define BG_USDHC_PRES_STATE_PEROFF(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_PEROFF) >> BP_USDHC_PRES_STATE_PEROFF)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field SDOFF[7] (RO)
|
|
*
|
|
* SD Clock Gated Off Internally: This status bit indicates that the SD Clock is internally gated
|
|
* off, because of buffer over/under-run or read pause without read wait assertion, or the driver
|
|
* set FRC_SDCLK_ON bit is 0 to stop the SD clock in idle status. Set IPG_PERCLK_SOFT_EN and
|
|
* CARD_CLK_SOFT_EN to 0 also gate off SD clock. This bit is for the Host Driver to debug data
|
|
* transaction on the SD bus.
|
|
*
|
|
* Values:
|
|
* - 0 - SD Clock is active
|
|
* - 1 - SD Clock is gated off
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_SDOFF (7) //!< Bit position for USDHC_PRES_STATE_SDOFF.
|
|
#define BM_USDHC_PRES_STATE_SDOFF (0x00000080) //!< Bit mask for USDHC_PRES_STATE_SDOFF.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_SDOFF from a register value.
|
|
#define BG_USDHC_PRES_STATE_SDOFF(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_SDOFF) >> BP_USDHC_PRES_STATE_SDOFF)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field WTA[8] (RO)
|
|
*
|
|
* Write Transfer Active: This status bit indicates a write transfer is active. If this bit is 0, it
|
|
* means no valid write data exists in the uSDHC. This bit is set in either of the following cases:
|
|
* After the end bit of the write command. When writing 1 to the Continue Request bit in the
|
|
* Protocol Control register to restart a write transfer. This bit is cleared in either of the
|
|
* following cases: After getting the CRC status of the last data block as specified by the transfer
|
|
* count (Single and Multiple). After getting the CRC status of any block where data transmission is
|
|
* about to be stopped by a Stop At Block Gap Request. During a write transaction, a Block Gap Event
|
|
* interrupt is generated when this bit is changed to 0, as result of the Stop At Block Gap Request
|
|
* being set. This status is useful for the Host Driver in determining when to issue commands during
|
|
* Write Busy state.
|
|
*
|
|
* Values:
|
|
* - 0 - No valid data
|
|
* - 1 - Transferring data
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_WTA (8) //!< Bit position for USDHC_PRES_STATE_WTA.
|
|
#define BM_USDHC_PRES_STATE_WTA (0x00000100) //!< Bit mask for USDHC_PRES_STATE_WTA.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_WTA from a register value.
|
|
#define BG_USDHC_PRES_STATE_WTA(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_WTA) >> BP_USDHC_PRES_STATE_WTA)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field RTA[9] (RO)
|
|
*
|
|
* Read Transfer Active: This status bit is used for detecting completion of a read transfer. This
|
|
* bit is set for either of the following conditions: After the end bit of the read command. When
|
|
* writing a 1 to the Continue Request bit in the Protocol Control register to restart a read
|
|
* transfer. A Transfer Complete interrupt is generated when this bit changes to 0. This bit is
|
|
* cleared for either of the following conditions: When the last data block as specified by block
|
|
* length is transferred to the System, i.e. all data are read away from uSDHC internal buffer. When
|
|
* all valid data blocks have been transferred from uSDHC internal buffer to the System and no
|
|
* current block transfers are being sent as a result of the Stop At Block Gap Request being set to
|
|
* 1.
|
|
*
|
|
* Values:
|
|
* - 0 - No valid data
|
|
* - 1 - Transferring data
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_RTA (9) //!< Bit position for USDHC_PRES_STATE_RTA.
|
|
#define BM_USDHC_PRES_STATE_RTA (0x00000200) //!< Bit mask for USDHC_PRES_STATE_RTA.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_RTA from a register value.
|
|
#define BG_USDHC_PRES_STATE_RTA(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_RTA) >> BP_USDHC_PRES_STATE_RTA)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field BWEN[10] (RO)
|
|
*
|
|
* Buffer Write Enable: This status bit is used for non-DMA write transfers. The uSDHC implements an
|
|
* internal buffer to transfer data efficiently. This read only flag indicates if space is available
|
|
* for write data. If this bit is 1, valid data greater than the watermark level can be written to
|
|
* the buffer. A change of this bit from 1 to 0 occurs when some writes to the buffer(write
|
|
* DATPORT(Base + 0x20)) are made and the buffer hasn't valid space greater than the watermark
|
|
* level. . A change of this bit from 0 to 1 occurs when the buffer can hold valid data greater than
|
|
* the write watermark level and the Buffer Write Ready interrupt is generated and enabled.
|
|
*
|
|
* Values:
|
|
* - 0 - Write disable
|
|
* - 1 - Write enable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_BWEN (10) //!< Bit position for USDHC_PRES_STATE_BWEN.
|
|
#define BM_USDHC_PRES_STATE_BWEN (0x00000400) //!< Bit mask for USDHC_PRES_STATE_BWEN.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_BWEN from a register value.
|
|
#define BG_USDHC_PRES_STATE_BWEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_BWEN) >> BP_USDHC_PRES_STATE_BWEN)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field BREN[11] (RO)
|
|
*
|
|
* Buffer Read Enable: This status bit is used for non-DMA read transfers. The uSDHC implements an
|
|
* internal buffer to transfer data efficiently. This read only flag indicates that valid data
|
|
* exists in the host side buffer. If this bit is high, valid data greater than the watermark level
|
|
* exist in the buffer. A change of this bit from 1 to 0 occurs when some reads from the buffer(read
|
|
* DATPORT(Base + 0x20)) are made and the buffer hasn't valid data greater than the watermark level.
|
|
* A change of this bit from 0 to1 occurs when there is enough valid data ready in the buffer and
|
|
* the Buffer Read Ready interrupt has been generated and enabled.
|
|
*
|
|
* Values:
|
|
* - 0 - Read disable
|
|
* - 1 - Read enable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_BREN (11) //!< Bit position for USDHC_PRES_STATE_BREN.
|
|
#define BM_USDHC_PRES_STATE_BREN (0x00000800) //!< Bit mask for USDHC_PRES_STATE_BREN.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_BREN from a register value.
|
|
#define BG_USDHC_PRES_STATE_BREN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_BREN) >> BP_USDHC_PRES_STATE_BREN)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field RTR[12] (RO)
|
|
*
|
|
* Re-Tuning Request: (only for SD3.0 SDR104 mode) Host Controller may request Host Driver to
|
|
* execute re-tuning sequence by setting this bit when the data window is shifted by temperature
|
|
* drift and a tuned sampling point does not have a good margin to receive correct data. This bit is
|
|
* cleared when a command is issued with setting Execute Tuning bit in MIXER_CTRL register. Changing
|
|
* of this bit from 0 to 1 generates Re-Tuning Event. Refer to Interrupt status registers for more
|
|
* detail. This bit isn't set to 1 if Sampling Clock Select in the MIXER_CTRL register is set to 0
|
|
* (using fixed sampling clock).
|
|
*
|
|
* Values:
|
|
* - 0 - Fixed or well tuned sampling clock
|
|
* - 1 - Sampling clock needs re-tuning
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_RTR (12) //!< Bit position for USDHC_PRES_STATE_RTR.
|
|
#define BM_USDHC_PRES_STATE_RTR (0x00001000) //!< Bit mask for USDHC_PRES_STATE_RTR.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_RTR from a register value.
|
|
#define BG_USDHC_PRES_STATE_RTR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_RTR) >> BP_USDHC_PRES_STATE_RTR)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field CINST[16] (RO)
|
|
*
|
|
* Card Inserted: This bit indicates whether a card has been inserted. The uSDHC debounces this
|
|
* signal so that the Host Driver will not need to wait for it to stabilize. Changing from a 0 to 1
|
|
* generates a Card Insertion interrupt in the Interrupt Status register. Changing from a 1 to 0
|
|
* generates a Card Removal interrupt in the Interrupt Status register. A write to the Force Event
|
|
* Register does not effect this bit. The Software Reset For All in the System Control register does
|
|
* not effect this bit.A software reset does not effect this bit.
|
|
*
|
|
* Values:
|
|
* - 0 - Power on Reset or No Card
|
|
* - 1 - Card Inserted
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_CINST (16) //!< Bit position for USDHC_PRES_STATE_CINST.
|
|
#define BM_USDHC_PRES_STATE_CINST (0x00010000) //!< Bit mask for USDHC_PRES_STATE_CINST.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_CINST from a register value.
|
|
#define BG_USDHC_PRES_STATE_CINST(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_CINST) >> BP_USDHC_PRES_STATE_CINST)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field CDPL[18] (RO)
|
|
*
|
|
* Card Detect Pin Level: This bit reflects the inverse value of the CD# pin for the card socket.
|
|
* Debouncing is not performed on this bit. This bit may be valid, but is not guaranteed, because of
|
|
* propagation delay. Use of this bit is limited to testing since it must be debounced by software.
|
|
* A software reset does not effect this bit. A write to the Force Event Register does not effect
|
|
* this bit. The reset value is effected by the external card detection pin. This bit shows the
|
|
* value on the CD# pin (i.e. when a card is inserted in the socket, it is 0 on the CD# input, and
|
|
* consequently the CDPL reads 1.)
|
|
*
|
|
* Values:
|
|
* - 0 - No card present (CD#=1)
|
|
* - 1 - Card present (CD#=0)
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_CDPL (18) //!< Bit position for USDHC_PRES_STATE_CDPL.
|
|
#define BM_USDHC_PRES_STATE_CDPL (0x00040000) //!< Bit mask for USDHC_PRES_STATE_CDPL.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_CDPL from a register value.
|
|
#define BG_USDHC_PRES_STATE_CDPL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_CDPL) >> BP_USDHC_PRES_STATE_CDPL)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field WPSPL[19] (RO)
|
|
*
|
|
* Write Protect Switch Pin Level: The Write Protect Switch is supported for memory and combo
|
|
* cards.This bit reflects the inverted value of the WP pin of the card socket. A software reset
|
|
* does not affect this bit. The reset value is effected by the external write protect switch. If
|
|
* the WP pin is not used, it should be tied low, so that the reset value of this bit is high and
|
|
* write is enabled.
|
|
*
|
|
* Values:
|
|
* - 0 - Write protected (WP=1)
|
|
* - 1 - Write enabled (WP=0)
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_WPSPL (19) //!< Bit position for USDHC_PRES_STATE_WPSPL.
|
|
#define BM_USDHC_PRES_STATE_WPSPL (0x00080000) //!< Bit mask for USDHC_PRES_STATE_WPSPL.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_WPSPL from a register value.
|
|
#define BG_USDHC_PRES_STATE_WPSPL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_WPSPL) >> BP_USDHC_PRES_STATE_WPSPL)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field CLSL[23] (RO)
|
|
*
|
|
* CMD Line Signal Level: This status is used to check the CMD line level to recover from errors,
|
|
* and for debugging. The reset value is affected by the external pull-up/pull-down resistor, by
|
|
* default, the read value of this bit after reset is 1'b1, when the command line is pulled up.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_CLSL (23) //!< Bit position for USDHC_PRES_STATE_CLSL.
|
|
#define BM_USDHC_PRES_STATE_CLSL (0x00800000) //!< Bit mask for USDHC_PRES_STATE_CLSL.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_CLSL from a register value.
|
|
#define BG_USDHC_PRES_STATE_CLSL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_CLSL) >> BP_USDHC_PRES_STATE_CLSL)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PRES_STATE, field DLSL[31:24] (RO)
|
|
*
|
|
* DAT[7:0] Line Signal Level: This status is used to check the DAT line level to recover from
|
|
* errors, and for debugging.This is especially useful in detecting the busy signal level from
|
|
* DAT[0]. The reset value is affected by the external pull-up/pull-down resistors. By default, the
|
|
* read value of this bit field after reset is 8'b11110111, when DAT[3] is pulled down and the other
|
|
* lines are pulled up. DAT[7]: Data 7 line signal level DAT[6]: Data 6 line signal level DAT[5]:
|
|
* Data 5 line signal level DAT[4]: Data 4 line signal level DAT[3]: Data 3 line signal level
|
|
* DAT[2]: Data 2 line signal level DAT[1]: Data 1 line signal level DAT[0]: Data 0 line signal
|
|
* level
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PRES_STATE_DLSL (24) //!< Bit position for USDHC_PRES_STATE_DLSL.
|
|
#define BM_USDHC_PRES_STATE_DLSL (0xff000000) //!< Bit mask for USDHC_PRES_STATE_DLSL.
|
|
|
|
//! @brief Get value of USDHC_PRES_STATE_DLSL from a register value.
|
|
#define BG_USDHC_PRES_STATE_DLSL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PRES_STATE_DLSL) >> BP_USDHC_PRES_STATE_DLSL)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_PROT_CTRL - Protocol Control
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_PROT_CTRL - Protocol Control (RW)
|
|
*
|
|
* Reset value: 0x08800020
|
|
*
|
|
* There are three cases to restart the transfer after stop at the block gap. Which case is
|
|
* appropriate depends on whether the uSDHC issues a Suspend command or the SD card accepts the
|
|
* Suspend command. If the Host Driver does not issue a Suspend command, the Continue Request shall
|
|
* be used to restart the transfer. If the Host Driver issues a Suspend command and the SD card
|
|
* accepts it, a Resume command shall be used to restart the transfer. If the Host Driver issues a
|
|
* Suspend command and the SD card does not accept it, the Continue Request shall be used to restart
|
|
* the transfer. Any time Stop At Block Gap Request stops the data transfer, the Host Driver shall
|
|
* wait for a Transfer Complete (in the Interrupt Status register), before attempting to restart the
|
|
* transfer. When restarting the data transfer by Continue Request, the Host Driver shall clear the
|
|
* Stop At Block Gap Request before or simultaneously.
|
|
*/
|
|
typedef union _hw_usdhc_prot_ctrl
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_prot_ctrl_bitfields
|
|
{
|
|
unsigned LCTL : 1; //!< [0] LED Control:
|
|
unsigned DTW : 2; //!< [2:1] Data Transfer Width:
|
|
unsigned D3CD : 1; //!< [3] DAT3 as Card Detection Pin:
|
|
unsigned EMODE : 2; //!< [5:4] Endian Mode:
|
|
unsigned CDTL : 1; //!< [6] Card Detect Test Level:
|
|
unsigned CDSS : 1; //!< [7] Card Detect Signal Selection:
|
|
unsigned DMASEL : 2; //!< [9:8] DMA Select:
|
|
unsigned RESERVED0 : 6; //!< [15:10] Reserved
|
|
unsigned SABGREQ : 1; //!< [16] Stop At Block Gap Request:
|
|
unsigned CREQ : 1; //!< [17] Continue Request:
|
|
unsigned RWCTL : 1; //!< [18] Read Wait Control:
|
|
unsigned IABG : 1; //!< [19] Interrupt At Block Gap:
|
|
unsigned RD_DONE_NO_8CLK : 1; //!< [20] Read done no 8 clock:
|
|
unsigned RESERVED1 : 3; //!< [23:21] Reserved.
|
|
unsigned WECINT : 1; //!< [24] Wakeup Event Enable On Card Interrupt:
|
|
unsigned WECINS : 1; //!< [25] Wakeup Event Enable On SD Card Insertion:
|
|
unsigned WECRM : 1; //!< [26] Wakeup Event Enable On SD Card Removal:
|
|
unsigned BURST_LEN_EN : 3; //!< [29:27] BURST length enable for INCR, INCR4/INCR8/INCR16, INCR4-WRAP/INCR8-WRAP/INCR16-WRAP
|
|
unsigned NON_EXACT_BLK_RD : 1; //!< [30] Current block read is non-exact block read.
|
|
unsigned RESERVED2 : 1; //!< [31] Reserved.
|
|
} B;
|
|
} hw_usdhc_prot_ctrl_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_PROT_CTRL register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_PROT_CTRL_ADDR(x) (REGS_USDHC_BASE(x) + 0x28)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_PROT_CTRL(x) (*(volatile hw_usdhc_prot_ctrl_t *) HW_USDHC_PROT_CTRL_ADDR(x))
|
|
#define HW_USDHC_PROT_CTRL_RD(x) (HW_USDHC_PROT_CTRL(x).U)
|
|
#define HW_USDHC_PROT_CTRL_WR(x, v) (HW_USDHC_PROT_CTRL(x).U = (v))
|
|
#define HW_USDHC_PROT_CTRL_SET(x, v) (HW_USDHC_PROT_CTRL_WR(x, HW_USDHC_PROT_CTRL_RD(x) | (v)))
|
|
#define HW_USDHC_PROT_CTRL_CLR(x, v) (HW_USDHC_PROT_CTRL_WR(x, HW_USDHC_PROT_CTRL_RD(x) & ~(v)))
|
|
#define HW_USDHC_PROT_CTRL_TOG(x, v) (HW_USDHC_PROT_CTRL_WR(x, HW_USDHC_PROT_CTRL_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_PROT_CTRL bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field LCTL[0] (RW)
|
|
*
|
|
* LED Control: This bit, fully controlled by the Host Driver, is used to caution the user not to
|
|
* remove the card while the card is being accessed. If the software is going to issue multiple SD
|
|
* commands, this bit can be set during all these transactions. It is not necessary to change for
|
|
* each transaction. When the software issues multiple SD commands, setting the bit once before the
|
|
* first command is sufficient: it is not necessary to reset the bit between commands.
|
|
*
|
|
* Values:
|
|
* - 0 - LED off
|
|
* - 1 - LED on
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_LCTL (0) //!< Bit position for USDHC_PROT_CTRL_LCTL.
|
|
#define BM_USDHC_PROT_CTRL_LCTL (0x00000001) //!< Bit mask for USDHC_PROT_CTRL_LCTL.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_LCTL from a register value.
|
|
#define BG_USDHC_PROT_CTRL_LCTL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_LCTL) >> BP_USDHC_PROT_CTRL_LCTL)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_LCTL.
|
|
#define BF_USDHC_PROT_CTRL_LCTL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_LCTL) & BM_USDHC_PROT_CTRL_LCTL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the LCTL field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_LCTL(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_LCTL) | BF_USDHC_PROT_CTRL_LCTL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field DTW[2:1] (RW)
|
|
*
|
|
* Data Transfer Width: This bit selects the data width of the SD bus for a data transfer. The Host
|
|
* Driver shall set it to match the data width of the card. Possible Data transfer Width is 1-bit,
|
|
* 4-bits or 8-bits.
|
|
*
|
|
* Values:
|
|
* - 00 - 1-bit mode
|
|
* - 01 - 4-bit mode
|
|
* - 10 - 8-bit mode
|
|
* - 11 - Reserved
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_DTW (1) //!< Bit position for USDHC_PROT_CTRL_DTW.
|
|
#define BM_USDHC_PROT_CTRL_DTW (0x00000006) //!< Bit mask for USDHC_PROT_CTRL_DTW.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_DTW from a register value.
|
|
#define BG_USDHC_PROT_CTRL_DTW(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_DTW) >> BP_USDHC_PROT_CTRL_DTW)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_DTW.
|
|
#define BF_USDHC_PROT_CTRL_DTW(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_DTW) & BM_USDHC_PROT_CTRL_DTW)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DTW field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_DTW(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_DTW) | BF_USDHC_PROT_CTRL_DTW(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field D3CD[3] (RW)
|
|
*
|
|
* DAT3 as Card Detection Pin: If this bit is set, DAT3 should be pulled down to act as a card
|
|
* detection pin. Be cautious when using this feature, because DAT3 is also a chip-select for the
|
|
* SPI mode. A pull-down on this pin and CMD0 may set the card into the SPI mode, which the uSDHC
|
|
* does not support.
|
|
*
|
|
* Values:
|
|
* - 0 - DAT3 does not monitor Card Insertion
|
|
* - 1 - DAT3 as Card Detection Pin
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_D3CD (3) //!< Bit position for USDHC_PROT_CTRL_D3CD.
|
|
#define BM_USDHC_PROT_CTRL_D3CD (0x00000008) //!< Bit mask for USDHC_PROT_CTRL_D3CD.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_D3CD from a register value.
|
|
#define BG_USDHC_PROT_CTRL_D3CD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_D3CD) >> BP_USDHC_PROT_CTRL_D3CD)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_D3CD.
|
|
#define BF_USDHC_PROT_CTRL_D3CD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_D3CD) & BM_USDHC_PROT_CTRL_D3CD)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the D3CD field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_D3CD(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_D3CD) | BF_USDHC_PROT_CTRL_D3CD(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field EMODE[5:4] (RW)
|
|
*
|
|
* Endian Mode: The uSDHC supports all three endian modes in data transfer. Refer to for more
|
|
* details.
|
|
*
|
|
* Values:
|
|
* - 00 - Big Endian Mode
|
|
* - 01 - Half Word Big Endian Mode
|
|
* - 10 - Little Endian Mode
|
|
* - 11 - Reserved
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_EMODE (4) //!< Bit position for USDHC_PROT_CTRL_EMODE.
|
|
#define BM_USDHC_PROT_CTRL_EMODE (0x00000030) //!< Bit mask for USDHC_PROT_CTRL_EMODE.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_EMODE from a register value.
|
|
#define BG_USDHC_PROT_CTRL_EMODE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_EMODE) >> BP_USDHC_PROT_CTRL_EMODE)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_EMODE.
|
|
#define BF_USDHC_PROT_CTRL_EMODE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_EMODE) & BM_USDHC_PROT_CTRL_EMODE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the EMODE field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_EMODE(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_EMODE) | BF_USDHC_PROT_CTRL_EMODE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field CDTL[6] (RW)
|
|
*
|
|
* Card Detect Test Level: This is bit is enabled while the Card Detection Signal Selection is set
|
|
* to 1 and it indicates card insertion.
|
|
*
|
|
* Values:
|
|
* - 0 - Card Detect Test Level is 0, no card inserted
|
|
* - 1 - Card Detect Test Level is 1, card inserted
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_CDTL (6) //!< Bit position for USDHC_PROT_CTRL_CDTL.
|
|
#define BM_USDHC_PROT_CTRL_CDTL (0x00000040) //!< Bit mask for USDHC_PROT_CTRL_CDTL.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_CDTL from a register value.
|
|
#define BG_USDHC_PROT_CTRL_CDTL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_CDTL) >> BP_USDHC_PROT_CTRL_CDTL)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_CDTL.
|
|
#define BF_USDHC_PROT_CTRL_CDTL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_CDTL) & BM_USDHC_PROT_CTRL_CDTL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CDTL field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_CDTL(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_CDTL) | BF_USDHC_PROT_CTRL_CDTL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field CDSS[7] (RW)
|
|
*
|
|
* Card Detect Signal Selection: This bit selects the source for the card detection.
|
|
*
|
|
* Values:
|
|
* - 0 - Card Detection Level is selected (for normal purpose)
|
|
* - 1 - Card Detection Test Level is selected (for test purpose)
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_CDSS (7) //!< Bit position for USDHC_PROT_CTRL_CDSS.
|
|
#define BM_USDHC_PROT_CTRL_CDSS (0x00000080) //!< Bit mask for USDHC_PROT_CTRL_CDSS.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_CDSS from a register value.
|
|
#define BG_USDHC_PROT_CTRL_CDSS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_CDSS) >> BP_USDHC_PROT_CTRL_CDSS)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_CDSS.
|
|
#define BF_USDHC_PROT_CTRL_CDSS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_CDSS) & BM_USDHC_PROT_CTRL_CDSS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CDSS field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_CDSS(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_CDSS) | BF_USDHC_PROT_CTRL_CDSS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field DMASEL[9:8] (RW)
|
|
*
|
|
* DMA Select: This field is valid while DMA (SDMA or ADMA) is enabled and selects the DMA
|
|
* operation.
|
|
*
|
|
* Values:
|
|
* - 00 - No DMA or Simple DMA is selected
|
|
* - 01 - ADMA1 is selected
|
|
* - 10 - ADMA2 is selected
|
|
* - 11 - reserved
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_DMASEL (8) //!< Bit position for USDHC_PROT_CTRL_DMASEL.
|
|
#define BM_USDHC_PROT_CTRL_DMASEL (0x00000300) //!< Bit mask for USDHC_PROT_CTRL_DMASEL.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_DMASEL from a register value.
|
|
#define BG_USDHC_PROT_CTRL_DMASEL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_DMASEL) >> BP_USDHC_PROT_CTRL_DMASEL)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_DMASEL.
|
|
#define BF_USDHC_PROT_CTRL_DMASEL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_DMASEL) & BM_USDHC_PROT_CTRL_DMASEL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DMASEL field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_DMASEL(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_DMASEL) | BF_USDHC_PROT_CTRL_DMASEL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field SABGREQ[16] (RW)
|
|
*
|
|
* Stop At Block Gap Request: This bit is used to stop executing a transaction at the next block gap
|
|
* for both DMA and non-DMA transfers. Until the Transfer Complete is set to 1, indicating a
|
|
* transfer completion, the Host Driver shall leave this bit set to 1. Clearing both the Stop At
|
|
* Block Gap Request and Continue Request does not cause the transaction to restart. Read Wait is
|
|
* used to stop the read transaction at the block gap. The uSDHC will honor the Stop At Block Gap
|
|
* Request for write transfers, but for read transfers it requires that the SDIO card support Read
|
|
* Wait. Therefore, the Host Driver shall not set this bit during read transfers unless the SDIO
|
|
* card supports Read Wait and has set the Read Wait Control to 1, otherwise the uSDHC will stop the
|
|
* SD bus clock to pause the read operation during block gap. In the case of write transfers in
|
|
* which the Host Driver writes data to the Data Port register, the Host Driver shall set this bit
|
|
* after all block data is written. If this bit is set to 1, the Host Driver shall not write data to
|
|
* the Data Port register after a block is sent. Once this bit is set, the Host Driver shall not
|
|
* clear this bit before the Transfer Complete bit in Interrupt Status Register is set, otherwise
|
|
* the uSDHCs behavior is undefined. This bit effects Read Transfer Active, Write Transfer Active,
|
|
* DAT Line Active and Command Inhibit (DAT) in the Present State register.
|
|
*
|
|
* Values:
|
|
* - 0 - Transfer
|
|
* - 1 - Stop
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_SABGREQ (16) //!< Bit position for USDHC_PROT_CTRL_SABGREQ.
|
|
#define BM_USDHC_PROT_CTRL_SABGREQ (0x00010000) //!< Bit mask for USDHC_PROT_CTRL_SABGREQ.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_SABGREQ from a register value.
|
|
#define BG_USDHC_PROT_CTRL_SABGREQ(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_SABGREQ) >> BP_USDHC_PROT_CTRL_SABGREQ)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_SABGREQ.
|
|
#define BF_USDHC_PROT_CTRL_SABGREQ(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_SABGREQ) & BM_USDHC_PROT_CTRL_SABGREQ)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SABGREQ field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_SABGREQ(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_SABGREQ) | BF_USDHC_PROT_CTRL_SABGREQ(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field CREQ[17] (RW)
|
|
*
|
|
* Continue Request: This bit is used to restart a transaction which was stopped using the Stop At
|
|
* Block Gap Request. When a Suspend operation is not accepted by the card, it is also by setting
|
|
* this bit to restart the paused transfer. To cancel stop at the block gap, set Stop At Block Gap
|
|
* Request to 0 and set this bit to 1 to restart the transfer. The uSDHC automatically clears this
|
|
* bit, therefore it is not necessary for the Host Driver to set this bit to 0. If both Stop At
|
|
* Block Gap Request and this bit are 1, the continue request is ignored.
|
|
*
|
|
* Values:
|
|
* - 0 - No effect
|
|
* - 1 - Restart
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_CREQ (17) //!< Bit position for USDHC_PROT_CTRL_CREQ.
|
|
#define BM_USDHC_PROT_CTRL_CREQ (0x00020000) //!< Bit mask for USDHC_PROT_CTRL_CREQ.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_CREQ from a register value.
|
|
#define BG_USDHC_PROT_CTRL_CREQ(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_CREQ) >> BP_USDHC_PROT_CTRL_CREQ)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_CREQ.
|
|
#define BF_USDHC_PROT_CTRL_CREQ(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_CREQ) & BM_USDHC_PROT_CTRL_CREQ)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CREQ field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_CREQ(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_CREQ) | BF_USDHC_PROT_CTRL_CREQ(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field RWCTL[18] (RW)
|
|
*
|
|
* Read Wait Control: The read wait function is optional for SDIO cards. If the card supports read
|
|
* wait, set this bit to enable use of the read wait protocol to stop read data using the DAT[2]
|
|
* line. Otherwise the uSDHC has to stop the SD Clock to hold read data, which restricts commands
|
|
* generation. When the Host Driver detects an SDIO card insertion, it shall set this bit according
|
|
* to the CCCR of the card. If the card does not support read wait, this bit shall never be set to
|
|
* 1, otherwise DAT line conflicts may occur. If this bit is set to 0, stop at block gap during read
|
|
* operation is also supported, but the uSDHC will stop the SD Clock to pause reading operation.
|
|
*
|
|
* Values:
|
|
* - 0 - Disable Read Wait Control, and stop SD Clock at block gap when SABGREQ bit is set
|
|
* - 1 - Enable Read Wait Control, and assert Read Wait without stopping SD Clock at block gap when SABGREQ
|
|
* bit is set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_RWCTL (18) //!< Bit position for USDHC_PROT_CTRL_RWCTL.
|
|
#define BM_USDHC_PROT_CTRL_RWCTL (0x00040000) //!< Bit mask for USDHC_PROT_CTRL_RWCTL.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_RWCTL from a register value.
|
|
#define BG_USDHC_PROT_CTRL_RWCTL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_RWCTL) >> BP_USDHC_PROT_CTRL_RWCTL)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_RWCTL.
|
|
#define BF_USDHC_PROT_CTRL_RWCTL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_RWCTL) & BM_USDHC_PROT_CTRL_RWCTL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RWCTL field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_RWCTL(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_RWCTL) | BF_USDHC_PROT_CTRL_RWCTL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field IABG[19] (RW)
|
|
*
|
|
* Interrupt At Block Gap: This bit is valid only in 4-bit mode, of the SDIO card, and selects a
|
|
* sample point in the interrupt cycle. Setting to 1 enables interrupt detection at the block gap
|
|
* for a multiple block transfer. Setting to 0 disables interrupt detection during a multiple block
|
|
* transfer. If the SDIO card can't signal an interrupt during a multiple block transfer, this bit
|
|
* should be set to 0 to avoid an inadvertent interrupt. When the Host Driver detects an SDIO card
|
|
* insertion, it shall set this bit according to the CCCR of the card.
|
|
*
|
|
* Values:
|
|
* - 0 - Disabled
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_IABG (19) //!< Bit position for USDHC_PROT_CTRL_IABG.
|
|
#define BM_USDHC_PROT_CTRL_IABG (0x00080000) //!< Bit mask for USDHC_PROT_CTRL_IABG.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_IABG from a register value.
|
|
#define BG_USDHC_PROT_CTRL_IABG(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_IABG) >> BP_USDHC_PROT_CTRL_IABG)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_IABG.
|
|
#define BF_USDHC_PROT_CTRL_IABG(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_IABG) & BM_USDHC_PROT_CTRL_IABG)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the IABG field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_IABG(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_IABG) | BF_USDHC_PROT_CTRL_IABG(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field RD_DONE_NO_8CLK[20] (RW)
|
|
*
|
|
* Read done no 8 clock: According to the SD/MMC spec, for read data transaction, 8 clocks are
|
|
* needed after the end bit of the last data block. So, by default(RD_DONE_NO_8CLK=0), 8 clocks will
|
|
* be active after the end bit of the last read data transaction. However, this 8 clocks should not
|
|
* be active if user wants to use stop at block gap(include the auto stop at block gap in boot mode)
|
|
* feature for read and the RWCTL bit(bit18) is not enabled. In this case, software should set
|
|
* RD_DONE_NO_8CLK to avoid this 8 clocks. Otherwise, the device may send extra data to uSDHC while
|
|
* uSDHC ignores these data. In a summary, this bit should be set only if the use case needs to use
|
|
* stop at block gap feature while the device can't support the read wait feature.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_RD_DONE_NO_8CLK (20) //!< Bit position for USDHC_PROT_CTRL_RD_DONE_NO_8CLK.
|
|
#define BM_USDHC_PROT_CTRL_RD_DONE_NO_8CLK (0x00100000) //!< Bit mask for USDHC_PROT_CTRL_RD_DONE_NO_8CLK.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_RD_DONE_NO_8CLK from a register value.
|
|
#define BG_USDHC_PROT_CTRL_RD_DONE_NO_8CLK(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_RD_DONE_NO_8CLK) >> BP_USDHC_PROT_CTRL_RD_DONE_NO_8CLK)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_RD_DONE_NO_8CLK.
|
|
#define BF_USDHC_PROT_CTRL_RD_DONE_NO_8CLK(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_RD_DONE_NO_8CLK) & BM_USDHC_PROT_CTRL_RD_DONE_NO_8CLK)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RD_DONE_NO_8CLK field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_RD_DONE_NO_8CLK(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_RD_DONE_NO_8CLK) | BF_USDHC_PROT_CTRL_RD_DONE_NO_8CLK(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field WECINT[24] (RW)
|
|
*
|
|
* Wakeup Event Enable On Card Interrupt: This bit enables a wakeup event, via a Card Interrupt, in
|
|
* the Interrupt Status register. This bit can be set to 1 if FN_WUS (Wake Up Support) in CIS is set
|
|
* to 1. When this bit is set, the Card Interrupt Status and the uSDHC interrupt can be asserted
|
|
* without CLK toggling. When the wakeup feature is not enabled, the CLK must be active in order to
|
|
* assert the Card Interrupt Status and the uSDHC interrupt.
|
|
*
|
|
* Values:
|
|
* - 0 - Disable
|
|
* - 1 - Enable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_WECINT (24) //!< Bit position for USDHC_PROT_CTRL_WECINT.
|
|
#define BM_USDHC_PROT_CTRL_WECINT (0x01000000) //!< Bit mask for USDHC_PROT_CTRL_WECINT.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_WECINT from a register value.
|
|
#define BG_USDHC_PROT_CTRL_WECINT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_WECINT) >> BP_USDHC_PROT_CTRL_WECINT)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_WECINT.
|
|
#define BF_USDHC_PROT_CTRL_WECINT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_WECINT) & BM_USDHC_PROT_CTRL_WECINT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the WECINT field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_WECINT(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_WECINT) | BF_USDHC_PROT_CTRL_WECINT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field WECINS[25] (RW)
|
|
*
|
|
* Wakeup Event Enable On SD Card Insertion: This bit enables a wakeup event, via a Card Insertion,
|
|
* in the Interrupt Status register. FN_WUS (Wake Up Support) in CIS does not effect this bit. When
|
|
* this bit is set, the Card Insertion Status and the uSDHC interrupt can be asserted without CLK
|
|
* toggling. When the wakeup feature is not enabled, the CLK must be active in order to assert the
|
|
* Card Insertion Status and the uSDHC interrupt.
|
|
*
|
|
* Values:
|
|
* - 0 - Disable
|
|
* - 1 - Enable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_WECINS (25) //!< Bit position for USDHC_PROT_CTRL_WECINS.
|
|
#define BM_USDHC_PROT_CTRL_WECINS (0x02000000) //!< Bit mask for USDHC_PROT_CTRL_WECINS.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_WECINS from a register value.
|
|
#define BG_USDHC_PROT_CTRL_WECINS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_WECINS) >> BP_USDHC_PROT_CTRL_WECINS)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_WECINS.
|
|
#define BF_USDHC_PROT_CTRL_WECINS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_WECINS) & BM_USDHC_PROT_CTRL_WECINS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the WECINS field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_WECINS(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_WECINS) | BF_USDHC_PROT_CTRL_WECINS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field WECRM[26] (RW)
|
|
*
|
|
* Wakeup Event Enable On SD Card Removal: This bit enables a wakeup event, via a Card Removal, in
|
|
* the Interrupt Status register. FN_WUS (Wake Up Support) in CIS does not effect this bit. When
|
|
* this bit is set, the Card Removal Status and the uSDHC interrupt can be asserted without CLK
|
|
* toggling. When the wakeup feature is not enabled, the CLK must be active in order to assert the
|
|
* Card Removal Status and the uSDHC interrupt.
|
|
*
|
|
* Values:
|
|
* - 0 - Disable
|
|
* - 1 - Enable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_WECRM (26) //!< Bit position for USDHC_PROT_CTRL_WECRM.
|
|
#define BM_USDHC_PROT_CTRL_WECRM (0x04000000) //!< Bit mask for USDHC_PROT_CTRL_WECRM.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_WECRM from a register value.
|
|
#define BG_USDHC_PROT_CTRL_WECRM(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_WECRM) >> BP_USDHC_PROT_CTRL_WECRM)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_WECRM.
|
|
#define BF_USDHC_PROT_CTRL_WECRM(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_WECRM) & BM_USDHC_PROT_CTRL_WECRM)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the WECRM field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_WECRM(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_WECRM) | BF_USDHC_PROT_CTRL_WECRM(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field BURST_LEN_EN[29:27] (RW)
|
|
*
|
|
* BURST length enable for INCR, INCR4/INCR8/INCR16, INCR4-WRAP/INCR8-WRAP/INCR16-WRAP This is used
|
|
* to enable/disable the burst length for the external AHB2AXI bridge. It's useful especially for
|
|
* INCR transfer because without burst length indicator, the AHB2AXI bridge doesn't know the burst
|
|
* length in advance. Without burst length indicator, AHB INCR transfers can only be converted to
|
|
* SINGLEs on the AXI side.
|
|
*
|
|
* Values:
|
|
* - xx1 - Burst length is enabled for INCR
|
|
* - x1x - Burst length is enabled for INCR4/INCR8/INCR16
|
|
* - 1xx - Burst length is enabled for INCR4-WRAP/INCR8-WRAP/INCR16-WRAP
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_BURST_LEN_EN (27) //!< Bit position for USDHC_PROT_CTRL_BURST_LEN_EN.
|
|
#define BM_USDHC_PROT_CTRL_BURST_LEN_EN (0x38000000) //!< Bit mask for USDHC_PROT_CTRL_BURST_LEN_EN.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_BURST_LEN_EN from a register value.
|
|
#define BG_USDHC_PROT_CTRL_BURST_LEN_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_BURST_LEN_EN) >> BP_USDHC_PROT_CTRL_BURST_LEN_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_BURST_LEN_EN.
|
|
#define BF_USDHC_PROT_CTRL_BURST_LEN_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_BURST_LEN_EN) & BM_USDHC_PROT_CTRL_BURST_LEN_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BURST_LEN_EN field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_BURST_LEN_EN(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_BURST_LEN_EN) | BF_USDHC_PROT_CTRL_BURST_LEN_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_PROT_CTRL, field NON_EXACT_BLK_RD[30] (RW)
|
|
*
|
|
* Current block read is non-exact block read. It's only used for SDIO.
|
|
*
|
|
* Values:
|
|
* - 0 - The block read is exact block read. Host driver doesn't need to issue abort command to terminate
|
|
* this multi-block read.
|
|
* - 1 - The block read is non-exact block read. Host driver needs to issue abort command to terminate this
|
|
* multi-block read.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_PROT_CTRL_NON_EXACT_BLK_RD (30) //!< Bit position for USDHC_PROT_CTRL_NON_EXACT_BLK_RD.
|
|
#define BM_USDHC_PROT_CTRL_NON_EXACT_BLK_RD (0x40000000) //!< Bit mask for USDHC_PROT_CTRL_NON_EXACT_BLK_RD.
|
|
|
|
//! @brief Get value of USDHC_PROT_CTRL_NON_EXACT_BLK_RD from a register value.
|
|
#define BG_USDHC_PROT_CTRL_NON_EXACT_BLK_RD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_PROT_CTRL_NON_EXACT_BLK_RD) >> BP_USDHC_PROT_CTRL_NON_EXACT_BLK_RD)
|
|
|
|
//! @brief Format value for bitfield USDHC_PROT_CTRL_NON_EXACT_BLK_RD.
|
|
#define BF_USDHC_PROT_CTRL_NON_EXACT_BLK_RD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_PROT_CTRL_NON_EXACT_BLK_RD) & BM_USDHC_PROT_CTRL_NON_EXACT_BLK_RD)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the NON_EXACT_BLK_RD field to a new value.
|
|
#define BW_USDHC_PROT_CTRL_NON_EXACT_BLK_RD(x, v) (HW_USDHC_PROT_CTRL_WR(x, (HW_USDHC_PROT_CTRL_RD(x) & ~BM_USDHC_PROT_CTRL_NON_EXACT_BLK_RD) | BF_USDHC_PROT_CTRL_NON_EXACT_BLK_RD(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_SYS_CTRL - System Control
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_SYS_CTRL - System Control (RW)
|
|
*
|
|
* Reset value: 0x0080800f
|
|
*/
|
|
typedef union _hw_usdhc_sys_ctrl
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_sys_ctrl_bitfields
|
|
{
|
|
unsigned RESERVED0 : 4; //!< [3:0] Reserved.
|
|
unsigned DVS : 4; //!< [7:4] Divisor:
|
|
unsigned SDCLKFS : 8; //!< [15:8] SDCLK Frequency Select:
|
|
unsigned DTOCV : 4; //!< [19:16] Data Timeout Counter Value:
|
|
unsigned RESERVED1 : 3; //!< [22:20] Reserved.
|
|
unsigned IPP_RST_N : 1; //!< [23] This register's value will be output to CARD from pad directly for hardware reset of the card if the card supports this feature.
|
|
unsigned RSTA : 1; //!< [24] Software Reset For ALL:
|
|
unsigned RSTC : 1; //!< [25] Software Reset For CMD Line:
|
|
unsigned RSTD : 1; //!< [26] Software Reset For DAT Line:
|
|
unsigned INITA : 1; //!< [27] Initialization Active:
|
|
unsigned RESERVED2 : 4; //!< [31:28] Reserved
|
|
} B;
|
|
} hw_usdhc_sys_ctrl_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_SYS_CTRL register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_SYS_CTRL_ADDR(x) (REGS_USDHC_BASE(x) + 0x2c)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_SYS_CTRL(x) (*(volatile hw_usdhc_sys_ctrl_t *) HW_USDHC_SYS_CTRL_ADDR(x))
|
|
#define HW_USDHC_SYS_CTRL_RD(x) (HW_USDHC_SYS_CTRL(x).U)
|
|
#define HW_USDHC_SYS_CTRL_WR(x, v) (HW_USDHC_SYS_CTRL(x).U = (v))
|
|
#define HW_USDHC_SYS_CTRL_SET(x, v) (HW_USDHC_SYS_CTRL_WR(x, HW_USDHC_SYS_CTRL_RD(x) | (v)))
|
|
#define HW_USDHC_SYS_CTRL_CLR(x, v) (HW_USDHC_SYS_CTRL_WR(x, HW_USDHC_SYS_CTRL_RD(x) & ~(v)))
|
|
#define HW_USDHC_SYS_CTRL_TOG(x, v) (HW_USDHC_SYS_CTRL_WR(x, HW_USDHC_SYS_CTRL_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_SYS_CTRL bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_SYS_CTRL, field DVS[7:4] (RW)
|
|
*
|
|
* Divisor: This register is used to provide a more exact divisor to generate the desired SD clock
|
|
* frequency. Note the divider can even support odd divisors without deterioration of duty cycle.
|
|
* Before changing clock divisor value(SDCLKFS or DVS), Host Driver should make sure the SDSTB bit
|
|
* is high. The setting are as following:
|
|
*
|
|
* Values:
|
|
* - 0000 - Divide-by-1
|
|
* - ....... -
|
|
* - 0001 - Divide-by-2
|
|
* - 1110 - Divide-by-15
|
|
* - 1111 - Divide-by-16
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_SYS_CTRL_DVS (4) //!< Bit position for USDHC_SYS_CTRL_DVS.
|
|
#define BM_USDHC_SYS_CTRL_DVS (0x000000f0) //!< Bit mask for USDHC_SYS_CTRL_DVS.
|
|
|
|
//! @brief Get value of USDHC_SYS_CTRL_DVS from a register value.
|
|
#define BG_USDHC_SYS_CTRL_DVS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_SYS_CTRL_DVS) >> BP_USDHC_SYS_CTRL_DVS)
|
|
|
|
//! @brief Format value for bitfield USDHC_SYS_CTRL_DVS.
|
|
#define BF_USDHC_SYS_CTRL_DVS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_SYS_CTRL_DVS) & BM_USDHC_SYS_CTRL_DVS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DVS field to a new value.
|
|
#define BW_USDHC_SYS_CTRL_DVS(x, v) (HW_USDHC_SYS_CTRL_WR(x, (HW_USDHC_SYS_CTRL_RD(x) & ~BM_USDHC_SYS_CTRL_DVS) | BF_USDHC_SYS_CTRL_DVS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_SYS_CTRL, field SDCLKFS[15:8] (RW)
|
|
*
|
|
* SDCLK Frequency Select: This register is used to select the frequency of the SDCLK pin. The
|
|
* frequency is not programmed directly, rather this register holds the prescaler (this register)
|
|
* and divisor (next register) of the Base Clock Frequency register. I n Single Data Rate
|
|
* mode(DDR_EN bit of MIXERCTRL is '0') Only the following settings are allowed: 80h) Base clock
|
|
* divided by 256 40h) Base clock divided by 128 20h) Base clock divided by 64 10h) Base clock
|
|
* divided by 32 08h) Base clock divided by 16 04h) Base clock divided by 8 02h) Base clock divided
|
|
* by 4 01h) Base clock divided by 2 00h) Base clock divided by 1 W hile in Dual Data Rate
|
|
* mode(DDR_EN bit of MIXERCTRL is '1') Only the following settings are allowed: 80h) Base clock
|
|
* divided by 512 40h) Base clock divided by 256 20h) Base clock divided by 128 10h) Base clock
|
|
* divided by 64 08h) Base clock divided by 32 04h) Base clock divided by 16 02h) Base clock divided
|
|
* by 8 01h) Base clock divided by 4 00h) Base clock divided by 2 W hen S/W changes the DDR_EN bit,
|
|
* SDCLKFS may need to be changed also ! In Single Data Rate mode, setting 00h bypasses the
|
|
* frequency prescaler of the SD Clock. Multiple bits must not be set, or the behavior of this
|
|
* prescaler is undefined. The two default divider values can be calculated by the frequency of
|
|
* ipg_perclk and the following Divisor bits. The frequency of SDCLK is set by the following
|
|
* formula: Clock Frequency = (Base Clock) / (prescaler x divisor) For example, in Single Data Rate
|
|
* mode, if the Base Clock Frequency is 96 MHz, and the target frequency is 25 MHz, then choosing
|
|
* the prescaler value of 01h and divisor value of 1h will yield 24 MHz, which is the nearest
|
|
* frequency less than or equal to the target. Similarly, to approach a clock value of 400 kHz, the
|
|
* prescaler value of 08h and divisor value of eh yields the exact clock value of 400 kHz. The reset
|
|
* value of this bit field is 80h, so if the input Base Clock (ipg_perclk) is about 96 MHz, the
|
|
* default SD Clock after reset is 375 kHz. According to the SD Physical Specification Version 1.1
|
|
* and the SDIO Card Specification Version 1.2, the maximum SD Clock frequency is 50 MHz and shall
|
|
* never exceed this limit. B efore changing clock divisor value(SDCLKFS or DVS), Host Driver should
|
|
* make sure the SDSTB bit is high. If setting SDCLKFS and DVS can generate same clock
|
|
* frequency,(For example, in SDR mode, SDCLKFS = 01h is same as DVS = 01h.) SDCLKFS is highly
|
|
* recommended.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_SYS_CTRL_SDCLKFS (8) //!< Bit position for USDHC_SYS_CTRL_SDCLKFS.
|
|
#define BM_USDHC_SYS_CTRL_SDCLKFS (0x0000ff00) //!< Bit mask for USDHC_SYS_CTRL_SDCLKFS.
|
|
|
|
//! @brief Get value of USDHC_SYS_CTRL_SDCLKFS from a register value.
|
|
#define BG_USDHC_SYS_CTRL_SDCLKFS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_SYS_CTRL_SDCLKFS) >> BP_USDHC_SYS_CTRL_SDCLKFS)
|
|
|
|
//! @brief Format value for bitfield USDHC_SYS_CTRL_SDCLKFS.
|
|
#define BF_USDHC_SYS_CTRL_SDCLKFS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_SYS_CTRL_SDCLKFS) & BM_USDHC_SYS_CTRL_SDCLKFS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SDCLKFS field to a new value.
|
|
#define BW_USDHC_SYS_CTRL_SDCLKFS(x, v) (HW_USDHC_SYS_CTRL_WR(x, (HW_USDHC_SYS_CTRL_RD(x) & ~BM_USDHC_SYS_CTRL_SDCLKFS) | BF_USDHC_SYS_CTRL_SDCLKFS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_SYS_CTRL, field DTOCV[19:16] (RW)
|
|
*
|
|
* Data Timeout Counter Value: This value determines the interval by which DAT line timeouts are
|
|
* detected. Refer to the Data Timeout Error bit in the Interrupt Status register for information on
|
|
* factors that dictate time-out generation. Time-out clock frequency will be generated by dividing
|
|
* the base clock SDCLK value by this value. The Host Driver can clear the Data Timeout Error Status
|
|
* Enable (in the Interrupt Status Enable register) to prevent inadvertent time-out events.
|
|
*
|
|
* Values:
|
|
* - 0000 - SDCLK x 2 1 3
|
|
* - 0001 - SDCLK x 2 14
|
|
* - 1110 - SDCLK x 2 2 7
|
|
* - 1111 - SDCLK x 2 28
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_SYS_CTRL_DTOCV (16) //!< Bit position for USDHC_SYS_CTRL_DTOCV.
|
|
#define BM_USDHC_SYS_CTRL_DTOCV (0x000f0000) //!< Bit mask for USDHC_SYS_CTRL_DTOCV.
|
|
|
|
//! @brief Get value of USDHC_SYS_CTRL_DTOCV from a register value.
|
|
#define BG_USDHC_SYS_CTRL_DTOCV(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_SYS_CTRL_DTOCV) >> BP_USDHC_SYS_CTRL_DTOCV)
|
|
|
|
//! @brief Format value for bitfield USDHC_SYS_CTRL_DTOCV.
|
|
#define BF_USDHC_SYS_CTRL_DTOCV(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_SYS_CTRL_DTOCV) & BM_USDHC_SYS_CTRL_DTOCV)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DTOCV field to a new value.
|
|
#define BW_USDHC_SYS_CTRL_DTOCV(x, v) (HW_USDHC_SYS_CTRL_WR(x, (HW_USDHC_SYS_CTRL_RD(x) & ~BM_USDHC_SYS_CTRL_DTOCV) | BF_USDHC_SYS_CTRL_DTOCV(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_SYS_CTRL, field IPP_RST_N[23] (RW)
|
|
*
|
|
* This register's value will be output to CARD from pad directly for hardware reset of the card if
|
|
* the card supports this feature.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_SYS_CTRL_IPP_RST_N (23) //!< Bit position for USDHC_SYS_CTRL_IPP_RST_N.
|
|
#define BM_USDHC_SYS_CTRL_IPP_RST_N (0x00800000) //!< Bit mask for USDHC_SYS_CTRL_IPP_RST_N.
|
|
|
|
//! @brief Get value of USDHC_SYS_CTRL_IPP_RST_N from a register value.
|
|
#define BG_USDHC_SYS_CTRL_IPP_RST_N(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_SYS_CTRL_IPP_RST_N) >> BP_USDHC_SYS_CTRL_IPP_RST_N)
|
|
|
|
//! @brief Format value for bitfield USDHC_SYS_CTRL_IPP_RST_N.
|
|
#define BF_USDHC_SYS_CTRL_IPP_RST_N(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_SYS_CTRL_IPP_RST_N) & BM_USDHC_SYS_CTRL_IPP_RST_N)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the IPP_RST_N field to a new value.
|
|
#define BW_USDHC_SYS_CTRL_IPP_RST_N(x, v) (HW_USDHC_SYS_CTRL_WR(x, (HW_USDHC_SYS_CTRL_RD(x) & ~BM_USDHC_SYS_CTRL_IPP_RST_N) | BF_USDHC_SYS_CTRL_IPP_RST_N(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_SYS_CTRL, field RSTA[24] (WORZ)
|
|
*
|
|
* Software Reset For ALL: This reset effects the entire Host Controller except for the card
|
|
* detection circuit. Register bits of type ROC, RW, RW1C, RWAC are cleared. During its
|
|
* initialization, the Host Driver shall set this bit to 1 to reset the uSDHC. The uSDHC shall reset
|
|
* this bit to 0 when the capabilities registers are valid and the Host Driver can read them.
|
|
* Additional use of Software Reset For All does not affect the value of the Capabilities registers.
|
|
* After this bit is set, it is recommended that the Host Driver reset the external card and re-
|
|
* initialize it.
|
|
*
|
|
* Values:
|
|
* - 0 - No Reset
|
|
* - 1 - Reset
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_SYS_CTRL_RSTA (24) //!< Bit position for USDHC_SYS_CTRL_RSTA.
|
|
#define BM_USDHC_SYS_CTRL_RSTA (0x01000000) //!< Bit mask for USDHC_SYS_CTRL_RSTA.
|
|
|
|
//! @brief Get value of USDHC_SYS_CTRL_RSTA from a register value.
|
|
#define BG_USDHC_SYS_CTRL_RSTA(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_SYS_CTRL_RSTA) >> BP_USDHC_SYS_CTRL_RSTA)
|
|
|
|
//! @brief Format value for bitfield USDHC_SYS_CTRL_RSTA.
|
|
#define BF_USDHC_SYS_CTRL_RSTA(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_SYS_CTRL_RSTA) & BM_USDHC_SYS_CTRL_RSTA)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_SYS_CTRL, field RSTC[25] (WORZ)
|
|
*
|
|
* Software Reset For CMD Line: Only part of the command circuit is reset. The following registers
|
|
* and bits are cleared by this bit: Present State register Command Inhibit (CMD) Interrupt Status
|
|
* register Command Complete
|
|
*
|
|
* Values:
|
|
* - 0 - No Reset
|
|
* - 1 - Reset
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_SYS_CTRL_RSTC (25) //!< Bit position for USDHC_SYS_CTRL_RSTC.
|
|
#define BM_USDHC_SYS_CTRL_RSTC (0x02000000) //!< Bit mask for USDHC_SYS_CTRL_RSTC.
|
|
|
|
//! @brief Get value of USDHC_SYS_CTRL_RSTC from a register value.
|
|
#define BG_USDHC_SYS_CTRL_RSTC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_SYS_CTRL_RSTC) >> BP_USDHC_SYS_CTRL_RSTC)
|
|
|
|
//! @brief Format value for bitfield USDHC_SYS_CTRL_RSTC.
|
|
#define BF_USDHC_SYS_CTRL_RSTC(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_SYS_CTRL_RSTC) & BM_USDHC_SYS_CTRL_RSTC)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_SYS_CTRL, field RSTD[26] (WORZ)
|
|
*
|
|
* Software Reset For DAT Line: Only part of the data circuit is reset. DMA circuit is also reset.
|
|
* The following registers and bits are cleared by this bit: Data Port register Buffer is cleared
|
|
* and initialized. Present State register Buffer Read Enable Buffer Write Enable Read Transfer
|
|
* Active Write Transfer Active DAT Line Active Command Inhibit (DAT) Protocol Control register
|
|
* Continue Request Stop At Block Gap Request Interrupt Status register Buffer Read Ready Buffer
|
|
* Write Ready DMA Interrupt Block Gap Event Transfer Complete
|
|
*
|
|
* Values:
|
|
* - 0 - No Reset
|
|
* - 1 - Reset
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_SYS_CTRL_RSTD (26) //!< Bit position for USDHC_SYS_CTRL_RSTD.
|
|
#define BM_USDHC_SYS_CTRL_RSTD (0x04000000) //!< Bit mask for USDHC_SYS_CTRL_RSTD.
|
|
|
|
//! @brief Get value of USDHC_SYS_CTRL_RSTD from a register value.
|
|
#define BG_USDHC_SYS_CTRL_RSTD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_SYS_CTRL_RSTD) >> BP_USDHC_SYS_CTRL_RSTD)
|
|
|
|
//! @brief Format value for bitfield USDHC_SYS_CTRL_RSTD.
|
|
#define BF_USDHC_SYS_CTRL_RSTD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_SYS_CTRL_RSTD) & BM_USDHC_SYS_CTRL_RSTD)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_SYS_CTRL, field INITA[27] (RW)
|
|
*
|
|
* Initialization Active: When this bit is set, 80 SD-Clocks are sent to the card. After the 80
|
|
* clocks are sent, this bit is self cleared. This bit is very useful during the card power-up
|
|
* period when 74 SD-Clocks are needed and the clock auto gating feature is enabled. Writing 1 to
|
|
* this bit when this bit is already 1 has no effect. Writing 0 to this bit at any time has no
|
|
* effect. When either of the CIHB and CDIHB bits in the Present State Register are set, writing 1
|
|
* to this bit is ignored (i.e. when command line or data lines are active, write to this bit is not
|
|
* allowed). On the otherhand, when this bit is set, i.e., during intialization active period, it is
|
|
* allowed to issue command, and the command bit stream will appear on the CMD pad after all 80
|
|
* clock cycles are done. So when this command ends, the driver can make sure the 80 clock cycles
|
|
* are sent out. This is very useful when the driver needs send 80 cycles to the card and does not
|
|
* want to wait till this bit is self cleared.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_SYS_CTRL_INITA (27) //!< Bit position for USDHC_SYS_CTRL_INITA.
|
|
#define BM_USDHC_SYS_CTRL_INITA (0x08000000) //!< Bit mask for USDHC_SYS_CTRL_INITA.
|
|
|
|
//! @brief Get value of USDHC_SYS_CTRL_INITA from a register value.
|
|
#define BG_USDHC_SYS_CTRL_INITA(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_SYS_CTRL_INITA) >> BP_USDHC_SYS_CTRL_INITA)
|
|
|
|
//! @brief Format value for bitfield USDHC_SYS_CTRL_INITA.
|
|
#define BF_USDHC_SYS_CTRL_INITA(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_SYS_CTRL_INITA) & BM_USDHC_SYS_CTRL_INITA)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the INITA field to a new value.
|
|
#define BW_USDHC_SYS_CTRL_INITA(x, v) (HW_USDHC_SYS_CTRL_WR(x, (HW_USDHC_SYS_CTRL_RD(x) & ~BM_USDHC_SYS_CTRL_INITA) | BF_USDHC_SYS_CTRL_INITA(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_INT_STATUS - Interrupt Status
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_INT_STATUS - Interrupt Status (W1C)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* An interrupt is generated when the Normal Interrupt Signal Enable is enabled and at least one of
|
|
* the status bits is set to 1. For all bits, writing 1 to a bit clears it; writing to 0 keeps the
|
|
* bit unchanged. More than one status can be cleared with a single register write. For Card
|
|
* Interrupt, before writing 1 to clear, it is required that the card stops asserting the interrupt,
|
|
* meaning that when the Card Driver services the interrupt condition, otherwise the CINT bit will
|
|
* be asserted again. The table below shows the relationship between the Command Timeout Error and
|
|
* the Command Complete. uSDHC Status for Command Timeout Error/Command Complete Bit Combinations
|
|
* Command Complete Command Timeout Error Meaning of the Status 0 0 X X 1 Response not received
|
|
* within 64 SDCLK cycles 1 0 Response received The table below shows the relationship between the
|
|
* Transfer Complete and the Data Timeout Error. uSDHC Status for Data Timeout Error/Transfer
|
|
* Complete Bit Combinations Transfer Complete Data Timeout Error Meaning of the Status 0 0 X 0 1
|
|
* Timeout occurred during transfer 1 X Data Transfer Complete The table below shows the
|
|
* relationship between the Command CRC Error and Command Timeout Error. uSDHC Status for Command
|
|
* CRC Error/Command Timeout Error Bit Combinations Command Complete Command Timeout Error Meaning
|
|
* of the Status 0 0 No error 0 1 Response Timeout Error 1 0 Response CRC Error 1 1 CMD line
|
|
* conflict
|
|
*/
|
|
typedef union _hw_usdhc_int_status
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_int_status_bitfields
|
|
{
|
|
unsigned CC : 1; //!< [0] Command Complete:
|
|
unsigned TC : 1; //!< [1] Transfer Complete:
|
|
unsigned BGE : 1; //!< [2] Block Gap Event:
|
|
unsigned DINT : 1; //!< [3] DMA Interrupt:
|
|
unsigned BWR : 1; //!< [4] Buffer Write Ready:
|
|
unsigned BRR : 1; //!< [5] Buffer Read Ready:
|
|
unsigned CINS : 1; //!< [6] Card Insertion:
|
|
unsigned CRM : 1; //!< [7] Card Removal:
|
|
unsigned CINT : 1; //!< [8] Card Interrupt:
|
|
unsigned RESERVED0 : 3; //!< [11:9] Reserved
|
|
unsigned RTE : 1; //!< [12] Re-Tuning Event: (only for SD3.0 SDR104 mode)
|
|
unsigned RESERVED1 : 1; //!< [13] Reserved
|
|
unsigned TP : 1; //!< [14] Tuning Pass:(only for SD3.0 SDR104 mode)
|
|
unsigned RESERVED2 : 1; //!< [15] Reserved
|
|
unsigned CTOE : 1; //!< [16] Command Timeout Error:
|
|
unsigned CCE : 1; //!< [17] Command CRC Error:
|
|
unsigned CEBE : 1; //!< [18] Command End Bit Error:
|
|
unsigned CIE : 1; //!< [19] Command Index Error:
|
|
unsigned DTOE : 1; //!< [20] Data Timeout Error:
|
|
unsigned DCE : 1; //!< [21] Data CRC Error:
|
|
unsigned DEBE : 1; //!< [22] Data End Bit Error:
|
|
unsigned RESERVED3 : 1; //!< [23] Reserved
|
|
unsigned AC12E : 1; //!< [24] Auto CMD12 Error:
|
|
unsigned RESERVED4 : 1; //!< [25] Reserved
|
|
unsigned TNE : 1; //!< [26] Tuning Error: (only for SD3.0 SDR104 mode)
|
|
unsigned RESERVED5 : 1; //!< [27] Reserved
|
|
unsigned DMAE : 1; //!< [28] DMA Error:
|
|
unsigned RESERVED6 : 3; //!< [31:29] Reserved
|
|
} B;
|
|
} hw_usdhc_int_status_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_INT_STATUS register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_INT_STATUS_ADDR(x) (REGS_USDHC_BASE(x) + 0x30)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_INT_STATUS(x) (*(volatile hw_usdhc_int_status_t *) HW_USDHC_INT_STATUS_ADDR(x))
|
|
#define HW_USDHC_INT_STATUS_RD(x) (HW_USDHC_INT_STATUS(x).U)
|
|
#define HW_USDHC_INT_STATUS_WR(x, v) (HW_USDHC_INT_STATUS(x).U = (v))
|
|
#define HW_USDHC_INT_STATUS_SET(x, v) (HW_USDHC_INT_STATUS_WR(x, HW_USDHC_INT_STATUS_RD(x) | (v)))
|
|
#define HW_USDHC_INT_STATUS_CLR(x, v) (HW_USDHC_INT_STATUS_WR(x, HW_USDHC_INT_STATUS_RD(x) & ~(v)))
|
|
#define HW_USDHC_INT_STATUS_TOG(x, v) (HW_USDHC_INT_STATUS_WR(x, HW_USDHC_INT_STATUS_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_INT_STATUS bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field CC[0] (W1C)
|
|
*
|
|
* Command Complete: This bit is set when you receive the end bit of the command response (except
|
|
* Auto CMD12). Refer to the Command Inhibit (CMD) in the Present State register.
|
|
*
|
|
* Values:
|
|
* - 0 - Command not complete
|
|
* - 1 - Command complete
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_CC (0) //!< Bit position for USDHC_INT_STATUS_CC.
|
|
#define BM_USDHC_INT_STATUS_CC (0x00000001) //!< Bit mask for USDHC_INT_STATUS_CC.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_CC from a register value.
|
|
#define BG_USDHC_INT_STATUS_CC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_CC) >> BP_USDHC_INT_STATUS_CC)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_CC.
|
|
#define BF_USDHC_INT_STATUS_CC(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_CC) & BM_USDHC_INT_STATUS_CC)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CC field to a new value.
|
|
#define BW_USDHC_INT_STATUS_CC(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_CC) | BF_USDHC_INT_STATUS_CC(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field TC[1] (W1C)
|
|
*
|
|
* Transfer Complete: This bit is set when a read or write transfer is completed. In the case of a
|
|
* Read Transaction: This bit is set at the falling edge of the Read Transfer Active Status. There
|
|
* are two cases in which this interrupt is generated. The first is when a data transfer is
|
|
* completed as specified by the data length (after the last data has been read to the Host System).
|
|
* The second is when data has stopped at the block gap and completed the data transfer by setting
|
|
* the Stop At Block Gap Request bit in the Protocol Control register (after valid data has been
|
|
* read to the Host System). In the case of a Write Transaction: This bit is set at the falling edge
|
|
* of the DAT Line Active Status. There are two cases in which this interrupt is generated. The
|
|
* first is when the last data is written to the SD card as specified by the data length and the
|
|
* busy signal is released. The second is when data transfers are stopped at the block gap, by
|
|
* setting the Stop At Block Gap Request bit in the Protocol Control register, and the data
|
|
* transfers are completed. (after valid data is written to the SD card and the busy signal
|
|
* released).
|
|
*
|
|
* Values:
|
|
* - 0 - Transfer not complete
|
|
* - 1 - Transfer complete
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_TC (1) //!< Bit position for USDHC_INT_STATUS_TC.
|
|
#define BM_USDHC_INT_STATUS_TC (0x00000002) //!< Bit mask for USDHC_INT_STATUS_TC.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_TC from a register value.
|
|
#define BG_USDHC_INT_STATUS_TC(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_TC) >> BP_USDHC_INT_STATUS_TC)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_TC.
|
|
#define BF_USDHC_INT_STATUS_TC(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_TC) & BM_USDHC_INT_STATUS_TC)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TC field to a new value.
|
|
#define BW_USDHC_INT_STATUS_TC(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_TC) | BF_USDHC_INT_STATUS_TC(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field BGE[2] (W1C)
|
|
*
|
|
* Block Gap Event: If the Stop At Block Gap Request bit in the Protocol Control register is set,
|
|
* this bit is set when a read or write transaction is stopped at a block gap. If Stop At Block Gap
|
|
* Request is not set to 1, this bit is not set to 1. In the case of a Read Transaction: This bit is
|
|
* set at the falling edge of the DAT Line Active Status (When the transaction is stopped at SD Bus
|
|
* timing). The Read Wait must be supported in order to use this function. In the case of Write
|
|
* Transaction: This bit is set at the falling edge of Write Transfer Active Status (After getting
|
|
* CRC status at SD Bus timing).
|
|
*
|
|
* Values:
|
|
* - 0 - No block gap event
|
|
* - 1 - Transaction stopped at block gap
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_BGE (2) //!< Bit position for USDHC_INT_STATUS_BGE.
|
|
#define BM_USDHC_INT_STATUS_BGE (0x00000004) //!< Bit mask for USDHC_INT_STATUS_BGE.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_BGE from a register value.
|
|
#define BG_USDHC_INT_STATUS_BGE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_BGE) >> BP_USDHC_INT_STATUS_BGE)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_BGE.
|
|
#define BF_USDHC_INT_STATUS_BGE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_BGE) & BM_USDHC_INT_STATUS_BGE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BGE field to a new value.
|
|
#define BW_USDHC_INT_STATUS_BGE(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_BGE) | BF_USDHC_INT_STATUS_BGE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field DINT[3] (W1C)
|
|
*
|
|
* DMA Interrupt: Occurs only when the internal DMA finishes the data transfer successfully.
|
|
* Whenever errors occur during data transfer, this bit will not be set. Instead, the DMAE bit will
|
|
* be set. Either Simple DMA or ADMA finishes data transferring, this bit will be set.
|
|
*
|
|
* Values:
|
|
* - 0 - No DMA Interrupt
|
|
* - 1 - DMA Interrupt is generated
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_DINT (3) //!< Bit position for USDHC_INT_STATUS_DINT.
|
|
#define BM_USDHC_INT_STATUS_DINT (0x00000008) //!< Bit mask for USDHC_INT_STATUS_DINT.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_DINT from a register value.
|
|
#define BG_USDHC_INT_STATUS_DINT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_DINT) >> BP_USDHC_INT_STATUS_DINT)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_DINT.
|
|
#define BF_USDHC_INT_STATUS_DINT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_DINT) & BM_USDHC_INT_STATUS_DINT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DINT field to a new value.
|
|
#define BW_USDHC_INT_STATUS_DINT(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_DINT) | BF_USDHC_INT_STATUS_DINT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field BWR[4] (W1C)
|
|
*
|
|
* Buffer Write Ready: This status bit is set if the Buffer Write Enable bit, in the Present State
|
|
* register, changes from 0 to 1. Refer to the Buffer Write Enable bit in the Present State register
|
|
* for additional information.
|
|
*
|
|
* Values:
|
|
* - 0 - Not ready to write buffer
|
|
* - 1 - Ready to write buffer:
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_BWR (4) //!< Bit position for USDHC_INT_STATUS_BWR.
|
|
#define BM_USDHC_INT_STATUS_BWR (0x00000010) //!< Bit mask for USDHC_INT_STATUS_BWR.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_BWR from a register value.
|
|
#define BG_USDHC_INT_STATUS_BWR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_BWR) >> BP_USDHC_INT_STATUS_BWR)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_BWR.
|
|
#define BF_USDHC_INT_STATUS_BWR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_BWR) & BM_USDHC_INT_STATUS_BWR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BWR field to a new value.
|
|
#define BW_USDHC_INT_STATUS_BWR(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_BWR) | BF_USDHC_INT_STATUS_BWR(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field BRR[5] (W1C)
|
|
*
|
|
* Buffer Read Ready: This status bit is set if the Buffer Read Enable bit, in the Present State
|
|
* register, changes from 0 to 1. Refer to the Buffer Read Enable bit in the Present State register
|
|
* for additional information.
|
|
*
|
|
* Values:
|
|
* - 0 - Not ready to read buffer
|
|
* - 1 - Ready to read buffer
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_BRR (5) //!< Bit position for USDHC_INT_STATUS_BRR.
|
|
#define BM_USDHC_INT_STATUS_BRR (0x00000020) //!< Bit mask for USDHC_INT_STATUS_BRR.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_BRR from a register value.
|
|
#define BG_USDHC_INT_STATUS_BRR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_BRR) >> BP_USDHC_INT_STATUS_BRR)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_BRR.
|
|
#define BF_USDHC_INT_STATUS_BRR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_BRR) & BM_USDHC_INT_STATUS_BRR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BRR field to a new value.
|
|
#define BW_USDHC_INT_STATUS_BRR(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_BRR) | BF_USDHC_INT_STATUS_BRR(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field CINS[6] (W1C)
|
|
*
|
|
* Card Insertion: This status bit is set if the Card Inserted bit in the Present State register
|
|
* changes from 0 to 1. When the Host Driver writes this bit to 1 to clear this status, the status
|
|
* of the Card Inserted in the Present State register should be confirmed. Because the card state
|
|
* may possibly be changed when the Host Driver clears this bit and the interrupt event may not be
|
|
* generated. When this bit is cleared, it will be set again if a card is inserted. In order to
|
|
* leave it cleared, clear the Card Inserted Status Enable bit in Interrupt Status Enable register.
|
|
*
|
|
* Values:
|
|
* - 0 - Card state unstable or removed
|
|
* - 1 - Card inserted
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_CINS (6) //!< Bit position for USDHC_INT_STATUS_CINS.
|
|
#define BM_USDHC_INT_STATUS_CINS (0x00000040) //!< Bit mask for USDHC_INT_STATUS_CINS.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_CINS from a register value.
|
|
#define BG_USDHC_INT_STATUS_CINS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_CINS) >> BP_USDHC_INT_STATUS_CINS)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_CINS.
|
|
#define BF_USDHC_INT_STATUS_CINS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_CINS) & BM_USDHC_INT_STATUS_CINS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CINS field to a new value.
|
|
#define BW_USDHC_INT_STATUS_CINS(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_CINS) | BF_USDHC_INT_STATUS_CINS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field CRM[7] (W1C)
|
|
*
|
|
* Card Removal: This status bit is set if the Card Inserted bit in the Present State register
|
|
* changes from 1 to 0. When the Host Driver writes this bit to 1 to clear this status, the status
|
|
* of the Card Inserted in the Present State register should be confirmed. Because the card state
|
|
* may possibly be changed when the Host Driver clears this bit and the interrupt event may not be
|
|
* generated. When this bit is cleared, it will be set again if no card is inserted. In order to
|
|
* leave it cleared, clear the Card Removal Status Enable bit in Interrupt Status Enable register.
|
|
*
|
|
* Values:
|
|
* - 0 - Card state unstable or inserted
|
|
* - 1 - Card removed
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_CRM (7) //!< Bit position for USDHC_INT_STATUS_CRM.
|
|
#define BM_USDHC_INT_STATUS_CRM (0x00000080) //!< Bit mask for USDHC_INT_STATUS_CRM.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_CRM from a register value.
|
|
#define BG_USDHC_INT_STATUS_CRM(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_CRM) >> BP_USDHC_INT_STATUS_CRM)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_CRM.
|
|
#define BF_USDHC_INT_STATUS_CRM(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_CRM) & BM_USDHC_INT_STATUS_CRM)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CRM field to a new value.
|
|
#define BW_USDHC_INT_STATUS_CRM(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_CRM) | BF_USDHC_INT_STATUS_CRM(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field CINT[8] (W1C)
|
|
*
|
|
* Card Interrupt: This status bit is set when an interrupt signal is detected from the external
|
|
* card. In 1-bit mode, the uSDHC will detect the Card Interrupt without the SD Clock to support
|
|
* wakeup. In 4-bit mode, the card interrupt signal is sampled during the interrupt cycle, so the
|
|
* interrupt from card can only be sampled during interrupt cycle, introducing some delay between
|
|
* the interrupt signal from the SDIO card and the interrupt to the Host System. Writing this bit to
|
|
* 1 can clear this bit, but as the interrupt source from the SDIO card does not clear, this bit is
|
|
* set again. In order to clear this bit, it is required to reset the interrupt source from the
|
|
* external card followed by a writing 1 to this bit. When this status has been set, and the Host
|
|
* Driver needs to service this interrupt, the Card Interrupt Signal Enable in the Interrupt Signal
|
|
* Enable register should be 0 to stop driving the interrupt signal to the Host System. After
|
|
* completion of the card interrupt service (It should reset the interrupt sources in the SDIO card
|
|
* and the interrupt signal may not be asserted), write 1 to clear this bit, set the Card Interrupt
|
|
* Signal Enable to 1, and start sampling the interrupt signal again.
|
|
*
|
|
* Values:
|
|
* - 0 - No Card Interrupt
|
|
* - 1 - Generate Card Interrupt
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_CINT (8) //!< Bit position for USDHC_INT_STATUS_CINT.
|
|
#define BM_USDHC_INT_STATUS_CINT (0x00000100) //!< Bit mask for USDHC_INT_STATUS_CINT.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_CINT from a register value.
|
|
#define BG_USDHC_INT_STATUS_CINT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_CINT) >> BP_USDHC_INT_STATUS_CINT)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_CINT.
|
|
#define BF_USDHC_INT_STATUS_CINT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_CINT) & BM_USDHC_INT_STATUS_CINT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CINT field to a new value.
|
|
#define BW_USDHC_INT_STATUS_CINT(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_CINT) | BF_USDHC_INT_STATUS_CINT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field RTE[12] (W1C)
|
|
*
|
|
* Re-Tuning Event: (only for SD3.0 SDR104 mode) This status is set if Re-Tuning Request in the
|
|
* Present State register changes from 0 to 1. Host Controller requests Host Driver to perform re-
|
|
* tuning for next data transfer. Current data transfer (not large block count) can be completed
|
|
* without re-tuning.
|
|
*
|
|
* Values:
|
|
* - 0 - Re-Tuning is not required
|
|
* - 1 - Re-Tuning should be performed
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_RTE (12) //!< Bit position for USDHC_INT_STATUS_RTE.
|
|
#define BM_USDHC_INT_STATUS_RTE (0x00001000) //!< Bit mask for USDHC_INT_STATUS_RTE.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_RTE from a register value.
|
|
#define BG_USDHC_INT_STATUS_RTE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_RTE) >> BP_USDHC_INT_STATUS_RTE)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_RTE.
|
|
#define BF_USDHC_INT_STATUS_RTE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_RTE) & BM_USDHC_INT_STATUS_RTE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RTE field to a new value.
|
|
#define BW_USDHC_INT_STATUS_RTE(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_RTE) | BF_USDHC_INT_STATUS_RTE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field TP[14] (W1C)
|
|
*
|
|
* Tuning Pass:(only for SD3.0 SDR104 mode) Current CMD19 transfer is done successfully. That is,
|
|
* current sampling point is correct.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_TP (14) //!< Bit position for USDHC_INT_STATUS_TP.
|
|
#define BM_USDHC_INT_STATUS_TP (0x00004000) //!< Bit mask for USDHC_INT_STATUS_TP.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_TP from a register value.
|
|
#define BG_USDHC_INT_STATUS_TP(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_TP) >> BP_USDHC_INT_STATUS_TP)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_TP.
|
|
#define BF_USDHC_INT_STATUS_TP(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_TP) & BM_USDHC_INT_STATUS_TP)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TP field to a new value.
|
|
#define BW_USDHC_INT_STATUS_TP(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_TP) | BF_USDHC_INT_STATUS_TP(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field CTOE[16] (W1C)
|
|
*
|
|
* Command Timeout Error: Occurs only if no response is returned within 64 SDCLK cycles from the end
|
|
* bit of the command. If the uSDHC detects a CMD line conflict, in which case a Command CRC Error
|
|
* shall also be set (as shown in ), this bit shall be set without waiting for 64 SDCLK cycles. This
|
|
* is because the command will be aborted by the uSDHC.
|
|
*
|
|
* Values:
|
|
* - 0 - No Error
|
|
* - 1 - Time out
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_CTOE (16) //!< Bit position for USDHC_INT_STATUS_CTOE.
|
|
#define BM_USDHC_INT_STATUS_CTOE (0x00010000) //!< Bit mask for USDHC_INT_STATUS_CTOE.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_CTOE from a register value.
|
|
#define BG_USDHC_INT_STATUS_CTOE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_CTOE) >> BP_USDHC_INT_STATUS_CTOE)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_CTOE.
|
|
#define BF_USDHC_INT_STATUS_CTOE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_CTOE) & BM_USDHC_INT_STATUS_CTOE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CTOE field to a new value.
|
|
#define BW_USDHC_INT_STATUS_CTOE(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_CTOE) | BF_USDHC_INT_STATUS_CTOE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field CCE[17] (W1C)
|
|
*
|
|
* Command CRC Error: Command CRC Error is generated in two cases. If a response is returned and the
|
|
* Command Timeout Error is set to 0 (indicating no time-out), this bit is set when detecting a CRC
|
|
* error in the command response. The uSDHC detects a CMD line conflict by monitoring the CMD line
|
|
* when a command is issued. If the uSDHC drives the CMD line to 1, but detects 0 on the CMD line at
|
|
* the next SDCLK edge, then the uSDHC shall abort the command (Stop driving CMD line) and set this
|
|
* bit to 1. The Command Timeout Error shall also be set to 1 to distinguish CMD line conflict.
|
|
*
|
|
* Values:
|
|
* - 0 - No Error
|
|
* - 1 - CRC Error Generated.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_CCE (17) //!< Bit position for USDHC_INT_STATUS_CCE.
|
|
#define BM_USDHC_INT_STATUS_CCE (0x00020000) //!< Bit mask for USDHC_INT_STATUS_CCE.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_CCE from a register value.
|
|
#define BG_USDHC_INT_STATUS_CCE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_CCE) >> BP_USDHC_INT_STATUS_CCE)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_CCE.
|
|
#define BF_USDHC_INT_STATUS_CCE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_CCE) & BM_USDHC_INT_STATUS_CCE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CCE field to a new value.
|
|
#define BW_USDHC_INT_STATUS_CCE(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_CCE) | BF_USDHC_INT_STATUS_CCE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field CEBE[18] (W1C)
|
|
*
|
|
* Command End Bit Error: Occurs when detecting that the end bit of a command response is 0.
|
|
*
|
|
* Values:
|
|
* - 0 - No Error
|
|
* - 1 - End Bit Error Generated
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_CEBE (18) //!< Bit position for USDHC_INT_STATUS_CEBE.
|
|
#define BM_USDHC_INT_STATUS_CEBE (0x00040000) //!< Bit mask for USDHC_INT_STATUS_CEBE.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_CEBE from a register value.
|
|
#define BG_USDHC_INT_STATUS_CEBE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_CEBE) >> BP_USDHC_INT_STATUS_CEBE)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_CEBE.
|
|
#define BF_USDHC_INT_STATUS_CEBE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_CEBE) & BM_USDHC_INT_STATUS_CEBE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CEBE field to a new value.
|
|
#define BW_USDHC_INT_STATUS_CEBE(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_CEBE) | BF_USDHC_INT_STATUS_CEBE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field CIE[19] (W1C)
|
|
*
|
|
* Command Index Error: Occurs if a Command Index error occurs in the command response.
|
|
*
|
|
* Values:
|
|
* - 0 - No Error
|
|
* - 1 - Error
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_CIE (19) //!< Bit position for USDHC_INT_STATUS_CIE.
|
|
#define BM_USDHC_INT_STATUS_CIE (0x00080000) //!< Bit mask for USDHC_INT_STATUS_CIE.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_CIE from a register value.
|
|
#define BG_USDHC_INT_STATUS_CIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_CIE) >> BP_USDHC_INT_STATUS_CIE)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_CIE.
|
|
#define BF_USDHC_INT_STATUS_CIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_CIE) & BM_USDHC_INT_STATUS_CIE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CIE field to a new value.
|
|
#define BW_USDHC_INT_STATUS_CIE(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_CIE) | BF_USDHC_INT_STATUS_CIE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field DTOE[20] (W1C)
|
|
*
|
|
* Data Timeout Error: Occurs when detecting one of following time-out conditions. Busy time-out for
|
|
* R1b,R5b type Busy time-out after Write CRC status Read Data time-out.
|
|
*
|
|
* Values:
|
|
* - 0 - No Error
|
|
* - 1 - Time out
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_DTOE (20) //!< Bit position for USDHC_INT_STATUS_DTOE.
|
|
#define BM_USDHC_INT_STATUS_DTOE (0x00100000) //!< Bit mask for USDHC_INT_STATUS_DTOE.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_DTOE from a register value.
|
|
#define BG_USDHC_INT_STATUS_DTOE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_DTOE) >> BP_USDHC_INT_STATUS_DTOE)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_DTOE.
|
|
#define BF_USDHC_INT_STATUS_DTOE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_DTOE) & BM_USDHC_INT_STATUS_DTOE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DTOE field to a new value.
|
|
#define BW_USDHC_INT_STATUS_DTOE(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_DTOE) | BF_USDHC_INT_STATUS_DTOE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field DCE[21] (W1C)
|
|
*
|
|
* Data CRC Error: Occurs when detecting a CRC error when transferring read data, which uses the DAT
|
|
* line, or when detecting the Write CRC status having a value other than 010.
|
|
*
|
|
* Values:
|
|
* - 0 - No Error
|
|
* - 1 - Error
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_DCE (21) //!< Bit position for USDHC_INT_STATUS_DCE.
|
|
#define BM_USDHC_INT_STATUS_DCE (0x00200000) //!< Bit mask for USDHC_INT_STATUS_DCE.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_DCE from a register value.
|
|
#define BG_USDHC_INT_STATUS_DCE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_DCE) >> BP_USDHC_INT_STATUS_DCE)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_DCE.
|
|
#define BF_USDHC_INT_STATUS_DCE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_DCE) & BM_USDHC_INT_STATUS_DCE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DCE field to a new value.
|
|
#define BW_USDHC_INT_STATUS_DCE(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_DCE) | BF_USDHC_INT_STATUS_DCE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field DEBE[22] (W1C)
|
|
*
|
|
* Data End Bit Error: Occurs either when detecting 0 at the end bit position of read data, which
|
|
* uses the DAT line, or at the end bit position of the CRC.
|
|
*
|
|
* Values:
|
|
* - 0 - No Error
|
|
* - 1 - Error
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_DEBE (22) //!< Bit position for USDHC_INT_STATUS_DEBE.
|
|
#define BM_USDHC_INT_STATUS_DEBE (0x00400000) //!< Bit mask for USDHC_INT_STATUS_DEBE.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_DEBE from a register value.
|
|
#define BG_USDHC_INT_STATUS_DEBE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_DEBE) >> BP_USDHC_INT_STATUS_DEBE)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_DEBE.
|
|
#define BF_USDHC_INT_STATUS_DEBE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_DEBE) & BM_USDHC_INT_STATUS_DEBE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DEBE field to a new value.
|
|
#define BW_USDHC_INT_STATUS_DEBE(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_DEBE) | BF_USDHC_INT_STATUS_DEBE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field AC12E[24] (W1C)
|
|
*
|
|
* Auto CMD12 Error: Occurs when detecting that one of the bits in the Auto CMD12 Error Status
|
|
* register has changed from 0 to 1. This bit is set to 1, not only when the errors in Auto CMD12
|
|
* occur, but also when the Auto CMD12 is not executed due to the previous command error.
|
|
*
|
|
* Values:
|
|
* - 0 - No Error
|
|
* - 1 - Error
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_AC12E (24) //!< Bit position for USDHC_INT_STATUS_AC12E.
|
|
#define BM_USDHC_INT_STATUS_AC12E (0x01000000) //!< Bit mask for USDHC_INT_STATUS_AC12E.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_AC12E from a register value.
|
|
#define BG_USDHC_INT_STATUS_AC12E(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_AC12E) >> BP_USDHC_INT_STATUS_AC12E)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_AC12E.
|
|
#define BF_USDHC_INT_STATUS_AC12E(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_AC12E) & BM_USDHC_INT_STATUS_AC12E)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the AC12E field to a new value.
|
|
#define BW_USDHC_INT_STATUS_AC12E(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_AC12E) | BF_USDHC_INT_STATUS_AC12E(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field TNE[26] (W1C)
|
|
*
|
|
* Tuning Error: (only for SD3.0 SDR104 mode) This bit is set when an unrecoverable error is
|
|
* detected in a tuning circuit. By detecting Tuning Error, Host Driver needs to abort a command
|
|
* executing and perform tuning.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_TNE (26) //!< Bit position for USDHC_INT_STATUS_TNE.
|
|
#define BM_USDHC_INT_STATUS_TNE (0x04000000) //!< Bit mask for USDHC_INT_STATUS_TNE.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_TNE from a register value.
|
|
#define BG_USDHC_INT_STATUS_TNE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_TNE) >> BP_USDHC_INT_STATUS_TNE)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_TNE.
|
|
#define BF_USDHC_INT_STATUS_TNE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_TNE) & BM_USDHC_INT_STATUS_TNE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TNE field to a new value.
|
|
#define BW_USDHC_INT_STATUS_TNE(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_TNE) | BF_USDHC_INT_STATUS_TNE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS, field DMAE[28] (W1C)
|
|
*
|
|
* DMA Error: Occurs when an Internal DMA transfer has failed. This bit is set to 1, when some error
|
|
* occurs in the data transfer. This error can be caused by either Simple DMA or ADMA, depending on
|
|
* which DMA is in use. The value in DMA System Address register is the next fetch address where the
|
|
* error occurs. Since any error corrupts the whole data block, the Host Driver shall re-start the
|
|
* transfer from the corrupted block boundary. The address of the block boundary can be calculated
|
|
* either from the current DS_ADDR value or from the remaining number of blocks and the block size.
|
|
*
|
|
* Values:
|
|
* - 0 - No Error
|
|
* - 1 - Error
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_DMAE (28) //!< Bit position for USDHC_INT_STATUS_DMAE.
|
|
#define BM_USDHC_INT_STATUS_DMAE (0x10000000) //!< Bit mask for USDHC_INT_STATUS_DMAE.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_DMAE from a register value.
|
|
#define BG_USDHC_INT_STATUS_DMAE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_DMAE) >> BP_USDHC_INT_STATUS_DMAE)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_DMAE.
|
|
#define BF_USDHC_INT_STATUS_DMAE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_DMAE) & BM_USDHC_INT_STATUS_DMAE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DMAE field to a new value.
|
|
#define BW_USDHC_INT_STATUS_DMAE(x, v) (HW_USDHC_INT_STATUS_WR(x, (HW_USDHC_INT_STATUS_RD(x) & ~BM_USDHC_INT_STATUS_DMAE) | BF_USDHC_INT_STATUS_DMAE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_INT_STATUS_EN - Interrupt Status Enable
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_INT_STATUS_EN - Interrupt Status Enable (RW)
|
|
*
|
|
* Reset value: 0x157f413f
|
|
*
|
|
* Setting the bits in this register to 1 enables the corresponding Interrupt Status to be set by
|
|
* the specified event. If any bit is cleared, the corresponding Interrupt Status bit is also
|
|
* cleared (i.e. when the bit in this register is cleared, the corresponding bit in Interrupt Status
|
|
* Register is always 0). Depending on IABG bit setting, uSDHC may be programmed to sample the card
|
|
* interrupt signal during the interrupt period and hold its value in the flip-flop. There will be
|
|
* some delays on the Card Interrupt, asserted from the card, to the time the Host System is
|
|
* informed. To detect a CMD line conflict, the Host Driver must set both Command Timeout Error
|
|
* Status Enable and Command CRC Error Status Enable to 1.
|
|
*/
|
|
typedef union _hw_usdhc_int_status_en
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_int_status_en_bitfields
|
|
{
|
|
unsigned CCSEN : 1; //!< [0] Command Complete Status Enable:
|
|
unsigned TCSEN : 1; //!< [1] Transfer Complete Status Enable:
|
|
unsigned BGESEN : 1; //!< [2] Block Gap Event Status Enable:
|
|
unsigned DINTSEN : 1; //!< [3] DMA Interrupt Status Enable:
|
|
unsigned BWRSEN : 1; //!< [4] Buffer Write Ready Status Enable:
|
|
unsigned BRRSEN : 1; //!< [5] Buffer Read Ready Status Enable:
|
|
unsigned CINSSEN : 1; //!< [6] Card Insertion Status Enable:
|
|
unsigned CRMSEN : 1; //!< [7] Card Removal Status Enable:
|
|
unsigned CINTSEN : 1; //!< [8] Card Interrupt Status Enable:
|
|
unsigned RESERVED0 : 3; //!< [11:9] Reserved
|
|
unsigned RTESEN : 1; //!< [12] Re-Tuning Event Status Enable
|
|
unsigned RESERVED1 : 1; //!< [13] Reserved
|
|
unsigned TPSEN : 1; //!< [14] Tuning Pass Status Enable
|
|
unsigned RESERVED2 : 1; //!< [15] Reserved
|
|
unsigned CTOESEN : 1; //!< [16] Command Timeout Error Status Enable:
|
|
unsigned CCESEN : 1; //!< [17] Command CRC Error Status Enable:
|
|
unsigned CEBESEN : 1; //!< [18] Command End Bit Error Status Enable:
|
|
unsigned CIESEN : 1; //!< [19] Command Index Error Status Enable:
|
|
unsigned DTOESEN : 1; //!< [20] Data Timeout Error Status Enable:
|
|
unsigned DCESEN : 1; //!< [21] Data CRC Error Status Enable:
|
|
unsigned DEBESEN : 1; //!< [22] Data End Bit Error Status Enable:
|
|
unsigned RESERVED3 : 1; //!< [23] Reserved
|
|
unsigned AC12ESEN : 1; //!< [24] Auto CMD12 Error Status Enable:
|
|
unsigned RESERVED4 : 1; //!< [25] Reserved
|
|
unsigned TNESEN : 1; //!< [26] Tuning Error Status Enable:
|
|
unsigned RESERVED5 : 1; //!< [27] Reserved
|
|
unsigned DMAESEN : 1; //!< [28] DMA Error Status Enable:
|
|
unsigned RESERVED6 : 3; //!< [31:29] Reserved
|
|
} B;
|
|
} hw_usdhc_int_status_en_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_INT_STATUS_EN register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_INT_STATUS_EN_ADDR(x) (REGS_USDHC_BASE(x) + 0x34)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_INT_STATUS_EN(x) (*(volatile hw_usdhc_int_status_en_t *) HW_USDHC_INT_STATUS_EN_ADDR(x))
|
|
#define HW_USDHC_INT_STATUS_EN_RD(x) (HW_USDHC_INT_STATUS_EN(x).U)
|
|
#define HW_USDHC_INT_STATUS_EN_WR(x, v) (HW_USDHC_INT_STATUS_EN(x).U = (v))
|
|
#define HW_USDHC_INT_STATUS_EN_SET(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, HW_USDHC_INT_STATUS_EN_RD(x) | (v)))
|
|
#define HW_USDHC_INT_STATUS_EN_CLR(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, HW_USDHC_INT_STATUS_EN_RD(x) & ~(v)))
|
|
#define HW_USDHC_INT_STATUS_EN_TOG(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, HW_USDHC_INT_STATUS_EN_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_INT_STATUS_EN bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field CCSEN[0] (RW)
|
|
*
|
|
* Command Complete Status Enable: 1 Enabled 0 Masked
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_CCSEN (0) //!< Bit position for USDHC_INT_STATUS_EN_CCSEN.
|
|
#define BM_USDHC_INT_STATUS_EN_CCSEN (0x00000001) //!< Bit mask for USDHC_INT_STATUS_EN_CCSEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_CCSEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_CCSEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_CCSEN) >> BP_USDHC_INT_STATUS_EN_CCSEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_CCSEN.
|
|
#define BF_USDHC_INT_STATUS_EN_CCSEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_CCSEN) & BM_USDHC_INT_STATUS_EN_CCSEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CCSEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_CCSEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_CCSEN) | BF_USDHC_INT_STATUS_EN_CCSEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field TCSEN[1] (RW)
|
|
*
|
|
* Transfer Complete Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_TCSEN (1) //!< Bit position for USDHC_INT_STATUS_EN_TCSEN.
|
|
#define BM_USDHC_INT_STATUS_EN_TCSEN (0x00000002) //!< Bit mask for USDHC_INT_STATUS_EN_TCSEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_TCSEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_TCSEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_TCSEN) >> BP_USDHC_INT_STATUS_EN_TCSEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_TCSEN.
|
|
#define BF_USDHC_INT_STATUS_EN_TCSEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_TCSEN) & BM_USDHC_INT_STATUS_EN_TCSEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TCSEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_TCSEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_TCSEN) | BF_USDHC_INT_STATUS_EN_TCSEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field BGESEN[2] (RW)
|
|
*
|
|
* Block Gap Event Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_BGESEN (2) //!< Bit position for USDHC_INT_STATUS_EN_BGESEN.
|
|
#define BM_USDHC_INT_STATUS_EN_BGESEN (0x00000004) //!< Bit mask for USDHC_INT_STATUS_EN_BGESEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_BGESEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_BGESEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_BGESEN) >> BP_USDHC_INT_STATUS_EN_BGESEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_BGESEN.
|
|
#define BF_USDHC_INT_STATUS_EN_BGESEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_BGESEN) & BM_USDHC_INT_STATUS_EN_BGESEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BGESEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_BGESEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_BGESEN) | BF_USDHC_INT_STATUS_EN_BGESEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field DINTSEN[3] (RW)
|
|
*
|
|
* DMA Interrupt Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_DINTSEN (3) //!< Bit position for USDHC_INT_STATUS_EN_DINTSEN.
|
|
#define BM_USDHC_INT_STATUS_EN_DINTSEN (0x00000008) //!< Bit mask for USDHC_INT_STATUS_EN_DINTSEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_DINTSEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_DINTSEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_DINTSEN) >> BP_USDHC_INT_STATUS_EN_DINTSEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_DINTSEN.
|
|
#define BF_USDHC_INT_STATUS_EN_DINTSEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_DINTSEN) & BM_USDHC_INT_STATUS_EN_DINTSEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DINTSEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_DINTSEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_DINTSEN) | BF_USDHC_INT_STATUS_EN_DINTSEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field BWRSEN[4] (RW)
|
|
*
|
|
* Buffer Write Ready Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_BWRSEN (4) //!< Bit position for USDHC_INT_STATUS_EN_BWRSEN.
|
|
#define BM_USDHC_INT_STATUS_EN_BWRSEN (0x00000010) //!< Bit mask for USDHC_INT_STATUS_EN_BWRSEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_BWRSEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_BWRSEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_BWRSEN) >> BP_USDHC_INT_STATUS_EN_BWRSEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_BWRSEN.
|
|
#define BF_USDHC_INT_STATUS_EN_BWRSEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_BWRSEN) & BM_USDHC_INT_STATUS_EN_BWRSEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BWRSEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_BWRSEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_BWRSEN) | BF_USDHC_INT_STATUS_EN_BWRSEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field BRRSEN[5] (RW)
|
|
*
|
|
* Buffer Read Ready Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_BRRSEN (5) //!< Bit position for USDHC_INT_STATUS_EN_BRRSEN.
|
|
#define BM_USDHC_INT_STATUS_EN_BRRSEN (0x00000020) //!< Bit mask for USDHC_INT_STATUS_EN_BRRSEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_BRRSEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_BRRSEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_BRRSEN) >> BP_USDHC_INT_STATUS_EN_BRRSEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_BRRSEN.
|
|
#define BF_USDHC_INT_STATUS_EN_BRRSEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_BRRSEN) & BM_USDHC_INT_STATUS_EN_BRRSEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BRRSEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_BRRSEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_BRRSEN) | BF_USDHC_INT_STATUS_EN_BRRSEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field CINSSEN[6] (RW)
|
|
*
|
|
* Card Insertion Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_CINSSEN (6) //!< Bit position for USDHC_INT_STATUS_EN_CINSSEN.
|
|
#define BM_USDHC_INT_STATUS_EN_CINSSEN (0x00000040) //!< Bit mask for USDHC_INT_STATUS_EN_CINSSEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_CINSSEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_CINSSEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_CINSSEN) >> BP_USDHC_INT_STATUS_EN_CINSSEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_CINSSEN.
|
|
#define BF_USDHC_INT_STATUS_EN_CINSSEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_CINSSEN) & BM_USDHC_INT_STATUS_EN_CINSSEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CINSSEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_CINSSEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_CINSSEN) | BF_USDHC_INT_STATUS_EN_CINSSEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field CRMSEN[7] (RW)
|
|
*
|
|
* Card Removal Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_CRMSEN (7) //!< Bit position for USDHC_INT_STATUS_EN_CRMSEN.
|
|
#define BM_USDHC_INT_STATUS_EN_CRMSEN (0x00000080) //!< Bit mask for USDHC_INT_STATUS_EN_CRMSEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_CRMSEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_CRMSEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_CRMSEN) >> BP_USDHC_INT_STATUS_EN_CRMSEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_CRMSEN.
|
|
#define BF_USDHC_INT_STATUS_EN_CRMSEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_CRMSEN) & BM_USDHC_INT_STATUS_EN_CRMSEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CRMSEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_CRMSEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_CRMSEN) | BF_USDHC_INT_STATUS_EN_CRMSEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field CINTSEN[8] (RW)
|
|
*
|
|
* Card Interrupt Status Enable: If this bit is set to 0, the uSDHC will clear the interrupt request
|
|
* to the System. The Card Interrupt detection is stopped when this bit is cleared and restarted
|
|
* when this bit is set to 1. The Host Driver should clear the Card Interrupt Status Enable before
|
|
* servicing the Card Interrupt and should set this bit again after all interrupt requests from the
|
|
* card are cleared to prevent inadvertent interrupts.
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_CINTSEN (8) //!< Bit position for USDHC_INT_STATUS_EN_CINTSEN.
|
|
#define BM_USDHC_INT_STATUS_EN_CINTSEN (0x00000100) //!< Bit mask for USDHC_INT_STATUS_EN_CINTSEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_CINTSEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_CINTSEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_CINTSEN) >> BP_USDHC_INT_STATUS_EN_CINTSEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_CINTSEN.
|
|
#define BF_USDHC_INT_STATUS_EN_CINTSEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_CINTSEN) & BM_USDHC_INT_STATUS_EN_CINTSEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CINTSEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_CINTSEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_CINTSEN) | BF_USDHC_INT_STATUS_EN_CINTSEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field RTESEN[12] (RW)
|
|
*
|
|
* Re-Tuning Event Status Enable
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_RTESEN (12) //!< Bit position for USDHC_INT_STATUS_EN_RTESEN.
|
|
#define BM_USDHC_INT_STATUS_EN_RTESEN (0x00001000) //!< Bit mask for USDHC_INT_STATUS_EN_RTESEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_RTESEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_RTESEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_RTESEN) >> BP_USDHC_INT_STATUS_EN_RTESEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_RTESEN.
|
|
#define BF_USDHC_INT_STATUS_EN_RTESEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_RTESEN) & BM_USDHC_INT_STATUS_EN_RTESEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RTESEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_RTESEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_RTESEN) | BF_USDHC_INT_STATUS_EN_RTESEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field TPSEN[14] (RW)
|
|
*
|
|
* Tuning Pass Status Enable
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_TPSEN (14) //!< Bit position for USDHC_INT_STATUS_EN_TPSEN.
|
|
#define BM_USDHC_INT_STATUS_EN_TPSEN (0x00004000) //!< Bit mask for USDHC_INT_STATUS_EN_TPSEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_TPSEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_TPSEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_TPSEN) >> BP_USDHC_INT_STATUS_EN_TPSEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_TPSEN.
|
|
#define BF_USDHC_INT_STATUS_EN_TPSEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_TPSEN) & BM_USDHC_INT_STATUS_EN_TPSEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TPSEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_TPSEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_TPSEN) | BF_USDHC_INT_STATUS_EN_TPSEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field CTOESEN[16] (RW)
|
|
*
|
|
* Command Timeout Error Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_CTOESEN (16) //!< Bit position for USDHC_INT_STATUS_EN_CTOESEN.
|
|
#define BM_USDHC_INT_STATUS_EN_CTOESEN (0x00010000) //!< Bit mask for USDHC_INT_STATUS_EN_CTOESEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_CTOESEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_CTOESEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_CTOESEN) >> BP_USDHC_INT_STATUS_EN_CTOESEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_CTOESEN.
|
|
#define BF_USDHC_INT_STATUS_EN_CTOESEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_CTOESEN) & BM_USDHC_INT_STATUS_EN_CTOESEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CTOESEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_CTOESEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_CTOESEN) | BF_USDHC_INT_STATUS_EN_CTOESEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field CCESEN[17] (RW)
|
|
*
|
|
* Command CRC Error Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_CCESEN (17) //!< Bit position for USDHC_INT_STATUS_EN_CCESEN.
|
|
#define BM_USDHC_INT_STATUS_EN_CCESEN (0x00020000) //!< Bit mask for USDHC_INT_STATUS_EN_CCESEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_CCESEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_CCESEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_CCESEN) >> BP_USDHC_INT_STATUS_EN_CCESEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_CCESEN.
|
|
#define BF_USDHC_INT_STATUS_EN_CCESEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_CCESEN) & BM_USDHC_INT_STATUS_EN_CCESEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CCESEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_CCESEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_CCESEN) | BF_USDHC_INT_STATUS_EN_CCESEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field CEBESEN[18] (RW)
|
|
*
|
|
* Command End Bit Error Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_CEBESEN (18) //!< Bit position for USDHC_INT_STATUS_EN_CEBESEN.
|
|
#define BM_USDHC_INT_STATUS_EN_CEBESEN (0x00040000) //!< Bit mask for USDHC_INT_STATUS_EN_CEBESEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_CEBESEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_CEBESEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_CEBESEN) >> BP_USDHC_INT_STATUS_EN_CEBESEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_CEBESEN.
|
|
#define BF_USDHC_INT_STATUS_EN_CEBESEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_CEBESEN) & BM_USDHC_INT_STATUS_EN_CEBESEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CEBESEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_CEBESEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_CEBESEN) | BF_USDHC_INT_STATUS_EN_CEBESEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field CIESEN[19] (RW)
|
|
*
|
|
* Command Index Error Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_CIESEN (19) //!< Bit position for USDHC_INT_STATUS_EN_CIESEN.
|
|
#define BM_USDHC_INT_STATUS_EN_CIESEN (0x00080000) //!< Bit mask for USDHC_INT_STATUS_EN_CIESEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_CIESEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_CIESEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_CIESEN) >> BP_USDHC_INT_STATUS_EN_CIESEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_CIESEN.
|
|
#define BF_USDHC_INT_STATUS_EN_CIESEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_CIESEN) & BM_USDHC_INT_STATUS_EN_CIESEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CIESEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_CIESEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_CIESEN) | BF_USDHC_INT_STATUS_EN_CIESEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field DTOESEN[20] (RW)
|
|
*
|
|
* Data Timeout Error Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_DTOESEN (20) //!< Bit position for USDHC_INT_STATUS_EN_DTOESEN.
|
|
#define BM_USDHC_INT_STATUS_EN_DTOESEN (0x00100000) //!< Bit mask for USDHC_INT_STATUS_EN_DTOESEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_DTOESEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_DTOESEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_DTOESEN) >> BP_USDHC_INT_STATUS_EN_DTOESEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_DTOESEN.
|
|
#define BF_USDHC_INT_STATUS_EN_DTOESEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_DTOESEN) & BM_USDHC_INT_STATUS_EN_DTOESEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DTOESEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_DTOESEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_DTOESEN) | BF_USDHC_INT_STATUS_EN_DTOESEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field DCESEN[21] (RW)
|
|
*
|
|
* Data CRC Error Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_DCESEN (21) //!< Bit position for USDHC_INT_STATUS_EN_DCESEN.
|
|
#define BM_USDHC_INT_STATUS_EN_DCESEN (0x00200000) //!< Bit mask for USDHC_INT_STATUS_EN_DCESEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_DCESEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_DCESEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_DCESEN) >> BP_USDHC_INT_STATUS_EN_DCESEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_DCESEN.
|
|
#define BF_USDHC_INT_STATUS_EN_DCESEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_DCESEN) & BM_USDHC_INT_STATUS_EN_DCESEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DCESEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_DCESEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_DCESEN) | BF_USDHC_INT_STATUS_EN_DCESEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field DEBESEN[22] (RW)
|
|
*
|
|
* Data End Bit Error Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_DEBESEN (22) //!< Bit position for USDHC_INT_STATUS_EN_DEBESEN.
|
|
#define BM_USDHC_INT_STATUS_EN_DEBESEN (0x00400000) //!< Bit mask for USDHC_INT_STATUS_EN_DEBESEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_DEBESEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_DEBESEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_DEBESEN) >> BP_USDHC_INT_STATUS_EN_DEBESEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_DEBESEN.
|
|
#define BF_USDHC_INT_STATUS_EN_DEBESEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_DEBESEN) & BM_USDHC_INT_STATUS_EN_DEBESEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DEBESEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_DEBESEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_DEBESEN) | BF_USDHC_INT_STATUS_EN_DEBESEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field AC12ESEN[24] (RW)
|
|
*
|
|
* Auto CMD12 Error Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_AC12ESEN (24) //!< Bit position for USDHC_INT_STATUS_EN_AC12ESEN.
|
|
#define BM_USDHC_INT_STATUS_EN_AC12ESEN (0x01000000) //!< Bit mask for USDHC_INT_STATUS_EN_AC12ESEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_AC12ESEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_AC12ESEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_AC12ESEN) >> BP_USDHC_INT_STATUS_EN_AC12ESEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_AC12ESEN.
|
|
#define BF_USDHC_INT_STATUS_EN_AC12ESEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_AC12ESEN) & BM_USDHC_INT_STATUS_EN_AC12ESEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the AC12ESEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_AC12ESEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_AC12ESEN) | BF_USDHC_INT_STATUS_EN_AC12ESEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field TNESEN[26] (RW)
|
|
*
|
|
* Tuning Error Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_TNESEN (26) //!< Bit position for USDHC_INT_STATUS_EN_TNESEN.
|
|
#define BM_USDHC_INT_STATUS_EN_TNESEN (0x04000000) //!< Bit mask for USDHC_INT_STATUS_EN_TNESEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_TNESEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_TNESEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_TNESEN) >> BP_USDHC_INT_STATUS_EN_TNESEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_TNESEN.
|
|
#define BF_USDHC_INT_STATUS_EN_TNESEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_TNESEN) & BM_USDHC_INT_STATUS_EN_TNESEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TNESEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_TNESEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_TNESEN) | BF_USDHC_INT_STATUS_EN_TNESEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_STATUS_EN, field DMAESEN[28] (RW)
|
|
*
|
|
* DMA Error Status Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_STATUS_EN_DMAESEN (28) //!< Bit position for USDHC_INT_STATUS_EN_DMAESEN.
|
|
#define BM_USDHC_INT_STATUS_EN_DMAESEN (0x10000000) //!< Bit mask for USDHC_INT_STATUS_EN_DMAESEN.
|
|
|
|
//! @brief Get value of USDHC_INT_STATUS_EN_DMAESEN from a register value.
|
|
#define BG_USDHC_INT_STATUS_EN_DMAESEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_STATUS_EN_DMAESEN) >> BP_USDHC_INT_STATUS_EN_DMAESEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_STATUS_EN_DMAESEN.
|
|
#define BF_USDHC_INT_STATUS_EN_DMAESEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_STATUS_EN_DMAESEN) & BM_USDHC_INT_STATUS_EN_DMAESEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DMAESEN field to a new value.
|
|
#define BW_USDHC_INT_STATUS_EN_DMAESEN(x, v) (HW_USDHC_INT_STATUS_EN_WR(x, (HW_USDHC_INT_STATUS_EN_RD(x) & ~BM_USDHC_INT_STATUS_EN_DMAESEN) | BF_USDHC_INT_STATUS_EN_DMAESEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_INT_SIGNAL_EN - Interrupt Signal Enable
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_INT_SIGNAL_EN - Interrupt Signal Enable (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register is used to select which interrupt status is indicated to the Host System as the
|
|
* interrupt. These status bits all share the same interrupt line. Setting any of these bits to 1
|
|
* enables interrupt generation. The corresponding Status register bit will generate an interrupt
|
|
* when the corresponding interrupt signal enable bit is set.
|
|
*/
|
|
typedef union _hw_usdhc_int_signal_en
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_int_signal_en_bitfields
|
|
{
|
|
unsigned CCIEN : 1; //!< [0] Command Complete Interrupt Enable:
|
|
unsigned TCIEN : 1; //!< [1] Transfer Complete Interrupt Enable:
|
|
unsigned BGEIEN : 1; //!< [2] Block Gap Event Interrupt Enable:
|
|
unsigned DINTIEN : 1; //!< [3] DMA Interrupt Enable:
|
|
unsigned BWRIEN : 1; //!< [4] Buffer Write Ready Interrupt Enable:
|
|
unsigned BRRIEN : 1; //!< [5] Buffer Read Ready Interrupt Enable:
|
|
unsigned CINSIEN : 1; //!< [6] Card Insertion Interrupt Enable:
|
|
unsigned CRMIEN : 1; //!< [7] Card Removal Interrupt Enable:
|
|
unsigned CINTIEN : 1; //!< [8] Card Interrupt Interrupt Enable:
|
|
unsigned RESERVED0 : 3; //!< [11:9] Reserved
|
|
unsigned RTEIEN : 1; //!< [12] Re-Tuning Event Interrupt Enable
|
|
unsigned RESERVED1 : 1; //!< [13] Reserved
|
|
unsigned TPIEN : 1; //!< [14] Tuning Pass Interrupt Enable
|
|
unsigned RESERVED2 : 1; //!< [15] Reserved
|
|
unsigned CTOEIEN : 1; //!< [16] Command Timeout Error Interrupt Enable
|
|
unsigned CCEIEN : 1; //!< [17] Command CRC Error Interrupt Enable:
|
|
unsigned CEBEIEN : 1; //!< [18] Command End Bit Error Interrupt Enable:
|
|
unsigned CIEIEN : 1; //!< [19] Command Index Error Interrupt Enable:
|
|
unsigned DTOEIEN : 1; //!< [20] Data Timeout Error Interrupt Enable:
|
|
unsigned DCEIEN : 1; //!< [21] Data CRC Error Interrupt Enable:
|
|
unsigned DEBEIEN : 1; //!< [22] Data End Bit Error Interrupt Enable:
|
|
unsigned RESERVED3 : 1; //!< [23] Reserved
|
|
unsigned AC12EIEN : 1; //!< [24] Auto CMD12 Error Interrupt Enable:
|
|
unsigned RESERVED4 : 1; //!< [25] Reserved
|
|
unsigned TNEIEN : 1; //!< [26] Tuning Error Interrupt Enable
|
|
unsigned RESERVED5 : 1; //!< [27] Reserved
|
|
unsigned DMAEIEN : 1; //!< [28] DMA Error Interrupt Enable:
|
|
unsigned RESERVED6 : 3; //!< [31:29] Reserved
|
|
} B;
|
|
} hw_usdhc_int_signal_en_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_INT_SIGNAL_EN register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_INT_SIGNAL_EN_ADDR(x) (REGS_USDHC_BASE(x) + 0x38)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_INT_SIGNAL_EN(x) (*(volatile hw_usdhc_int_signal_en_t *) HW_USDHC_INT_SIGNAL_EN_ADDR(x))
|
|
#define HW_USDHC_INT_SIGNAL_EN_RD(x) (HW_USDHC_INT_SIGNAL_EN(x).U)
|
|
#define HW_USDHC_INT_SIGNAL_EN_WR(x, v) (HW_USDHC_INT_SIGNAL_EN(x).U = (v))
|
|
#define HW_USDHC_INT_SIGNAL_EN_SET(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, HW_USDHC_INT_SIGNAL_EN_RD(x) | (v)))
|
|
#define HW_USDHC_INT_SIGNAL_EN_CLR(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, HW_USDHC_INT_SIGNAL_EN_RD(x) & ~(v)))
|
|
#define HW_USDHC_INT_SIGNAL_EN_TOG(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, HW_USDHC_INT_SIGNAL_EN_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_INT_SIGNAL_EN bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field CCIEN[0] (RW)
|
|
*
|
|
* Command Complete Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_CCIEN (0) //!< Bit position for USDHC_INT_SIGNAL_EN_CCIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_CCIEN (0x00000001) //!< Bit mask for USDHC_INT_SIGNAL_EN_CCIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_CCIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_CCIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_CCIEN) >> BP_USDHC_INT_SIGNAL_EN_CCIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_CCIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_CCIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_CCIEN) & BM_USDHC_INT_SIGNAL_EN_CCIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CCIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_CCIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_CCIEN) | BF_USDHC_INT_SIGNAL_EN_CCIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field TCIEN[1] (RW)
|
|
*
|
|
* Transfer Complete Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_TCIEN (1) //!< Bit position for USDHC_INT_SIGNAL_EN_TCIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_TCIEN (0x00000002) //!< Bit mask for USDHC_INT_SIGNAL_EN_TCIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_TCIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_TCIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_TCIEN) >> BP_USDHC_INT_SIGNAL_EN_TCIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_TCIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_TCIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_TCIEN) & BM_USDHC_INT_SIGNAL_EN_TCIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TCIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_TCIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_TCIEN) | BF_USDHC_INT_SIGNAL_EN_TCIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field BGEIEN[2] (RW)
|
|
*
|
|
* Block Gap Event Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_BGEIEN (2) //!< Bit position for USDHC_INT_SIGNAL_EN_BGEIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_BGEIEN (0x00000004) //!< Bit mask for USDHC_INT_SIGNAL_EN_BGEIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_BGEIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_BGEIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_BGEIEN) >> BP_USDHC_INT_SIGNAL_EN_BGEIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_BGEIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_BGEIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_BGEIEN) & BM_USDHC_INT_SIGNAL_EN_BGEIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BGEIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_BGEIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_BGEIEN) | BF_USDHC_INT_SIGNAL_EN_BGEIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field DINTIEN[3] (RW)
|
|
*
|
|
* DMA Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_DINTIEN (3) //!< Bit position for USDHC_INT_SIGNAL_EN_DINTIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_DINTIEN (0x00000008) //!< Bit mask for USDHC_INT_SIGNAL_EN_DINTIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_DINTIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_DINTIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_DINTIEN) >> BP_USDHC_INT_SIGNAL_EN_DINTIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_DINTIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_DINTIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_DINTIEN) & BM_USDHC_INT_SIGNAL_EN_DINTIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DINTIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_DINTIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_DINTIEN) | BF_USDHC_INT_SIGNAL_EN_DINTIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field BWRIEN[4] (RW)
|
|
*
|
|
* Buffer Write Ready Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_BWRIEN (4) //!< Bit position for USDHC_INT_SIGNAL_EN_BWRIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_BWRIEN (0x00000010) //!< Bit mask for USDHC_INT_SIGNAL_EN_BWRIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_BWRIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_BWRIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_BWRIEN) >> BP_USDHC_INT_SIGNAL_EN_BWRIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_BWRIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_BWRIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_BWRIEN) & BM_USDHC_INT_SIGNAL_EN_BWRIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BWRIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_BWRIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_BWRIEN) | BF_USDHC_INT_SIGNAL_EN_BWRIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field BRRIEN[5] (RW)
|
|
*
|
|
* Buffer Read Ready Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_BRRIEN (5) //!< Bit position for USDHC_INT_SIGNAL_EN_BRRIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_BRRIEN (0x00000020) //!< Bit mask for USDHC_INT_SIGNAL_EN_BRRIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_BRRIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_BRRIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_BRRIEN) >> BP_USDHC_INT_SIGNAL_EN_BRRIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_BRRIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_BRRIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_BRRIEN) & BM_USDHC_INT_SIGNAL_EN_BRRIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BRRIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_BRRIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_BRRIEN) | BF_USDHC_INT_SIGNAL_EN_BRRIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field CINSIEN[6] (RW)
|
|
*
|
|
* Card Insertion Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_CINSIEN (6) //!< Bit position for USDHC_INT_SIGNAL_EN_CINSIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_CINSIEN (0x00000040) //!< Bit mask for USDHC_INT_SIGNAL_EN_CINSIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_CINSIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_CINSIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_CINSIEN) >> BP_USDHC_INT_SIGNAL_EN_CINSIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_CINSIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_CINSIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_CINSIEN) & BM_USDHC_INT_SIGNAL_EN_CINSIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CINSIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_CINSIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_CINSIEN) | BF_USDHC_INT_SIGNAL_EN_CINSIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field CRMIEN[7] (RW)
|
|
*
|
|
* Card Removal Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_CRMIEN (7) //!< Bit position for USDHC_INT_SIGNAL_EN_CRMIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_CRMIEN (0x00000080) //!< Bit mask for USDHC_INT_SIGNAL_EN_CRMIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_CRMIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_CRMIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_CRMIEN) >> BP_USDHC_INT_SIGNAL_EN_CRMIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_CRMIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_CRMIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_CRMIEN) & BM_USDHC_INT_SIGNAL_EN_CRMIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CRMIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_CRMIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_CRMIEN) | BF_USDHC_INT_SIGNAL_EN_CRMIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field CINTIEN[8] (RW)
|
|
*
|
|
* Card Interrupt Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_CINTIEN (8) //!< Bit position for USDHC_INT_SIGNAL_EN_CINTIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_CINTIEN (0x00000100) //!< Bit mask for USDHC_INT_SIGNAL_EN_CINTIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_CINTIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_CINTIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_CINTIEN) >> BP_USDHC_INT_SIGNAL_EN_CINTIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_CINTIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_CINTIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_CINTIEN) & BM_USDHC_INT_SIGNAL_EN_CINTIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CINTIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_CINTIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_CINTIEN) | BF_USDHC_INT_SIGNAL_EN_CINTIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field RTEIEN[12] (RW)
|
|
*
|
|
* Re-Tuning Event Interrupt Enable
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_RTEIEN (12) //!< Bit position for USDHC_INT_SIGNAL_EN_RTEIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_RTEIEN (0x00001000) //!< Bit mask for USDHC_INT_SIGNAL_EN_RTEIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_RTEIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_RTEIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_RTEIEN) >> BP_USDHC_INT_SIGNAL_EN_RTEIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_RTEIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_RTEIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_RTEIEN) & BM_USDHC_INT_SIGNAL_EN_RTEIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RTEIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_RTEIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_RTEIEN) | BF_USDHC_INT_SIGNAL_EN_RTEIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field TPIEN[14] (RW)
|
|
*
|
|
* Tuning Pass Interrupt Enable
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_TPIEN (14) //!< Bit position for USDHC_INT_SIGNAL_EN_TPIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_TPIEN (0x00004000) //!< Bit mask for USDHC_INT_SIGNAL_EN_TPIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_TPIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_TPIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_TPIEN) >> BP_USDHC_INT_SIGNAL_EN_TPIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_TPIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_TPIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_TPIEN) & BM_USDHC_INT_SIGNAL_EN_TPIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TPIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_TPIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_TPIEN) | BF_USDHC_INT_SIGNAL_EN_TPIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field CTOEIEN[16] (RW)
|
|
*
|
|
* Command Timeout Error Interrupt Enable
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_CTOEIEN (16) //!< Bit position for USDHC_INT_SIGNAL_EN_CTOEIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_CTOEIEN (0x00010000) //!< Bit mask for USDHC_INT_SIGNAL_EN_CTOEIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_CTOEIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_CTOEIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_CTOEIEN) >> BP_USDHC_INT_SIGNAL_EN_CTOEIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_CTOEIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_CTOEIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_CTOEIEN) & BM_USDHC_INT_SIGNAL_EN_CTOEIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CTOEIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_CTOEIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_CTOEIEN) | BF_USDHC_INT_SIGNAL_EN_CTOEIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field CCEIEN[17] (RW)
|
|
*
|
|
* Command CRC Error Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_CCEIEN (17) //!< Bit position for USDHC_INT_SIGNAL_EN_CCEIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_CCEIEN (0x00020000) //!< Bit mask for USDHC_INT_SIGNAL_EN_CCEIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_CCEIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_CCEIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_CCEIEN) >> BP_USDHC_INT_SIGNAL_EN_CCEIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_CCEIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_CCEIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_CCEIEN) & BM_USDHC_INT_SIGNAL_EN_CCEIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CCEIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_CCEIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_CCEIEN) | BF_USDHC_INT_SIGNAL_EN_CCEIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field CEBEIEN[18] (RW)
|
|
*
|
|
* Command End Bit Error Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_CEBEIEN (18) //!< Bit position for USDHC_INT_SIGNAL_EN_CEBEIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_CEBEIEN (0x00040000) //!< Bit mask for USDHC_INT_SIGNAL_EN_CEBEIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_CEBEIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_CEBEIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_CEBEIEN) >> BP_USDHC_INT_SIGNAL_EN_CEBEIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_CEBEIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_CEBEIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_CEBEIEN) & BM_USDHC_INT_SIGNAL_EN_CEBEIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CEBEIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_CEBEIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_CEBEIEN) | BF_USDHC_INT_SIGNAL_EN_CEBEIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field CIEIEN[19] (RW)
|
|
*
|
|
* Command Index Error Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_CIEIEN (19) //!< Bit position for USDHC_INT_SIGNAL_EN_CIEIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_CIEIEN (0x00080000) //!< Bit mask for USDHC_INT_SIGNAL_EN_CIEIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_CIEIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_CIEIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_CIEIEN) >> BP_USDHC_INT_SIGNAL_EN_CIEIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_CIEIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_CIEIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_CIEIEN) & BM_USDHC_INT_SIGNAL_EN_CIEIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CIEIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_CIEIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_CIEIEN) | BF_USDHC_INT_SIGNAL_EN_CIEIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field DTOEIEN[20] (RW)
|
|
*
|
|
* Data Timeout Error Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_DTOEIEN (20) //!< Bit position for USDHC_INT_SIGNAL_EN_DTOEIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_DTOEIEN (0x00100000) //!< Bit mask for USDHC_INT_SIGNAL_EN_DTOEIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_DTOEIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_DTOEIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_DTOEIEN) >> BP_USDHC_INT_SIGNAL_EN_DTOEIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_DTOEIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_DTOEIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_DTOEIEN) & BM_USDHC_INT_SIGNAL_EN_DTOEIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DTOEIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_DTOEIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_DTOEIEN) | BF_USDHC_INT_SIGNAL_EN_DTOEIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field DCEIEN[21] (RW)
|
|
*
|
|
* Data CRC Error Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_DCEIEN (21) //!< Bit position for USDHC_INT_SIGNAL_EN_DCEIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_DCEIEN (0x00200000) //!< Bit mask for USDHC_INT_SIGNAL_EN_DCEIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_DCEIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_DCEIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_DCEIEN) >> BP_USDHC_INT_SIGNAL_EN_DCEIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_DCEIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_DCEIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_DCEIEN) & BM_USDHC_INT_SIGNAL_EN_DCEIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DCEIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_DCEIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_DCEIEN) | BF_USDHC_INT_SIGNAL_EN_DCEIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field DEBEIEN[22] (RW)
|
|
*
|
|
* Data End Bit Error Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_DEBEIEN (22) //!< Bit position for USDHC_INT_SIGNAL_EN_DEBEIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_DEBEIEN (0x00400000) //!< Bit mask for USDHC_INT_SIGNAL_EN_DEBEIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_DEBEIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_DEBEIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_DEBEIEN) >> BP_USDHC_INT_SIGNAL_EN_DEBEIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_DEBEIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_DEBEIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_DEBEIEN) & BM_USDHC_INT_SIGNAL_EN_DEBEIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DEBEIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_DEBEIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_DEBEIEN) | BF_USDHC_INT_SIGNAL_EN_DEBEIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field AC12EIEN[24] (RW)
|
|
*
|
|
* Auto CMD12 Error Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_AC12EIEN (24) //!< Bit position for USDHC_INT_SIGNAL_EN_AC12EIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_AC12EIEN (0x01000000) //!< Bit mask for USDHC_INT_SIGNAL_EN_AC12EIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_AC12EIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_AC12EIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_AC12EIEN) >> BP_USDHC_INT_SIGNAL_EN_AC12EIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_AC12EIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_AC12EIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_AC12EIEN) & BM_USDHC_INT_SIGNAL_EN_AC12EIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the AC12EIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_AC12EIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_AC12EIEN) | BF_USDHC_INT_SIGNAL_EN_AC12EIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field TNEIEN[26] (RW)
|
|
*
|
|
* Tuning Error Interrupt Enable
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_TNEIEN (26) //!< Bit position for USDHC_INT_SIGNAL_EN_TNEIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_TNEIEN (0x04000000) //!< Bit mask for USDHC_INT_SIGNAL_EN_TNEIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_TNEIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_TNEIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_TNEIEN) >> BP_USDHC_INT_SIGNAL_EN_TNEIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_TNEIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_TNEIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_TNEIEN) & BM_USDHC_INT_SIGNAL_EN_TNEIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TNEIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_TNEIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_TNEIEN) | BF_USDHC_INT_SIGNAL_EN_TNEIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_INT_SIGNAL_EN, field DMAEIEN[28] (RW)
|
|
*
|
|
* DMA Error Interrupt Enable:
|
|
*
|
|
* Values:
|
|
* - 0 - Masked
|
|
* - 1 - Enable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_INT_SIGNAL_EN_DMAEIEN (28) //!< Bit position for USDHC_INT_SIGNAL_EN_DMAEIEN.
|
|
#define BM_USDHC_INT_SIGNAL_EN_DMAEIEN (0x10000000) //!< Bit mask for USDHC_INT_SIGNAL_EN_DMAEIEN.
|
|
|
|
//! @brief Get value of USDHC_INT_SIGNAL_EN_DMAEIEN from a register value.
|
|
#define BG_USDHC_INT_SIGNAL_EN_DMAEIEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_INT_SIGNAL_EN_DMAEIEN) >> BP_USDHC_INT_SIGNAL_EN_DMAEIEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_INT_SIGNAL_EN_DMAEIEN.
|
|
#define BF_USDHC_INT_SIGNAL_EN_DMAEIEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_INT_SIGNAL_EN_DMAEIEN) & BM_USDHC_INT_SIGNAL_EN_DMAEIEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DMAEIEN field to a new value.
|
|
#define BW_USDHC_INT_SIGNAL_EN_DMAEIEN(x, v) (HW_USDHC_INT_SIGNAL_EN_WR(x, (HW_USDHC_INT_SIGNAL_EN_RD(x) & ~BM_USDHC_INT_SIGNAL_EN_DMAEIEN) | BF_USDHC_INT_SIGNAL_EN_DMAEIEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_AUTOCMD12_ERR_STATUS - Auto CMD12 Error Status
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_AUTOCMD12_ERR_STATUS - Auto CMD12 Error Status (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* When the Auto CMD12 Error Status bit in the Status register is set, the Host Driver shall check
|
|
* this register to identify what kind of error the Auto CMD12 indicated. This register is valid
|
|
* only when the Auto CMD12 Error status bit is set. The table bwlow shows the relationship between
|
|
* the Auto CMGD12 CRC Error and the Auto CMD12 Command Timeout Error. Relationship Between Command
|
|
* CRC Error and Command Timeout Error for Auto CMD12 Auto CMD12 CRC Error Auto CMD12 Timeout Error
|
|
* Type of Error 0 0 No Error 0 1 Response Timeout Error 1 0 Response CRC Error 1 1 CMD line
|
|
* conflict Changes in Auto CMD12 Error Status register can be classified in three scenarios: When
|
|
* the uSDHC is going to issue an Auto CMD12. Set bit 0 to 1 if the Auto CMD12 can't be issued due
|
|
* to an error in the previous command Set bit 0 to 0 if the Auto CMD12 is issued At the end bit of
|
|
* an Auto CMD12 response. Check errors correspond to bits 1-4. Set bits 1-4 corresponding to
|
|
* detected errors. Clear bits 1-4 corresponding to detected errors Before reading the Auto CMD12
|
|
* Error Status bit 7. Set bit 7 to 1 if there is a command that can't be issued Clear bit 7 if
|
|
* there is no command to issue The timing for generating the Auto CMD12 Error and writing to the
|
|
* Command register are asynchronous. After that, bit 7 shall be sampled when the driver is not
|
|
* writing to the Command register. So it is suggested to read this register only when the AC12E bit
|
|
* in Interrupt Status register is set. An Auto CMD12 Error Interrupt is generated when one of the
|
|
* error bits (0-4) is set to 1. The Command Not Issued By Auto CMD12 Error does not generate an
|
|
* interrupt.
|
|
*/
|
|
typedef union _hw_usdhc_autocmd12_err_status
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_autocmd12_err_status_bitfields
|
|
{
|
|
unsigned AC12NE : 1; //!< [0] Auto CMD12 Not Executed:
|
|
unsigned AC12TOE : 1; //!< [1] Auto CMD12 Timeout Error:
|
|
unsigned AC12EBE : 1; //!< [2] Auto CMD12 End Bit Error:
|
|
unsigned AC12CE : 1; //!< [3] Auto CMD12 CRC Error:
|
|
unsigned AC12IE : 1; //!< [4] Auto CMD12 Index Error:
|
|
unsigned RESERVED0 : 2; //!< [6:5] Reserved
|
|
unsigned CNIBAC12E : 1; //!< [7] Command Not Issued By Auto CMD12 Error:
|
|
unsigned RESERVED1 : 24; //!< [31:8] Reserved
|
|
} B;
|
|
} hw_usdhc_autocmd12_err_status_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_AUTOCMD12_ERR_STATUS register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_AUTOCMD12_ERR_STATUS_ADDR(x) (REGS_USDHC_BASE(x) + 0x3c)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_AUTOCMD12_ERR_STATUS(x) (*(volatile hw_usdhc_autocmd12_err_status_t *) HW_USDHC_AUTOCMD12_ERR_STATUS_ADDR(x))
|
|
#define HW_USDHC_AUTOCMD12_ERR_STATUS_RD(x) (HW_USDHC_AUTOCMD12_ERR_STATUS(x).U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_AUTOCMD12_ERR_STATUS bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_AUTOCMD12_ERR_STATUS, field AC12NE[0] (RO)
|
|
*
|
|
* Auto CMD12 Not Executed: If memory multiple block data transfer is not started, due to a command
|
|
* error, this bit is not set because it is not necessary to issue an Auto CMD12. Setting this bit
|
|
* to 1 means the uSDHC cannot issue the Auto CMD12 to stop a memory multiple block data transfer
|
|
* due to some error. If this bit is set to 1, other error status bits (1-4) have no meaning.
|
|
*
|
|
* Values:
|
|
* - 0 - Executed
|
|
* - 1 - Not executed
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_AUTOCMD12_ERR_STATUS_AC12NE (0) //!< Bit position for USDHC_AUTOCMD12_ERR_STATUS_AC12NE.
|
|
#define BM_USDHC_AUTOCMD12_ERR_STATUS_AC12NE (0x00000001) //!< Bit mask for USDHC_AUTOCMD12_ERR_STATUS_AC12NE.
|
|
|
|
//! @brief Get value of USDHC_AUTOCMD12_ERR_STATUS_AC12NE from a register value.
|
|
#define BG_USDHC_AUTOCMD12_ERR_STATUS_AC12NE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_AUTOCMD12_ERR_STATUS_AC12NE) >> BP_USDHC_AUTOCMD12_ERR_STATUS_AC12NE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_AUTOCMD12_ERR_STATUS, field AC12TOE[1] (RO)
|
|
*
|
|
* Auto CMD12 Timeout Error: Occurs if no response is returned within 64 SDCLK cycles from the end
|
|
* bit of the command. If this bit is set to1, the other error status bits (2-4) have no meaning.
|
|
*
|
|
* Values:
|
|
* - 0 - No error
|
|
* - 1 - Time out
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_AUTOCMD12_ERR_STATUS_AC12TOE (1) //!< Bit position for USDHC_AUTOCMD12_ERR_STATUS_AC12TOE.
|
|
#define BM_USDHC_AUTOCMD12_ERR_STATUS_AC12TOE (0x00000002) //!< Bit mask for USDHC_AUTOCMD12_ERR_STATUS_AC12TOE.
|
|
|
|
//! @brief Get value of USDHC_AUTOCMD12_ERR_STATUS_AC12TOE from a register value.
|
|
#define BG_USDHC_AUTOCMD12_ERR_STATUS_AC12TOE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_AUTOCMD12_ERR_STATUS_AC12TOE) >> BP_USDHC_AUTOCMD12_ERR_STATUS_AC12TOE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_AUTOCMD12_ERR_STATUS, field AC12EBE[2] (RO)
|
|
*
|
|
* Auto CMD12 End Bit Error: Occurs when detecting that the end bit of command response is 0 which
|
|
* should be 1.
|
|
*
|
|
* Values:
|
|
* - 0 - No error
|
|
* - 1 - End Bit Error Generated
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_AUTOCMD12_ERR_STATUS_AC12EBE (2) //!< Bit position for USDHC_AUTOCMD12_ERR_STATUS_AC12EBE.
|
|
#define BM_USDHC_AUTOCMD12_ERR_STATUS_AC12EBE (0x00000004) //!< Bit mask for USDHC_AUTOCMD12_ERR_STATUS_AC12EBE.
|
|
|
|
//! @brief Get value of USDHC_AUTOCMD12_ERR_STATUS_AC12EBE from a register value.
|
|
#define BG_USDHC_AUTOCMD12_ERR_STATUS_AC12EBE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_AUTOCMD12_ERR_STATUS_AC12EBE) >> BP_USDHC_AUTOCMD12_ERR_STATUS_AC12EBE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_AUTOCMD12_ERR_STATUS, field AC12CE[3] (RO)
|
|
*
|
|
* Auto CMD12 CRC Error: Occurs when detecting a CRC error in the command response.
|
|
*
|
|
* Values:
|
|
* - 0 - No CRC error
|
|
* - 1 - CRC Error Met in Auto CMD12 Response
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_AUTOCMD12_ERR_STATUS_AC12CE (3) //!< Bit position for USDHC_AUTOCMD12_ERR_STATUS_AC12CE.
|
|
#define BM_USDHC_AUTOCMD12_ERR_STATUS_AC12CE (0x00000008) //!< Bit mask for USDHC_AUTOCMD12_ERR_STATUS_AC12CE.
|
|
|
|
//! @brief Get value of USDHC_AUTOCMD12_ERR_STATUS_AC12CE from a register value.
|
|
#define BG_USDHC_AUTOCMD12_ERR_STATUS_AC12CE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_AUTOCMD12_ERR_STATUS_AC12CE) >> BP_USDHC_AUTOCMD12_ERR_STATUS_AC12CE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_AUTOCMD12_ERR_STATUS, field AC12IE[4] (RO)
|
|
*
|
|
* Auto CMD12 Index Error: Occurs if the Command Index error occurs in response to a command.
|
|
*
|
|
* Values:
|
|
* - 0 - No error
|
|
* - 1 - Error, the CMD index in response is not CMD12
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_AUTOCMD12_ERR_STATUS_AC12IE (4) //!< Bit position for USDHC_AUTOCMD12_ERR_STATUS_AC12IE.
|
|
#define BM_USDHC_AUTOCMD12_ERR_STATUS_AC12IE (0x00000010) //!< Bit mask for USDHC_AUTOCMD12_ERR_STATUS_AC12IE.
|
|
|
|
//! @brief Get value of USDHC_AUTOCMD12_ERR_STATUS_AC12IE from a register value.
|
|
#define BG_USDHC_AUTOCMD12_ERR_STATUS_AC12IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_AUTOCMD12_ERR_STATUS_AC12IE) >> BP_USDHC_AUTOCMD12_ERR_STATUS_AC12IE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_AUTOCMD12_ERR_STATUS, field CNIBAC12E[7] (RO)
|
|
*
|
|
* Command Not Issued By Auto CMD12 Error: Setting this bit to 1 means CMD_wo_DAT is not executed
|
|
* due to an Auto CMD12 Error (D04-D01) in this register.
|
|
*
|
|
* Values:
|
|
* - 0 - No error
|
|
* - 1 - Not Issued
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_AUTOCMD12_ERR_STATUS_CNIBAC12E (7) //!< Bit position for USDHC_AUTOCMD12_ERR_STATUS_CNIBAC12E.
|
|
#define BM_USDHC_AUTOCMD12_ERR_STATUS_CNIBAC12E (0x00000080) //!< Bit mask for USDHC_AUTOCMD12_ERR_STATUS_CNIBAC12E.
|
|
|
|
//! @brief Get value of USDHC_AUTOCMD12_ERR_STATUS_CNIBAC12E from a register value.
|
|
#define BG_USDHC_AUTOCMD12_ERR_STATUS_CNIBAC12E(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_AUTOCMD12_ERR_STATUS_CNIBAC12E) >> BP_USDHC_AUTOCMD12_ERR_STATUS_CNIBAC12E)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_HOST_CTRL_CAP - Host Controller Capabilities
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_HOST_CTRL_CAP - Host Controller Capabilities (RO)
|
|
*
|
|
* Reset value: 0x07f30000
|
|
*
|
|
* This register provides the Host Driver with information specific to the uSDHC implementation. The
|
|
* value in this register is the power-on-reset value, and does not change with a software reset.
|
|
* Any write to this register is ignored.
|
|
*/
|
|
typedef union _hw_usdhc_host_ctrl_cap
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_host_ctrl_cap_bitfields
|
|
{
|
|
unsigned RESERVED0 : 16; //!< [15:0] Reserved
|
|
unsigned MBL : 3; //!< [18:16] Max Block Length:
|
|
unsigned RESERVED1 : 1; //!< [19] Reserved
|
|
unsigned ADMAS : 1; //!< [20] ADMA Support:
|
|
unsigned HSS : 1; //!< [21] High Speed Support:
|
|
unsigned DMAS : 1; //!< [22] DMA Support:
|
|
unsigned SRS : 1; //!< [23] Suspend / Resume Support:
|
|
unsigned VS33 : 1; //!< [24] Voltage Support 3.3V:
|
|
unsigned VS30 : 1; //!< [25] Voltage Support 3.0V:
|
|
unsigned VS18 : 1; //!< [26] Voltage Support 1.8V:
|
|
unsigned RESERVED2 : 5; //!< [31:27] Reserved
|
|
} B;
|
|
} hw_usdhc_host_ctrl_cap_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_HOST_CTRL_CAP register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_HOST_CTRL_CAP_ADDR(x) (REGS_USDHC_BASE(x) + 0x40)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_HOST_CTRL_CAP(x) (*(volatile hw_usdhc_host_ctrl_cap_t *) HW_USDHC_HOST_CTRL_CAP_ADDR(x))
|
|
#define HW_USDHC_HOST_CTRL_CAP_RD(x) (HW_USDHC_HOST_CTRL_CAP(x).U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_HOST_CTRL_CAP bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_HOST_CTRL_CAP, field MBL[18:16] (RO)
|
|
*
|
|
* Max Block Length: This value indicates the maximum block size that the Host Driver can read and
|
|
* write to the buffer in the uSDHC. The buffer shall transfer block size without wait cycles.
|
|
*
|
|
* Values:
|
|
* - 000 - 512 bytes
|
|
* - 001 - 1024 bytes
|
|
* - 010 - 2048 bytes
|
|
* - 011 - 4096 bytes
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_HOST_CTRL_CAP_MBL (16) //!< Bit position for USDHC_HOST_CTRL_CAP_MBL.
|
|
#define BM_USDHC_HOST_CTRL_CAP_MBL (0x00070000) //!< Bit mask for USDHC_HOST_CTRL_CAP_MBL.
|
|
|
|
//! @brief Get value of USDHC_HOST_CTRL_CAP_MBL from a register value.
|
|
#define BG_USDHC_HOST_CTRL_CAP_MBL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_HOST_CTRL_CAP_MBL) >> BP_USDHC_HOST_CTRL_CAP_MBL)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_HOST_CTRL_CAP, field ADMAS[20] (RO)
|
|
*
|
|
* ADMA Support: This bit indicates whether the uSDHC supports the ADMA feature.
|
|
*
|
|
* Values:
|
|
* - 0 - Advanced DMA Not supported
|
|
* - 1 - Advanced DMA Supported
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_HOST_CTRL_CAP_ADMAS (20) //!< Bit position for USDHC_HOST_CTRL_CAP_ADMAS.
|
|
#define BM_USDHC_HOST_CTRL_CAP_ADMAS (0x00100000) //!< Bit mask for USDHC_HOST_CTRL_CAP_ADMAS.
|
|
|
|
//! @brief Get value of USDHC_HOST_CTRL_CAP_ADMAS from a register value.
|
|
#define BG_USDHC_HOST_CTRL_CAP_ADMAS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_HOST_CTRL_CAP_ADMAS) >> BP_USDHC_HOST_CTRL_CAP_ADMAS)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_HOST_CTRL_CAP, field HSS[21] (RO)
|
|
*
|
|
* High Speed Support: This bit indicates whether the uSDHC supports High Speed mode and the Host
|
|
* System can supply a SD Clock frequency from 25 MHz to 50 MHz.
|
|
*
|
|
* Values:
|
|
* - 0 - High Speed Not Supported
|
|
* - 1 - High Speed Supported
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_HOST_CTRL_CAP_HSS (21) //!< Bit position for USDHC_HOST_CTRL_CAP_HSS.
|
|
#define BM_USDHC_HOST_CTRL_CAP_HSS (0x00200000) //!< Bit mask for USDHC_HOST_CTRL_CAP_HSS.
|
|
|
|
//! @brief Get value of USDHC_HOST_CTRL_CAP_HSS from a register value.
|
|
#define BG_USDHC_HOST_CTRL_CAP_HSS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_HOST_CTRL_CAP_HSS) >> BP_USDHC_HOST_CTRL_CAP_HSS)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_HOST_CTRL_CAP, field DMAS[22] (RO)
|
|
*
|
|
* DMA Support: This bit indicates whether the uSDHC is capable of using the internal DMA to
|
|
* transfer data between system memory and the data buffer directly.
|
|
*
|
|
* Values:
|
|
* - 0 - DMA not supported
|
|
* - 1 - DMA Supported
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_HOST_CTRL_CAP_DMAS (22) //!< Bit position for USDHC_HOST_CTRL_CAP_DMAS.
|
|
#define BM_USDHC_HOST_CTRL_CAP_DMAS (0x00400000) //!< Bit mask for USDHC_HOST_CTRL_CAP_DMAS.
|
|
|
|
//! @brief Get value of USDHC_HOST_CTRL_CAP_DMAS from a register value.
|
|
#define BG_USDHC_HOST_CTRL_CAP_DMAS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_HOST_CTRL_CAP_DMAS) >> BP_USDHC_HOST_CTRL_CAP_DMAS)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_HOST_CTRL_CAP, field SRS[23] (RO)
|
|
*
|
|
* Suspend / Resume Support: This bit indicates whether the uSDHC supports Suspend / Resume
|
|
* functionality. If this bit is 0, the Suspend and Resume mechanism, as well as the Read Wait, are
|
|
* not supported, and the Host Driver shall not issue either Suspend or Resume commands.
|
|
*
|
|
* Values:
|
|
* - 0 - Not supported
|
|
* - 1 - Supported
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_HOST_CTRL_CAP_SRS (23) //!< Bit position for USDHC_HOST_CTRL_CAP_SRS.
|
|
#define BM_USDHC_HOST_CTRL_CAP_SRS (0x00800000) //!< Bit mask for USDHC_HOST_CTRL_CAP_SRS.
|
|
|
|
//! @brief Get value of USDHC_HOST_CTRL_CAP_SRS from a register value.
|
|
#define BG_USDHC_HOST_CTRL_CAP_SRS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_HOST_CTRL_CAP_SRS) >> BP_USDHC_HOST_CTRL_CAP_SRS)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_HOST_CTRL_CAP, field VS33[24] (RO)
|
|
*
|
|
* Voltage Support 3.3V: This bit shall depend on the Host System ability.
|
|
*
|
|
* Values:
|
|
* - 0 - 3.3V not supported
|
|
* - 1 - 3.3V supported
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_HOST_CTRL_CAP_VS33 (24) //!< Bit position for USDHC_HOST_CTRL_CAP_VS33.
|
|
#define BM_USDHC_HOST_CTRL_CAP_VS33 (0x01000000) //!< Bit mask for USDHC_HOST_CTRL_CAP_VS33.
|
|
|
|
//! @brief Get value of USDHC_HOST_CTRL_CAP_VS33 from a register value.
|
|
#define BG_USDHC_HOST_CTRL_CAP_VS33(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_HOST_CTRL_CAP_VS33) >> BP_USDHC_HOST_CTRL_CAP_VS33)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_HOST_CTRL_CAP, field VS30[25] (RO)
|
|
*
|
|
* Voltage Support 3.0V: This bit shall depend on the Host System ability.
|
|
*
|
|
* Values:
|
|
* - 0 - 3.0V not supported
|
|
* - 1 - 3.0V supported
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_HOST_CTRL_CAP_VS30 (25) //!< Bit position for USDHC_HOST_CTRL_CAP_VS30.
|
|
#define BM_USDHC_HOST_CTRL_CAP_VS30 (0x02000000) //!< Bit mask for USDHC_HOST_CTRL_CAP_VS30.
|
|
|
|
//! @brief Get value of USDHC_HOST_CTRL_CAP_VS30 from a register value.
|
|
#define BG_USDHC_HOST_CTRL_CAP_VS30(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_HOST_CTRL_CAP_VS30) >> BP_USDHC_HOST_CTRL_CAP_VS30)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_HOST_CTRL_CAP, field VS18[26] (RO)
|
|
*
|
|
* Voltage Support 1.8V: This bit shall depend on the Host System ability.
|
|
*
|
|
* Values:
|
|
* - 0 - 1.8V not supported
|
|
* - 1 - 1.8V supported
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_HOST_CTRL_CAP_VS18 (26) //!< Bit position for USDHC_HOST_CTRL_CAP_VS18.
|
|
#define BM_USDHC_HOST_CTRL_CAP_VS18 (0x04000000) //!< Bit mask for USDHC_HOST_CTRL_CAP_VS18.
|
|
|
|
//! @brief Get value of USDHC_HOST_CTRL_CAP_VS18 from a register value.
|
|
#define BG_USDHC_HOST_CTRL_CAP_VS18(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_HOST_CTRL_CAP_VS18) >> BP_USDHC_HOST_CTRL_CAP_VS18)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_WTMK_LVL - Watermark Level
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_WTMK_LVL - Watermark Level (RW)
|
|
*
|
|
* Reset value: 0x08100810
|
|
*
|
|
* Both write and read watermark levels (FIFO threshold) are configurable. There value can range
|
|
* from 1 to 128 words. Both write and read burst lengths are also Configurable. There value can
|
|
* range from 1 to 31 words.
|
|
*/
|
|
typedef union _hw_usdhc_wtmk_lvl
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_wtmk_lvl_bitfields
|
|
{
|
|
unsigned RD_WML : 8; //!< [7:0] Read Watermark Level:
|
|
unsigned RD_BRST_LEN : 5; //!< [12:8] Read Burst Length: Due to system restriction, the actual burst length may not exceed 16.
|
|
unsigned RESERVED0 : 3; //!< [15:13] Reserved
|
|
unsigned WR_WML : 8; //!< [23:16] Write Watermark Level:
|
|
unsigned WR_BRST_LEN : 5; //!< [28:24] Write Burst Length: Due to system restriction, the actual burst length may not exceed 16.
|
|
unsigned RESERVED1 : 3; //!< [31:29] Reserved
|
|
} B;
|
|
} hw_usdhc_wtmk_lvl_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_WTMK_LVL register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_WTMK_LVL_ADDR(x) (REGS_USDHC_BASE(x) + 0x44)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_WTMK_LVL(x) (*(volatile hw_usdhc_wtmk_lvl_t *) HW_USDHC_WTMK_LVL_ADDR(x))
|
|
#define HW_USDHC_WTMK_LVL_RD(x) (HW_USDHC_WTMK_LVL(x).U)
|
|
#define HW_USDHC_WTMK_LVL_WR(x, v) (HW_USDHC_WTMK_LVL(x).U = (v))
|
|
#define HW_USDHC_WTMK_LVL_SET(x, v) (HW_USDHC_WTMK_LVL_WR(x, HW_USDHC_WTMK_LVL_RD(x) | (v)))
|
|
#define HW_USDHC_WTMK_LVL_CLR(x, v) (HW_USDHC_WTMK_LVL_WR(x, HW_USDHC_WTMK_LVL_RD(x) & ~(v)))
|
|
#define HW_USDHC_WTMK_LVL_TOG(x, v) (HW_USDHC_WTMK_LVL_WR(x, HW_USDHC_WTMK_LVL_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_WTMK_LVL bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_WTMK_LVL, field RD_WML[7:0] (RW)
|
|
*
|
|
* Read Watermark Level: The number of words used as the watermark level (FIFO threshold) in a DMA
|
|
* read operation. Also the number of words as a sequence of read bursts in back-to-back mode. The
|
|
* maximum legal value for the read water mark level is 128.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_WTMK_LVL_RD_WML (0) //!< Bit position for USDHC_WTMK_LVL_RD_WML.
|
|
#define BM_USDHC_WTMK_LVL_RD_WML (0x000000ff) //!< Bit mask for USDHC_WTMK_LVL_RD_WML.
|
|
|
|
//! @brief Get value of USDHC_WTMK_LVL_RD_WML from a register value.
|
|
#define BG_USDHC_WTMK_LVL_RD_WML(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_WTMK_LVL_RD_WML) >> BP_USDHC_WTMK_LVL_RD_WML)
|
|
|
|
//! @brief Format value for bitfield USDHC_WTMK_LVL_RD_WML.
|
|
#define BF_USDHC_WTMK_LVL_RD_WML(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_WTMK_LVL_RD_WML) & BM_USDHC_WTMK_LVL_RD_WML)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RD_WML field to a new value.
|
|
#define BW_USDHC_WTMK_LVL_RD_WML(x, v) (HW_USDHC_WTMK_LVL_WR(x, (HW_USDHC_WTMK_LVL_RD(x) & ~BM_USDHC_WTMK_LVL_RD_WML) | BF_USDHC_WTMK_LVL_RD_WML(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_WTMK_LVL, field RD_BRST_LEN[12:8] (RW)
|
|
*
|
|
* Read Burst Length: Due to system restriction, the actual burst length may not exceed 16. The
|
|
* number of words the uSDHC reads in a single burst. The read burst length must be less than or
|
|
* equal to the read watermark level, and all bursts within a watermark level transfer will be in
|
|
* back-to-back mode. On reset, this field will be 8. Writing 0 to this field will result in '01000'
|
|
* (i.e. it is not able to clear this field).
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_WTMK_LVL_RD_BRST_LEN (8) //!< Bit position for USDHC_WTMK_LVL_RD_BRST_LEN.
|
|
#define BM_USDHC_WTMK_LVL_RD_BRST_LEN (0x00001f00) //!< Bit mask for USDHC_WTMK_LVL_RD_BRST_LEN.
|
|
|
|
//! @brief Get value of USDHC_WTMK_LVL_RD_BRST_LEN from a register value.
|
|
#define BG_USDHC_WTMK_LVL_RD_BRST_LEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_WTMK_LVL_RD_BRST_LEN) >> BP_USDHC_WTMK_LVL_RD_BRST_LEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_WTMK_LVL_RD_BRST_LEN.
|
|
#define BF_USDHC_WTMK_LVL_RD_BRST_LEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_WTMK_LVL_RD_BRST_LEN) & BM_USDHC_WTMK_LVL_RD_BRST_LEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the RD_BRST_LEN field to a new value.
|
|
#define BW_USDHC_WTMK_LVL_RD_BRST_LEN(x, v) (HW_USDHC_WTMK_LVL_WR(x, (HW_USDHC_WTMK_LVL_RD(x) & ~BM_USDHC_WTMK_LVL_RD_BRST_LEN) | BF_USDHC_WTMK_LVL_RD_BRST_LEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_WTMK_LVL, field WR_WML[23:16] (RW)
|
|
*
|
|
* Write Watermark Level: The number of words used as the watermark level (FIFO threshold) in a DMA
|
|
* write operation. Also the number of words as a sequence of write bursts in back-to-back mode. The
|
|
* maximum legal value for the write watermark level is 128.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_WTMK_LVL_WR_WML (16) //!< Bit position for USDHC_WTMK_LVL_WR_WML.
|
|
#define BM_USDHC_WTMK_LVL_WR_WML (0x00ff0000) //!< Bit mask for USDHC_WTMK_LVL_WR_WML.
|
|
|
|
//! @brief Get value of USDHC_WTMK_LVL_WR_WML from a register value.
|
|
#define BG_USDHC_WTMK_LVL_WR_WML(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_WTMK_LVL_WR_WML) >> BP_USDHC_WTMK_LVL_WR_WML)
|
|
|
|
//! @brief Format value for bitfield USDHC_WTMK_LVL_WR_WML.
|
|
#define BF_USDHC_WTMK_LVL_WR_WML(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_WTMK_LVL_WR_WML) & BM_USDHC_WTMK_LVL_WR_WML)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the WR_WML field to a new value.
|
|
#define BW_USDHC_WTMK_LVL_WR_WML(x, v) (HW_USDHC_WTMK_LVL_WR(x, (HW_USDHC_WTMK_LVL_RD(x) & ~BM_USDHC_WTMK_LVL_WR_WML) | BF_USDHC_WTMK_LVL_WR_WML(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_WTMK_LVL, field WR_BRST_LEN[28:24] (RW)
|
|
*
|
|
* Write Burst Length: Due to system restriction, the actual burst length may not exceed 16. The
|
|
* number of words the uSDHC writes in a single burst. The write burst length must be less than or
|
|
* equal to the write watermark level, and all bursts within a watermark level transfer will be in
|
|
* back-to-back mode. On reset, this field will be 8. Writing 0 to this field will result in '01000'
|
|
* (i.e. it is not able to clear this field).
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_WTMK_LVL_WR_BRST_LEN (24) //!< Bit position for USDHC_WTMK_LVL_WR_BRST_LEN.
|
|
#define BM_USDHC_WTMK_LVL_WR_BRST_LEN (0x1f000000) //!< Bit mask for USDHC_WTMK_LVL_WR_BRST_LEN.
|
|
|
|
//! @brief Get value of USDHC_WTMK_LVL_WR_BRST_LEN from a register value.
|
|
#define BG_USDHC_WTMK_LVL_WR_BRST_LEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_WTMK_LVL_WR_BRST_LEN) >> BP_USDHC_WTMK_LVL_WR_BRST_LEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_WTMK_LVL_WR_BRST_LEN.
|
|
#define BF_USDHC_WTMK_LVL_WR_BRST_LEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_WTMK_LVL_WR_BRST_LEN) & BM_USDHC_WTMK_LVL_WR_BRST_LEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the WR_BRST_LEN field to a new value.
|
|
#define BW_USDHC_WTMK_LVL_WR_BRST_LEN(x, v) (HW_USDHC_WTMK_LVL_WR(x, (HW_USDHC_WTMK_LVL_RD(x) & ~BM_USDHC_WTMK_LVL_WR_BRST_LEN) | BF_USDHC_WTMK_LVL_WR_BRST_LEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_MIX_CTRL - Mixer Control
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_MIX_CTRL - Mixer Control (RW)
|
|
*
|
|
* Reset value: 0x80000000
|
|
*
|
|
* This register is used to DMA and data transfer. To prevent data loss, The software should check
|
|
* if data transfer is active before writing to this register. These bits are DPSEL, MBSEL, DTDSEL,
|
|
* AC12EN, BCEN and DMAEN. Transfer Type Register Setting for Various Transfer Types Multi/Single
|
|
* Block Select Block Count Enable Block Count Function 0 Don't Care Don't Care Single Transfer 1 0
|
|
* Don't Care Infinite Transfer 1 1 Positive Number Multiple Transfer 1 1 Zero No Data Transfer
|
|
*/
|
|
typedef union _hw_usdhc_mix_ctrl
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_mix_ctrl_bitfields
|
|
{
|
|
unsigned DMAEN : 1; //!< [0] DMA Enable:
|
|
unsigned BCEN : 1; //!< [1] Block Count Enable:
|
|
unsigned AC12EN : 1; //!< [2] Auto CMD12 Enable:
|
|
unsigned DDR_EN : 1; //!< [3] Dual Data Rate mode selection
|
|
unsigned DTDSEL : 1; //!< [4] Data Transfer Direction Select:
|
|
unsigned MSBSEL : 1; //!< [5] Multi / Single Block Select:
|
|
unsigned NIBBLE_POS : 1; //!< [6] In DDR 4-bit mode nibble position indictation.
|
|
unsigned AC23EN : 1; //!< [7] Auto CMD23 Enable
|
|
unsigned RESERVED0 : 14; //!< [21:8] Reserved
|
|
unsigned EXE_TUNE : 1; //!< [22] Execute Tuning: (Only used for SD3.0, SDR104 mode)
|
|
unsigned SMP_CLK_SEL : 1; //!< [23] Tuned clock or Fixed clock is used to sample data/cmd (Only used for SD3.0, SDR104 mode)
|
|
unsigned AUTO_TUNE_EN : 1; //!< [24] Auto tuning enable (Only used for SD3.0, SDR104 mode)
|
|
unsigned FBCLK_SEL : 1; //!< [25] Feedback clock source selection (Only used for SD3.0, SDR104 mode)
|
|
unsigned RESERVED3 : 6; //!< [31:26] Reserved.
|
|
} B;
|
|
} hw_usdhc_mix_ctrl_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_MIX_CTRL register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_MIX_CTRL_ADDR(x) (REGS_USDHC_BASE(x) + 0x48)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_MIX_CTRL(x) (*(volatile hw_usdhc_mix_ctrl_t *) HW_USDHC_MIX_CTRL_ADDR(x))
|
|
#define HW_USDHC_MIX_CTRL_RD(x) (HW_USDHC_MIX_CTRL(x).U)
|
|
#define HW_USDHC_MIX_CTRL_WR(x, v) (HW_USDHC_MIX_CTRL(x).U = (v))
|
|
#define HW_USDHC_MIX_CTRL_SET(x, v) (HW_USDHC_MIX_CTRL_WR(x, HW_USDHC_MIX_CTRL_RD(x) | (v)))
|
|
#define HW_USDHC_MIX_CTRL_CLR(x, v) (HW_USDHC_MIX_CTRL_WR(x, HW_USDHC_MIX_CTRL_RD(x) & ~(v)))
|
|
#define HW_USDHC_MIX_CTRL_TOG(x, v) (HW_USDHC_MIX_CTRL_WR(x, HW_USDHC_MIX_CTRL_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_MIX_CTRL bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_MIX_CTRL, field DMAEN[0] (RW)
|
|
*
|
|
* DMA Enable: This bit enables DMA functionality. If this bit is set to 1, a DMA operation shall
|
|
* begin when the Host Driver sets the DPSEL bit of this register. Whether the Simple DMA, or the
|
|
* Advanced DMA, is active depends on the DMA Select field of the Protocol Control register.
|
|
*
|
|
* Values:
|
|
* - 0 - Disable
|
|
* - 1 - Enable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MIX_CTRL_DMAEN (0) //!< Bit position for USDHC_MIX_CTRL_DMAEN.
|
|
#define BM_USDHC_MIX_CTRL_DMAEN (0x00000001) //!< Bit mask for USDHC_MIX_CTRL_DMAEN.
|
|
|
|
//! @brief Get value of USDHC_MIX_CTRL_DMAEN from a register value.
|
|
#define BG_USDHC_MIX_CTRL_DMAEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MIX_CTRL_DMAEN) >> BP_USDHC_MIX_CTRL_DMAEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_MIX_CTRL_DMAEN.
|
|
#define BF_USDHC_MIX_CTRL_DMAEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MIX_CTRL_DMAEN) & BM_USDHC_MIX_CTRL_DMAEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DMAEN field to a new value.
|
|
#define BW_USDHC_MIX_CTRL_DMAEN(x, v) (HW_USDHC_MIX_CTRL_WR(x, (HW_USDHC_MIX_CTRL_RD(x) & ~BM_USDHC_MIX_CTRL_DMAEN) | BF_USDHC_MIX_CTRL_DMAEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MIX_CTRL, field BCEN[1] (RW)
|
|
*
|
|
* Block Count Enable: This bit is used to enable the Block Count register, which is only relevant
|
|
* for multiple block transfers. When this bit is 0, the internal counter for block is disabled,
|
|
* which is useful in executing an infinite transfer.
|
|
*
|
|
* Values:
|
|
* - 0 - Disable
|
|
* - 1 - Enable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MIX_CTRL_BCEN (1) //!< Bit position for USDHC_MIX_CTRL_BCEN.
|
|
#define BM_USDHC_MIX_CTRL_BCEN (0x00000002) //!< Bit mask for USDHC_MIX_CTRL_BCEN.
|
|
|
|
//! @brief Get value of USDHC_MIX_CTRL_BCEN from a register value.
|
|
#define BG_USDHC_MIX_CTRL_BCEN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MIX_CTRL_BCEN) >> BP_USDHC_MIX_CTRL_BCEN)
|
|
|
|
//! @brief Format value for bitfield USDHC_MIX_CTRL_BCEN.
|
|
#define BF_USDHC_MIX_CTRL_BCEN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MIX_CTRL_BCEN) & BM_USDHC_MIX_CTRL_BCEN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BCEN field to a new value.
|
|
#define BW_USDHC_MIX_CTRL_BCEN(x, v) (HW_USDHC_MIX_CTRL_WR(x, (HW_USDHC_MIX_CTRL_RD(x) & ~BM_USDHC_MIX_CTRL_BCEN) | BF_USDHC_MIX_CTRL_BCEN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MIX_CTRL, field AC12EN[2] (RW)
|
|
*
|
|
* Auto CMD12 Enable: Multiple block transfers for memory require a CMD12 to stop the transaction.
|
|
* When this bit is set to 1, the uSDHC will issue a CMD12 automatically when the last block
|
|
* transfer has completed. The Host Driver shall not set this bit to issue commands that do not
|
|
* require CMD12 to stop a multiple block data transfer. In particular, secure commands defined in
|
|
* File Security Specification (see reference list) do not require CMD12. In single block transfer,
|
|
* the uSDHC will ignore this bit no matter if it is set or not.
|
|
*
|
|
* Values:
|
|
* - 0 - Disable
|
|
* - 1 - Enable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MIX_CTRL_AC12EN (2) //!< Bit position for USDHC_MIX_CTRL_AC12EN.
|
|
#define BM_USDHC_MIX_CTRL_AC12EN (0x00000004) //!< Bit mask for USDHC_MIX_CTRL_AC12EN.
|
|
|
|
//! @brief Get value of USDHC_MIX_CTRL_AC12EN from a register value.
|
|
#define BG_USDHC_MIX_CTRL_AC12EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MIX_CTRL_AC12EN) >> BP_USDHC_MIX_CTRL_AC12EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_MIX_CTRL_AC12EN.
|
|
#define BF_USDHC_MIX_CTRL_AC12EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MIX_CTRL_AC12EN) & BM_USDHC_MIX_CTRL_AC12EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the AC12EN field to a new value.
|
|
#define BW_USDHC_MIX_CTRL_AC12EN(x, v) (HW_USDHC_MIX_CTRL_WR(x, (HW_USDHC_MIX_CTRL_RD(x) & ~BM_USDHC_MIX_CTRL_AC12EN) | BF_USDHC_MIX_CTRL_AC12EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MIX_CTRL, field DDR_EN[3] (RW)
|
|
*
|
|
* Dual Data Rate mode selection
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MIX_CTRL_DDR_EN (3) //!< Bit position for USDHC_MIX_CTRL_DDR_EN.
|
|
#define BM_USDHC_MIX_CTRL_DDR_EN (0x00000008) //!< Bit mask for USDHC_MIX_CTRL_DDR_EN.
|
|
|
|
//! @brief Get value of USDHC_MIX_CTRL_DDR_EN from a register value.
|
|
#define BG_USDHC_MIX_CTRL_DDR_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MIX_CTRL_DDR_EN) >> BP_USDHC_MIX_CTRL_DDR_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_MIX_CTRL_DDR_EN.
|
|
#define BF_USDHC_MIX_CTRL_DDR_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MIX_CTRL_DDR_EN) & BM_USDHC_MIX_CTRL_DDR_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DDR_EN field to a new value.
|
|
#define BW_USDHC_MIX_CTRL_DDR_EN(x, v) (HW_USDHC_MIX_CTRL_WR(x, (HW_USDHC_MIX_CTRL_RD(x) & ~BM_USDHC_MIX_CTRL_DDR_EN) | BF_USDHC_MIX_CTRL_DDR_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MIX_CTRL, field DTDSEL[4] (RW)
|
|
*
|
|
* Data Transfer Direction Select: This bit defines the direction of DAT line data transfers. The
|
|
* bit is set to 1 by the Host Driver to transfer data from the SD card to the uSDHC and is set to 0
|
|
* for all other commands.
|
|
*
|
|
* Values:
|
|
* - 0 - Write (Host to Card)
|
|
* - 1 - Read (Card to Host)
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MIX_CTRL_DTDSEL (4) //!< Bit position for USDHC_MIX_CTRL_DTDSEL.
|
|
#define BM_USDHC_MIX_CTRL_DTDSEL (0x00000010) //!< Bit mask for USDHC_MIX_CTRL_DTDSEL.
|
|
|
|
//! @brief Get value of USDHC_MIX_CTRL_DTDSEL from a register value.
|
|
#define BG_USDHC_MIX_CTRL_DTDSEL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MIX_CTRL_DTDSEL) >> BP_USDHC_MIX_CTRL_DTDSEL)
|
|
|
|
//! @brief Format value for bitfield USDHC_MIX_CTRL_DTDSEL.
|
|
#define BF_USDHC_MIX_CTRL_DTDSEL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MIX_CTRL_DTDSEL) & BM_USDHC_MIX_CTRL_DTDSEL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DTDSEL field to a new value.
|
|
#define BW_USDHC_MIX_CTRL_DTDSEL(x, v) (HW_USDHC_MIX_CTRL_WR(x, (HW_USDHC_MIX_CTRL_RD(x) & ~BM_USDHC_MIX_CTRL_DTDSEL) | BF_USDHC_MIX_CTRL_DTDSEL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MIX_CTRL, field MSBSEL[5] (RW)
|
|
*
|
|
* Multi / Single Block Select: This bit enables multiple block DAT line data transfers. For any
|
|
* other commands, this bit shall be set to 0. If this bit is 0, it is not necessary to set the
|
|
* Block Count register. (Refer to ).
|
|
*
|
|
* Values:
|
|
* - 0 - Single Block
|
|
* - 1 - Multiple Blocks
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MIX_CTRL_MSBSEL (5) //!< Bit position for USDHC_MIX_CTRL_MSBSEL.
|
|
#define BM_USDHC_MIX_CTRL_MSBSEL (0x00000020) //!< Bit mask for USDHC_MIX_CTRL_MSBSEL.
|
|
|
|
//! @brief Get value of USDHC_MIX_CTRL_MSBSEL from a register value.
|
|
#define BG_USDHC_MIX_CTRL_MSBSEL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MIX_CTRL_MSBSEL) >> BP_USDHC_MIX_CTRL_MSBSEL)
|
|
|
|
//! @brief Format value for bitfield USDHC_MIX_CTRL_MSBSEL.
|
|
#define BF_USDHC_MIX_CTRL_MSBSEL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MIX_CTRL_MSBSEL) & BM_USDHC_MIX_CTRL_MSBSEL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the MSBSEL field to a new value.
|
|
#define BW_USDHC_MIX_CTRL_MSBSEL(x, v) (HW_USDHC_MIX_CTRL_WR(x, (HW_USDHC_MIX_CTRL_RD(x) & ~BM_USDHC_MIX_CTRL_MSBSEL) | BF_USDHC_MIX_CTRL_MSBSEL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MIX_CTRL, field NIBBLE_POS[6] (RW)
|
|
*
|
|
* In DDR 4-bit mode nibble position indictation. 0- the sequence is 'odd high nibble -> even high
|
|
* nibble -> odd low nibble -> even low nibble'; 1- the sequence is 'odd high nibble -> odd low
|
|
* nibble -> even high nibble -> even low nibble'.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MIX_CTRL_NIBBLE_POS (6) //!< Bit position for USDHC_MIX_CTRL_NIBBLE_POS.
|
|
#define BM_USDHC_MIX_CTRL_NIBBLE_POS (0x00000040) //!< Bit mask for USDHC_MIX_CTRL_NIBBLE_POS.
|
|
|
|
//! @brief Get value of USDHC_MIX_CTRL_NIBBLE_POS from a register value.
|
|
#define BG_USDHC_MIX_CTRL_NIBBLE_POS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MIX_CTRL_NIBBLE_POS) >> BP_USDHC_MIX_CTRL_NIBBLE_POS)
|
|
|
|
//! @brief Format value for bitfield USDHC_MIX_CTRL_NIBBLE_POS.
|
|
#define BF_USDHC_MIX_CTRL_NIBBLE_POS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MIX_CTRL_NIBBLE_POS) & BM_USDHC_MIX_CTRL_NIBBLE_POS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the NIBBLE_POS field to a new value.
|
|
#define BW_USDHC_MIX_CTRL_NIBBLE_POS(x, v) (HW_USDHC_MIX_CTRL_WR(x, (HW_USDHC_MIX_CTRL_RD(x) & ~BM_USDHC_MIX_CTRL_NIBBLE_POS) | BF_USDHC_MIX_CTRL_NIBBLE_POS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MIX_CTRL, field AC23EN[7] (RW)
|
|
*
|
|
* Auto CMD23 Enable When this bit is set to 1, the Host Controller issues a CMD23 automatically
|
|
* before issuing a command specified in the Command Register.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MIX_CTRL_AC23EN (7) //!< Bit position for USDHC_MIX_CTRL_AC23EN.
|
|
#define BM_USDHC_MIX_CTRL_AC23EN (0x00000080) //!< Bit mask for USDHC_MIX_CTRL_AC23EN.
|
|
|
|
//! @brief Get value of USDHC_MIX_CTRL_AC23EN from a register value.
|
|
#define BG_USDHC_MIX_CTRL_AC23EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MIX_CTRL_AC23EN) >> BP_USDHC_MIX_CTRL_AC23EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_MIX_CTRL_AC23EN.
|
|
#define BF_USDHC_MIX_CTRL_AC23EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MIX_CTRL_AC23EN) & BM_USDHC_MIX_CTRL_AC23EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the AC23EN field to a new value.
|
|
#define BW_USDHC_MIX_CTRL_AC23EN(x, v) (HW_USDHC_MIX_CTRL_WR(x, (HW_USDHC_MIX_CTRL_RD(x) & ~BM_USDHC_MIX_CTRL_AC23EN) | BF_USDHC_MIX_CTRL_AC23EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MIX_CTRL, field EXE_TUNE[22] (RW)
|
|
*
|
|
* Execute Tuning: (Only used for SD3.0, SDR104 mode) This bit is set to 1 to indicate the Host
|
|
* Driver is starting tuning procedure. Tuning procedure is aborted by writing 0.
|
|
*
|
|
* Values:
|
|
* - 0 - Not Tuned or Tuning Completed
|
|
* - 1 - Execute Tuning
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MIX_CTRL_EXE_TUNE (22) //!< Bit position for USDHC_MIX_CTRL_EXE_TUNE.
|
|
#define BM_USDHC_MIX_CTRL_EXE_TUNE (0x00400000) //!< Bit mask for USDHC_MIX_CTRL_EXE_TUNE.
|
|
|
|
//! @brief Get value of USDHC_MIX_CTRL_EXE_TUNE from a register value.
|
|
#define BG_USDHC_MIX_CTRL_EXE_TUNE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MIX_CTRL_EXE_TUNE) >> BP_USDHC_MIX_CTRL_EXE_TUNE)
|
|
|
|
//! @brief Format value for bitfield USDHC_MIX_CTRL_EXE_TUNE.
|
|
#define BF_USDHC_MIX_CTRL_EXE_TUNE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MIX_CTRL_EXE_TUNE) & BM_USDHC_MIX_CTRL_EXE_TUNE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the EXE_TUNE field to a new value.
|
|
#define BW_USDHC_MIX_CTRL_EXE_TUNE(x, v) (HW_USDHC_MIX_CTRL_WR(x, (HW_USDHC_MIX_CTRL_RD(x) & ~BM_USDHC_MIX_CTRL_EXE_TUNE) | BF_USDHC_MIX_CTRL_EXE_TUNE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MIX_CTRL, field SMP_CLK_SEL[23] (RW)
|
|
*
|
|
* Tuned clock or Fixed clock is used to sample data/cmd (Only used for SD3.0, SDR104 mode)
|
|
*
|
|
* Values:
|
|
* - 0 - Fixed clock is used to sample data/cmd
|
|
* - 1 - Tuned clock is used to sample data/cmd
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MIX_CTRL_SMP_CLK_SEL (23) //!< Bit position for USDHC_MIX_CTRL_SMP_CLK_SEL.
|
|
#define BM_USDHC_MIX_CTRL_SMP_CLK_SEL (0x00800000) //!< Bit mask for USDHC_MIX_CTRL_SMP_CLK_SEL.
|
|
|
|
//! @brief Get value of USDHC_MIX_CTRL_SMP_CLK_SEL from a register value.
|
|
#define BG_USDHC_MIX_CTRL_SMP_CLK_SEL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MIX_CTRL_SMP_CLK_SEL) >> BP_USDHC_MIX_CTRL_SMP_CLK_SEL)
|
|
|
|
//! @brief Format value for bitfield USDHC_MIX_CTRL_SMP_CLK_SEL.
|
|
#define BF_USDHC_MIX_CTRL_SMP_CLK_SEL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MIX_CTRL_SMP_CLK_SEL) & BM_USDHC_MIX_CTRL_SMP_CLK_SEL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SMP_CLK_SEL field to a new value.
|
|
#define BW_USDHC_MIX_CTRL_SMP_CLK_SEL(x, v) (HW_USDHC_MIX_CTRL_WR(x, (HW_USDHC_MIX_CTRL_RD(x) & ~BM_USDHC_MIX_CTRL_SMP_CLK_SEL) | BF_USDHC_MIX_CTRL_SMP_CLK_SEL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MIX_CTRL, field AUTO_TUNE_EN[24] (RW)
|
|
*
|
|
* Auto tuning enable (Only used for SD3.0, SDR104 mode)
|
|
*
|
|
* Values:
|
|
* - 0 - disable auto tuning
|
|
* - 1 - enable auto tuning
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MIX_CTRL_AUTO_TUNE_EN (24) //!< Bit position for USDHC_MIX_CTRL_AUTO_TUNE_EN.
|
|
#define BM_USDHC_MIX_CTRL_AUTO_TUNE_EN (0x01000000) //!< Bit mask for USDHC_MIX_CTRL_AUTO_TUNE_EN.
|
|
|
|
//! @brief Get value of USDHC_MIX_CTRL_AUTO_TUNE_EN from a register value.
|
|
#define BG_USDHC_MIX_CTRL_AUTO_TUNE_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MIX_CTRL_AUTO_TUNE_EN) >> BP_USDHC_MIX_CTRL_AUTO_TUNE_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_MIX_CTRL_AUTO_TUNE_EN.
|
|
#define BF_USDHC_MIX_CTRL_AUTO_TUNE_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MIX_CTRL_AUTO_TUNE_EN) & BM_USDHC_MIX_CTRL_AUTO_TUNE_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the AUTO_TUNE_EN field to a new value.
|
|
#define BW_USDHC_MIX_CTRL_AUTO_TUNE_EN(x, v) (HW_USDHC_MIX_CTRL_WR(x, (HW_USDHC_MIX_CTRL_RD(x) & ~BM_USDHC_MIX_CTRL_AUTO_TUNE_EN) | BF_USDHC_MIX_CTRL_AUTO_TUNE_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MIX_CTRL, field FBCLK_SEL[25] (RW)
|
|
*
|
|
* Feedback clock source selection (Only used for SD3.0, SDR104 mode)
|
|
*
|
|
* Values:
|
|
* - 0 - feedback clock comes from the loopback CLK
|
|
* - 1 - feedback clock comes from the ipp_card_clk_out
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MIX_CTRL_FBCLK_SEL (25) //!< Bit position for USDHC_MIX_CTRL_FBCLK_SEL.
|
|
#define BM_USDHC_MIX_CTRL_FBCLK_SEL (0x02000000) //!< Bit mask for USDHC_MIX_CTRL_FBCLK_SEL.
|
|
|
|
//! @brief Get value of USDHC_MIX_CTRL_FBCLK_SEL from a register value.
|
|
#define BG_USDHC_MIX_CTRL_FBCLK_SEL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MIX_CTRL_FBCLK_SEL) >> BP_USDHC_MIX_CTRL_FBCLK_SEL)
|
|
|
|
//! @brief Format value for bitfield USDHC_MIX_CTRL_FBCLK_SEL.
|
|
#define BF_USDHC_MIX_CTRL_FBCLK_SEL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MIX_CTRL_FBCLK_SEL) & BM_USDHC_MIX_CTRL_FBCLK_SEL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the FBCLK_SEL field to a new value.
|
|
#define BW_USDHC_MIX_CTRL_FBCLK_SEL(x, v) (HW_USDHC_MIX_CTRL_WR(x, (HW_USDHC_MIX_CTRL_RD(x) & ~BM_USDHC_MIX_CTRL_FBCLK_SEL) | BF_USDHC_MIX_CTRL_FBCLK_SEL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_FORCE_EVENT - Force Event
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_FORCE_EVENT - Force Event (WORZ)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* The Force Event Register is not a physically implemented register. Rather, it is an address at
|
|
* which the Interrupt Status Register can be written if the corresponding bit of the Interrupt
|
|
* Status Enable Register is set. This register is a write only register and writing 0 to it has no
|
|
* effect. Writing 1 to this register actually sets the corresponding bit of Interrupt Status
|
|
* Register. A read from this register always results in 0's. In order to change the corresponding
|
|
* status bits in the Interrupt Status Register, make sure to set IPGEN bit in System Control
|
|
* Register so that ipg_clk is always active. Forcing a card interrupt will generate a short pulse
|
|
* on the DAT[1] line, and the driver may treat this interrupt as a normal interrupt. The interrupt
|
|
* service routine may skip polling the card interrupt factor as the interrupt is self cleared.
|
|
*/
|
|
typedef union _hw_usdhc_force_event
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_force_event_bitfields
|
|
{
|
|
unsigned FEVTAC12NE : 1; //!< [0] Force Event Auto Command 12 Not Executed:
|
|
unsigned FEVTAC12TOE : 1; //!< [1] Force Event Auto Command 12 Time Out Error:
|
|
unsigned FEVTAC12CE : 1; //!< [2] Force Event Auto Command 12 CRC Error:
|
|
unsigned FEVTAC12EBE : 1; //!< [3] Force Event Auto Command 12 End Bit Error:
|
|
unsigned FEVTAC12IE : 1; //!< [4] Force Event Auto Command 12 Index Error:
|
|
unsigned RESERVED0 : 2; //!< [6:5] Reserved
|
|
unsigned FEVTCNIBAC12E : 1; //!< [7] Force Event Command Not Executed By Auto Command 12 Error:
|
|
unsigned RESERVED1 : 8; //!< [15:8] Reserved
|
|
unsigned FEVTCTOE : 1; //!< [16] Force Event Command Time Out Error:
|
|
unsigned FEVTCCE : 1; //!< [17] Force Event Command CRC Error:
|
|
unsigned FEVTCEBE : 1; //!< [18] Force Event Command End Bit Error:
|
|
unsigned FEVTCIE : 1; //!< [19] Force Event Command Index Error:
|
|
unsigned FEVTDTOE : 1; //!< [20] Force Event Data Time Out Error:
|
|
unsigned FEVTDCE : 1; //!< [21] Force Event Data CRC Error:
|
|
unsigned FEVTDEBE : 1; //!< [22] Force Event Data End Bit Error:
|
|
unsigned RESERVED2 : 1; //!< [23] Reserved
|
|
unsigned FEVTAC12E : 1; //!< [24] Force Event Auto Command 12 Error:
|
|
unsigned RESERVED3 : 1; //!< [25] Reserved
|
|
unsigned FEVTTNE : 1; //!< [26] Force Tuning Error:
|
|
unsigned RESERVED4 : 1; //!< [27] Reserved
|
|
unsigned FEVTDMAE : 1; //!< [28] Force Event DMA Error:
|
|
unsigned RESERVED5 : 2; //!< [30:29] Reserved
|
|
unsigned FEVTCINT : 1; //!< [31] Force Event Card Interrupt:
|
|
} B;
|
|
} hw_usdhc_force_event_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_FORCE_EVENT register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_FORCE_EVENT_ADDR(x) (REGS_USDHC_BASE(x) + 0x50)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_FORCE_EVENT(x) (*(volatile hw_usdhc_force_event_t *) HW_USDHC_FORCE_EVENT_ADDR(x))
|
|
#define HW_USDHC_FORCE_EVENT_WR(x, v) (HW_USDHC_FORCE_EVENT(x).U = (v))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_FORCE_EVENT bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTAC12NE[0] (WORZ)
|
|
*
|
|
* Force Event Auto Command 12 Not Executed: Forces the AC12NE bit in the Auto Command12 Error
|
|
* Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTAC12NE (0) //!< Bit position for USDHC_FORCE_EVENT_FEVTAC12NE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTAC12NE (0x00000001) //!< Bit mask for USDHC_FORCE_EVENT_FEVTAC12NE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTAC12NE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTAC12NE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTAC12NE) >> BP_USDHC_FORCE_EVENT_FEVTAC12NE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTAC12NE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTAC12NE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTAC12NE) & BM_USDHC_FORCE_EVENT_FEVTAC12NE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTAC12TOE[1] (WORZ)
|
|
*
|
|
* Force Event Auto Command 12 Time Out Error: Forces the AC12TOE bit in the Auto Command12 Error
|
|
* Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTAC12TOE (1) //!< Bit position for USDHC_FORCE_EVENT_FEVTAC12TOE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTAC12TOE (0x00000002) //!< Bit mask for USDHC_FORCE_EVENT_FEVTAC12TOE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTAC12TOE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTAC12TOE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTAC12TOE) >> BP_USDHC_FORCE_EVENT_FEVTAC12TOE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTAC12TOE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTAC12TOE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTAC12TOE) & BM_USDHC_FORCE_EVENT_FEVTAC12TOE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTAC12CE[2] (WORZ)
|
|
*
|
|
* Force Event Auto Command 12 CRC Error: Forces the AC12CE bit in the Auto Command12 Error Status
|
|
* Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTAC12CE (2) //!< Bit position for USDHC_FORCE_EVENT_FEVTAC12CE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTAC12CE (0x00000004) //!< Bit mask for USDHC_FORCE_EVENT_FEVTAC12CE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTAC12CE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTAC12CE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTAC12CE) >> BP_USDHC_FORCE_EVENT_FEVTAC12CE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTAC12CE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTAC12CE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTAC12CE) & BM_USDHC_FORCE_EVENT_FEVTAC12CE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTAC12EBE[3] (WORZ)
|
|
*
|
|
* Force Event Auto Command 12 End Bit Error: Forces the AC12EBE bit in the Auto Command12 Error
|
|
* Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTAC12EBE (3) //!< Bit position for USDHC_FORCE_EVENT_FEVTAC12EBE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTAC12EBE (0x00000008) //!< Bit mask for USDHC_FORCE_EVENT_FEVTAC12EBE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTAC12EBE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTAC12EBE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTAC12EBE) >> BP_USDHC_FORCE_EVENT_FEVTAC12EBE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTAC12EBE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTAC12EBE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTAC12EBE) & BM_USDHC_FORCE_EVENT_FEVTAC12EBE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTAC12IE[4] (WORZ)
|
|
*
|
|
* Force Event Auto Command 12 Index Error: Forces the AC12IE bit in the Auto Command12 Error Status
|
|
* Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTAC12IE (4) //!< Bit position for USDHC_FORCE_EVENT_FEVTAC12IE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTAC12IE (0x00000010) //!< Bit mask for USDHC_FORCE_EVENT_FEVTAC12IE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTAC12IE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTAC12IE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTAC12IE) >> BP_USDHC_FORCE_EVENT_FEVTAC12IE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTAC12IE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTAC12IE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTAC12IE) & BM_USDHC_FORCE_EVENT_FEVTAC12IE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTCNIBAC12E[7] (WORZ)
|
|
*
|
|
* Force Event Command Not Executed By Auto Command 12 Error: Forces the CNIBAC12E bit in the Auto
|
|
* Command12 Error Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTCNIBAC12E (7) //!< Bit position for USDHC_FORCE_EVENT_FEVTCNIBAC12E.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTCNIBAC12E (0x00000080) //!< Bit mask for USDHC_FORCE_EVENT_FEVTCNIBAC12E.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTCNIBAC12E from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTCNIBAC12E(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTCNIBAC12E) >> BP_USDHC_FORCE_EVENT_FEVTCNIBAC12E)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTCNIBAC12E.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTCNIBAC12E(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTCNIBAC12E) & BM_USDHC_FORCE_EVENT_FEVTCNIBAC12E)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTCTOE[16] (WORZ)
|
|
*
|
|
* Force Event Command Time Out Error: Forces the CTOE bit of Interrupt Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTCTOE (16) //!< Bit position for USDHC_FORCE_EVENT_FEVTCTOE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTCTOE (0x00010000) //!< Bit mask for USDHC_FORCE_EVENT_FEVTCTOE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTCTOE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTCTOE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTCTOE) >> BP_USDHC_FORCE_EVENT_FEVTCTOE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTCTOE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTCTOE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTCTOE) & BM_USDHC_FORCE_EVENT_FEVTCTOE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTCCE[17] (WORZ)
|
|
*
|
|
* Force Event Command CRC Error: Forces the CCE bit of Interrupt Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTCCE (17) //!< Bit position for USDHC_FORCE_EVENT_FEVTCCE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTCCE (0x00020000) //!< Bit mask for USDHC_FORCE_EVENT_FEVTCCE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTCCE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTCCE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTCCE) >> BP_USDHC_FORCE_EVENT_FEVTCCE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTCCE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTCCE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTCCE) & BM_USDHC_FORCE_EVENT_FEVTCCE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTCEBE[18] (WORZ)
|
|
*
|
|
* Force Event Command End Bit Error: Forces the CEBE bit of Interrupt Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTCEBE (18) //!< Bit position for USDHC_FORCE_EVENT_FEVTCEBE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTCEBE (0x00040000) //!< Bit mask for USDHC_FORCE_EVENT_FEVTCEBE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTCEBE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTCEBE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTCEBE) >> BP_USDHC_FORCE_EVENT_FEVTCEBE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTCEBE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTCEBE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTCEBE) & BM_USDHC_FORCE_EVENT_FEVTCEBE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTCIE[19] (WORZ)
|
|
*
|
|
* Force Event Command Index Error: Forces the CCE bit of Interrupt Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTCIE (19) //!< Bit position for USDHC_FORCE_EVENT_FEVTCIE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTCIE (0x00080000) //!< Bit mask for USDHC_FORCE_EVENT_FEVTCIE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTCIE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTCIE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTCIE) >> BP_USDHC_FORCE_EVENT_FEVTCIE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTCIE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTCIE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTCIE) & BM_USDHC_FORCE_EVENT_FEVTCIE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTDTOE[20] (WORZ)
|
|
*
|
|
* Force Event Data Time Out Error: Force the DTOE bit of Interrupt Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTDTOE (20) //!< Bit position for USDHC_FORCE_EVENT_FEVTDTOE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTDTOE (0x00100000) //!< Bit mask for USDHC_FORCE_EVENT_FEVTDTOE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTDTOE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTDTOE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTDTOE) >> BP_USDHC_FORCE_EVENT_FEVTDTOE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTDTOE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTDTOE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTDTOE) & BM_USDHC_FORCE_EVENT_FEVTDTOE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTDCE[21] (WORZ)
|
|
*
|
|
* Force Event Data CRC Error: Forces the DCE bit of Interrupt Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTDCE (21) //!< Bit position for USDHC_FORCE_EVENT_FEVTDCE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTDCE (0x00200000) //!< Bit mask for USDHC_FORCE_EVENT_FEVTDCE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTDCE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTDCE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTDCE) >> BP_USDHC_FORCE_EVENT_FEVTDCE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTDCE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTDCE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTDCE) & BM_USDHC_FORCE_EVENT_FEVTDCE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTDEBE[22] (WORZ)
|
|
*
|
|
* Force Event Data End Bit Error: Forces the DEBE bit of Interrupt Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTDEBE (22) //!< Bit position for USDHC_FORCE_EVENT_FEVTDEBE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTDEBE (0x00400000) //!< Bit mask for USDHC_FORCE_EVENT_FEVTDEBE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTDEBE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTDEBE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTDEBE) >> BP_USDHC_FORCE_EVENT_FEVTDEBE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTDEBE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTDEBE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTDEBE) & BM_USDHC_FORCE_EVENT_FEVTDEBE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTAC12E[24] (WORZ)
|
|
*
|
|
* Force Event Auto Command 12 Error: Forces the AC12E bit of Interrupt Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTAC12E (24) //!< Bit position for USDHC_FORCE_EVENT_FEVTAC12E.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTAC12E (0x01000000) //!< Bit mask for USDHC_FORCE_EVENT_FEVTAC12E.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTAC12E from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTAC12E(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTAC12E) >> BP_USDHC_FORCE_EVENT_FEVTAC12E)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTAC12E.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTAC12E(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTAC12E) & BM_USDHC_FORCE_EVENT_FEVTAC12E)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTTNE[26] (WORZ)
|
|
*
|
|
* Force Tuning Error: Forces the TNE bit of Interrupt Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTTNE (26) //!< Bit position for USDHC_FORCE_EVENT_FEVTTNE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTTNE (0x04000000) //!< Bit mask for USDHC_FORCE_EVENT_FEVTTNE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTTNE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTTNE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTTNE) >> BP_USDHC_FORCE_EVENT_FEVTTNE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTTNE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTTNE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTTNE) & BM_USDHC_FORCE_EVENT_FEVTTNE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTDMAE[28] (WORZ)
|
|
*
|
|
* Force Event DMA Error: Forces the DMAE bit of Interrupt Status Register to be set
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTDMAE (28) //!< Bit position for USDHC_FORCE_EVENT_FEVTDMAE.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTDMAE (0x10000000) //!< Bit mask for USDHC_FORCE_EVENT_FEVTDMAE.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTDMAE from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTDMAE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTDMAE) >> BP_USDHC_FORCE_EVENT_FEVTDMAE)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTDMAE.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTDMAE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTDMAE) & BM_USDHC_FORCE_EVENT_FEVTDMAE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_FORCE_EVENT, field FEVTCINT[31] (WORZ)
|
|
*
|
|
* Force Event Card Interrupt: Writing 1 to this bit generates a short low-level pulse on the
|
|
* internal DAT[1] line, as if a self clearing interrupt was received from the external card. If
|
|
* enabled, the CINT bit will be set and the interrupt service routine may treat this interrupt as a
|
|
* normal interrupt from the external card.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_FORCE_EVENT_FEVTCINT (31) //!< Bit position for USDHC_FORCE_EVENT_FEVTCINT.
|
|
#define BM_USDHC_FORCE_EVENT_FEVTCINT (0x80000000) //!< Bit mask for USDHC_FORCE_EVENT_FEVTCINT.
|
|
|
|
//! @brief Get value of USDHC_FORCE_EVENT_FEVTCINT from a register value.
|
|
#define BG_USDHC_FORCE_EVENT_FEVTCINT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_FORCE_EVENT_FEVTCINT) >> BP_USDHC_FORCE_EVENT_FEVTCINT)
|
|
|
|
//! @brief Format value for bitfield USDHC_FORCE_EVENT_FEVTCINT.
|
|
#define BF_USDHC_FORCE_EVENT_FEVTCINT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_FORCE_EVENT_FEVTCINT) & BM_USDHC_FORCE_EVENT_FEVTCINT)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_ADMA_ERR_STATUS - ADMA Error Status Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_ADMA_ERR_STATUS - ADMA Error Status Register (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* When an ADMA Error Interrupt has occurred, the ADMA Error States field in this register holds the
|
|
* ADMA state and the ADMA System Address register holds the address around the error descriptor.
|
|
* For recovering from this error, the Host Driver requires the ADMA state to identify the error
|
|
* descriptor address as follows: ST_STOP: Previous location set in the ADMA System Address register
|
|
* is the error descriptor address ST_FDS: Current location set in the ADMA System Address register
|
|
* is the error descriptor address ST_CADR: This state is never set because it only increments the
|
|
* descriptor pointer and doesn't generate an ADMA error ST_TFR: Previous location set in the ADMA
|
|
* System Address register is the error descriptor address In case of a write operation, the Host
|
|
* Driver should use the ACMD22 to get the number of the written block, rather than using this
|
|
* information, since unwritten data may exist in the Host Controller. The Host Controller generates
|
|
* the ADMA Error Interrupt when it detects invalid descriptor data (Valid=0) in the ST_FDS state.
|
|
* The Host Driver can distinguish this error by reading the Valid bit of the error descriptor. ADMA
|
|
* Error State Coding D01-D00 ADMA Error State (when error has occurred) Contents of ADMA System
|
|
* Address Register 00 ST_STOP (Stop DMA) Holds the address of the next executable Descriptor
|
|
* command 01 ST_FDS (Fetch Descriptor) Holds the valid Descriptor address 10 ST_CADR (Change
|
|
* Address) No ADMA Error is generated 11 ST_TFR (Transfer Data) Holds the address of the next
|
|
* executable Descriptor command
|
|
*/
|
|
typedef union _hw_usdhc_adma_err_status
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_adma_err_status_bitfields
|
|
{
|
|
unsigned ADMAES : 2; //!< [1:0] ADMA Error State (when ADMA Error is occurred.):
|
|
unsigned ADMALME : 1; //!< [2] ADMA Length Mismatch Error:
|
|
unsigned ADMADCE : 1; //!< [3] ADMA Descritor Error:
|
|
unsigned RESERVED0 : 28; //!< [31:4] Reserved
|
|
} B;
|
|
} hw_usdhc_adma_err_status_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_ADMA_ERR_STATUS register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_ADMA_ERR_STATUS_ADDR(x) (REGS_USDHC_BASE(x) + 0x54)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_ADMA_ERR_STATUS(x) (*(volatile hw_usdhc_adma_err_status_t *) HW_USDHC_ADMA_ERR_STATUS_ADDR(x))
|
|
#define HW_USDHC_ADMA_ERR_STATUS_RD(x) (HW_USDHC_ADMA_ERR_STATUS(x).U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_ADMA_ERR_STATUS bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_ADMA_ERR_STATUS, field ADMAES[1:0] (RO)
|
|
*
|
|
* ADMA Error State (when ADMA Error is occurred.): This field indicates the state of the ADMA when
|
|
* an error has occurred during an ADMA data transfer. Refer to for more details.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_ADMA_ERR_STATUS_ADMAES (0) //!< Bit position for USDHC_ADMA_ERR_STATUS_ADMAES.
|
|
#define BM_USDHC_ADMA_ERR_STATUS_ADMAES (0x00000003) //!< Bit mask for USDHC_ADMA_ERR_STATUS_ADMAES.
|
|
|
|
//! @brief Get value of USDHC_ADMA_ERR_STATUS_ADMAES from a register value.
|
|
#define BG_USDHC_ADMA_ERR_STATUS_ADMAES(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_ADMA_ERR_STATUS_ADMAES) >> BP_USDHC_ADMA_ERR_STATUS_ADMAES)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_ADMA_ERR_STATUS, field ADMALME[2] (RO)
|
|
*
|
|
* ADMA Length Mismatch Error: This error occurs in the following 2 cases: While the Block Count
|
|
* Enable is being set, the total data length specified by the Descriptor table is different from
|
|
* that specified by the Block Count and Block Length Total data length can not be divided by the
|
|
* block length
|
|
*
|
|
* Values:
|
|
* - 0 - No Error
|
|
* - 1 - Error
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_ADMA_ERR_STATUS_ADMALME (2) //!< Bit position for USDHC_ADMA_ERR_STATUS_ADMALME.
|
|
#define BM_USDHC_ADMA_ERR_STATUS_ADMALME (0x00000004) //!< Bit mask for USDHC_ADMA_ERR_STATUS_ADMALME.
|
|
|
|
//! @brief Get value of USDHC_ADMA_ERR_STATUS_ADMALME from a register value.
|
|
#define BG_USDHC_ADMA_ERR_STATUS_ADMALME(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_ADMA_ERR_STATUS_ADMALME) >> BP_USDHC_ADMA_ERR_STATUS_ADMALME)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_ADMA_ERR_STATUS, field ADMADCE[3] (RO)
|
|
*
|
|
* ADMA Descritor Error: This error occurs when invalid descriptor fetched by ADMA:
|
|
*
|
|
* Values:
|
|
* - 0 - No Error
|
|
* - 1 - Error
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_ADMA_ERR_STATUS_ADMADCE (3) //!< Bit position for USDHC_ADMA_ERR_STATUS_ADMADCE.
|
|
#define BM_USDHC_ADMA_ERR_STATUS_ADMADCE (0x00000008) //!< Bit mask for USDHC_ADMA_ERR_STATUS_ADMADCE.
|
|
|
|
//! @brief Get value of USDHC_ADMA_ERR_STATUS_ADMADCE from a register value.
|
|
#define BG_USDHC_ADMA_ERR_STATUS_ADMADCE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_ADMA_ERR_STATUS_ADMADCE) >> BP_USDHC_ADMA_ERR_STATUS_ADMADCE)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_ADMA_SYS_ADDR - ADMA System Address
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_ADMA_SYS_ADDR - ADMA System Address (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register contains the physical system memory address used for ADMA transfers.
|
|
*/
|
|
typedef union _hw_usdhc_adma_sys_addr
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_adma_sys_addr_bitfields
|
|
{
|
|
unsigned RESERVED0 : 2; //!< [1:0] Reserved
|
|
unsigned ADS_ADDR : 30; //!< [31:2] ADMA System Address:
|
|
} B;
|
|
} hw_usdhc_adma_sys_addr_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_ADMA_SYS_ADDR register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_ADMA_SYS_ADDR_ADDR(x) (REGS_USDHC_BASE(x) + 0x58)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_ADMA_SYS_ADDR(x) (*(volatile hw_usdhc_adma_sys_addr_t *) HW_USDHC_ADMA_SYS_ADDR_ADDR(x))
|
|
#define HW_USDHC_ADMA_SYS_ADDR_RD(x) (HW_USDHC_ADMA_SYS_ADDR(x).U)
|
|
#define HW_USDHC_ADMA_SYS_ADDR_WR(x, v) (HW_USDHC_ADMA_SYS_ADDR(x).U = (v))
|
|
#define HW_USDHC_ADMA_SYS_ADDR_SET(x, v) (HW_USDHC_ADMA_SYS_ADDR_WR(x, HW_USDHC_ADMA_SYS_ADDR_RD(x) | (v)))
|
|
#define HW_USDHC_ADMA_SYS_ADDR_CLR(x, v) (HW_USDHC_ADMA_SYS_ADDR_WR(x, HW_USDHC_ADMA_SYS_ADDR_RD(x) & ~(v)))
|
|
#define HW_USDHC_ADMA_SYS_ADDR_TOG(x, v) (HW_USDHC_ADMA_SYS_ADDR_WR(x, HW_USDHC_ADMA_SYS_ADDR_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_ADMA_SYS_ADDR bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_ADMA_SYS_ADDR, field ADS_ADDR[31:2] (RW)
|
|
*
|
|
* ADMA System Address: This register holds the word address of the executing command in the
|
|
* Descriptor table. At the start of ADMA, the Host Driver shall set the start address of the
|
|
* Descriptor table. The ADMA engine increments this register address whenever fetching a Descriptor
|
|
* command. When the ADMA is stopped at the Block Gap, this register indicates the address of the
|
|
* next executable Descriptor command. When the ADMA Error Interrupt is generated, this register
|
|
* shall hold the valid Descriptor address depending on the ADMA state. The lower 2 bits of this
|
|
* register is tied to '0' so the ADMA address is always word aligned. Since this register supports
|
|
* dynamic address reflecting, when TC bit is set, it automatically alters the value of internal
|
|
* address counter, so SW cannot change this register when TC bit is set. Such restriction is also
|
|
* listed in .
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_ADMA_SYS_ADDR_ADS_ADDR (2) //!< Bit position for USDHC_ADMA_SYS_ADDR_ADS_ADDR.
|
|
#define BM_USDHC_ADMA_SYS_ADDR_ADS_ADDR (0xfffffffc) //!< Bit mask for USDHC_ADMA_SYS_ADDR_ADS_ADDR.
|
|
|
|
//! @brief Get value of USDHC_ADMA_SYS_ADDR_ADS_ADDR from a register value.
|
|
#define BG_USDHC_ADMA_SYS_ADDR_ADS_ADDR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_ADMA_SYS_ADDR_ADS_ADDR) >> BP_USDHC_ADMA_SYS_ADDR_ADS_ADDR)
|
|
|
|
//! @brief Format value for bitfield USDHC_ADMA_SYS_ADDR_ADS_ADDR.
|
|
#define BF_USDHC_ADMA_SYS_ADDR_ADS_ADDR(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_ADMA_SYS_ADDR_ADS_ADDR) & BM_USDHC_ADMA_SYS_ADDR_ADS_ADDR)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the ADS_ADDR field to a new value.
|
|
#define BW_USDHC_ADMA_SYS_ADDR_ADS_ADDR(x, v) (HW_USDHC_ADMA_SYS_ADDR_WR(x, (HW_USDHC_ADMA_SYS_ADDR_RD(x) & ~BM_USDHC_ADMA_SYS_ADDR_ADS_ADDR) | BF_USDHC_ADMA_SYS_ADDR_ADS_ADDR(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_DLL_CTRL - DLL (Delay Line) Control
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_DLL_CTRL - DLL (Delay Line) Control (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register contains control bits for DLL.
|
|
*/
|
|
typedef union _hw_usdhc_dll_ctrl
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_dll_ctrl_bitfields
|
|
{
|
|
unsigned DLL_CTRL_ENABLE : 1; //!< [0] Set this bit to 1 to enable the DLL and delay chain; otherwise; set to 0 to bypasses DLL.
|
|
unsigned DLL_CTRL_RESET : 1; //!< [1] Setting this bit to 1 force a reset on DLL.
|
|
unsigned DLL_CTRL_SLV_FORCE_UPD : 1; //!< [2] Setting this bit to 1, forces the slave delay line to update to the DLL calibrated value immediately.
|
|
unsigned DLL_CTRL_SLV_DLY_TARGET0 : 4; //!< [6:3] The delay target for the uSDHC loopback read clock can be programmed in 1/16th increments of an ref_clock half-period.
|
|
unsigned DLL_CTRL_GATE_UPDATE : 1; //!< [7] Set this bit to 1 to prevent the DLL from updating (since when clock_in exists, glitches may appear during DLL updates).
|
|
unsigned DLL_CTRL_SLV_OVERRIDE : 1; //!< [8] Set this bit to 1 to Enable manual override for slave delay chain using SLV_OVERRIDE_VAL; to set 0 to disable manual override.
|
|
unsigned DLL_CTRL_SLV_OVERRIDE_VAL : 7; //!< [15:9] When SLV_OVERRIDE=1 This field is used to select 1 of 128 physical taps manually.
|
|
unsigned DLL_CTRL_SLV_DLY_TARGET1 : 3; //!< [18:16] Refer to DLL_CTRL_SLV_DLY_TARGET0 below.
|
|
unsigned RESERVED0 : 1; //!< [19] Reserved
|
|
unsigned DLL_CTRL_SLV_UPDATE_INT : 8; //!< [27:20] Slave delay line update interval.
|
|
unsigned DLL_CTRL_REF_UPDATE_INT : 4; //!< [31:28] DLL control loop update interval.
|
|
} B;
|
|
} hw_usdhc_dll_ctrl_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_DLL_CTRL register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_DLL_CTRL_ADDR(x) (REGS_USDHC_BASE(x) + 0x60)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_DLL_CTRL(x) (*(volatile hw_usdhc_dll_ctrl_t *) HW_USDHC_DLL_CTRL_ADDR(x))
|
|
#define HW_USDHC_DLL_CTRL_RD(x) (HW_USDHC_DLL_CTRL(x).U)
|
|
#define HW_USDHC_DLL_CTRL_WR(x, v) (HW_USDHC_DLL_CTRL(x).U = (v))
|
|
#define HW_USDHC_DLL_CTRL_SET(x, v) (HW_USDHC_DLL_CTRL_WR(x, HW_USDHC_DLL_CTRL_RD(x) | (v)))
|
|
#define HW_USDHC_DLL_CTRL_CLR(x, v) (HW_USDHC_DLL_CTRL_WR(x, HW_USDHC_DLL_CTRL_RD(x) & ~(v)))
|
|
#define HW_USDHC_DLL_CTRL_TOG(x, v) (HW_USDHC_DLL_CTRL_WR(x, HW_USDHC_DLL_CTRL_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_DLL_CTRL bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_DLL_CTRL, field DLL_CTRL_ENABLE[0] (RW)
|
|
*
|
|
* Set this bit to 1 to enable the DLL and delay chain; otherwise; set to 0 to bypasses DLL. Note
|
|
* that using the slave delay line override feature with SLV_OVERRIDE and SLV_OVERRIDE VAL, the DLL
|
|
* does not need to be enabled
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_CTRL_DLL_CTRL_ENABLE (0) //!< Bit position for USDHC_DLL_CTRL_DLL_CTRL_ENABLE.
|
|
#define BM_USDHC_DLL_CTRL_DLL_CTRL_ENABLE (0x00000001) //!< Bit mask for USDHC_DLL_CTRL_DLL_CTRL_ENABLE.
|
|
|
|
//! @brief Get value of USDHC_DLL_CTRL_DLL_CTRL_ENABLE from a register value.
|
|
#define BG_USDHC_DLL_CTRL_DLL_CTRL_ENABLE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_CTRL_DLL_CTRL_ENABLE) >> BP_USDHC_DLL_CTRL_DLL_CTRL_ENABLE)
|
|
|
|
//! @brief Format value for bitfield USDHC_DLL_CTRL_DLL_CTRL_ENABLE.
|
|
#define BF_USDHC_DLL_CTRL_DLL_CTRL_ENABLE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_DLL_CTRL_DLL_CTRL_ENABLE) & BM_USDHC_DLL_CTRL_DLL_CTRL_ENABLE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLL_CTRL_ENABLE field to a new value.
|
|
#define BW_USDHC_DLL_CTRL_DLL_CTRL_ENABLE(x, v) (HW_USDHC_DLL_CTRL_WR(x, (HW_USDHC_DLL_CTRL_RD(x) & ~BM_USDHC_DLL_CTRL_DLL_CTRL_ENABLE) | BF_USDHC_DLL_CTRL_DLL_CTRL_ENABLE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_DLL_CTRL, field DLL_CTRL_RESET[1] (RW)
|
|
*
|
|
* Setting this bit to 1 force a reset on DLL. This will cause the DLL to lose lock and re-calibrate
|
|
* to detect an ref_clock half period phase shift. This signal is used by the DLL as edge-sensitive,
|
|
* so in order to create a subsequent reset, RESET must be taken low and then asserted again
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_CTRL_DLL_CTRL_RESET (1) //!< Bit position for USDHC_DLL_CTRL_DLL_CTRL_RESET.
|
|
#define BM_USDHC_DLL_CTRL_DLL_CTRL_RESET (0x00000002) //!< Bit mask for USDHC_DLL_CTRL_DLL_CTRL_RESET.
|
|
|
|
//! @brief Get value of USDHC_DLL_CTRL_DLL_CTRL_RESET from a register value.
|
|
#define BG_USDHC_DLL_CTRL_DLL_CTRL_RESET(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_CTRL_DLL_CTRL_RESET) >> BP_USDHC_DLL_CTRL_DLL_CTRL_RESET)
|
|
|
|
//! @brief Format value for bitfield USDHC_DLL_CTRL_DLL_CTRL_RESET.
|
|
#define BF_USDHC_DLL_CTRL_DLL_CTRL_RESET(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_DLL_CTRL_DLL_CTRL_RESET) & BM_USDHC_DLL_CTRL_DLL_CTRL_RESET)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLL_CTRL_RESET field to a new value.
|
|
#define BW_USDHC_DLL_CTRL_DLL_CTRL_RESET(x, v) (HW_USDHC_DLL_CTRL_WR(x, (HW_USDHC_DLL_CTRL_RD(x) & ~BM_USDHC_DLL_CTRL_DLL_CTRL_RESET) | BF_USDHC_DLL_CTRL_DLL_CTRL_RESET(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_DLL_CTRL, field DLL_CTRL_SLV_FORCE_UPD[2] (RW)
|
|
*
|
|
* Setting this bit to 1, forces the slave delay line to update to the DLL calibrated value
|
|
* immediately. The slave delay line shall update automatically based on the SLV_UPDATE_INT interval
|
|
* or when a DLL lock condition is sensed. Subsequent forcing of the slave-line update can only
|
|
* occur if SLV_FORCE_UP is set back to 0 and then asserted again (edge triggered). Be sure to use
|
|
* it when uSDHC is idle. This function may not work when uSDHC is working on data/cmd/response.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD (2) //!< Bit position for USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD.
|
|
#define BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD (0x00000004) //!< Bit mask for USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD.
|
|
|
|
//! @brief Get value of USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD from a register value.
|
|
#define BG_USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD) >> BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD)
|
|
|
|
//! @brief Format value for bitfield USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD.
|
|
#define BF_USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD) & BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLL_CTRL_SLV_FORCE_UPD field to a new value.
|
|
#define BW_USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD(x, v) (HW_USDHC_DLL_CTRL_WR(x, (HW_USDHC_DLL_CTRL_RD(x) & ~BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD) | BF_USDHC_DLL_CTRL_DLL_CTRL_SLV_FORCE_UPD(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_DLL_CTRL, field DLL_CTRL_SLV_DLY_TARGET0[6:3] (RW)
|
|
*
|
|
* The delay target for the uSDHC loopback read clock can be programmed in 1/16th increments of an
|
|
* ref_clock half-period. The delay is ((DLL_CTRL_SLV_DLY_TARGET1 +1)* ref_clock/2)/16 So the input
|
|
* read-clock can be delayed relative input data from (ref_clock/2)/16 to ref_clock*4
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0 (3) //!< Bit position for USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0.
|
|
#define BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0 (0x00000078) //!< Bit mask for USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0.
|
|
|
|
//! @brief Get value of USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0 from a register value.
|
|
#define BG_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0) >> BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0)
|
|
|
|
//! @brief Format value for bitfield USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0.
|
|
#define BF_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0) & BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLL_CTRL_SLV_DLY_TARGET0 field to a new value.
|
|
#define BW_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0(x, v) (HW_USDHC_DLL_CTRL_WR(x, (HW_USDHC_DLL_CTRL_RD(x) & ~BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0) | BF_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET0(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_DLL_CTRL, field DLL_CTRL_GATE_UPDATE[7] (RW)
|
|
*
|
|
* Set this bit to 1 to prevent the DLL from updating (since when clock_in exists, glitches may
|
|
* appear during DLL updates). This bit may be used by software if such a condition occurs. Clear
|
|
* the bit to 0 to allow the DLL to update automatically.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE (7) //!< Bit position for USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE.
|
|
#define BM_USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE (0x00000080) //!< Bit mask for USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE.
|
|
|
|
//! @brief Get value of USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE from a register value.
|
|
#define BG_USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE) >> BP_USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE)
|
|
|
|
//! @brief Format value for bitfield USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE.
|
|
#define BF_USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE) & BM_USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLL_CTRL_GATE_UPDATE field to a new value.
|
|
#define BW_USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE(x, v) (HW_USDHC_DLL_CTRL_WR(x, (HW_USDHC_DLL_CTRL_RD(x) & ~BM_USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE) | BF_USDHC_DLL_CTRL_DLL_CTRL_GATE_UPDATE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_DLL_CTRL, field DLL_CTRL_SLV_OVERRIDE[8] (RW)
|
|
*
|
|
* Set this bit to 1 to Enable manual override for slave delay chain using SLV_OVERRIDE_VAL; to set
|
|
* 0 to disable manual override. This feature does not require the DLL to be enabled using the
|
|
* ENABLE bit. In fact to reduce power, if SLV_OVERRIDE is used, it is recommended to disable the
|
|
* DLL with ENABLE=0
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE (8) //!< Bit position for USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE.
|
|
#define BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE (0x00000100) //!< Bit mask for USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE.
|
|
|
|
//! @brief Get value of USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE from a register value.
|
|
#define BG_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE) >> BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE)
|
|
|
|
//! @brief Format value for bitfield USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE.
|
|
#define BF_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE) & BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLL_CTRL_SLV_OVERRIDE field to a new value.
|
|
#define BW_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE(x, v) (HW_USDHC_DLL_CTRL_WR(x, (HW_USDHC_DLL_CTRL_RD(x) & ~BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE) | BF_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_DLL_CTRL, field DLL_CTRL_SLV_OVERRIDE_VAL[15:9] (RW)
|
|
*
|
|
* When SLV_OVERRIDE=1 This field is used to select 1 of 128 physical taps manually. A value of 0
|
|
* selects tap 1, and a value of 0x7f selects tap 128.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL (9) //!< Bit position for USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL.
|
|
#define BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL (0x0000fe00) //!< Bit mask for USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL.
|
|
|
|
//! @brief Get value of USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL from a register value.
|
|
#define BG_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL) >> BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL)
|
|
|
|
//! @brief Format value for bitfield USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL.
|
|
#define BF_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL) & BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLL_CTRL_SLV_OVERRIDE_VAL field to a new value.
|
|
#define BW_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL(x, v) (HW_USDHC_DLL_CTRL_WR(x, (HW_USDHC_DLL_CTRL_RD(x) & ~BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL) | BF_USDHC_DLL_CTRL_DLL_CTRL_SLV_OVERRIDE_VAL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_DLL_CTRL, field DLL_CTRL_SLV_DLY_TARGET1[18:16] (RW)
|
|
*
|
|
* Refer to DLL_CTRL_SLV_DLY_TARGET0 below.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1 (16) //!< Bit position for USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1.
|
|
#define BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1 (0x00070000) //!< Bit mask for USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1.
|
|
|
|
//! @brief Get value of USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1 from a register value.
|
|
#define BG_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1) >> BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1)
|
|
|
|
//! @brief Format value for bitfield USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1.
|
|
#define BF_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1) & BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLL_CTRL_SLV_DLY_TARGET1 field to a new value.
|
|
#define BW_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1(x, v) (HW_USDHC_DLL_CTRL_WR(x, (HW_USDHC_DLL_CTRL_RD(x) & ~BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1) | BF_USDHC_DLL_CTRL_DLL_CTRL_SLV_DLY_TARGET1(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_DLL_CTRL, field DLL_CTRL_SLV_UPDATE_INT[27:20] (RW)
|
|
*
|
|
* Slave delay line update interval. If default 0 is used, it means 256 cycles of ref_clock. A value
|
|
* of 0x0f results in 15 cycles and so on. Note that software can always cause an update of the
|
|
* slave-delay line using the SLV_FORCE_UPDATE register. Note that the slave delay line will also
|
|
* update automatically when the reference DLL transitions to a locked state (from an un-locked
|
|
* state).
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT (20) //!< Bit position for USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT.
|
|
#define BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT (0x0ff00000) //!< Bit mask for USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT.
|
|
|
|
//! @brief Get value of USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT from a register value.
|
|
#define BG_USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT) >> BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT)
|
|
|
|
//! @brief Format value for bitfield USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT.
|
|
#define BF_USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT) & BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLL_CTRL_SLV_UPDATE_INT field to a new value.
|
|
#define BW_USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT(x, v) (HW_USDHC_DLL_CTRL_WR(x, (HW_USDHC_DLL_CTRL_RD(x) & ~BM_USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT) | BF_USDHC_DLL_CTRL_DLL_CTRL_SLV_UPDATE_INT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_DLL_CTRL, field DLL_CTRL_REF_UPDATE_INT[31:28] (RW)
|
|
*
|
|
* DLL control loop update interval. The interval cycle is (2 + REF_UPDATE_INT) * ref_clock. By
|
|
* default, the DLL control loop shall update every two ref_clock cycles. It should be noted that
|
|
* increasing the reference delay-line update interval reduces the ability of the DLL to adjust to
|
|
* fast changes in conditions that may effect the delay (such as voltage and temperature)
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT (28) //!< Bit position for USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT.
|
|
#define BM_USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT (0xf0000000) //!< Bit mask for USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT.
|
|
|
|
//! @brief Get value of USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT from a register value.
|
|
#define BG_USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT) >> BP_USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT)
|
|
|
|
//! @brief Format value for bitfield USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT.
|
|
#define BF_USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT) & BM_USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLL_CTRL_REF_UPDATE_INT field to a new value.
|
|
#define BW_USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT(x, v) (HW_USDHC_DLL_CTRL_WR(x, (HW_USDHC_DLL_CTRL_RD(x) & ~BM_USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT) | BF_USDHC_DLL_CTRL_DLL_CTRL_REF_UPDATE_INT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_DLL_STATUS - DLL Status
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_DLL_STATUS - DLL Status (RO)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register contains the DLL status information. All bits are read only and will read the same
|
|
* as the power-reset value.
|
|
*/
|
|
typedef union _hw_usdhc_dll_status
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_dll_status_bitfields
|
|
{
|
|
unsigned DLL_STS_SLV_LOCK : 1; //!< [0] Slave delay-line lock status.
|
|
unsigned DLL_STS_REF_LOCK : 1; //!< [1] Reference DLL lock status.
|
|
unsigned DLL_STS_SLV_SEL : 7; //!< [8:2] Slave delay line select status.
|
|
unsigned DLL_STS_REF_SEL : 7; //!< [15:9] Reference delay line select taps.
|
|
unsigned RESERVED0 : 16; //!< [31:16] Reserved
|
|
} B;
|
|
} hw_usdhc_dll_status_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_DLL_STATUS register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_DLL_STATUS_ADDR(x) (REGS_USDHC_BASE(x) + 0x64)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_DLL_STATUS(x) (*(volatile hw_usdhc_dll_status_t *) HW_USDHC_DLL_STATUS_ADDR(x))
|
|
#define HW_USDHC_DLL_STATUS_RD(x) (HW_USDHC_DLL_STATUS(x).U)
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_DLL_STATUS bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_DLL_STATUS, field DLL_STS_SLV_LOCK[0] (RO)
|
|
*
|
|
* Slave delay-line lock status. This signifies that a valid calibration has been set to the slave-
|
|
* delay line and that the slave-delay line is implementing the programmed delay value
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_STATUS_DLL_STS_SLV_LOCK (0) //!< Bit position for USDHC_DLL_STATUS_DLL_STS_SLV_LOCK.
|
|
#define BM_USDHC_DLL_STATUS_DLL_STS_SLV_LOCK (0x00000001) //!< Bit mask for USDHC_DLL_STATUS_DLL_STS_SLV_LOCK.
|
|
|
|
//! @brief Get value of USDHC_DLL_STATUS_DLL_STS_SLV_LOCK from a register value.
|
|
#define BG_USDHC_DLL_STATUS_DLL_STS_SLV_LOCK(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_STATUS_DLL_STS_SLV_LOCK) >> BP_USDHC_DLL_STATUS_DLL_STS_SLV_LOCK)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_DLL_STATUS, field DLL_STS_REF_LOCK[1] (RO)
|
|
*
|
|
* Reference DLL lock status. This signifies that the DLL has detected and locked to a half-phase
|
|
* ref_clock shift, allowing the slave delay-line to perform programmed clock delays
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_STATUS_DLL_STS_REF_LOCK (1) //!< Bit position for USDHC_DLL_STATUS_DLL_STS_REF_LOCK.
|
|
#define BM_USDHC_DLL_STATUS_DLL_STS_REF_LOCK (0x00000002) //!< Bit mask for USDHC_DLL_STATUS_DLL_STS_REF_LOCK.
|
|
|
|
//! @brief Get value of USDHC_DLL_STATUS_DLL_STS_REF_LOCK from a register value.
|
|
#define BG_USDHC_DLL_STATUS_DLL_STS_REF_LOCK(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_STATUS_DLL_STS_REF_LOCK) >> BP_USDHC_DLL_STATUS_DLL_STS_REF_LOCK)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_DLL_STATUS, field DLL_STS_SLV_SEL[8:2] (RO)
|
|
*
|
|
* Slave delay line select status. This is the instant value generated from reference chain. Since
|
|
* the reference chain can only be updated when ref_clock is detected, this value should be the
|
|
* right value to be updated when the reference is locked.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_STATUS_DLL_STS_SLV_SEL (2) //!< Bit position for USDHC_DLL_STATUS_DLL_STS_SLV_SEL.
|
|
#define BM_USDHC_DLL_STATUS_DLL_STS_SLV_SEL (0x000001fc) //!< Bit mask for USDHC_DLL_STATUS_DLL_STS_SLV_SEL.
|
|
|
|
//! @brief Get value of USDHC_DLL_STATUS_DLL_STS_SLV_SEL from a register value.
|
|
#define BG_USDHC_DLL_STATUS_DLL_STS_SLV_SEL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_STATUS_DLL_STS_SLV_SEL) >> BP_USDHC_DLL_STATUS_DLL_STS_SLV_SEL)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_DLL_STATUS, field DLL_STS_REF_SEL[15:9] (RO)
|
|
*
|
|
* Reference delay line select taps. This is encoded by 7 bits for 127 taps.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_DLL_STATUS_DLL_STS_REF_SEL (9) //!< Bit position for USDHC_DLL_STATUS_DLL_STS_REF_SEL.
|
|
#define BM_USDHC_DLL_STATUS_DLL_STS_REF_SEL (0x0000fe00) //!< Bit mask for USDHC_DLL_STATUS_DLL_STS_REF_SEL.
|
|
|
|
//! @brief Get value of USDHC_DLL_STATUS_DLL_STS_REF_SEL from a register value.
|
|
#define BG_USDHC_DLL_STATUS_DLL_STS_REF_SEL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_DLL_STATUS_DLL_STS_REF_SEL) >> BP_USDHC_DLL_STATUS_DLL_STS_REF_SEL)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_CLK_TUNE_CTRL_STATUS - CLK Tuning Control and Status
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_CLK_TUNE_CTRL_STATUS - CLK Tuning Control and Status (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register contains the Clock Tuning Control status information. All bits are read only and
|
|
* will read the same as the power-reset value. This register is added to support SD3.0 UHS-I SDR104
|
|
* mode.
|
|
*/
|
|
typedef union _hw_usdhc_clk_tune_ctrl_status
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_clk_tune_ctrl_status_bitfields
|
|
{
|
|
unsigned DLY_CELL_SET_POST : 4; //!< [3:0] Set the number of delay cells on the feedback clock between CLK_OUT and CLK_POST.
|
|
unsigned DLY_CELL_SET_OUT : 4; //!< [7:4] Set the number of delay cells on the feedback clock between CLK_PRE and CLK_OUT.
|
|
unsigned DLY_CELL_SET_PRE : 7; //!< [14:8] Set the number of delay cells on the feedback clock between the feedback clock and CLK_PRE.
|
|
unsigned NXT_ERR : 1; //!< [15] NXT error which means the number of delay cells added on the feedback clock is too large.
|
|
unsigned TAP_SEL_POST : 4; //!< [19:16] Reflect the number of delay cells added on the feedback clock between CLK_OUT and CLK_POST.
|
|
unsigned TAP_SEL_OUT : 4; //!< [23:20] Reflect the number of delay cells added on the feedback clock between CLK_PRE and CLK_OUT.
|
|
unsigned TAP_SEL_PRE : 7; //!< [30:24] Reflects the number of delay cells added on the feedback clock between the feedback clock and CLK_PRE.
|
|
unsigned PRE_ERR : 1; //!< [31] PRE error which means the number of delay cells added on the feedback clock is too small.
|
|
} B;
|
|
} hw_usdhc_clk_tune_ctrl_status_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_CLK_TUNE_CTRL_STATUS register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_CLK_TUNE_CTRL_STATUS_ADDR(x) (REGS_USDHC_BASE(x) + 0x68)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_CLK_TUNE_CTRL_STATUS(x) (*(volatile hw_usdhc_clk_tune_ctrl_status_t *) HW_USDHC_CLK_TUNE_CTRL_STATUS_ADDR(x))
|
|
#define HW_USDHC_CLK_TUNE_CTRL_STATUS_RD(x) (HW_USDHC_CLK_TUNE_CTRL_STATUS(x).U)
|
|
#define HW_USDHC_CLK_TUNE_CTRL_STATUS_WR(x, v) (HW_USDHC_CLK_TUNE_CTRL_STATUS(x).U = (v))
|
|
#define HW_USDHC_CLK_TUNE_CTRL_STATUS_SET(x, v) (HW_USDHC_CLK_TUNE_CTRL_STATUS_WR(x, HW_USDHC_CLK_TUNE_CTRL_STATUS_RD(x) | (v)))
|
|
#define HW_USDHC_CLK_TUNE_CTRL_STATUS_CLR(x, v) (HW_USDHC_CLK_TUNE_CTRL_STATUS_WR(x, HW_USDHC_CLK_TUNE_CTRL_STATUS_RD(x) & ~(v)))
|
|
#define HW_USDHC_CLK_TUNE_CTRL_STATUS_TOG(x, v) (HW_USDHC_CLK_TUNE_CTRL_STATUS_WR(x, HW_USDHC_CLK_TUNE_CTRL_STATUS_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_CLK_TUNE_CTRL_STATUS bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_CLK_TUNE_CTRL_STATUS, field DLY_CELL_SET_POST[3:0] (RW)
|
|
*
|
|
* Set the number of delay cells on the feedback clock between CLK_OUT and CLK_POST.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST (0) //!< Bit position for USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST.
|
|
#define BM_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST (0x0000000f) //!< Bit mask for USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST.
|
|
|
|
//! @brief Get value of USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST from a register value.
|
|
#define BG_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST) >> BP_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST)
|
|
|
|
//! @brief Format value for bitfield USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST.
|
|
#define BF_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST) & BM_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLY_CELL_SET_POST field to a new value.
|
|
#define BW_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST(x, v) (HW_USDHC_CLK_TUNE_CTRL_STATUS_WR(x, (HW_USDHC_CLK_TUNE_CTRL_STATUS_RD(x) & ~BM_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST) | BF_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_POST(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_CLK_TUNE_CTRL_STATUS, field DLY_CELL_SET_OUT[7:4] (RW)
|
|
*
|
|
* Set the number of delay cells on the feedback clock between CLK_PRE and CLK_OUT.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT (4) //!< Bit position for USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT.
|
|
#define BM_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT (0x000000f0) //!< Bit mask for USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT.
|
|
|
|
//! @brief Get value of USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT from a register value.
|
|
#define BG_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT) >> BP_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT)
|
|
|
|
//! @brief Format value for bitfield USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT.
|
|
#define BF_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT) & BM_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLY_CELL_SET_OUT field to a new value.
|
|
#define BW_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT(x, v) (HW_USDHC_CLK_TUNE_CTRL_STATUS_WR(x, (HW_USDHC_CLK_TUNE_CTRL_STATUS_RD(x) & ~BM_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT) | BF_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_OUT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_CLK_TUNE_CTRL_STATUS, field DLY_CELL_SET_PRE[14:8] (RW)
|
|
*
|
|
* Set the number of delay cells on the feedback clock between the feedback clock and CLK_PRE.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE (8) //!< Bit position for USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE.
|
|
#define BM_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE (0x00007f00) //!< Bit mask for USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE.
|
|
|
|
//! @brief Get value of USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE from a register value.
|
|
#define BG_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE) >> BP_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE)
|
|
|
|
//! @brief Format value for bitfield USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE.
|
|
#define BF_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE) & BM_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DLY_CELL_SET_PRE field to a new value.
|
|
#define BW_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE(x, v) (HW_USDHC_CLK_TUNE_CTRL_STATUS_WR(x, (HW_USDHC_CLK_TUNE_CTRL_STATUS_RD(x) & ~BM_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE) | BF_USDHC_CLK_TUNE_CTRL_STATUS_DLY_CELL_SET_PRE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_CLK_TUNE_CTRL_STATUS, field NXT_ERR[15] (RO)
|
|
*
|
|
* NXT error which means the number of delay cells added on the feedback clock is too large. It's
|
|
* valid only when SMP_CLK_SEL of Mix control register(bit23 of 0x48) is enabled.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CLK_TUNE_CTRL_STATUS_NXT_ERR (15) //!< Bit position for USDHC_CLK_TUNE_CTRL_STATUS_NXT_ERR.
|
|
#define BM_USDHC_CLK_TUNE_CTRL_STATUS_NXT_ERR (0x00008000) //!< Bit mask for USDHC_CLK_TUNE_CTRL_STATUS_NXT_ERR.
|
|
|
|
//! @brief Get value of USDHC_CLK_TUNE_CTRL_STATUS_NXT_ERR from a register value.
|
|
#define BG_USDHC_CLK_TUNE_CTRL_STATUS_NXT_ERR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CLK_TUNE_CTRL_STATUS_NXT_ERR) >> BP_USDHC_CLK_TUNE_CTRL_STATUS_NXT_ERR)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_CLK_TUNE_CTRL_STATUS, field TAP_SEL_POST[19:16] (RO)
|
|
*
|
|
* Reflect the number of delay cells added on the feedback clock between CLK_OUT and CLK_POST.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_POST (16) //!< Bit position for USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_POST.
|
|
#define BM_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_POST (0x000f0000) //!< Bit mask for USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_POST.
|
|
|
|
//! @brief Get value of USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_POST from a register value.
|
|
#define BG_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_POST(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_POST) >> BP_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_POST)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_CLK_TUNE_CTRL_STATUS, field TAP_SEL_OUT[23:20] (RO)
|
|
*
|
|
* Reflect the number of delay cells added on the feedback clock between CLK_PRE and CLK_OUT.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_OUT (20) //!< Bit position for USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_OUT.
|
|
#define BM_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_OUT (0x00f00000) //!< Bit mask for USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_OUT.
|
|
|
|
//! @brief Get value of USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_OUT from a register value.
|
|
#define BG_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_OUT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_OUT) >> BP_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_OUT)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_CLK_TUNE_CTRL_STATUS, field TAP_SEL_PRE[30:24] (RO)
|
|
*
|
|
* Reflects the number of delay cells added on the feedback clock between the feedback clock and
|
|
* CLK_PRE. When AUTO_TUNE_EN(bit24 of 0x48) is disabled, TAP_SEL_PRE is always equal to
|
|
* DLY_CELL_SET_PRE. When AUTO_TUNE_EN(bit24 of 0x48) is enabled, TAP_SEL_PRE will be updated
|
|
* automatically according to the status of the auto tuning circuit to adjust the sample clock
|
|
* phase.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_PRE (24) //!< Bit position for USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_PRE.
|
|
#define BM_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_PRE (0x7f000000) //!< Bit mask for USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_PRE.
|
|
|
|
//! @brief Get value of USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_PRE from a register value.
|
|
#define BG_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_PRE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_PRE) >> BP_USDHC_CLK_TUNE_CTRL_STATUS_TAP_SEL_PRE)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_CLK_TUNE_CTRL_STATUS, field PRE_ERR[31] (RO)
|
|
*
|
|
* PRE error which means the number of delay cells added on the feedback clock is too small. It's
|
|
* valid only when SMP_CLK_SEL of Mix control register(bit23 of 0x48) is enabled.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_CLK_TUNE_CTRL_STATUS_PRE_ERR (31) //!< Bit position for USDHC_CLK_TUNE_CTRL_STATUS_PRE_ERR.
|
|
#define BM_USDHC_CLK_TUNE_CTRL_STATUS_PRE_ERR (0x80000000) //!< Bit mask for USDHC_CLK_TUNE_CTRL_STATUS_PRE_ERR.
|
|
|
|
//! @brief Get value of USDHC_CLK_TUNE_CTRL_STATUS_PRE_ERR from a register value.
|
|
#define BG_USDHC_CLK_TUNE_CTRL_STATUS_PRE_ERR(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_CLK_TUNE_CTRL_STATUS_PRE_ERR) >> BP_USDHC_CLK_TUNE_CTRL_STATUS_PRE_ERR)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_VEND_SPEC - Vendor Specific Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_VEND_SPEC - Vendor Specific Register (RW)
|
|
*
|
|
* Reset value: 0x20007809
|
|
*
|
|
* This register contains the vendor specific control/status register.
|
|
*/
|
|
typedef union _hw_usdhc_vend_spec
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_vend_spec_bitfields
|
|
{
|
|
unsigned EXT_DMA_EN : 1; //!< [0] External DMA Request Enable
|
|
unsigned VSELECT : 1; //!< [1] Voltage Selection
|
|
unsigned CONFLICT_CHK_EN : 1; //!< [2] It's not implemented in uSDHC IP.
|
|
unsigned AC12_WR_CHKBUSY_EN : 1; //!< [3] Check busy enable after auto CMD12 for write data packet
|
|
unsigned DAT3_CD_POL : 1; //!< [4] Only for debug.
|
|
unsigned CD_POL : 1; //!< [5] Only for debug.
|
|
unsigned WP_POL : 1; //!< [6] Only for debug.
|
|
unsigned CLKONJ_IN_ABORT : 1; //!< [7] Only for debug.
|
|
unsigned FRC_SDCLK_ON : 1; //!< [8] Force CLK output active:
|
|
unsigned RESERVED0 : 2; //!< [10:9] Reserved.
|
|
unsigned IPG_CLK_SOFT_EN : 1; //!< [11] IPG_CLK software enable
|
|
unsigned HCLK_SOFT_EN : 1; //!< [12] Please note, hardware auto-enables the AHB clock when the internal DMA is enabled even if HCLK_SOFT_EN is 0.
|
|
unsigned IPG_PERCLK_SOFT_EN : 1; //!< [13] ipg_perclk software enable
|
|
unsigned CARD_CLK_SOFT_EN : 1; //!< [14] card clock software enable
|
|
unsigned CRC_CHK_DIS : 1; //!< [15] CRC check disable
|
|
unsigned INT_ST_VAL : 8; //!< [23:16] Internal State Value
|
|
unsigned RESERVED4 : 8; //!< [31:24] Reserved.
|
|
} B;
|
|
} hw_usdhc_vend_spec_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_VEND_SPEC register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_VEND_SPEC_ADDR(x) (REGS_USDHC_BASE(x) + 0xc0)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_VEND_SPEC(x) (*(volatile hw_usdhc_vend_spec_t *) HW_USDHC_VEND_SPEC_ADDR(x))
|
|
#define HW_USDHC_VEND_SPEC_RD(x) (HW_USDHC_VEND_SPEC(x).U)
|
|
#define HW_USDHC_VEND_SPEC_WR(x, v) (HW_USDHC_VEND_SPEC(x).U = (v))
|
|
#define HW_USDHC_VEND_SPEC_SET(x, v) (HW_USDHC_VEND_SPEC_WR(x, HW_USDHC_VEND_SPEC_RD(x) | (v)))
|
|
#define HW_USDHC_VEND_SPEC_CLR(x, v) (HW_USDHC_VEND_SPEC_WR(x, HW_USDHC_VEND_SPEC_RD(x) & ~(v)))
|
|
#define HW_USDHC_VEND_SPEC_TOG(x, v) (HW_USDHC_VEND_SPEC_WR(x, HW_USDHC_VEND_SPEC_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_VEND_SPEC bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field EXT_DMA_EN[0] (RW)
|
|
*
|
|
* External DMA Request Enable Enable the request to external DMA. When the internal DMA (either
|
|
* Simple DMA or Advanced DMA) is not in use, and this bit is set, uSDHC will send out DMA request
|
|
* when the internal buffer is ready. This bit is particularly useful when transferring data by ARM
|
|
* platform polling mode, and it is not allowed to send out the external DMA request. By default,
|
|
* this bit is set.
|
|
*
|
|
* Values:
|
|
* - 0 - In any scenario, uSDHC does not send out external DMA request
|
|
* - 1 - When internal DMA is not active, the external DMA request will be sent out
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_EXT_DMA_EN (0) //!< Bit position for USDHC_VEND_SPEC_EXT_DMA_EN.
|
|
#define BM_USDHC_VEND_SPEC_EXT_DMA_EN (0x00000001) //!< Bit mask for USDHC_VEND_SPEC_EXT_DMA_EN.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_EXT_DMA_EN from a register value.
|
|
#define BG_USDHC_VEND_SPEC_EXT_DMA_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_EXT_DMA_EN) >> BP_USDHC_VEND_SPEC_EXT_DMA_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC_EXT_DMA_EN.
|
|
#define BF_USDHC_VEND_SPEC_EXT_DMA_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC_EXT_DMA_EN) & BM_USDHC_VEND_SPEC_EXT_DMA_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the EXT_DMA_EN field to a new value.
|
|
#define BW_USDHC_VEND_SPEC_EXT_DMA_EN(x, v) (HW_USDHC_VEND_SPEC_WR(x, (HW_USDHC_VEND_SPEC_RD(x) & ~BM_USDHC_VEND_SPEC_EXT_DMA_EN) | BF_USDHC_VEND_SPEC_EXT_DMA_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field VSELECT[1] (RW)
|
|
*
|
|
* Voltage Selection Change the value of output signal VSELECT, to control the voltage on pads for
|
|
* external card. There must be a control circuit out of uSDHC to change the voltage on pads.
|
|
*
|
|
* Values:
|
|
* - 0 - Change the voltage to high voltage range, around 3.0V
|
|
* - 1 - Change the voltage to low voltage range, around 1.8V
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_VSELECT (1) //!< Bit position for USDHC_VEND_SPEC_VSELECT.
|
|
#define BM_USDHC_VEND_SPEC_VSELECT (0x00000002) //!< Bit mask for USDHC_VEND_SPEC_VSELECT.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_VSELECT from a register value.
|
|
#define BG_USDHC_VEND_SPEC_VSELECT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_VSELECT) >> BP_USDHC_VEND_SPEC_VSELECT)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC_VSELECT.
|
|
#define BF_USDHC_VEND_SPEC_VSELECT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC_VSELECT) & BM_USDHC_VEND_SPEC_VSELECT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the VSELECT field to a new value.
|
|
#define BW_USDHC_VEND_SPEC_VSELECT(x, v) (HW_USDHC_VEND_SPEC_WR(x, (HW_USDHC_VEND_SPEC_RD(x) & ~BM_USDHC_VEND_SPEC_VSELECT) | BF_USDHC_VEND_SPEC_VSELECT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field CONFLICT_CHK_EN[2] (RW)
|
|
*
|
|
* It's not implemented in uSDHC IP. Conflict check enable.
|
|
*
|
|
* Values:
|
|
* - 0 - conflict check disable
|
|
* - 1 - conflict check enable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_CONFLICT_CHK_EN (2) //!< Bit position for USDHC_VEND_SPEC_CONFLICT_CHK_EN.
|
|
#define BM_USDHC_VEND_SPEC_CONFLICT_CHK_EN (0x00000004) //!< Bit mask for USDHC_VEND_SPEC_CONFLICT_CHK_EN.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_CONFLICT_CHK_EN from a register value.
|
|
#define BG_USDHC_VEND_SPEC_CONFLICT_CHK_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_CONFLICT_CHK_EN) >> BP_USDHC_VEND_SPEC_CONFLICT_CHK_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC_CONFLICT_CHK_EN.
|
|
#define BF_USDHC_VEND_SPEC_CONFLICT_CHK_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC_CONFLICT_CHK_EN) & BM_USDHC_VEND_SPEC_CONFLICT_CHK_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CONFLICT_CHK_EN field to a new value.
|
|
#define BW_USDHC_VEND_SPEC_CONFLICT_CHK_EN(x, v) (HW_USDHC_VEND_SPEC_WR(x, (HW_USDHC_VEND_SPEC_RD(x) & ~BM_USDHC_VEND_SPEC_CONFLICT_CHK_EN) | BF_USDHC_VEND_SPEC_CONFLICT_CHK_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field AC12_WR_CHKBUSY_EN[3] (RW)
|
|
*
|
|
* Check busy enable after auto CMD12 for write data packet
|
|
*
|
|
* Values:
|
|
* - 0 - Do not check busy after auto CMD12 for write data packet
|
|
* - 1 - Check busy after auto CMD12 for write data packet
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN (3) //!< Bit position for USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN.
|
|
#define BM_USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN (0x00000008) //!< Bit mask for USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN from a register value.
|
|
#define BG_USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN) >> BP_USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN.
|
|
#define BF_USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN) & BM_USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the AC12_WR_CHKBUSY_EN field to a new value.
|
|
#define BW_USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN(x, v) (HW_USDHC_VEND_SPEC_WR(x, (HW_USDHC_VEND_SPEC_RD(x) & ~BM_USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN) | BF_USDHC_VEND_SPEC_AC12_WR_CHKBUSY_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field DAT3_CD_POL[4] (RW)
|
|
*
|
|
* Only for debug. Polarity of Dat3 pin when it's used as card detection:
|
|
*
|
|
* Values:
|
|
* - 0 - card detected when DAT3 is high
|
|
* - 1 - card detected when DAT3 is low
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_DAT3_CD_POL (4) //!< Bit position for USDHC_VEND_SPEC_DAT3_CD_POL.
|
|
#define BM_USDHC_VEND_SPEC_DAT3_CD_POL (0x00000010) //!< Bit mask for USDHC_VEND_SPEC_DAT3_CD_POL.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_DAT3_CD_POL from a register value.
|
|
#define BG_USDHC_VEND_SPEC_DAT3_CD_POL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_DAT3_CD_POL) >> BP_USDHC_VEND_SPEC_DAT3_CD_POL)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC_DAT3_CD_POL.
|
|
#define BF_USDHC_VEND_SPEC_DAT3_CD_POL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC_DAT3_CD_POL) & BM_USDHC_VEND_SPEC_DAT3_CD_POL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DAT3_CD_POL field to a new value.
|
|
#define BW_USDHC_VEND_SPEC_DAT3_CD_POL(x, v) (HW_USDHC_VEND_SPEC_WR(x, (HW_USDHC_VEND_SPEC_RD(x) & ~BM_USDHC_VEND_SPEC_DAT3_CD_POL) | BF_USDHC_VEND_SPEC_DAT3_CD_POL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field CD_POL[5] (RW)
|
|
*
|
|
* Only for debug. Polarity of the CD pin:
|
|
*
|
|
* Values:
|
|
* - 0 - CD pin is low active
|
|
* - 1 - CD pin is high active
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_CD_POL (5) //!< Bit position for USDHC_VEND_SPEC_CD_POL.
|
|
#define BM_USDHC_VEND_SPEC_CD_POL (0x00000020) //!< Bit mask for USDHC_VEND_SPEC_CD_POL.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_CD_POL from a register value.
|
|
#define BG_USDHC_VEND_SPEC_CD_POL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_CD_POL) >> BP_USDHC_VEND_SPEC_CD_POL)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC_CD_POL.
|
|
#define BF_USDHC_VEND_SPEC_CD_POL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC_CD_POL) & BM_USDHC_VEND_SPEC_CD_POL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CD_POL field to a new value.
|
|
#define BW_USDHC_VEND_SPEC_CD_POL(x, v) (HW_USDHC_VEND_SPEC_WR(x, (HW_USDHC_VEND_SPEC_RD(x) & ~BM_USDHC_VEND_SPEC_CD_POL) | BF_USDHC_VEND_SPEC_CD_POL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field WP_POL[6] (RW)
|
|
*
|
|
* Only for debug. Polarity of the WP pin:
|
|
*
|
|
* Values:
|
|
* - 0 - WP pin is high active
|
|
* - 1 - WP pin is low active
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_WP_POL (6) //!< Bit position for USDHC_VEND_SPEC_WP_POL.
|
|
#define BM_USDHC_VEND_SPEC_WP_POL (0x00000040) //!< Bit mask for USDHC_VEND_SPEC_WP_POL.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_WP_POL from a register value.
|
|
#define BG_USDHC_VEND_SPEC_WP_POL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_WP_POL) >> BP_USDHC_VEND_SPEC_WP_POL)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC_WP_POL.
|
|
#define BF_USDHC_VEND_SPEC_WP_POL(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC_WP_POL) & BM_USDHC_VEND_SPEC_WP_POL)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the WP_POL field to a new value.
|
|
#define BW_USDHC_VEND_SPEC_WP_POL(x, v) (HW_USDHC_VEND_SPEC_WR(x, (HW_USDHC_VEND_SPEC_RD(x) & ~BM_USDHC_VEND_SPEC_WP_POL) | BF_USDHC_VEND_SPEC_WP_POL(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field CLKONJ_IN_ABORT[7] (RW)
|
|
*
|
|
* Only for debug. Force CLK output active when sending Abort command:
|
|
*
|
|
* Values:
|
|
* - 0 - the CLK output is active when sending abort command while data is transmitting even if the internal
|
|
* FIFO is full(for read) or empty(for write)
|
|
* - 1 - the CLK output is inactive when sending abort command while data is transmitting if the internal
|
|
* FIFO is full(for read) or empty(for write)
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_CLKONJ_IN_ABORT (7) //!< Bit position for USDHC_VEND_SPEC_CLKONJ_IN_ABORT.
|
|
#define BM_USDHC_VEND_SPEC_CLKONJ_IN_ABORT (0x00000080) //!< Bit mask for USDHC_VEND_SPEC_CLKONJ_IN_ABORT.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_CLKONJ_IN_ABORT from a register value.
|
|
#define BG_USDHC_VEND_SPEC_CLKONJ_IN_ABORT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_CLKONJ_IN_ABORT) >> BP_USDHC_VEND_SPEC_CLKONJ_IN_ABORT)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC_CLKONJ_IN_ABORT.
|
|
#define BF_USDHC_VEND_SPEC_CLKONJ_IN_ABORT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC_CLKONJ_IN_ABORT) & BM_USDHC_VEND_SPEC_CLKONJ_IN_ABORT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CLKONJ_IN_ABORT field to a new value.
|
|
#define BW_USDHC_VEND_SPEC_CLKONJ_IN_ABORT(x, v) (HW_USDHC_VEND_SPEC_WR(x, (HW_USDHC_VEND_SPEC_RD(x) & ~BM_USDHC_VEND_SPEC_CLKONJ_IN_ABORT) | BF_USDHC_VEND_SPEC_CLKONJ_IN_ABORT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field FRC_SDCLK_ON[8] (RW)
|
|
*
|
|
* Force CLK output active:
|
|
*
|
|
* Values:
|
|
* - 0 - CLK active or inactive is fully controlled by the hardware
|
|
* - 1 - force CLK active
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_FRC_SDCLK_ON (8) //!< Bit position for USDHC_VEND_SPEC_FRC_SDCLK_ON.
|
|
#define BM_USDHC_VEND_SPEC_FRC_SDCLK_ON (0x00000100) //!< Bit mask for USDHC_VEND_SPEC_FRC_SDCLK_ON.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_FRC_SDCLK_ON from a register value.
|
|
#define BG_USDHC_VEND_SPEC_FRC_SDCLK_ON(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_FRC_SDCLK_ON) >> BP_USDHC_VEND_SPEC_FRC_SDCLK_ON)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC_FRC_SDCLK_ON.
|
|
#define BF_USDHC_VEND_SPEC_FRC_SDCLK_ON(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC_FRC_SDCLK_ON) & BM_USDHC_VEND_SPEC_FRC_SDCLK_ON)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the FRC_SDCLK_ON field to a new value.
|
|
#define BW_USDHC_VEND_SPEC_FRC_SDCLK_ON(x, v) (HW_USDHC_VEND_SPEC_WR(x, (HW_USDHC_VEND_SPEC_RD(x) & ~BM_USDHC_VEND_SPEC_FRC_SDCLK_ON) | BF_USDHC_VEND_SPEC_FRC_SDCLK_ON(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field IPG_CLK_SOFT_EN[11] (RW)
|
|
*
|
|
* IPG_CLK software enable
|
|
*
|
|
* Values:
|
|
* - 0 - gate off the IPG_CLK
|
|
* - 1 - enable the IPG_CLK
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_IPG_CLK_SOFT_EN (11) //!< Bit position for USDHC_VEND_SPEC_IPG_CLK_SOFT_EN.
|
|
#define BM_USDHC_VEND_SPEC_IPG_CLK_SOFT_EN (0x00000800) //!< Bit mask for USDHC_VEND_SPEC_IPG_CLK_SOFT_EN.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_IPG_CLK_SOFT_EN from a register value.
|
|
#define BG_USDHC_VEND_SPEC_IPG_CLK_SOFT_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_IPG_CLK_SOFT_EN) >> BP_USDHC_VEND_SPEC_IPG_CLK_SOFT_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC_IPG_CLK_SOFT_EN.
|
|
#define BF_USDHC_VEND_SPEC_IPG_CLK_SOFT_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC_IPG_CLK_SOFT_EN) & BM_USDHC_VEND_SPEC_IPG_CLK_SOFT_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the IPG_CLK_SOFT_EN field to a new value.
|
|
#define BW_USDHC_VEND_SPEC_IPG_CLK_SOFT_EN(x, v) (HW_USDHC_VEND_SPEC_WR(x, (HW_USDHC_VEND_SPEC_RD(x) & ~BM_USDHC_VEND_SPEC_IPG_CLK_SOFT_EN) | BF_USDHC_VEND_SPEC_IPG_CLK_SOFT_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field HCLK_SOFT_EN[12] (RW)
|
|
*
|
|
* Please note, hardware auto-enables the AHB clock when the internal DMA is enabled even if
|
|
* HCLK_SOFT_EN is 0. AHB clock software enable
|
|
*
|
|
* Values:
|
|
* - 0 - gate off the AHB clock.
|
|
* - 1 - enable the AHB clock.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_HCLK_SOFT_EN (12) //!< Bit position for USDHC_VEND_SPEC_HCLK_SOFT_EN.
|
|
#define BM_USDHC_VEND_SPEC_HCLK_SOFT_EN (0x00001000) //!< Bit mask for USDHC_VEND_SPEC_HCLK_SOFT_EN.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_HCLK_SOFT_EN from a register value.
|
|
#define BG_USDHC_VEND_SPEC_HCLK_SOFT_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_HCLK_SOFT_EN) >> BP_USDHC_VEND_SPEC_HCLK_SOFT_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC_HCLK_SOFT_EN.
|
|
#define BF_USDHC_VEND_SPEC_HCLK_SOFT_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC_HCLK_SOFT_EN) & BM_USDHC_VEND_SPEC_HCLK_SOFT_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the HCLK_SOFT_EN field to a new value.
|
|
#define BW_USDHC_VEND_SPEC_HCLK_SOFT_EN(x, v) (HW_USDHC_VEND_SPEC_WR(x, (HW_USDHC_VEND_SPEC_RD(x) & ~BM_USDHC_VEND_SPEC_HCLK_SOFT_EN) | BF_USDHC_VEND_SPEC_HCLK_SOFT_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field IPG_PERCLK_SOFT_EN[13] (RW)
|
|
*
|
|
* ipg_perclk software enable
|
|
*
|
|
* Values:
|
|
* - 0 - gate off the ipg_perclk
|
|
* - 1 - enable the ipg_perclk
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN (13) //!< Bit position for USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN.
|
|
#define BM_USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN (0x00002000) //!< Bit mask for USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN from a register value.
|
|
#define BG_USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN) >> BP_USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN.
|
|
#define BF_USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN) & BM_USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the IPG_PERCLK_SOFT_EN field to a new value.
|
|
#define BW_USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN(x, v) (HW_USDHC_VEND_SPEC_WR(x, (HW_USDHC_VEND_SPEC_RD(x) & ~BM_USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN) | BF_USDHC_VEND_SPEC_IPG_PERCLK_SOFT_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field CARD_CLK_SOFT_EN[14] (ROO)
|
|
*
|
|
* card clock software enable
|
|
*
|
|
* Values:
|
|
* - 0 - gate off the sd_clk
|
|
* - 1 - enable the sd_clk
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_CARD_CLK_SOFT_EN (14) //!< Bit position for USDHC_VEND_SPEC_CARD_CLK_SOFT_EN.
|
|
#define BM_USDHC_VEND_SPEC_CARD_CLK_SOFT_EN (0x00004000) //!< Bit mask for USDHC_VEND_SPEC_CARD_CLK_SOFT_EN.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_CARD_CLK_SOFT_EN from a register value.
|
|
#define BG_USDHC_VEND_SPEC_CARD_CLK_SOFT_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_CARD_CLK_SOFT_EN) >> BP_USDHC_VEND_SPEC_CARD_CLK_SOFT_EN)
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field CRC_CHK_DIS[15] (RW)
|
|
*
|
|
* CRC check disable
|
|
*
|
|
* Values:
|
|
* - 0 - check CRC16 for every read data packet and check CRC bits for every write data packet
|
|
* - 1 - ignore CRC16 check for every read data packet and ignore CRC bits check for every write data packet
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_CRC_CHK_DIS (15) //!< Bit position for USDHC_VEND_SPEC_CRC_CHK_DIS.
|
|
#define BM_USDHC_VEND_SPEC_CRC_CHK_DIS (0x00008000) //!< Bit mask for USDHC_VEND_SPEC_CRC_CHK_DIS.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_CRC_CHK_DIS from a register value.
|
|
#define BG_USDHC_VEND_SPEC_CRC_CHK_DIS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_CRC_CHK_DIS) >> BP_USDHC_VEND_SPEC_CRC_CHK_DIS)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC_CRC_CHK_DIS.
|
|
#define BF_USDHC_VEND_SPEC_CRC_CHK_DIS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC_CRC_CHK_DIS) & BM_USDHC_VEND_SPEC_CRC_CHK_DIS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CRC_CHK_DIS field to a new value.
|
|
#define BW_USDHC_VEND_SPEC_CRC_CHK_DIS(x, v) (HW_USDHC_VEND_SPEC_WR(x, (HW_USDHC_VEND_SPEC_RD(x) & ~BM_USDHC_VEND_SPEC_CRC_CHK_DIS) | BF_USDHC_VEND_SPEC_CRC_CHK_DIS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC, field INT_ST_VAL[23:16] (RO)
|
|
*
|
|
* Internal State Value Internal state value, reflecting the corresponding state value selected by
|
|
* Debug Select field. This field is read-only and write to this field does not have effect.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC_INT_ST_VAL (16) //!< Bit position for USDHC_VEND_SPEC_INT_ST_VAL.
|
|
#define BM_USDHC_VEND_SPEC_INT_ST_VAL (0x00ff0000) //!< Bit mask for USDHC_VEND_SPEC_INT_ST_VAL.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC_INT_ST_VAL from a register value.
|
|
#define BG_USDHC_VEND_SPEC_INT_ST_VAL(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC_INT_ST_VAL) >> BP_USDHC_VEND_SPEC_INT_ST_VAL)
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_MMC_BOOT - MMC Boot Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_MMC_BOOT - MMC Boot Register (RW)
|
|
*
|
|
* Reset value: 0x00000000
|
|
*
|
|
* This register contains the MMC Fast Boot control register.
|
|
*/
|
|
typedef union _hw_usdhc_mmc_boot
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_mmc_boot_bitfields
|
|
{
|
|
unsigned DTOCV_ACK : 4; //!< [3:0] Boot ACK time out counter value.
|
|
unsigned BOOT_ACK : 1; //!< [4] Boot ack mode select.
|
|
unsigned BOOT_MODE : 1; //!< [5] Boot mode select.
|
|
unsigned BOOT_EN : 1; //!< [6] Boot mode enable.
|
|
unsigned AUTO_SABG_EN : 1; //!< [7] During boot, enable auto stop at block gap function.
|
|
unsigned DISABLE_TIME_OUT : 1; //!< [8] Please note, when this bit is set, there is no timeout check no matter whether boot_en is set or not.
|
|
unsigned RESERVED0 : 7; //!< [15:9] Reserved
|
|
unsigned BOOT_BLK_CNT : 16; //!< [31:16] The value defines the Stop At Block Gap value of automatic mode.
|
|
} B;
|
|
} hw_usdhc_mmc_boot_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_MMC_BOOT register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_MMC_BOOT_ADDR(x) (REGS_USDHC_BASE(x) + 0xc4)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_MMC_BOOT(x) (*(volatile hw_usdhc_mmc_boot_t *) HW_USDHC_MMC_BOOT_ADDR(x))
|
|
#define HW_USDHC_MMC_BOOT_RD(x) (HW_USDHC_MMC_BOOT(x).U)
|
|
#define HW_USDHC_MMC_BOOT_WR(x, v) (HW_USDHC_MMC_BOOT(x).U = (v))
|
|
#define HW_USDHC_MMC_BOOT_SET(x, v) (HW_USDHC_MMC_BOOT_WR(x, HW_USDHC_MMC_BOOT_RD(x) | (v)))
|
|
#define HW_USDHC_MMC_BOOT_CLR(x, v) (HW_USDHC_MMC_BOOT_WR(x, HW_USDHC_MMC_BOOT_RD(x) & ~(v)))
|
|
#define HW_USDHC_MMC_BOOT_TOG(x, v) (HW_USDHC_MMC_BOOT_WR(x, HW_USDHC_MMC_BOOT_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_MMC_BOOT bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_MMC_BOOT, field DTOCV_ACK[3:0] (RW)
|
|
*
|
|
* Boot ACK time out counter value.
|
|
*
|
|
* Values:
|
|
* - 0000 - SDCLK x 2^13
|
|
* - 0001 - SDCLK x 2^14
|
|
* - 0010 - SDCLK x 2^15
|
|
* - 0011 - SDCLK x 2^16
|
|
* - 0100 - SDCLK x 2^17
|
|
* - 0101 - SDCLK x 2^18
|
|
* - 0110 - SDCLK x 2^19
|
|
* - 0111 - SDCLK x 2^20
|
|
* - 1110 - SDCLK x 2^27
|
|
* - 1111 - SDCLK x 2^28
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MMC_BOOT_DTOCV_ACK (0) //!< Bit position for USDHC_MMC_BOOT_DTOCV_ACK.
|
|
#define BM_USDHC_MMC_BOOT_DTOCV_ACK (0x0000000f) //!< Bit mask for USDHC_MMC_BOOT_DTOCV_ACK.
|
|
|
|
//! @brief Get value of USDHC_MMC_BOOT_DTOCV_ACK from a register value.
|
|
#define BG_USDHC_MMC_BOOT_DTOCV_ACK(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MMC_BOOT_DTOCV_ACK) >> BP_USDHC_MMC_BOOT_DTOCV_ACK)
|
|
|
|
//! @brief Format value for bitfield USDHC_MMC_BOOT_DTOCV_ACK.
|
|
#define BF_USDHC_MMC_BOOT_DTOCV_ACK(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MMC_BOOT_DTOCV_ACK) & BM_USDHC_MMC_BOOT_DTOCV_ACK)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DTOCV_ACK field to a new value.
|
|
#define BW_USDHC_MMC_BOOT_DTOCV_ACK(x, v) (HW_USDHC_MMC_BOOT_WR(x, (HW_USDHC_MMC_BOOT_RD(x) & ~BM_USDHC_MMC_BOOT_DTOCV_ACK) | BF_USDHC_MMC_BOOT_DTOCV_ACK(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MMC_BOOT, field BOOT_ACK[4] (RW)
|
|
*
|
|
* Boot ack mode select.
|
|
*
|
|
* Values:
|
|
* - 0 - No ack
|
|
* - 1 - Ack
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MMC_BOOT_BOOT_ACK (4) //!< Bit position for USDHC_MMC_BOOT_BOOT_ACK.
|
|
#define BM_USDHC_MMC_BOOT_BOOT_ACK (0x00000010) //!< Bit mask for USDHC_MMC_BOOT_BOOT_ACK.
|
|
|
|
//! @brief Get value of USDHC_MMC_BOOT_BOOT_ACK from a register value.
|
|
#define BG_USDHC_MMC_BOOT_BOOT_ACK(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MMC_BOOT_BOOT_ACK) >> BP_USDHC_MMC_BOOT_BOOT_ACK)
|
|
|
|
//! @brief Format value for bitfield USDHC_MMC_BOOT_BOOT_ACK.
|
|
#define BF_USDHC_MMC_BOOT_BOOT_ACK(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MMC_BOOT_BOOT_ACK) & BM_USDHC_MMC_BOOT_BOOT_ACK)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BOOT_ACK field to a new value.
|
|
#define BW_USDHC_MMC_BOOT_BOOT_ACK(x, v) (HW_USDHC_MMC_BOOT_WR(x, (HW_USDHC_MMC_BOOT_RD(x) & ~BM_USDHC_MMC_BOOT_BOOT_ACK) | BF_USDHC_MMC_BOOT_BOOT_ACK(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MMC_BOOT, field BOOT_MODE[5] (RW)
|
|
*
|
|
* Boot mode select.
|
|
*
|
|
* Values:
|
|
* - 0 - Normal boot
|
|
* - 1 - Alternative boot
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MMC_BOOT_BOOT_MODE (5) //!< Bit position for USDHC_MMC_BOOT_BOOT_MODE.
|
|
#define BM_USDHC_MMC_BOOT_BOOT_MODE (0x00000020) //!< Bit mask for USDHC_MMC_BOOT_BOOT_MODE.
|
|
|
|
//! @brief Get value of USDHC_MMC_BOOT_BOOT_MODE from a register value.
|
|
#define BG_USDHC_MMC_BOOT_BOOT_MODE(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MMC_BOOT_BOOT_MODE) >> BP_USDHC_MMC_BOOT_BOOT_MODE)
|
|
|
|
//! @brief Format value for bitfield USDHC_MMC_BOOT_BOOT_MODE.
|
|
#define BF_USDHC_MMC_BOOT_BOOT_MODE(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MMC_BOOT_BOOT_MODE) & BM_USDHC_MMC_BOOT_BOOT_MODE)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BOOT_MODE field to a new value.
|
|
#define BW_USDHC_MMC_BOOT_BOOT_MODE(x, v) (HW_USDHC_MMC_BOOT_WR(x, (HW_USDHC_MMC_BOOT_RD(x) & ~BM_USDHC_MMC_BOOT_BOOT_MODE) | BF_USDHC_MMC_BOOT_BOOT_MODE(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MMC_BOOT, field BOOT_EN[6] (RW)
|
|
*
|
|
* Boot mode enable.
|
|
*
|
|
* Values:
|
|
* - 0 - Fast boot disable
|
|
* - 1 - Fast boot enable
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MMC_BOOT_BOOT_EN (6) //!< Bit position for USDHC_MMC_BOOT_BOOT_EN.
|
|
#define BM_USDHC_MMC_BOOT_BOOT_EN (0x00000040) //!< Bit mask for USDHC_MMC_BOOT_BOOT_EN.
|
|
|
|
//! @brief Get value of USDHC_MMC_BOOT_BOOT_EN from a register value.
|
|
#define BG_USDHC_MMC_BOOT_BOOT_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MMC_BOOT_BOOT_EN) >> BP_USDHC_MMC_BOOT_BOOT_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_MMC_BOOT_BOOT_EN.
|
|
#define BF_USDHC_MMC_BOOT_BOOT_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MMC_BOOT_BOOT_EN) & BM_USDHC_MMC_BOOT_BOOT_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BOOT_EN field to a new value.
|
|
#define BW_USDHC_MMC_BOOT_BOOT_EN(x, v) (HW_USDHC_MMC_BOOT_WR(x, (HW_USDHC_MMC_BOOT_RD(x) & ~BM_USDHC_MMC_BOOT_BOOT_EN) | BF_USDHC_MMC_BOOT_BOOT_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MMC_BOOT, field AUTO_SABG_EN[7] (RW)
|
|
*
|
|
* During boot, enable auto stop at block gap function. This function will be triggered, and host
|
|
* will stop at block gap when received card block cnt is equal to (BLK_CNT - BOOT_BLK_CNT).
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MMC_BOOT_AUTO_SABG_EN (7) //!< Bit position for USDHC_MMC_BOOT_AUTO_SABG_EN.
|
|
#define BM_USDHC_MMC_BOOT_AUTO_SABG_EN (0x00000080) //!< Bit mask for USDHC_MMC_BOOT_AUTO_SABG_EN.
|
|
|
|
//! @brief Get value of USDHC_MMC_BOOT_AUTO_SABG_EN from a register value.
|
|
#define BG_USDHC_MMC_BOOT_AUTO_SABG_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MMC_BOOT_AUTO_SABG_EN) >> BP_USDHC_MMC_BOOT_AUTO_SABG_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_MMC_BOOT_AUTO_SABG_EN.
|
|
#define BF_USDHC_MMC_BOOT_AUTO_SABG_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MMC_BOOT_AUTO_SABG_EN) & BM_USDHC_MMC_BOOT_AUTO_SABG_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the AUTO_SABG_EN field to a new value.
|
|
#define BW_USDHC_MMC_BOOT_AUTO_SABG_EN(x, v) (HW_USDHC_MMC_BOOT_WR(x, (HW_USDHC_MMC_BOOT_RD(x) & ~BM_USDHC_MMC_BOOT_AUTO_SABG_EN) | BF_USDHC_MMC_BOOT_AUTO_SABG_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MMC_BOOT, field DISABLE_TIME_OUT[8] (RW)
|
|
*
|
|
* Please note, when this bit is set, there is no timeout check no matter whether boot_en is set or
|
|
* not. Disable time out.
|
|
*
|
|
* Values:
|
|
* - 0 - Enable time out
|
|
* - 1 - Disable time out
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MMC_BOOT_DISABLE_TIME_OUT (8) //!< Bit position for USDHC_MMC_BOOT_DISABLE_TIME_OUT.
|
|
#define BM_USDHC_MMC_BOOT_DISABLE_TIME_OUT (0x00000100) //!< Bit mask for USDHC_MMC_BOOT_DISABLE_TIME_OUT.
|
|
|
|
//! @brief Get value of USDHC_MMC_BOOT_DISABLE_TIME_OUT from a register value.
|
|
#define BG_USDHC_MMC_BOOT_DISABLE_TIME_OUT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MMC_BOOT_DISABLE_TIME_OUT) >> BP_USDHC_MMC_BOOT_DISABLE_TIME_OUT)
|
|
|
|
//! @brief Format value for bitfield USDHC_MMC_BOOT_DISABLE_TIME_OUT.
|
|
#define BF_USDHC_MMC_BOOT_DISABLE_TIME_OUT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MMC_BOOT_DISABLE_TIME_OUT) & BM_USDHC_MMC_BOOT_DISABLE_TIME_OUT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the DISABLE_TIME_OUT field to a new value.
|
|
#define BW_USDHC_MMC_BOOT_DISABLE_TIME_OUT(x, v) (HW_USDHC_MMC_BOOT_WR(x, (HW_USDHC_MMC_BOOT_RD(x) & ~BM_USDHC_MMC_BOOT_DISABLE_TIME_OUT) | BF_USDHC_MMC_BOOT_DISABLE_TIME_OUT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_MMC_BOOT, field BOOT_BLK_CNT[31:16] (RW)
|
|
*
|
|
* The value defines the Stop At Block Gap value of automatic mode. When received card block cnt is
|
|
* equal to (BLK_CNT - BOOT_BLK_CNT) and AUTO_SABG_EN is 1, then Stop At Block Gap. Here, BLK_CNT is
|
|
* defined in the Block Atrributes Register, bit31-16 of 0x04.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_MMC_BOOT_BOOT_BLK_CNT (16) //!< Bit position for USDHC_MMC_BOOT_BOOT_BLK_CNT.
|
|
#define BM_USDHC_MMC_BOOT_BOOT_BLK_CNT (0xffff0000) //!< Bit mask for USDHC_MMC_BOOT_BOOT_BLK_CNT.
|
|
|
|
//! @brief Get value of USDHC_MMC_BOOT_BOOT_BLK_CNT from a register value.
|
|
#define BG_USDHC_MMC_BOOT_BOOT_BLK_CNT(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_MMC_BOOT_BOOT_BLK_CNT) >> BP_USDHC_MMC_BOOT_BOOT_BLK_CNT)
|
|
|
|
//! @brief Format value for bitfield USDHC_MMC_BOOT_BOOT_BLK_CNT.
|
|
#define BF_USDHC_MMC_BOOT_BOOT_BLK_CNT(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_MMC_BOOT_BOOT_BLK_CNT) & BM_USDHC_MMC_BOOT_BOOT_BLK_CNT)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the BOOT_BLK_CNT field to a new value.
|
|
#define BW_USDHC_MMC_BOOT_BOOT_BLK_CNT(x, v) (HW_USDHC_MMC_BOOT_WR(x, (HW_USDHC_MMC_BOOT_RD(x) & ~BM_USDHC_MMC_BOOT_BOOT_BLK_CNT) | BF_USDHC_MMC_BOOT_BOOT_BLK_CNT(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// HW_USDHC_VEND_SPEC2 - Vendor Specific 2 Register
|
|
//-------------------------------------------------------------------------------------------
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
/*!
|
|
* @brief HW_USDHC_VEND_SPEC2 - Vendor Specific 2 Register (RW)
|
|
*
|
|
* Reset value: 0x00000006
|
|
*
|
|
* This register contains the vendor specific control 2 register.
|
|
*/
|
|
typedef union _hw_usdhc_vend_spec2
|
|
{
|
|
reg32_t U;
|
|
struct _hw_usdhc_vend_spec2_bitfields
|
|
{
|
|
unsigned SDR104_TIMING_DIS : 1; //!< [0] Timeout counter test.
|
|
unsigned SDR104_OE_DIS : 1; //!< [1] CMD_OE/DAT_OE logic generation test.
|
|
unsigned SDR104_NSD_DIS : 1; //!< [2] Interrupt window after abort command is sent.
|
|
unsigned CARD_INT_D3_TEST : 1; //!< [3] Card interrupt detection test.
|
|
unsigned TUNING_8BIT_EN : 1; //!< [4] Enable the auto tuning circuit to check the DAT[7:0].
|
|
unsigned TUNING_1BIT_EN : 1; //!< [5] Enable the auto tuning circuit to check the DAT0 only.
|
|
unsigned TUNING_CMD_EN : 1; //!< [6] Enable the auto tuning circuit to check the CMD line.
|
|
unsigned CARD_INT_AUTO_CLR_DIS : 1; //!< [7] Disable the feature to clear the Card interrupt status bit when Card Interrupt status enable bit is cleared.
|
|
unsigned RESERVED0 : 24; //!< [31:8] Reserved
|
|
} B;
|
|
} hw_usdhc_vend_spec2_t;
|
|
#endif
|
|
|
|
/*!
|
|
* @name Constants and macros for entire USDHC_VEND_SPEC2 register
|
|
*/
|
|
//@{
|
|
#define HW_USDHC_VEND_SPEC2_ADDR(x) (REGS_USDHC_BASE(x) + 0xc8)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
#define HW_USDHC_VEND_SPEC2(x) (*(volatile hw_usdhc_vend_spec2_t *) HW_USDHC_VEND_SPEC2_ADDR(x))
|
|
#define HW_USDHC_VEND_SPEC2_RD(x) (HW_USDHC_VEND_SPEC2(x).U)
|
|
#define HW_USDHC_VEND_SPEC2_WR(x, v) (HW_USDHC_VEND_SPEC2(x).U = (v))
|
|
#define HW_USDHC_VEND_SPEC2_SET(x, v) (HW_USDHC_VEND_SPEC2_WR(x, HW_USDHC_VEND_SPEC2_RD(x) | (v)))
|
|
#define HW_USDHC_VEND_SPEC2_CLR(x, v) (HW_USDHC_VEND_SPEC2_WR(x, HW_USDHC_VEND_SPEC2_RD(x) & ~(v)))
|
|
#define HW_USDHC_VEND_SPEC2_TOG(x, v) (HW_USDHC_VEND_SPEC2_WR(x, HW_USDHC_VEND_SPEC2_RD(x) ^ (v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*
|
|
* constants & macros for individual USDHC_VEND_SPEC2 bitfields
|
|
*/
|
|
|
|
/*! @name Register USDHC_VEND_SPEC2, field SDR104_TIMING_DIS[0] (RW)
|
|
*
|
|
* Timeout counter test. This bit only uses for debugging.
|
|
*
|
|
* Values:
|
|
* - 0 - The timeout counter for Ncr changes to 80, Ncrc changes to 21.
|
|
* - 1 - The timeout counter for Ncr changes to 72, Ncrc changes to 15.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC2_SDR104_TIMING_DIS (0) //!< Bit position for USDHC_VEND_SPEC2_SDR104_TIMING_DIS.
|
|
#define BM_USDHC_VEND_SPEC2_SDR104_TIMING_DIS (0x00000001) //!< Bit mask for USDHC_VEND_SPEC2_SDR104_TIMING_DIS.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC2_SDR104_TIMING_DIS from a register value.
|
|
#define BG_USDHC_VEND_SPEC2_SDR104_TIMING_DIS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC2_SDR104_TIMING_DIS) >> BP_USDHC_VEND_SPEC2_SDR104_TIMING_DIS)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC2_SDR104_TIMING_DIS.
|
|
#define BF_USDHC_VEND_SPEC2_SDR104_TIMING_DIS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC2_SDR104_TIMING_DIS) & BM_USDHC_VEND_SPEC2_SDR104_TIMING_DIS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SDR104_TIMING_DIS field to a new value.
|
|
#define BW_USDHC_VEND_SPEC2_SDR104_TIMING_DIS(x, v) (HW_USDHC_VEND_SPEC2_WR(x, (HW_USDHC_VEND_SPEC2_RD(x) & ~BM_USDHC_VEND_SPEC2_SDR104_TIMING_DIS) | BF_USDHC_VEND_SPEC2_SDR104_TIMING_DIS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC2, field SDR104_OE_DIS[1] (RW)
|
|
*
|
|
* CMD_OE/DAT_OE logic generation test. This bit only uses for debugging.
|
|
*
|
|
* Values:
|
|
* - 0 - Drive the CMD_OE/DAT_OE for one more clock cycle after the end bit.
|
|
* - 1 - Stop to drive the CMD_OE/DAT_OE at once after driving the end bit.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC2_SDR104_OE_DIS (1) //!< Bit position for USDHC_VEND_SPEC2_SDR104_OE_DIS.
|
|
#define BM_USDHC_VEND_SPEC2_SDR104_OE_DIS (0x00000002) //!< Bit mask for USDHC_VEND_SPEC2_SDR104_OE_DIS.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC2_SDR104_OE_DIS from a register value.
|
|
#define BG_USDHC_VEND_SPEC2_SDR104_OE_DIS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC2_SDR104_OE_DIS) >> BP_USDHC_VEND_SPEC2_SDR104_OE_DIS)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC2_SDR104_OE_DIS.
|
|
#define BF_USDHC_VEND_SPEC2_SDR104_OE_DIS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC2_SDR104_OE_DIS) & BM_USDHC_VEND_SPEC2_SDR104_OE_DIS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SDR104_OE_DIS field to a new value.
|
|
#define BW_USDHC_VEND_SPEC2_SDR104_OE_DIS(x, v) (HW_USDHC_VEND_SPEC2_WR(x, (HW_USDHC_VEND_SPEC2_RD(x) & ~BM_USDHC_VEND_SPEC2_SDR104_OE_DIS) | BF_USDHC_VEND_SPEC2_SDR104_OE_DIS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC2, field SDR104_NSD_DIS[2] (RW)
|
|
*
|
|
* Interrupt window after abort command is sent. This bit only uses for debugging.
|
|
*
|
|
* Values:
|
|
* - 0 - Enable the interrupt window 9 cycles later after the end of the I/O abort command(or CMD12) is sent.
|
|
* - 1 - Enable the interrupt window 5 cycles later after the end of the I/O abort command(or CMD12) is sent.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC2_SDR104_NSD_DIS (2) //!< Bit position for USDHC_VEND_SPEC2_SDR104_NSD_DIS.
|
|
#define BM_USDHC_VEND_SPEC2_SDR104_NSD_DIS (0x00000004) //!< Bit mask for USDHC_VEND_SPEC2_SDR104_NSD_DIS.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC2_SDR104_NSD_DIS from a register value.
|
|
#define BG_USDHC_VEND_SPEC2_SDR104_NSD_DIS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC2_SDR104_NSD_DIS) >> BP_USDHC_VEND_SPEC2_SDR104_NSD_DIS)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC2_SDR104_NSD_DIS.
|
|
#define BF_USDHC_VEND_SPEC2_SDR104_NSD_DIS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC2_SDR104_NSD_DIS) & BM_USDHC_VEND_SPEC2_SDR104_NSD_DIS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the SDR104_NSD_DIS field to a new value.
|
|
#define BW_USDHC_VEND_SPEC2_SDR104_NSD_DIS(x, v) (HW_USDHC_VEND_SPEC2_WR(x, (HW_USDHC_VEND_SPEC2_RD(x) & ~BM_USDHC_VEND_SPEC2_SDR104_NSD_DIS) | BF_USDHC_VEND_SPEC2_SDR104_NSD_DIS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC2, field CARD_INT_D3_TEST[3] (RW)
|
|
*
|
|
* Card interrupt detection test. This bit only uses for debugging.
|
|
*
|
|
* Values:
|
|
* - 0 - Check the card interrupt only when DAT[3] is high.
|
|
* - 1 - Check the card interrupt by ignoring the status of DAT[3].
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC2_CARD_INT_D3_TEST (3) //!< Bit position for USDHC_VEND_SPEC2_CARD_INT_D3_TEST.
|
|
#define BM_USDHC_VEND_SPEC2_CARD_INT_D3_TEST (0x00000008) //!< Bit mask for USDHC_VEND_SPEC2_CARD_INT_D3_TEST.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC2_CARD_INT_D3_TEST from a register value.
|
|
#define BG_USDHC_VEND_SPEC2_CARD_INT_D3_TEST(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC2_CARD_INT_D3_TEST) >> BP_USDHC_VEND_SPEC2_CARD_INT_D3_TEST)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC2_CARD_INT_D3_TEST.
|
|
#define BF_USDHC_VEND_SPEC2_CARD_INT_D3_TEST(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC2_CARD_INT_D3_TEST) & BM_USDHC_VEND_SPEC2_CARD_INT_D3_TEST)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CARD_INT_D3_TEST field to a new value.
|
|
#define BW_USDHC_VEND_SPEC2_CARD_INT_D3_TEST(x, v) (HW_USDHC_VEND_SPEC2_WR(x, (HW_USDHC_VEND_SPEC2_RD(x) & ~BM_USDHC_VEND_SPEC2_CARD_INT_D3_TEST) | BF_USDHC_VEND_SPEC2_CARD_INT_D3_TEST(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC2, field TUNING_8BIT_EN[4] (RW)
|
|
*
|
|
* Enable the auto tuning circuit to check the DAT[7:0]. It's used with the TUNING_1bit_EN together.
|
|
*
|
|
* Values:
|
|
* - 00 - Tuning circuit only checks the DAT[3:0].
|
|
* - 01 - Tuning circuit only checks the DAT[0].
|
|
* - 10 - Tuning circuit checks the whole DAT[7:0].
|
|
* - 11 - Invalid.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC2_TUNING_8BIT_EN (4) //!< Bit position for USDHC_VEND_SPEC2_TUNING_8BIT_EN.
|
|
#define BM_USDHC_VEND_SPEC2_TUNING_8BIT_EN (0x00000010) //!< Bit mask for USDHC_VEND_SPEC2_TUNING_8BIT_EN.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC2_TUNING_8BIT_EN from a register value.
|
|
#define BG_USDHC_VEND_SPEC2_TUNING_8BIT_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC2_TUNING_8BIT_EN) >> BP_USDHC_VEND_SPEC2_TUNING_8BIT_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC2_TUNING_8BIT_EN.
|
|
#define BF_USDHC_VEND_SPEC2_TUNING_8BIT_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC2_TUNING_8BIT_EN) & BM_USDHC_VEND_SPEC2_TUNING_8BIT_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TUNING_8BIT_EN field to a new value.
|
|
#define BW_USDHC_VEND_SPEC2_TUNING_8BIT_EN(x, v) (HW_USDHC_VEND_SPEC2_WR(x, (HW_USDHC_VEND_SPEC2_RD(x) & ~BM_USDHC_VEND_SPEC2_TUNING_8BIT_EN) | BF_USDHC_VEND_SPEC2_TUNING_8BIT_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC2, field TUNING_1BIT_EN[5] (RW)
|
|
*
|
|
* Enable the auto tuning circuit to check the DAT0 only. It's used with the TUNING_8bit_EN
|
|
* together.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC2_TUNING_1BIT_EN (5) //!< Bit position for USDHC_VEND_SPEC2_TUNING_1BIT_EN.
|
|
#define BM_USDHC_VEND_SPEC2_TUNING_1BIT_EN (0x00000020) //!< Bit mask for USDHC_VEND_SPEC2_TUNING_1BIT_EN.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC2_TUNING_1BIT_EN from a register value.
|
|
#define BG_USDHC_VEND_SPEC2_TUNING_1BIT_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC2_TUNING_1BIT_EN) >> BP_USDHC_VEND_SPEC2_TUNING_1BIT_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC2_TUNING_1BIT_EN.
|
|
#define BF_USDHC_VEND_SPEC2_TUNING_1BIT_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC2_TUNING_1BIT_EN) & BM_USDHC_VEND_SPEC2_TUNING_1BIT_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TUNING_1BIT_EN field to a new value.
|
|
#define BW_USDHC_VEND_SPEC2_TUNING_1BIT_EN(x, v) (HW_USDHC_VEND_SPEC2_WR(x, (HW_USDHC_VEND_SPEC2_RD(x) & ~BM_USDHC_VEND_SPEC2_TUNING_1BIT_EN) | BF_USDHC_VEND_SPEC2_TUNING_1BIT_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC2, field TUNING_CMD_EN[6] (RW)
|
|
*
|
|
* Enable the auto tuning circuit to check the CMD line.
|
|
*
|
|
* Values:
|
|
* - 0 - Auto tuning circuit doesn't check the CMD line.
|
|
* - 1 - Auto tuning circuit checks the CMD line.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC2_TUNING_CMD_EN (6) //!< Bit position for USDHC_VEND_SPEC2_TUNING_CMD_EN.
|
|
#define BM_USDHC_VEND_SPEC2_TUNING_CMD_EN (0x00000040) //!< Bit mask for USDHC_VEND_SPEC2_TUNING_CMD_EN.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC2_TUNING_CMD_EN from a register value.
|
|
#define BG_USDHC_VEND_SPEC2_TUNING_CMD_EN(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC2_TUNING_CMD_EN) >> BP_USDHC_VEND_SPEC2_TUNING_CMD_EN)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC2_TUNING_CMD_EN.
|
|
#define BF_USDHC_VEND_SPEC2_TUNING_CMD_EN(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC2_TUNING_CMD_EN) & BM_USDHC_VEND_SPEC2_TUNING_CMD_EN)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the TUNING_CMD_EN field to a new value.
|
|
#define BW_USDHC_VEND_SPEC2_TUNING_CMD_EN(x, v) (HW_USDHC_VEND_SPEC2_WR(x, (HW_USDHC_VEND_SPEC2_RD(x) & ~BM_USDHC_VEND_SPEC2_TUNING_CMD_EN) | BF_USDHC_VEND_SPEC2_TUNING_CMD_EN(v)))
|
|
#endif
|
|
//@}
|
|
|
|
/*! @name Register USDHC_VEND_SPEC2, field CARD_INT_AUTO_CLR_DIS[7] (RW)
|
|
*
|
|
* Disable the feature to clear the Card interrupt status bit when Card Interrupt status enable bit
|
|
* is cleared. Only for debug.
|
|
*
|
|
* Values:
|
|
* - 0 - Card interrupt status bit(CINT) can be cleared when Card Interrupt status enable bit is 0.
|
|
* - 1 - Card interrupt status bit(CINT) can only be cleared by writting a 1 to CINT bit.
|
|
*/
|
|
//@{
|
|
#define BP_USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS (7) //!< Bit position for USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS.
|
|
#define BM_USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS (0x00000080) //!< Bit mask for USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS.
|
|
|
|
//! @brief Get value of USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS from a register value.
|
|
#define BG_USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS(r) ((__REG_VALUE_TYPE((r), reg32_t) & BM_USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS) >> BP_USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS)
|
|
|
|
//! @brief Format value for bitfield USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS.
|
|
#define BF_USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS(v) ((__REG_VALUE_TYPE((v), reg32_t) << BP_USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS) & BM_USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS)
|
|
|
|
#ifndef __LANGUAGE_ASM__
|
|
//! @brief Set the CARD_INT_AUTO_CLR_DIS field to a new value.
|
|
#define BW_USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS(x, v) (HW_USDHC_VEND_SPEC2_WR(x, (HW_USDHC_VEND_SPEC2_RD(x) & ~BM_USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS) | BF_USDHC_VEND_SPEC2_CARD_INT_AUTO_CLR_DIS(v)))
|
|
#endif
|
|
//@}
|
|
|
|
//-------------------------------------------------------------------------------------------
|
|
// hw_usdhc_t - module struct
|
|
//-------------------------------------------------------------------------------------------
|
|
/*!
|
|
* @brief All USDHC module registers.
|
|
*/
|
|
#ifndef __LANGUAGE_ASM__
|
|
#pragma pack(1)
|
|
typedef struct _hw_usdhc
|
|
{
|
|
volatile hw_usdhc_ds_addr_t DS_ADDR; //!< DMA System Address
|
|
volatile hw_usdhc_blk_att_t BLK_ATT; //!< Block Attributes
|
|
volatile hw_usdhc_cmd_arg_t CMD_ARG; //!< Command Argument
|
|
volatile hw_usdhc_cmd_xfr_typ_t CMD_XFR_TYP; //!< Command Transfer Type
|
|
volatile hw_usdhc_cmd_rsp0_t CMD_RSP0; //!< Command Response0
|
|
volatile hw_usdhc_cmd_rsp1_t CMD_RSP1; //!< Command Response1
|
|
volatile hw_usdhc_cmd_rsp2_t CMD_RSP2; //!< Command Response2
|
|
volatile hw_usdhc_cmd_rsp3_t CMD_RSP3; //!< Command Response3
|
|
volatile hw_usdhc_data_buff_acc_port_t DATA_BUFF_ACC_PORT; //!< Data Buffer Access Port
|
|
volatile hw_usdhc_pres_state_t PRES_STATE; //!< Present State
|
|
volatile hw_usdhc_prot_ctrl_t PROT_CTRL; //!< Protocol Control
|
|
volatile hw_usdhc_sys_ctrl_t SYS_CTRL; //!< System Control
|
|
volatile hw_usdhc_int_status_t INT_STATUS; //!< Interrupt Status
|
|
volatile hw_usdhc_int_status_en_t INT_STATUS_EN; //!< Interrupt Status Enable
|
|
volatile hw_usdhc_int_signal_en_t INT_SIGNAL_EN; //!< Interrupt Signal Enable
|
|
volatile hw_usdhc_autocmd12_err_status_t AUTOCMD12_ERR_STATUS; //!< Auto CMD12 Error Status
|
|
volatile hw_usdhc_host_ctrl_cap_t HOST_CTRL_CAP; //!< Host Controller Capabilities
|
|
volatile hw_usdhc_wtmk_lvl_t WTMK_LVL; //!< Watermark Level
|
|
volatile hw_usdhc_mix_ctrl_t MIX_CTRL; //!< Mixer Control
|
|
reg32_t _reserved0;
|
|
volatile hw_usdhc_force_event_t FORCE_EVENT; //!< Force Event
|
|
volatile hw_usdhc_adma_err_status_t ADMA_ERR_STATUS; //!< ADMA Error Status Register
|
|
volatile hw_usdhc_adma_sys_addr_t ADMA_SYS_ADDR; //!< ADMA System Address
|
|
reg32_t _reserved1;
|
|
volatile hw_usdhc_dll_ctrl_t DLL_CTRL; //!< DLL (Delay Line) Control
|
|
volatile hw_usdhc_dll_status_t DLL_STATUS; //!< DLL Status
|
|
volatile hw_usdhc_clk_tune_ctrl_status_t CLK_TUNE_CTRL_STATUS; //!< CLK Tuning Control and Status
|
|
reg32_t _reserved2[21];
|
|
volatile hw_usdhc_vend_spec_t VEND_SPEC; //!< Vendor Specific Register
|
|
volatile hw_usdhc_mmc_boot_t MMC_BOOT; //!< MMC Boot Register
|
|
volatile hw_usdhc_vend_spec2_t VEND_SPEC2; //!< Vendor Specific 2 Register
|
|
} hw_usdhc_t;
|
|
#pragma pack()
|
|
|
|
//! @brief Macro to access all USDHC registers.
|
|
//! @param x USDHC instance number.
|
|
//! @return Reference (not a pointer) to the registers struct. To get a pointer to the struct,
|
|
//! use the '&' operator, like <code>&HW_USDHC(0)</code>.
|
|
#define HW_USDHC(x) (*(hw_usdhc_t *) REGS_USDHC_BASE(x))
|
|
#endif
|
|
|
|
#endif // __HW_USDHC_REGISTERS_H__
|
|
// v18/121106/1.2.2
|
|
// EOF
|