|
|
@@ -4896,27 +4896,170 @@ typedef struct __attribute__((packed)) { |
|
|
|
|
|
|
|
#define SDHC_DSADDR (*(volatile uint32_t *)0x400B1000) // DMA System Address register |
|
|
|
#define SDHC_BLKATTR (*(volatile uint32_t *)0x400B1004) // Block Attributes register |
|
|
|
#define SDHC_BLKATTR_BLKCNT(n) (uint32_t)(((n) & 0xFFFF)<<16) // Blocks Count For Current Transfer |
|
|
|
#define SDHC_BLKATTR_BLKCNT_MASK ((uint32_t)0xFFFF0000) |
|
|
|
#define SDHC_BLKATTR_BLKSIZE(n) (uint32_t)(((n) & 0x1FFF)<<0) // Transfer Block Size |
|
|
|
#define SDHC_CMDARG (*(volatile uint32_t *)0x400B1008) // Command Argument register |
|
|
|
#define SDHC_XFERTYP (*(volatile uint32_t *)0x400B100C) // Transfer Type register |
|
|
|
#define SDHC_XFERTYP_CMDINX(n) (uint32_t)(((n) & 0x3F)<<24) // Command Index |
|
|
|
#define SDHC_XFERTYP_CMDTYP(n) (uint32_t)(((n) & 0x3)<<22) // Command Type |
|
|
|
#define SDHC_XFERTYP_DPSEL ((uint32_t)0x00200000) // Data Present Select |
|
|
|
#define SDHC_XFERTYP_CICEN ((uint32_t)0x00100000) // Command Index Check Enable |
|
|
|
#define SDHC_XFERTYP_CCCEN ((uint32_t)0x00080000) // Command CRC Check Enable |
|
|
|
#define SDHC_XFERTYP_RSPTYP (uint32_t)(((n) & 0x3)<<16) // Response Type Select |
|
|
|
#define SDHC_XFERTYP_MSBSEL ((uint32_t)0x00000020) // Multi/Single Block Select |
|
|
|
#define SDHC_XFERTYP_DTDSEL ((uint32_t)0x00000010) // Data Transfer Direction Select |
|
|
|
#define SDHC_XFERTYP_AC12EN ((uint32_t)0x00000004) // Auto CMD12 Enable |
|
|
|
#define SDHC_XFERTYP_BCEN ((uint32_t)0x00000002) // Block Count Enable |
|
|
|
#define SDHC_XFERTYP_DMAEN ((uint32_t)0x00000001) // DMA Enable |
|
|
|
#define SDHC_CMDRSP0 (*(volatile uint32_t *)0x400B1010) // Command Response 0 |
|
|
|
#define SDHC_CMDRSP1 (*(volatile uint32_t *)0x400B1014) // Command Response 1 |
|
|
|
#define SDHC_CMDRSP2 (*(volatile uint32_t *)0x400B1018) // Command Response 2 |
|
|
|
#define SDHC_CMDRSP3 (*(volatile uint32_t *)0x400B101C) // Command Response 3 |
|
|
|
#define SDHC_DATPORT (*(volatile uint32_t *)0x400B1020) // Buffer Data Port register |
|
|
|
#define SDHC_PRSSTAT (*(volatile uint32_t *)0x400B1024) // Present State register |
|
|
|
#define SDHC_PRSSTAT_DLSL_MASK ((uint32_t)0xFF000000) // DAT Line Signal Level |
|
|
|
#define SDHC_PRSSTAT_CLSL ((uint32_t)0x00800000) // CMD Line Signal Level |
|
|
|
#define SDHC_PRSSTAT_CINS ((uint32_t)0x00010000) // Card Inserted |
|
|
|
#define SDHC_PRSSTAT_BREN ((uint32_t)0x00000800) // Buffer Read Enable |
|
|
|
#define SDHC_PRSSTAT_BWEN ((uint32_t)0x00000400) // Buffer Write Enable |
|
|
|
#define SDHC_PRSSTAT_RTA ((uint32_t)0x00000200) // Read Transfer Active |
|
|
|
#define SDHC_PRSSTAT_WTA ((uint32_t)0x00000100) // Write Transfer Active |
|
|
|
#define SDHC_PRSSTAT_SDOFF ((uint32_t)0x00000080) // SD Clock Gated Off Internally |
|
|
|
#define SDHC_PRSSTAT_PEROFF ((uint32_t)0x00000040) // SDHC clock Gated Off Internally |
|
|
|
#define SDHC_PRSSTAT_HCKOFF ((uint32_t)0x00000020) // System Clock Gated Off Internally |
|
|
|
#define SDHC_PRSSTAT_IPGOFF ((uint32_t)0x00000010) // Bus Clock Gated Off Internally |
|
|
|
#define SDHC_PRSSTAT_SDSTB ((uint32_t)0x00000008) // SD Clock Stable |
|
|
|
#define SDHC_PRSSTAT_DLA ((uint32_t)0x00000004) // Data Line Active |
|
|
|
#define SDHC_PRSSTAT_CDIHB ((uint32_t)0x00000002) // Command Inhibit (DAT) |
|
|
|
#define SDHC_PRSSTAT_CIHB ((uint32_t)0x00000001) // Command Inhibit (CMD) |
|
|
|
#define SDHC_PROCTL (*(volatile uint32_t *)0x400B1028) // Protocol Control register |
|
|
|
#define SDHC_PROCTL_WECRM ((uint32_t)0x04000000) // Wakeup Event Enable On SD Card Removal |
|
|
|
#define SDHC_PROCTL_WECINS ((uint32_t)0x02000000) // Wakeup Event Enable On SD Card Insertion |
|
|
|
#define SDHC_PROCTL_WECINT ((uint32_t)0x01000000) // Wakeup Event Enable On Card Interrupt |
|
|
|
#define SDHC_PROCTL_IABG ((uint32_t)0x00080000) // Interrupt At Block Gap |
|
|
|
#define SDHC_PROCTL_RWCTL ((uint32_t)0x00040000) // Read Wait Control |
|
|
|
#define SDHC_PROCTL_CREQ ((uint32_t)0x00020000) // Continue Request |
|
|
|
#define SDHC_PROCTL_SABGREQ ((uint32_t)0x00010000) // Stop At Block Gap Request |
|
|
|
#define SDHC_PROCTL_DMAS(n) (uint32_t)(((n) & 0x3)<<8) // DMA Select |
|
|
|
#define SDHC_PROCTL_CDSS ((uint32_t)0x00000080) // Card Detect Signal Selection |
|
|
|
#define SDHC_PROCTL_CDTL ((uint32_t)0x00000040) // Card Detect Test Level |
|
|
|
#define SDHC_PROCTL_EMODE(n) (uint32_t)(((n) & 0x3)<<4) // Endian Mode |
|
|
|
#define SDHC_PROCTL_D3CD ((uint32_t)0x00000008) // DAT3 As Card Detection Pin |
|
|
|
#define SDHC_PROCTL_DTW(n) (uint32_t)(((n) & 0x3)<<1) // Data Transfer Width, 0=1bit, 1=4bit, 2=8bit |
|
|
|
#define SDHC_PROCTL_LCTL ((uint32_t)0x00000001) // LED Control |
|
|
|
#define SDHC_SYSCTL (*(volatile uint32_t *)0x400B102C) // System Control register |
|
|
|
#define SDHC_SYSCTL_INITA ((uint32_t)0x08000000) // Initialization Active |
|
|
|
#define SDHC_SYSCTL_RSTD ((uint32_t)0x04000000) // Software Reset For DAT Line |
|
|
|
#define SDHC_SYSCTL_RSTC ((uint32_t)0x02000000) // Software Reset For CMD Line |
|
|
|
#define SDHC_SYSCTL_RSTA ((uint32_t)0x01000000) // Software Reset For ALL |
|
|
|
#define SDHC_SYSCTL_DTOCV(n) (uint32_t)(((n) & 0xF)<<16) // Data Timeout Counter Value |
|
|
|
#define SDHC_SYSCTL_SDCLKFS(n) (uint32_t)(((n) & 0xFF)<<8) // SDCLK Frequency Select |
|
|
|
#define SDHC_SYSCTL_DVS(n) (uint32_t)(((n) & 0xF)<<4) // Divisor |
|
|
|
#define SDHC_SYSCTL_SDCLKEN ((uint32_t)0x00000008) // SD Clock Enable |
|
|
|
#define SDHC_SYSCTL_PEREN ((uint32_t)0x00000004) // Peripheral Clock Enable |
|
|
|
#define SDHC_SYSCTL_HCKEN ((uint32_t)0x00000002) // System Clock Enable |
|
|
|
#define SDHC_SYSCTL_IPGEN ((uint32_t)0x00000001) // IPG Clock Enable |
|
|
|
#define SDHC_IRQSTAT (*(volatile uint32_t *)0x400B1030) // Interrupt Status register |
|
|
|
#define SDHC_IRQSTAT_DMAE ((uint32_t)0x10000000) // DMA Error |
|
|
|
#define SDHC_IRQSTAT_AC12E ((uint32_t)0x01000000) // Auto CMD12 Error |
|
|
|
#define SDHC_IRQSTAT_DEBE ((uint32_t)0x00400000) // Data End Bit Error |
|
|
|
#define SDHC_IRQSTAT_DCE ((uint32_t)0x00200000) // Data CRC Error |
|
|
|
#define SDHC_IRQSTAT_DTOE ((uint32_t)0x00100000) // Data Timeout Error |
|
|
|
#define SDHC_IRQSTAT_CIE ((uint32_t)0x00080000) // Command Index Error |
|
|
|
#define SDHC_IRQSTAT_CEBE ((uint32_t)0x00040000) // Command End Bit Error |
|
|
|
#define SDHC_IRQSTAT_CCE ((uint32_t)0x00020000) // Command CRC Error |
|
|
|
#define SDHC_IRQSTAT_CTOE ((uint32_t)0x00010000) // Command Timeout Error |
|
|
|
#define SDHC_IRQSTAT_CINT ((uint32_t)0x00000100) // Card Interrupt |
|
|
|
#define SDHC_IRQSTAT_CRM ((uint32_t)0x00000080) // Card Removal |
|
|
|
#define SDHC_IRQSTAT_CINS ((uint32_t)0x00000040) // Card Insertion |
|
|
|
#define SDHC_IRQSTAT_BRR ((uint32_t)0x00000020) // Buffer Read Ready |
|
|
|
#define SDHC_IRQSTAT_BWR ((uint32_t)0x00000010) // Buffer Write Ready |
|
|
|
#define SDHC_IRQSTAT_DINT ((uint32_t)0x00000008) // DMA Interrupt |
|
|
|
#define SDHC_IRQSTAT_BGE ((uint32_t)0x00000004) // Block Gap Event |
|
|
|
#define SDHC_IRQSTAT_TC ((uint32_t)0x00000002) // Transfer Complete |
|
|
|
#define SDHC_IRQSTAT_CC ((uint32_t)0x00000001) // Command Complete |
|
|
|
#define SDHC_IRQSTATEN (*(volatile uint32_t *)0x400B1034) // Interrupt Status Enable register |
|
|
|
#define SDHC_IRQSTATEN_DMAESEN ((uint32_t)0x10000000) // DMA Error Status Enable |
|
|
|
#define SDHC_IRQSTATEN_AC12ESEN ((uint32_t)0x01000000) // Auto CMD12 Error Status Enable |
|
|
|
#define SDHC_IRQSTATEN_DEBESEN ((uint32_t)0x00400000) // Data End Bit Error Status Enable |
|
|
|
#define SDHC_IRQSTATEN_DCESEN ((uint32_t)0x00200000) // Data CRC Error Status Enable |
|
|
|
#define SDHC_IRQSTATEN_DTOESEN ((uint32_t)0x00100000) // Data Timeout Error Status Enable |
|
|
|
#define SDHC_IRQSTATEN_CIESEN ((uint32_t)0x00080000) // Command Index Error Status Enable |
|
|
|
#define SDHC_IRQSTATEN_CEBESEN ((uint32_t)0x00040000) // Command End Bit Error Status Enable |
|
|
|
#define SDHC_IRQSTATEN_CCESEN ((uint32_t)0x00020000) // Command CRC Error Status Enable |
|
|
|
#define SDHC_IRQSTATEN_CTOESEN ((uint32_t)0x00010000) // Command Timeout Error Status Enable |
|
|
|
#define SDHC_IRQSTATEN_CINTSEN ((uint32_t)0x00000100) // Card Interrupt Status Enable |
|
|
|
#define SDHC_IRQSTATEN_CRMSEN ((uint32_t)0x00000080) // Card Removal Status Enable |
|
|
|
#define SDHC_IRQSTATEN_CINSEN ((uint32_t)0x00000040) // Card Insertion Status Enable |
|
|
|
#define SDHC_IRQSTATEN_BRRSEN ((uint32_t)0x00000020) // Buffer Read Ready Status Enable |
|
|
|
#define SDHC_IRQSTATEN_BWRSEN ((uint32_t)0x00000010) // Buffer Write Ready Status Enable |
|
|
|
#define SDHC_IRQSTATEN_DINTSEN ((uint32_t)0x00000008) // DMA Interrupt Status Enable |
|
|
|
#define SDHC_IRQSTATEN_BGESEN ((uint32_t)0x00000004) // Block Gap Event Status Enable |
|
|
|
#define SDHC_IRQSTATEN_TCSEN ((uint32_t)0x00000002) // Transfer Complete Status Enable |
|
|
|
#define SDHC_IRQSTATEN_CCSEN ((uint32_t)0x00000001) // Command Complete Status Enable |
|
|
|
#define SDHC_IRQSIGEN (*(volatile uint32_t *)0x400B1038) // Interrupt Signal Enable register |
|
|
|
#define SDHC_IRQSIGEN_DMAEIEN ((uint32_t)0x10000000) // DMA Error Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_AC12EIEN ((uint32_t)0x01000000) // Auto CMD12 Error Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_DEBEIEN ((uint32_t)0x00400000) // Data End Bit Error Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_DCEIEN ((uint32_t)0x00200000) // Data CRC Error Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_DTOEIEN ((uint32_t)0x00100000) // Data Timeout Error Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_CIEIEN ((uint32_t)0x00080000) // Command Index Error Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_CEBEIEN ((uint32_t)0x00040000) // Command End Bit Error Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_CCEIEN ((uint32_t)0x00020000) // Command CRC Error Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_CTOEIEN ((uint32_t)0x00010000) // Command Timeout Error Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_CINTIEN ((uint32_t)0x00000100) // Card Interrupt Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_CRMIEN ((uint32_t)0x00000080) // Card Removal Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_CINSIEN ((uint32_t)0x00000040) // Card Insertion Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_BRRIEN ((uint32_t)0x00000020) // Buffer Read Ready Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_BWRIEN ((uint32_t)0x00000010) // Buffer Write Ready Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_DINTIEN ((uint32_t)0x00000008) // DMA Interrupt Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_BGEIEN ((uint32_t)0x00000004) // Block Gap Event Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_TCIEN ((uint32_t)0x00000002) // Transfer Complete Interrupt Enable |
|
|
|
#define SDHC_IRQSIGEN_CCIEN ((uint32_t)0x00000001) // Command Complete Interrupt Enable |
|
|
|
#define SDHC_AC12ERR (*(volatile uint32_t *)0x400B103C) // Auto CMD12 Error Status Register |
|
|
|
#define SDHC_AC12ERR_CNIBAC12E ((uint32_t)0x00000080) // Command Not Issued By Auto CMD12 Error |
|
|
|
#define SDHC_AC12ERR_AC12IE ((uint32_t)0x00000010) // Auto CMD12 Index Error |
|
|
|
#define SDHC_AC12ERR_AC12CE ((uint32_t)0x00000008) // Auto CMD12 CRC Error |
|
|
|
#define SDHC_AC12ERR_AC12EBE ((uint32_t)0x00000004) // Auto CMD12 End Bit Error |
|
|
|
#define SDHC_AC12ERR_AC12TOE ((uint32_t)0x00000002) // Auto CMD12 Timeout Error |
|
|
|
#define SDHC_AC12ERR_AC12NE ((uint32_t)0x00000001) // Auto CMD12 Not Executed |
|
|
|
#define SDHC_HTCAPBLT (*(volatile uint32_t *)0x400B1040) // Host Controller Capabilities |
|
|
|
#define SDHC_WML (*(volatile uint32_t *)0x400B1044) // Watermark Level Register |
|
|
|
#define SDHC_WML_WRWML(n) (uint32_t)(((n) & 0x7F)<<16) // Write Watermark Level |
|
|
|
#define SDHC_WML_RDWML(n) (uint32_t)(((n) & 0x7F)<<0) // Read Watermark Level |
|
|
|
#define SDHC_FEVT (*(volatile uint32_t *)0x400B1050) // Force Event register |
|
|
|
#define SDHC_FEVT_CINT ((uint32_t)0x80000000) // Force Event Card Interrupt |
|
|
|
#define SDHC_FEVT_DMAE ((uint32_t)0x10000000) // Force Event DMA Error |
|
|
|
#define SDHC_FEVT_AC12E ((uint32_t)0x01000000) // Force Event Auto CMD12 Error |
|
|
|
#define SDHC_FEVT_DEBE ((uint32_t)0x00400000) // Force Event Data End Bit Error |
|
|
|
#define SDHC_FEVT_DCE ((uint32_t)0x00200000) // Force Event Data CRC Error |
|
|
|
#define SDHC_FEVT_DTOE ((uint32_t)0x00100000) // Force Event Data Timeout Error |
|
|
|
#define SDHC_FEVT_CIE ((uint32_t)0x00080000) // Force Event Command Index Error |
|
|
|
#define SDHC_FEVT_CEBE ((uint32_t)0x00040000) // Force Event Command End Bit Error |
|
|
|
#define SDHC_FEVT_CCE ((uint32_t)0x00020000) // Force Event Command CRC Error |
|
|
|
#define SDHC_FEVT_CTOE ((uint32_t)0x00010000) // Force Event Command Timeout Error |
|
|
|
#define SDHC_FEVT_CNIBAC12E ((uint32_t)0x00000080) // Force Event Command Not Executed By Auto Command 12 Error |
|
|
|
#define SDHC_FEVT_AC12IE ((uint32_t)0x00000010) // Force Event Auto Command 12 Index Error |
|
|
|
#define SDHC_FEVT_AC12EBE ((uint32_t)0x00000008) // Force Event Auto Command 12 End Bit Error |
|
|
|
#define SDHC_FEVT_AC12CE ((uint32_t)0x00000004) // Force Event Auto Command 12 CRC Error |
|
|
|
#define SDHC_FEVT_AC12TOE ((uint32_t)0x00000002) // Force Event Auto Command 12 Time Out Error |
|
|
|
#define SDHC_FEVT_AC12NE ((uint32_t)0x00000001) // Force Event Auto Command 12 Not Executed |
|
|
|
#define SDHC_ADMAES (*(volatile uint32_t *)0x400B1054) // ADMA Error Status register |
|
|
|
#define SDHC_ADMAES_ADMADCE ((uint32_t)0x00000008) |
|
|
|
#define SDHC_ADMAES_ADMALME ((uint32_t)0x00000004) |
|
|
|
#define SDHC_ADMAES_ADMAES_MASK ((uint32_t)0x00000003) |
|
|
|
#define SDHC_ADSADDR (*(volatile uint32_t *)0x400B1058) // ADMA System Addressregister |
|
|
|
#define SDHC_VENDOR (*(volatile uint32_t *)0x400B10C0) // Vendor Specific register |
|
|
|
#define SDHC_VENDOR_INTSTVAL_MASK ((uint32_t)0x00FF0000) |
|
|
|
#define SDHC_VENDOR_EXBLKNU ((uint32_t)0x00000002) |
|
|
|
#define SDHC_MMCBOOT (*(volatile uint32_t *)0x400B10C4) // MMC Boot register |
|
|
|
#define SDHC_MMCBOOT_BOOTBLKCNT(n) (uint32_t)(((n) & 0xFFF)<<16) // stop at block gap value of automatic mode |
|
|
|
#define SDHC_MMCBOOT_AUTOSABGEN ((uint32_t)0x00000080) // enable auto stop at block gap function |
|
|
|
#define SDHC_MMCBOOT_BOOTEN ((uint32_t)0x00000040) // Boot Mode Enable |
|
|
|
#define SDHC_MMCBOOT_BOOTMODE ((uint32_t)0x00000020) // Boot Mode Select |
|
|
|
#define SDHC_MMCBOOT_BOOTACK ((uint32_t)0x00000010) // Boot Ack Mode Select |
|
|
|
#define SDHC_MMCBOOT_DTOCVACK(n) (uint32_t)(((n) & 0xF)<<0) // Boot ACK Time Out Counter Value |
|
|
|
#define SDHC_HOSTVER (*(volatile uint32_t *)0x400B10FC) // Host Controller Version |
|
|
|
|
|
|
|
|