⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdi_reg_s3c2410.h

📁 三星公司ARM芯片S3C2410 SD/MMC LINUX 驱动程序源码。
💻 H
字号:
/* * Copyright (c) SAMSUNG ELECTRONICS  * 	SW.LEE <hitchcar@sec.samsung.com> *      S3C2410 SD Register Field definitons  */#ifndef _S3C2410_SDI_H#define _S3C2410_SDI_H#define rSDICON     (*(volatile unsigned *)(lowlevel->sd_base+0x00)) //SDI control#define rSDIPRE     (*(volatile unsigned *)(lowlevel->sd_base+0x04)) //SDI baud rate prescaler#define rSDICARG    (*(volatile unsigned *)(lowlevel->sd_base+0x08)) //SDI command argument#define rSDICCON    (*(volatile unsigned *)(lowlevel->sd_base+0x0c)) //SDI command control#define rSDICSTA    (*(volatile unsigned *)(lowlevel->sd_base+0x10)) //SDI command status#define rSDIRSP0    (*(volatile unsigned *)(lowlevel->sd_base+0x14)) //SDI response 0#define rSDIRSP1    (*(volatile unsigned *)(lowlevel->sd_base+0x18)) //SDI response 1#define rSDIRSP2    (*(volatile unsigned *)(lowlevel->sd_base+0x1c)) //SDI response 2#define rSDIRSP3    (*(volatile unsigned *)(lowlevel->sd_base+0x20)) //SDI response 3#define rSDIDTIMER  (*(volatile unsigned *)(lowlevel->sd_base+0x24)) //SDI data/busy timer#define rSDIBSIZE   (*(volatile unsigned *)(lowlevel->sd_base+0x28)) //SDI block size#define rSDIDCON    (*(volatile unsigned *)(lowlevel->sd_base+0x2c)) //SDI data control#define rSDIDCNT    (*(volatile unsigned *)(lowlevel->sd_base+0x30)) //SDI data remain counter#define rSDIDSTA    (*(volatile unsigned *)(lowlevel->sd_base+0x34)) //SDI data status#define rSDIFSTA    (*(volatile unsigned *)(lowlevel->sd_base+0x38)) //SDI FIFO status#define rSDIIMSK    (*(volatile unsigned *)(lowlevel->sd_base+0x40)) //SDI interrupt mask#ifdef __BIG_ENDIAN#define rSDIDAT    (*(volatile unsigned *)(lowlevel->sd_base+0x3f)) //SDI data			    //#define SDIDAT     (lowlevel->sd_base+0x3f)#else  // Little Endian#define rSDIDAT    (*(volatile unsigned *)(lowlevel->sd_base+0x3c)) //SDI data#endif/* Clock definitions */#ifndef PCLK#define  FCLK 202800000#define  HCLK (FCLK/2)#define  PCLK (HCLK/2)#endif/* SDI Control REgister */#define BYTE_ORDER_TYPE_B         0x00000010#define RECV_SDIO_INT_EN          0x00000008#define READ_WAIT_EN              0x00000004#define FIFO_RESET                0x00000002#define CLOCK_OUT_EN              0x00000001/* SDI Command Control Regiter Fields */#define NORMAL_COMMAND            0x0000#define ABORT_COMMAND             0x1000#define CMD_WITH_DATA             0x0800#define LONG_136RESPONSE          0x0400#define WAIT_RESPONSE             0x0200#define CMD_START                 0x0100#define CMD_INDEX_MASK            0xff#define START_TRANSMISSION_PRE    0x40/* SDI Status Register Index */#define SDI_CMD  0#define SDI_DATA 1#define SDI_FIFO 2#define SDI_STATUS_LENGTH 3/* SDI Command Status Register */#define MMC_STATUS_CRC_RESPONSE_ERROR  (1<<12)#define MMC_STATUS_CMD_SENT_DONE       (1<<11)#define MMC_STATUS_RESPONSE_TIMEOUT    (1<<10)#define MMC_STATUS_RESPONSE_RECV_DONE  (1<<9)#define MMC_STATUS_TRANS_ON            (1<<8)#define MMC_STATUS_RESPONSE_INDEX      (1<<7)#define MMC_STATUS_RESPONSE_INDEX_MASK (0xff)#define MMC_CMD_STATUS_WRITEONE_CLEAR  (0xf<<9)/* SDI Data Status Register */#define MMC_STATUS_RD_WAIT             (1<<10)#define MMC_STATUS_IO_INT_DETECT       (1<<9)#define MMC_STATUS_FIFO_ERROR          (1<<8)#define MMC_STATUS_CRC_WRITE_ERROR     (1<<7)#define MMC_STATUS_CRC_READ_ERROR      (1<<6)#define MMC_STATUS_DATA_BUSY_TIMEOUT   (1<<5)#define MMC_STATUS_DATA_TRANSFER_DONE  (1<<4)#define MMC_STATUS_BUSY_FINISH         (1<<3)#define MMC_STATUS_STARTBIT_ERROR      (1<<2)#define MMC_STATUS_TX_DATA_ON_PROGRESS (1<<1)#define MMC_STATUS_RX_DATA_ON_PROGRESS (1<<0)#define MMC_DATA_STATUS_WRITEONE_CLEAR (0x1f<<2)/* SDI FIFO Staus Register */#define MMC_STATUS_FIFO_READY_FOR_TX   (1<<13)#define MMC_STATUS_FIFO_READY_FOR_RX   (1<<12)#define MMC_STATUS_FIFO_TX_HALF_FULL   (1<<11)#define MMC_STATUS_FIFO_EMPTY          (1<<10)#define MMC_STATUS_FIFO_RX_LAST_DATA   (1<<9 )#define MMC_STATUS_FIFO_RX_FULL        (1<<8 )#define MMC_STATUS_FIFO_RX_HALF_FULL   (1<<7)#define MMC_STATUS_FIFO_COUNT_MASK     (0x7f)#define MMC_FIFO_STATUS_WRITEONE_CLEAR (0x7f<<6) #define S3C_SD_FIFO_SIZE               ( 64)  /* Physical size =64 bytes *//* SDI Block Size  SDIBSIZE register */#define BLOCK_SIZE_ZERO 	  0x0/* SDI Data Control Register -- SDIDCON */#define INT_PERIOD_SINGLEBLOCK    0x00200000#define TRAS_AF_RESPONSE_NODIRECT 0x00100000#define RECV_AF_CMD_NODIRECT      0x00080000#define BUSY_AF_CMD_NODIRECT      0x00040000#define DATA_TRANS_BLOCK          0x00020000#define STANDARD_BUS_MODE         0x00000000#define WIDE_BUS_MODE_EN          0x00010000#define DMA_MODE_EN               0x00008000#define STOP_BY_FORCE             0x00004000#define DATA_TRANS_READY          0x00000000#define DATA_TRANS_MASK           0x00003000#define DATA_TRANS_BUSY_START     0x00001000#define DATA_RECV_START           0x00002000#define DATA_TRANS_START          0x00003000#define DATA_MAX_BLKNUM           0x00000fff#define SDIDCON_ZERO              0x00000000/* SDI Response Register 0  *//* Card Status [31:0] (short), card Status[127:96](long) *//* SDI Respnose Register 1 */#define MMC_RESPONSE_CRC_8_0      (0xff<<24)#define MMC_RESPONSE_LONG_127_96  (0xffffffff)#define MMC_RESPONSE_LONG_135_128_VAL (0x3f)#define SDIRSP1_CRC_SHIFT          24#define MMC_RESPONSE_LONG_95_88   (0xff<<24)/* SDI Response Register 2 */#define MMC_RESPONSE_LONG_87_64   (0xffffff)/* SDI Response Register 3 */#define MMC_RESPONSE_LONG_63_32   (0xffffffff)/* SDI Response Register 4 */#define MMC_RESPONSE_LONG_31_0    (0xffffffff)/* SDI Data / Busy Timer (SDIDTIMER) Register */#define SDIDTIMER_DEFAULT         0xffff /*  * SDI Interrupt Mask Register  */#define S3C_RESPONSE_CRC_INT_ON           0x20000#define S3C_CMD_SENT_INT_ON               0x10000#define S3C_CMD_RESPONSE_TIMEOUT_INT_ON   0x08000#define S3C_RESPONSE_RECV_INT_ON          0x04000#define S3C_RD_WAIT_REQUEST_INT_ON        0x02000#define S3C_SDIO_RECV_INT_ON              0x01000#define S3C_FIFO_FAIL_ERROR_INT_ON        0x00800#define S3C_CRC_STATUS_ERROR_INT_ON       0x00400#define S3C_DATA_CRC_FAIL_INT_ON          0x00200#define S3C_DATA_TIMEOUT_INT_ON           0x00100#define S3C_DATA_CNT_ZERO_INT_ON          0x00080#define S3C_BUSY_COMPLETE_INT_ON          0x00040#define S3C_START_BIT_ERROR_INT_ON        0x00020#define S3C_TX_FIFO_HALF_INT_ON           0x00010#define S3C_TX_FIFO_EMPTY_INT_ON          0x00008#define S3C_RX_FIFO_LAST_DATA_INT_ON      0x00004#define S3C_RX_FIFO_FULL_INT_ON           0x00002#define S3C_RX_FIFO_HALF_INT_ON           0x00001#define S3C_ALL_MMC_INT_MASK              0x00000/*  COMMAND FORMAT DEFINITION */#define START_DIRECTION            0x40#define COMMAND_INDEX_MASK         0x3f/* this Constant not used */#define  MMC_CMD_DATA_CONT_FORMAT_NO_RESPONSE 0#define  MMC_CMD_DATA_CONT_FORMAT_R1          2#define  MMC_CMD_DATA_CONT_BUSY_BIT           4 #define  MMC_CMD_DATA_CONT_FORMAT_R2          16 #define  MMC_CMD_DATA_CONT_FORMAT_R3          32                    #define  MMC_CMD_DATA_CONT_FORMAT_R4          64                    #define  MMC_CMD_DATA_CONT_FORMAT_R5          128                 #define  MMC_CMD_DATA_CONT_FORMAT_R6          256#endif  /* _S3C2410_SDI_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -