1 /* 2 * SdioDrv.h 3 * 4 * Copyright (C) 2009 Texas Instruments, Inc. - http://www.ti.com/ 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License as 8 * published by the Free Software Foundation version 2. 9 * 10 * This program is distributed "as is" WITHOUT ANY WARRANTY of any 11 * kind, whether express or implied; without even the implied warranty 12 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 */ 15 16 #ifndef __OMAP3430_SDIODRV_API_H 17 #define __OMAP3430_SDIODRV_API_H 18 19 #include <asm/types.h> 20 #include <linux/mmc/mmc.h> 21 22 /* Card Common Control Registers (CCCR) */ 23 24 #define CCCR_SDIO_REVISION 0x00 25 #define CCCR_SD_SPECIFICATION_REVISION 0x01 26 #define CCCR_IO_ENABLE 0x02 27 #define CCCR_IO_READY 0x03 28 #define CCCR_INT_ENABLE 0x04 29 #define CCCR_INT_PENDING 0x05 30 #define CCCR_IO_ABORT 0x06 31 #define CCCR_BUS_INTERFACE_CONTOROL 0x07 32 #define CCCR_CARD_CAPABILITY 0x08 33 #define CCCR_COMMON_CIS_POINTER 0x09 /*0x09-0x0B*/ 34 #define CCCR_FNO_BLOCK_SIZE 0x10 /*0x10-0x11*/ 35 #define FN0_CCCR_REG_32 0x64 36 37 /* Pprotocol defined constants */ 38 39 #define SD_IO_GO_IDLE_STATE 0 40 #define SD_IO_SEND_RELATIVE_ADDR 3 41 #define SDIO_CMD5 5 42 #define SD_IO_SELECT_CARD 7 43 #define SDIO_CMD52 52 44 #define SDIO_CMD53 53 45 #define SD_IO_SEND_OP_COND SDIO_CMD5 46 #define SD_IO_RW_DIRECT SDIO_CMD52 47 #define SD_IO_RW_EXTENDED SDIO_CMD53 48 #define SDIO_SHIFT(v,n) (v<<n) 49 #define SDIO_RWFLAG(v) (SDIO_SHIFT(v,31)) 50 #define SDIO_FUNCN(v) (SDIO_SHIFT(v,28)) 51 #define SDIO_RAWFLAG(v) (SDIO_SHIFT(v,27)) 52 #define SDIO_BLKM(v) (SDIO_SHIFT(v,27)) 53 #define SDIO_OPCODE(v) (SDIO_SHIFT(v,26)) 54 #define SDIO_ADDRREG(v) (SDIO_SHIFT(v,9)) 55 56 57 #define VDD_VOLTAGE_WINDOW 0xffffc0 58 #define FN2_OBI_INV 0x0002 59 60 #define MMC_RSP_NONE (0 << 0) 61 #define MMC_RSP_SHORT (1 << 0) 62 #define MMC_RSP_LONG (2 << 0) 63 #define MMC_RSP_MASK (3 << 0) 64 #define MMC_RSP_CRC (1 << 3) 65 #define MMC_RSP_BUSY (1 << 4) 66 67 #define MMC_RSP_R1 (MMC_RSP_SHORT|MMC_RSP_CRC) 68 #define MMC_RSP_R1B (MMC_RSP_SHORT|MMC_RSP_CRC|MMC_RSP_BUSY) 69 #define MMC_RSP_R2 (MMC_RSP_LONG|MMC_RSP_CRC) 70 #define MMC_RSP_R3 (MMC_RSP_SHORT) 71 72 /* HSMMC controller bit definitions 73 * */ 74 #define OMAP_HSMMC_CMD_NO_RESPONSE (0 << 0) 75 #define OMAP_HSMMC_CMD_LONG_RESPONSE (1 << 0) 76 #define OMAP_HSMMC_CMD_SHORT_RESPONSE (2 << 0) 77 78 #define MMC_ERR_NONE 0 79 #define MMC_ERR_TIMEOUT 1 80 #define MMC_ERR_BADCRC 2 81 #define MMC_ERR_FIFO 3 82 #define MMC_ERR_FAILED 4 83 #define MMC_ERR_INVALID 5 84 85 #undef MMC_RSP_R4 86 #define MMC_RSP_R4 OMAP_HSMMC_CMD_SHORT_RESPONSE 87 #undef MMC_RSP_R5 88 #define MMC_RSP_R5 OMAP_HSMMC_CMD_SHORT_RESPONSE 89 #undef MMC_RSP_R6 90 #define MMC_RSP_R6 OMAP_HSMMC_CMD_SHORT_RESPONSE 91 92 /********************************************************************/ 93 /* SDIO driver functions prototypes */ 94 /********************************************************************/ 95 int sdioDrv_ConnectBus (void * fCbFunc, 96 void * hCbArg, 97 unsigned int uBlkSizeShift, 98 unsigned int uSdioThreadPriority, 99 unsigned char **pTxDmaSrcAddr); 100 101 int sdioDrv_DisconnectBus (void); 102 103 int sdioDrv_ExecuteCmd (unsigned int uCmd, 104 unsigned int uArg, 105 unsigned int uRespType, 106 void * pResponse, 107 unsigned int uLen); 108 109 int sdioDrv_ReadSync (unsigned int uFunc, 110 unsigned int uHwAddr, 111 void * pData, 112 unsigned int uLen, 113 unsigned int bIncAddr, 114 unsigned int bMore); 115 116 int sdioDrv_ReadAsync (unsigned int uFunc, 117 unsigned int uHwAddr, 118 void * pData, 119 unsigned int uLen, 120 unsigned int bBlkMode, 121 unsigned int bIncAddr, 122 unsigned int bMore); 123 124 int sdioDrv_WriteSync (unsigned int uFunc, 125 unsigned int uHwAddr, 126 void * pData, 127 unsigned int uLen, 128 unsigned int bIncAddr, 129 unsigned int bMore); 130 131 int sdioDrv_WriteAsync (unsigned int uFunc, 132 unsigned int uHwAddr, 133 void * pData, 134 unsigned int uLen, 135 unsigned int bBlkMode, 136 unsigned int bIncAddr, 137 unsigned int bMore); 138 139 int sdioDrv_ReadSyncBytes (unsigned int uFunc, 140 unsigned int uHwAddr, 141 unsigned char *pData, 142 unsigned int uLen, 143 unsigned int bMore); 144 145 int sdioDrv_WriteSyncBytes (unsigned int uFunc, 146 unsigned int uHwAddr, 147 unsigned char *pData, 148 unsigned int uLen, 149 unsigned int bMore); 150 151 void sdioDrv_register_pm(int (*wlanDrvIf_Start)(void), 152 int (*wlanDrvIf_Stop)(void)); 153 154 155 #endif/* _OMAP3430_SDIODRV_H */ 156