123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433 |
- #ifndef GD32F10X_SDIO_H
- #define GD32F10X_SDIO_H
- #include "gd32f10x.h"
- #define SDIO SDIO_BASE
- #define SDIO_PWRCTL REG32(SDIO + 0x00U)
- #define SDIO_CLKCTL REG32(SDIO + 0x04U)
- #define SDIO_CMDAGMT REG32(SDIO + 0x08U)
- #define SDIO_CMDCTL REG32(SDIO + 0x0CU)
- #define SDIO_RSPCMDIDX REG32(SDIO + 0x10U)
- #define SDIO_RESP0 REG32(SDIO + 0x14U)
- #define SDIO_RESP1 REG32(SDIO + 0x18U)
- #define SDIO_RESP2 REG32(SDIO + 0x1CU)
- #define SDIO_RESP3 REG32(SDIO + 0x20U)
- #define SDIO_DATATO REG32(SDIO + 0x24U)
- #define SDIO_DATALEN REG32(SDIO + 0x28U)
- #define SDIO_DATACTL REG32(SDIO + 0x2CU)
- #define SDIO_DATACNT REG32(SDIO + 0x30U)
- #define SDIO_STAT REG32(SDIO + 0x34U)
- #define SDIO_INTC REG32(SDIO + 0x38U)
- #define SDIO_INTEN REG32(SDIO + 0x3CU)
- #define SDIO_FIFOCNT REG32(SDIO + 0x48U)
- #define SDIO_FIFO REG32(SDIO + 0x80U)
- #define SDIO_PWRCTL_PWRCTL BITS(0,1)
- #define SDIO_CLKCTL_DIV BITS(0,7)
- #define SDIO_CLKCTL_CLKEN BIT(8)
- #define SDIO_CLKCTL_CLKPWRSAV BIT(9)
- #define SDIO_CLKCTL_CLKBYP BIT(10)
- #define SDIO_CLKCTL_BUSMODE BITS(11,12)
- #define SDIO_CLKCTL_CLKEDGE BIT(13)
- #define SDIO_CLKCTL_HWCLKEN BIT(14)
- #define SDIO_CMDAGMT_CMDAGMT BITS(0,31)
- #define SDIO_CMDCTL_CMDIDX BITS(0,5)
- #define SDIO_CMDCTL_CMDRESP BITS(6,7)
- #define SDIO_CMDCTL_INTWAIT BIT(8)
- #define SDIO_CMDCTL_WAITDEND BIT(9)
- #define SDIO_CMDCTL_CSMEN BIT(10)
- #define SDIO_CMDCTL_SUSPEND BIT(11)
- #define SDIO_CMDCTL_ENCMDC BIT(12)
- #define SDIO_CMDCTL_NINTEN BIT(13)
- #define SDIO_CMDCTL_ATAEN BIT(14)
- #define SDIO_DATATO_DATATO BITS(0,31)
- #define SDIO_DATALEN_DATALEN BITS(0,24)
- #define SDIO_DATACTL_DATAEN BIT(0)
- #define SDIO_DATACTL_DATADIR BIT(1)
- #define SDIO_DATACTL_TRANSMOD BIT(2)
- #define SDIO_DATACTL_DMAEN BIT(3)
- #define SDIO_DATACTL_BLKSZ BITS(4,7)
- #define SDIO_DATACTL_RWEN BIT(8)
- #define SDIO_DATACTL_RWSTOP BIT(9)
- #define SDIO_DATACTL_RWTYPE BIT(10)
- #define SDIO_DATACTL_IOEN BIT(11)
- #define SDIO_STAT_CCRCERR BIT(0)
- #define SDIO_STAT_DTCRCERR BIT(1)
- #define SDIO_STAT_CMDTMOUT BIT(2)
- #define SDIO_STAT_DTTMOUT BIT(3)
- #define SDIO_STAT_TXURE BIT(4)
- #define SDIO_STAT_RXORE BIT(5)
- #define SDIO_STAT_CMDRECV BIT(6)
- #define SDIO_STAT_CMDSEND BIT(7)
- #define SDIO_STAT_DTEND BIT(8)
- #define SDIO_STAT_STBITE BIT(9)
- #define SDIO_STAT_DTBLKEND BIT(10)
- #define SDIO_STAT_CMDRUN BIT(11)
- #define SDIO_STAT_TXRUN BIT(12)
- #define SDIO_STAT_RXRUN BIT(13)
- #define SDIO_STAT_TFH BIT(14)
- #define SDIO_STAT_RFH BIT(15)
- #define SDIO_STAT_TFF BIT(16)
- #define SDIO_STAT_RFF BIT(17)
- #define SDIO_STAT_TFE BIT(18)
- #define SDIO_STAT_RFE BIT(19)
- #define SDIO_STAT_TXDTVAL BIT(20)
- #define SDIO_STAT_RXDTVAL BIT(21)
- #define SDIO_STAT_SDIOINT BIT(22)
- #define SDIO_STAT_ATAEND BIT(23)
- #define SDIO_INTC_CCRCERRC BIT(0)
- #define SDIO_INTC_DTCRCERRC BIT(1)
- #define SDIO_INTC_CMDTMOUTC BIT(2)
- #define SDIO_INTC_DTTMOUTC BIT(3)
- #define SDIO_INTC_TXUREC BIT(4)
- #define SDIO_INTC_RXOREC BIT(5)
- #define SDIO_INTC_CMDRECVC BIT(6)
- #define SDIO_INTC_CMDSENDC BIT(7)
- #define SDIO_INTC_DTENDC BIT(8)
- #define SDIO_INTC_STBITEC BIT(9)
- #define SDIO_INTC_DTBLKENDC BIT(10)
- #define SDIO_INTC_SDIOINTC BIT(22)
- #define SDIO_INTC_ATAENDC BIT(23)
- #define SDIO_INTEN_CCRCERRIE BIT(0)
- #define SDIO_INTEN_DTCRCERRIE BIT(1)
- #define SDIO_INTEN_CMDTMOUTIE BIT(2)
- #define SDIO_INTEN_DTTMOUTIE BIT(3)
- #define SDIO_INTEN_TXUREIE BIT(4)
- #define SDIO_INTEN_RXOREIE BIT(5)
- #define SDIO_INTEN_CMDRECVIE BIT(6)
- #define SDIO_INTEN_CMDSENDIE BIT(7)
- #define SDIO_INTEN_DTENDIE BIT(8)
- #define SDIO_INTEN_STBITEIE BIT(9)
- #define SDIO_INTEN_DTBLKENDIE BIT(10)
- #define SDIO_INTEN_CMDRUNIE BIT(11)
- #define SDIO_INTEN_TXRUNIE BIT(12)
- #define SDIO_INTEN_RXRUNIE BIT(13)
- #define SDIO_INTEN_TFHIE BIT(14)
- #define SDIO_INTEN_RFHIE BIT(15)
- #define SDIO_INTEN_TFFIE BIT(16)
- #define SDIO_INTEN_RFFIE BIT(17)
- #define SDIO_INTEN_TFEIE BIT(18)
- #define SDIO_INTEN_RFEIE BIT(19)
- #define SDIO_INTEN_TXDTVALIE BIT(20)
- #define SDIO_INTEN_RXDTVALIE BIT(21)
- #define SDIO_INTEN_SDIOINTIE BIT(22)
- #define SDIO_INTEN_ATAENDIE BIT(23)
- #define SDIO_FIFO_FIFODT BITS(0,31)
- #define SDIO_FLAG_CCRCERR BIT(0)
- #define SDIO_FLAG_DTCRCERR BIT(1)
- #define SDIO_FLAG_CMDTMOUT BIT(2)
- #define SDIO_FLAG_DTTMOUT BIT(3)
- #define SDIO_FLAG_TXURE BIT(4)
- #define SDIO_FLAG_RXORE BIT(5)
- #define SDIO_FLAG_CMDRECV BIT(6)
- #define SDIO_FLAG_CMDSEND BIT(7)
- #define SDIO_FLAG_DTEND BIT(8)
- #define SDIO_FLAG_STBITE BIT(9)
- #define SDIO_FLAG_DTBLKEND BIT(10)
- #define SDIO_FLAG_CMDRUN BIT(11)
- #define SDIO_FLAG_TXRUN BIT(12)
- #define SDIO_FLAG_RXRUN BIT(13)
- #define SDIO_FLAG_TFH BIT(14)
- #define SDIO_FLAG_RFH BIT(15)
- #define SDIO_FLAG_TFF BIT(16)
- #define SDIO_FLAG_RFF BIT(17)
- #define SDIO_FLAG_TFE BIT(18)
- #define SDIO_FLAG_RFE BIT(19)
- #define SDIO_FLAG_TXDTVAL BIT(20)
- #define SDIO_FLAG_RXDTVAL BIT(21)
- #define SDIO_FLAG_SDIOINT BIT(22)
- #define SDIO_FLAG_ATAEND BIT(23)
- #define SDIO_INT_CCRCERR BIT(0)
- #define SDIO_INT_DTCRCERR BIT(1)
- #define SDIO_INT_CMDTMOUT BIT(2)
- #define SDIO_INT_DTTMOUT BIT(3)
- #define SDIO_INT_TXURE BIT(4)
- #define SDIO_INT_RXORE BIT(5)
- #define SDIO_INT_CMDRECV BIT(6)
- #define SDIO_INT_CMDSEND BIT(7)
- #define SDIO_INT_DTEND BIT(8)
- #define SDIO_INT_STBITE BIT(9)
- #define SDIO_INT_DTBLKEND BIT(10)
- #define SDIO_INT_CMDRUN BIT(11)
- #define SDIO_INT_TXRUN BIT(12)
- #define SDIO_INT_RXRUN BIT(13)
- #define SDIO_INT_TFH BIT(14)
- #define SDIO_INT_RFH BIT(15)
- #define SDIO_INT_TFF BIT(16)
- #define SDIO_INT_RFF BIT(17)
- #define SDIO_INT_TFE BIT(18)
- #define SDIO_INT_RFE BIT(19)
- #define SDIO_INT_TXDTVAL BIT(20)
- #define SDIO_INT_RXDTVAL BIT(21)
- #define SDIO_INT_SDIOINT BIT(22)
- #define SDIO_INT_ATAEND BIT(23)
- #define SDIO_INT_FLAG_CCRCERR BIT(0)
- #define SDIO_INT_FLAG_DTCRCERR BIT(1)
- #define SDIO_INT_FLAG_CMDTMOUT BIT(2)
- #define SDIO_INT_FLAG_DTTMOUT BIT(3)
- #define SDIO_INT_FLAG_TXURE BIT(4)
- #define SDIO_INT_FLAG_RXORE BIT(5)
- #define SDIO_INT_FLAG_CMDRECV BIT(6)
- #define SDIO_INT_FLAG_CMDSEND BIT(7)
- #define SDIO_INT_FLAG_DTEND BIT(8)
- #define SDIO_INT_FLAG_STBITE BIT(9)
- #define SDIO_INT_FLAG_DTBLKEND BIT(10)
- #define SDIO_INT_FLAG_CMDRUN BIT(11)
- #define SDIO_INT_FLAG_TXRUN BIT(12)
- #define SDIO_INT_FLAG_RXRUN BIT(13)
- #define SDIO_INT_FLAG_TFH BIT(14)
- #define SDIO_INT_FLAG_RFH BIT(15)
- #define SDIO_INT_FLAG_TFF BIT(16)
- #define SDIO_INT_FLAG_RFF BIT(17)
- #define SDIO_INT_FLAG_TFE BIT(18)
- #define SDIO_INT_FLAG_RFE BIT(19)
- #define SDIO_INT_FLAG_TXDTVAL BIT(20)
- #define SDIO_INT_FLAG_RXDTVAL BIT(21)
- #define SDIO_INT_FLAG_SDIOINT BIT(22)
- #define SDIO_INT_FLAG_ATAEND BIT(23)
- #define PWRCTL_PWRCTL(regval) (BITS(0,1) & ((uint32_t)(regval) << 0))
- #define SDIO_POWER_OFF PWRCTL_PWRCTL(0)
- #define SDIO_POWER_ON PWRCTL_PWRCTL(3)
- #define CLKCTL_BUSMODE(regval) (BITS(11,12) & ((uint32_t)(regval) << 11))
- #define SDIO_BUSMODE_1BIT CLKCTL_BUSMODE(0)
- #define SDIO_BUSMODE_4BIT CLKCTL_BUSMODE(1)
- #define SDIO_BUSMODE_8BIT CLKCTL_BUSMODE(2)
- #define SDIO_SDIOCLKEDGE_RISING ((uint32_t)0x00000000U)
- #define SDIO_SDIOCLKEDGE_FALLING SDIO_CLKCTL_CLKEDGE
- #define SDIO_CLOCKBYPASS_DISABLE ((uint32_t)0x00000000U)
- #define SDIO_CLOCKBYPASS_ENABLE SDIO_CLKCTL_CLKBYP
- #define SDIO_CLOCKPWRSAVE_DISABLE ((uint32_t)0x00000000U)
- #define SDIO_CLOCKPWRSAVE_ENABLE SDIO_CLKCTL_CLKPWRSAV
- #define CMDCTL_CMDRESP(regval) (BITS(6,7) & ((uint32_t)(regval) << 6))
- #define SDIO_RESPONSETYPE_NO CMDCTL_CMDRESP(0)
- #define SDIO_RESPONSETYPE_SHORT CMDCTL_CMDRESP(1)
- #define SDIO_RESPONSETYPE_LONG CMDCTL_CMDRESP(3)
- #define SDIO_WAITTYPE_NO ((uint32_t)0x00000000U)
- #define SDIO_WAITTYPE_INTERRUPT SDIO_CMDCTL_INTWAIT
- #define SDIO_WAITTYPE_DATAEND SDIO_CMDCTL_WAITDEND
- #define SDIO_RESPONSE0 ((uint32_t)0x00000000U)
- #define SDIO_RESPONSE1 ((uint32_t)0x00000001U)
- #define SDIO_RESPONSE2 ((uint32_t)0x00000002U)
- #define SDIO_RESPONSE3 ((uint32_t)0x00000003U)
- #define DATACTL_BLKSZ(regval) (BITS(4,7) & ((uint32_t)(regval) << 4))
- #define SDIO_DATABLOCKSIZE_1BYTE DATACTL_BLKSZ(0)
- #define SDIO_DATABLOCKSIZE_2BYTES DATACTL_BLKSZ(1)
- #define SDIO_DATABLOCKSIZE_4BYTES DATACTL_BLKSZ(2)
- #define SDIO_DATABLOCKSIZE_8BYTES DATACTL_BLKSZ(3)
- #define SDIO_DATABLOCKSIZE_16BYTES DATACTL_BLKSZ(4)
- #define SDIO_DATABLOCKSIZE_32BYTES DATACTL_BLKSZ(5)
- #define SDIO_DATABLOCKSIZE_64BYTES DATACTL_BLKSZ(6)
- #define SDIO_DATABLOCKSIZE_128BYTES DATACTL_BLKSZ(7)
- #define SDIO_DATABLOCKSIZE_256BYTES DATACTL_BLKSZ(8)
- #define SDIO_DATABLOCKSIZE_512BYTES DATACTL_BLKSZ(9)
- #define SDIO_DATABLOCKSIZE_1024BYTES DATACTL_BLKSZ(10)
- #define SDIO_DATABLOCKSIZE_2048BYTES DATACTL_BLKSZ(11)
- #define SDIO_DATABLOCKSIZE_4096BYTES DATACTL_BLKSZ(12)
- #define SDIO_DATABLOCKSIZE_8192BYTES DATACTL_BLKSZ(13)
- #define SDIO_DATABLOCKSIZE_16384BYTES DATACTL_BLKSZ(14)
- #define SDIO_TRANSMODE_BLOCK ((uint32_t)0x00000000U)
- #define SDIO_TRANSMODE_STREAM SDIO_DATACTL_TRANSMOD
- #define SDIO_TRANSDIRECTION_TOCARD ((uint32_t)0x00000000U)
- #define SDIO_TRANSDIRECTION_TOSDIO SDIO_DATACTL_DATADIR
- #define SDIO_READWAITTYPE_DAT2 ((uint32_t)0x00000000U)
- #define SDIO_READWAITTYPE_CLK SDIO_DATACTL_RWTYPE
- void sdio_deinit(void);
- void sdio_clock_config(uint32_t clock_edge, uint32_t clock_bypass, uint32_t clock_powersave, uint16_t clock_division);
- void sdio_hardware_clock_enable(void);
- void sdio_hardware_clock_disable(void);
- void sdio_bus_mode_set(uint32_t bus_mode);
- void sdio_power_state_set(uint32_t power_state);
- uint32_t sdio_power_state_get(void);
- void sdio_clock_enable(void);
- void sdio_clock_disable(void);
- void sdio_command_response_config(uint32_t cmd_index, uint32_t cmd_argument, uint32_t response_type);
- void sdio_wait_type_set(uint32_t wait_type);
- void sdio_csm_enable(void);
- void sdio_csm_disable(void);
- uint8_t sdio_command_index_get(void);
- uint32_t sdio_response_get(uint32_t responsex);
- void sdio_data_config(uint32_t data_timeout, uint32_t data_length, uint32_t data_blocksize);
- void sdio_data_transfer_config(uint32_t transfer_mode, uint32_t transfer_direction);
- void sdio_dsm_enable(void);
- void sdio_dsm_disable(void);
- void sdio_data_write(uint32_t data);
- uint32_t sdio_data_read(void);
- uint32_t sdio_data_counter_get(void);
- uint32_t sdio_fifo_counter_get(void);
- void sdio_dma_enable(void);
- void sdio_dma_disable(void);
- FlagStatus sdio_flag_get(uint32_t flag);
- void sdio_flag_clear(uint32_t flag);
- void sdio_interrupt_enable(uint32_t int_flag);
- void sdio_interrupt_disable(uint32_t int_flag);
- FlagStatus sdio_interrupt_flag_get(uint32_t int_flag);
- void sdio_interrupt_flag_clear(uint32_t int_flag);
- void sdio_readwait_enable(void);
- void sdio_readwait_disable(void);
- void sdio_stop_readwait_enable(void);
- void sdio_stop_readwait_disable(void);
- void sdio_readwait_type_set(uint32_t readwait_type);
- void sdio_operation_enable(void);
- void sdio_operation_disable(void);
- void sdio_suspend_enable(void);
- void sdio_suspend_disable(void);
- void sdio_ceata_command_enable(void);
- void sdio_ceata_command_disable(void);
- void sdio_ceata_interrupt_enable(void);
- void sdio_ceata_interrupt_disable(void);
- void sdio_ceata_command_completion_enable(void);
- void sdio_ceata_command_completion_disable(void);
- #endif
|