AM263x MCU+ SDK
09.01.00
Go to the documentation of this file.
61 #include <drivers/hw_include/csl_types.h>
62 #include <drivers/hw_include/cslr_mmcsd.h>
63 #include <drivers/hw_include/hw_types.h>
74 #define MMCSD_CARD_SD (0U)
77 #define MMCSD_CARD_MMC (1U)
80 #define MMCSD_CARD_EMMC (2U)
83 #define MMCSD_CARD_TYPE_NO_DEVICE (3U)
86 #define MMCSD_CMD_SETBUSWIDTH (MMCSD_CMD_RESERVED + 0U)
89 #define MMCSD_CMD_SETFREQUENCY (MMCSD_CMD_RESERVED + 1U)
92 #define MMCSD_CMD_GETBUSWIDTH (MMCSD_CMD_RESERVED + 2U)
95 #define MMCSD_CMD_GETFREQUENCY (MMCSD_CMD_RESERVED + 3U)
98 #define MMCSD_CMD_GETMEDIAPARAMS (MMCSD_CMD_RESERVED + 4U)
101 #define MMCSD_INVALID_MUXNUM (-1)
104 #define MMCSD_INVALID_MUX_EVENTNUM (-1)
107 #define MMCSD_BUS_WIDTH_1BIT (1U)
110 #define MMCSD_BUS_WIDTH_4BIT (4U)
113 #define MMCSD_BUS_WIDTH_8BIT (8U)
116 #define MMCSD_TRANSPEED_25MBPS (0x32U)
119 #define MMCSD_TRANSPEED_50MBPS (0x5AU)
122 #define MMCSD_TRANSPEED_DEFAULT (0x32U)
125 #define MMCSD_TRANSPEED_HS (0x5AU)
128 #define MMCSD_TRANSPEED_SDR12 (0x32U)
131 #define MMCSD_TRANSPEED_SDR25 (0x5AU)
134 #define MMCSD_TRANSPEED_SDR50 (0xBU)
137 #define MMCSD_TRANSPEED_SDR104 (0x2BU)
140 #define MMCSD_TRANSPEED_DDR50 (0x3BU)
143 #define MMCSD_TRANSPEED_HS200 (0x2BU)
146 #define MMCSD_LOOPBACK_ANY (0x0U)
149 #define MMCSD_LOOPBACK_INTERNAL (0x1U)
152 #define MMCSD_LOOPBACK_PAD (0x2U)
155 #define MMCSD_VOLTAGE_ANY (0x0U)
171 typedef enum hsMmcsdResetLineMask
182 typedef enum MMCSD_clkAct_t
195 typedef enum MMCSD_standbyMode_t
204 CSL_MMC_SYSCONFIG_STANDBYMODE_SMARTWAKE
209 typedef enum MMCSD_pwrCtrl_t
218 typedef enum MMCSD_suppVolt_t
229 typedef enum MMCSD_cmdType_t
242 typedef enum MMCSD_rspType_t
255 typedef enum MMCSD_xFerType_t
264 typedef enum MMCSD_intrMask_t
305 typedef struct MMCSD_sysCfg_t
329 typedef struct MMCSD_cmd_t{
341 typedef struct MMCSD_cmdObj_t
363 typedef enum MMCSD_idleMode_t
374 typedef enum MMCSD_busVolt_t
384 typedef struct MMCSD_iodelayParams_s {
550 uint32_t response[4];
uint32_t enableAutoIdle
Definition: mmcsd/v1/mmcsd.h:320
uint32_t intrEnable
Definition: mmcsd/v1/mmcsd.h:584
@ MMCSD_RESET_LINE_MASK_ALL
Definition: mmcsd/v1/mmcsd.h:177
@ MMCSD_CLK_ACT_FCLK_OFF
Definition: mmcsd/v1/mmcsd.h:186
MMCSD_Handle MMCSD_open(uint32_t index, const MMCSD_Params *openParams)
This function opens a given MMCSD peripheral.
@ MMCSD_XFER_TYPE_TX
Definition: mmcsd/v1/mmcsd.h:257
uint32_t ocr
Definition: mmcsd/v1/mmcsd.h:484
MMCSD_inputClkCtrlMode_e
ENUMs to read/configure the input clock to the MMC controller.
Definition: mmcsd/v1/mmcsd.h:401
@ MMCSD_CLK_ACT_ICLK_OFF
Definition: mmcsd/v1/mmcsd.h:188
uint8_t manuID
Definition: mmcsd/v1/mmcsd.h:499
@ MMCSD_PWR_CTRL_OFF
Definition: mmcsd/v1/mmcsd.h:213
uint32_t isHC
Definition: mmcsd/v1/mmcsd.h:700
SemaphoreP_Object dataCopyCompleteSemObj
Definition: mmcsd/v1/mmcsd.h:712
MMCSD_Attrs * attrs
Definition: mmcsd/v1/mmcsd.h:722
@ MMCSD_INTR_MASK_CMDCOMP
Definition: mmcsd/v1/mmcsd.h:300
uint8_t transferSpeed
Definition: mmcsd/v1/mmcsd.h:512
uint32_t instNum
Definition: mmcsd/v1/mmcsd.h:560
uint32_t baseAddr
Definition: mmcsd/v1/mmcsd.h:563
uint32_t deviceType
Definition: mmcsd/v1/mmcsd.h:385
@ MMCSD_CMD_TYPE_IO_ABORT
Definition: mmcsd/v1/mmcsd.h:237
uint8_t tranSpeed
Definition: mmcsd/v1/mmcsd.h:659
uint8_t highCap
Definition: mmcsd/v1/mmcsd.h:638
uint32_t blockCount
Definition: mmcsd/v1/mmcsd.h:462
@ MMCSD_IDLE_MODE_NONE
Definition: mmcsd/v1/mmcsd.h:367
SD device properties.
Definition: mmcsd/v1/mmcsd.h:483
uint32_t dataBlockSize
Definition: mmcsd/v1/mmcsd.h:629
@ MMCSD_INTR_MASK_ACMD12ERR
Definition: mmcsd/v1/mmcsd.h:272
uint32_t xferType
Definition: mmcsd/v1/mmcsd.h:336
uint32_t cmd
Definition: mmcsd/v1/mmcsd.h:532
uint32_t rca
Definition: mmcsd/v1/mmcsd.h:440
@ MMCSD_BUS_VOLTAGE_1_8V
Definition: mmcsd/v1/mmcsd.h:392
volatile uint32_t cmdTimeout
Definition: mmcsd/v1/mmcsd.h:650
uint32_t blockSize
Definition: mmcsd/v1/mmcsd.h:544
@ MMCSD_IDLE_MODE_SMART
Definition: mmcsd/v1/mmcsd.h:369
uint8_t busWidth
Definition: mmcsd/v1/mmcsd.h:689
SemaphoreP_Object xferMutex
Definition: mmcsd/v1/mmcsd.h:706
SemaphoreP_Object cmdCompleteSemObj
Definition: mmcsd/v1/mmcsd.h:709
@ MMCSD_INTR_MASK_DATACRCERR
Definition: mmcsd/v1/mmcsd.h:276
uint8_t * writeBufIdx
Definition: mmcsd/v1/mmcsd.h:692
uint32_t loopBackType
Definition: mmcsd/v1/mmcsd.h:388
uint8_t specVersion
Definition: mmcsd/v1/mmcsd.h:506
MMCSD_xFerType
Enumerates the list of response types.
Definition: mmcsd/v1/mmcsd.h:256
@ MMCSD_CLK_ACT_ICLK_FLCK_ON
Definition: mmcsd/v1/mmcsd.h:190
@ MMCSD_INTR_MASK_TRNFCOMP
Definition: mmcsd/v1/mmcsd.h:298
@ MMCSD_BUS_VOLT_3P0
Definition: mmcsd/v1/mmcsd.h:378
@ MMCSD_INTR_MASK_CARDREM
Definition: mmcsd/v1/mmcsd.h:290
Structure for MMCSD command.
Definition: mmcsd/v1/mmcsd.h:329
@ MMCSD_INTR_MASK_DATABITERR
Definition: mmcsd/v1/mmcsd.h:274
uint32_t blockCount
Definition: mmcsd/v1/mmcsd.h:623
@ MMCSD_CMD_TYPE_BUS_SUSPEND
Definition: mmcsd/v1/mmcsd.h:233
uint32_t supportedBusWidth
Definition: mmcsd/v1/mmcsd.h:578
SemaphoreP_Object xferCompleteSemObj
Definition: mmcsd/v1/mmcsd.h:715
uint32_t supportedBusVoltages
Definition: mmcsd/v1/mmcsd.h:581
@ MMCSD_STANDBY_MODE_FORCE
Definition: mmcsd/v1/mmcsd.h:197
uint16_t maxReadBlockLen
Definition: mmcsd/v1/mmcsd.h:490
uint32_t isOpen
Definition: mmcsd/v1/mmcsd.h:611
MMCSD_Object * object
Definition: mmcsd/v1/mmcsd.h:724
@ MMCSD_INTR_MASK_BADACCESS
Definition: mmcsd/v1/mmcsd.h:266
uint32_t cardType
Definition: mmcsd/v1/mmcsd.h:605
void MMCSD_init(void)
This function initializes the MMCSD module.
uint32_t outputClk
Definition: mmcsd/v1/mmcsd.h:572
MMCSD_suppVolt
Enumerates the list of supported bus voltages.
Definition: mmcsd/v1/mmcsd.h:219
@ MMCSD_RSP_TYPE_NONE
Definition: mmcsd/v1/mmcsd.h:244
uint32_t enableData
Definition: mmcsd/v1/mmcsd.h:347
@ MMCSD_STANDBY_MODE_SMART_WAKEUP
Definition: mmcsd/v1/mmcsd.h:203
uint32_t operatingVoltage
Definition: mmcsd/v1/mmcsd.h:387
uint32_t enableWakeup
Definition: mmcsd/v1/mmcsd.h:316
MMCSD_cmdType
Enumerates the list of command types.
Definition: mmcsd/v1/mmcsd.h:230
MMCSD transaction.
Definition: mmcsd/v1/mmcsd.h:531
Structure holding the hs mmcsd controller command object.
Definition: mmcsd/v1/mmcsd.h:342
@ MMCSD_CMD_TYPE_OTHER
Definition: mmcsd/v1/mmcsd.h:231
MMCSD_pwrCtrl
Enumerates macros to configure power on/off.
Definition: mmcsd/v1/mmcsd.h:210
@ MMCSD_STANDBY_MODE_NONE
Definition: mmcsd/v1/mmcsd.h:199
uint32_t inputClk
Definition: mmcsd/v1/mmcsd.h:569
uint8_t eStrobeSupport
Definition: mmcsd/v1/mmcsd.h:471
uint8_t manuID
Definition: mmcsd/v1/mmcsd.h:452
uint32_t cmdId
Definition: mmcsd/v1/mmcsd.h:330
uint64_t size
Definition: mmcsd/v1/mmcsd.h:635
uint32_t cardType
Definition: mmcsd/v1/mmcsd.h:575
int32_t(* MMCSD_switchVoltage)(uint32_t controllerNum, MMCSD_BusVoltage voltage)
A function pointer to set the voltage of the MMC I/O Cells and PBAIS to the desired voltage.
Definition: mmcsd/v1/mmcsd.h:415
uint32_t isCmd23
Definition: mmcsd/v1/mmcsd.h:515
uint8_t specVersion
Definition: mmcsd/v1/mmcsd.h:459
uint32_t ocr
Definition: mmcsd/v1/mmcsd.h:437
@ MMCSD_BUS_VOLT_1P8
Definition: mmcsd/v1/mmcsd.h:376
int32_t MMCSD_read(MMCSD_Handle handle, uint8_t *buf, uint32_t startBlk, uint32_t numBlks)
Function to perform block reads from the MMC/SD media.
uint32_t gMmcsdConfigNum
Externally defined driver configuration array size.
@ MMCSD_IDLE_MODE_FORCE
Definition: mmcsd/v1/mmcsd.h:365
uint32_t intrNum
Definition: mmcsd/v1/mmcsd.h:566
@ MMCSD_INTR_MASK_DATATIMEOUT
Definition: mmcsd/v1/mmcsd.h:278
uint32_t dmaEnable
Definition: mmcsd/v1/mmcsd.h:595
@ MMCSD_SUPP_VOLT_3P0
Definition: mmcsd/v1/mmcsd.h:222
@ MMCSD_INTR_MASK_ERR
Definition: mmcsd/v1/mmcsd.h:288
MMCSD_busVolt
Enumerates mmc sd controller's bus voltages.
Definition: mmcsd/v1/mmcsd.h:375
MMCSD_clkAct
Enumerates the clock activity configurations during wake up .
Definition: mmcsd/v1/mmcsd.h:183
uint32_t flags
Definition: mmcsd/v1/mmcsd.h:535
HwiP_Object hwiObj
Definition: mmcsd/v1/mmcsd.h:680
MMCSD_iodelayFxn iodelayFxn
Definition: mmcsd/v1/mmcsd.h:587
uint32_t MMCSD_getBlockCount(MMCSD_Handle handle)
This function returns the block count of User Data Area of the MMC/SD media connected to the MMCSD co...
@ MMCSD_BUS_VOLT_3P3
Definition: mmcsd/v1/mmcsd.h:380
uint32_t enableDma
Definition: mmcsd/v1/mmcsd.h:356
MMCSD_rspType
Enumerates the list of response types.
Definition: mmcsd/v1/mmcsd.h:243
uint32_t rca
Definition: mmcsd/v1/mmcsd.h:487
@ MMCSD_RSP_TYPE_LEN_48_BUSY
Definition: mmcsd/v1/mmcsd.h:250
@ MMCSD_XFER_TYPE_RX
Definition: mmcsd/v1/mmcsd.h:259
uint8_t supportedModes
Definition: mmcsd/v1/mmcsd.h:468
uint8_t * dataBuf
Definition: mmcsd/v1/mmcsd.h:427
uint8_t * readBufIdx
Definition: mmcsd/v1/mmcsd.h:696
MMCSD_resetLineMask
MMCSD instance attributes - used during init time.
Definition: mmcsd/v1/mmcsd.h:172
MMCSD_inputClockControl inputClockControl
Definition: mmcsd/v1/mmcsd.h:593
void * MMCSD_Handle
Definition: mmcsd/v1/mmcsd.h:158
@ MMCSD_INTR_MASK_CMDINDXERR
Definition: mmcsd/v1/mmcsd.h:280
@ MMCSD_BUS_VOLTAGE_3_0V
Definition: mmcsd/v1/mmcsd.h:393
volatile uint32_t xferInProgress
Definition: mmcsd/v1/mmcsd.h:653
Definition: mmcsd/v1/mmcsd.h:423
uint32_t MMCSD_getBlockSize(MMCSD_Handle handle)
This function returns the block size of the MMC/SD media connected to the MMCSD controller.
@ MMCSD_INPUT_CLOCK_CTRL_GET
Definition: mmcsd/v1/mmcsd.h:402
uint32_t dataBlockCount
Definition: mmcsd/v1/mmcsd.h:626
eMMC device properties
Definition: mmcsd/v1/mmcsd.h:436
@ MMCSD_BUS_VOLTAGE_3_3V
Definition: mmcsd/v1/mmcsd.h:394
@ MMCSD_SUPP_VOLT_3P3
Definition: mmcsd/v1/mmcsd.h:224
void MMCSD_deinit(void)
This function de-initializes the MMCSD module.
MMCSD_cmd cmd
Definition: mmcsd/v1/mmcsd.h:343
uint16_t maxReadBlockLen
Definition: mmcsd/v1/mmcsd.h:443
MMCSD driver object.
Definition: mmcsd/v1/mmcsd.h:604
uint32_t idleMode
Definition: mmcsd/v1/mmcsd.h:313
volatile uint32_t xferComp
Definition: mmcsd/v1/mmcsd.h:656
@ MMCSD_INTR_MASK_CMDCRCERR
Definition: mmcsd/v1/mmcsd.h:284
uint8_t transferSpeed
Definition: mmcsd/v1/mmcsd.h:465
uint32_t supportedDataWidths
Definition: mmcsd/v1/mmcsd.h:518
int32_t(* MMCSD_iodelayFxn)(uint32_t instanceNum, MMCSD_ioDelayParams *iodelayParams)
Return status of MMCSD.
Definition: mmcsd/v1/mmcsd.h:410
void MMCSD_Params_init(MMCSD_Params *mmcsdParams)
Initialize data structure with defaults.
@ MMCSD_RSP_TYPE_LEN_136
Definition: mmcsd/v1/mmcsd.h:246
void * dataBuf
Definition: mmcsd/v1/mmcsd.h:541
Opaque Hwi object used with the Hwi APIs.
Definition: HwiP.h:93
MMCSD_Handle handle
Definition: mmcsd/v1/mmcsd.h:608
uint32_t numBlks
Definition: mmcsd/v1/mmcsd.h:352
void * deviceData
Definition: mmcsd/v1/mmcsd.h:424
@ MMCSD_INTR_MASK_CMDTIMEOUT
Definition: mmcsd/v1/mmcsd.h:286
uint16_t maxWriteBlockLen
Definition: mmcsd/v1/mmcsd.h:446
uint32_t rca
Definition: mmcsd/v1/mmcsd.h:620
@ MMCSD_INTR_MASK_CARDERROR
Definition: mmcsd/v1/mmcsd.h:268
@ MMCSD_INTR_MASK_CMDBITERR
Definition: mmcsd/v1/mmcsd.h:282
uint32_t arg
Definition: mmcsd/v1/mmcsd.h:538
uint8_t sdVer
Definition: mmcsd/v1/mmcsd.h:671
Definition: mmcsd/v1/mmcsd.h:721
MMCSD_BusVoltage
Definition: mmcsd/v1/mmcsd.h:391
uint32_t blockCount
Definition: mmcsd/v1/mmcsd.h:547
Opaque semaphore object used with the semaphore APIs.
Definition: SemaphoreP.h:59
uint32_t standbyMode
Definition: mmcsd/v1/mmcsd.h:310
uint32_t cmdArg
Definition: mmcsd/v1/mmcsd.h:345
MMCSD_Config gMmcsdConfig[]
Externally defined driver configuration array.
@ MMCSD_RSP_TYPE_LEN_48
Definition: mmcsd/v1/mmcsd.h:248
Definition: mmcsd/v1/mmcsd.h:384
MMCSD instance attributes - used during init time.
Definition: mmcsd/v1/mmcsd.h:559
uint32_t transferSpeed
Definition: mmcsd/v1/mmcsd.h:386
@ MMCSD_RESET_LINE_MASK_DATA
Definition: mmcsd/v1/mmcsd.h:173
uint32_t clockActivity
Definition: mmcsd/v1/mmcsd.h:307
@ MMCSD_SUPP_VOLT_1P8
Definition: mmcsd/v1/mmcsd.h:220
uint32_t blockCount
Definition: mmcsd/v1/mmcsd.h:509
void MMCSD_close(MMCSD_Handle handle)
Function to close a MMCSD peripheral specified by the MMCSD handle.
@ MMCSD_STANDBY_MODE_SMART
Definition: mmcsd/v1/mmcsd.h:201
@ MMCSD_CMD_TYPE_FUNC_SEL
Definition: mmcsd/v1/mmcsd.h:235
SemaphoreP_Object cmdMutex
Definition: mmcsd/v1/mmcsd.h:703
MMCSD_switchVoltage switchVoltageFxn
Definition: mmcsd/v1/mmcsd.h:590
@ MMCSD_INTR_MASK_BUFRDRDY
Definition: mmcsd/v1/mmcsd.h:294
uint32_t cmdType
Definition: mmcsd/v1/mmcsd.h:332
volatile uint32_t xferTimeout
Definition: mmcsd/v1/mmcsd.h:668
uint32_t rspType
Definition: mmcsd/v1/mmcsd.h:334
uint32_t ocr
Definition: mmcsd/v1/mmcsd.h:614
@ MMCSD_RESET_LINE_MASK_CMD
Definition: mmcsd/v1/mmcsd.h:175
uint32_t intrEnable
Definition: mmcsd/v1/mmcsd.h:674
uint32_t readBlockCount
Definition: mmcsd/v1/mmcsd.h:698
MMCSD_idleMode
Enumerates the idle modes.
Definition: mmcsd/v1/mmcsd.h:364
int32_t MMCSD_write(MMCSD_Handle handle, uint8_t *buf, uint32_t startBlk, uint32_t numBlks)
Function to perform block writes to the MMC/SD media.
volatile uint32_t cmdComp
Definition: mmcsd/v1/mmcsd.h:647
MMCSD_Handle MMCSD_getHandle(uint32_t index)
This function returns the handle of an open MMCSD Instance from the instance index.
MMCSD_intrMask
Enumerates the controller's interrupt masks.
Definition: mmcsd/v1/mmcsd.h:265
uint8_t support1_8V
Definition: mmcsd/v1/mmcsd.h:632
@ MMCSD_CLK_ACT_ICLK_FCLK_OFF
Definition: mmcsd/v1/mmcsd.h:184
uint32_t dmaEnable
Definition: mmcsd/v1/mmcsd.h:677
uint8_t driveStrength
Definition: mmcsd/v1/mmcsd.h:474
Structure holding the hs mmcsd controller system configurations.
Definition: mmcsd/v1/mmcsd.h:306
MMCSD_standbyMode
Enumerates the standby modes.
Definition: mmcsd/v1/mmcsd.h:196
uint8_t switched_to_v18
Definition: mmcsd/v1/mmcsd.h:617
uint32_t(* MMCSD_inputClockControl)(uint32_t instNum, uint32_t *clkFreq, MMCSD_inputClkCtrlMode_e)
A function pointer to read/configure the input clock to the MMC controller.
Definition: mmcsd/v1/mmcsd.h:420
uint8_t * dataBufIdx
Definition: mmcsd/v1/mmcsd.h:641
@ MMCSD_INTR_MASK_ADMAERROR
Definition: mmcsd/v1/mmcsd.h:270
uint32_t writeBlockCount
Definition: mmcsd/v1/mmcsd.h:694
@ MMCSD_INTR_MASK_BUFWRRDY
Definition: mmcsd/v1/mmcsd.h:296
uint32_t blockSize
Definition: mmcsd/v1/mmcsd.h:686
@ MMCSD_PWR_CTRL_ON
Definition: mmcsd/v1/mmcsd.h:211
@ MMCSD_INPUT_CLOCK_CTRL_SET
Definition: mmcsd/v1/mmcsd.h:403
@ MMCSD_INTR_MASK_CARDINS
Definition: mmcsd/v1/mmcsd.h:292
uint16_t maxWriteBlockLen
Definition: mmcsd/v1/mmcsd.h:493