1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * BRIEF MODULE DESCRIPTION 3*4882a593Smuzhiyun * Defines for using the MMC/SD controllers on the 4*4882a593Smuzhiyun * Alchemy Au1100 mips processor. 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright (c) 2003 Embedded Edge, LLC. 7*4882a593Smuzhiyun * Author: Embedded Edge, LLC. 8*4882a593Smuzhiyun * dan@embeddededge.com or tim@embeddededge.com 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify it 11*4882a593Smuzhiyun * under the terms of the GNU General Public License as published by the 12*4882a593Smuzhiyun * Free Software Foundation; either version 2 of the License, or (at your 13*4882a593Smuzhiyun * option) any later version. 14*4882a593Smuzhiyun * 15*4882a593Smuzhiyun * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 16*4882a593Smuzhiyun * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17*4882a593Smuzhiyun * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 18*4882a593Smuzhiyun * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19*4882a593Smuzhiyun * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20*4882a593Smuzhiyun * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 21*4882a593Smuzhiyun * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22*4882a593Smuzhiyun * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23*4882a593Smuzhiyun * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24*4882a593Smuzhiyun * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25*4882a593Smuzhiyun * 26*4882a593Smuzhiyun * You should have received a copy of the GNU General Public License along 27*4882a593Smuzhiyun * with this program; if not, write to the Free Software Foundation, Inc., 28*4882a593Smuzhiyun * 675 Mass Ave, Cambridge, MA 02139, USA. 29*4882a593Smuzhiyun * 30*4882a593Smuzhiyun */ 31*4882a593Smuzhiyun /* 32*4882a593Smuzhiyun * AU1100 MMC/SD definitions. 33*4882a593Smuzhiyun * 34*4882a593Smuzhiyun * From "AMD Alchemy Solutions Au1100 Processor Data Book - Preliminary" 35*4882a593Smuzhiyun * June, 2003 36*4882a593Smuzhiyun */ 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun #ifndef __ASM_AU1100_MMC_H 39*4882a593Smuzhiyun #define __ASM_AU1100_MMC_H 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun #include <linux/leds.h> 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun struct au1xmmc_platform_data { 44*4882a593Smuzhiyun int(*cd_setup)(void *mmc_host, int on); 45*4882a593Smuzhiyun int(*card_inserted)(void *mmc_host); 46*4882a593Smuzhiyun int(*card_readonly)(void *mmc_host); 47*4882a593Smuzhiyun void(*set_power)(void *mmc_host, int state); 48*4882a593Smuzhiyun struct led_classdev *led; 49*4882a593Smuzhiyun unsigned long mask_host_caps; 50*4882a593Smuzhiyun }; 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun #define SD0_BASE 0xB0600000 53*4882a593Smuzhiyun #define SD1_BASE 0xB0680000 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun /* 57*4882a593Smuzhiyun * Register offsets. 58*4882a593Smuzhiyun */ 59*4882a593Smuzhiyun #define SD_TXPORT (0x0000) 60*4882a593Smuzhiyun #define SD_RXPORT (0x0004) 61*4882a593Smuzhiyun #define SD_CONFIG (0x0008) 62*4882a593Smuzhiyun #define SD_ENABLE (0x000C) 63*4882a593Smuzhiyun #define SD_CONFIG2 (0x0010) 64*4882a593Smuzhiyun #define SD_BLKSIZE (0x0014) 65*4882a593Smuzhiyun #define SD_STATUS (0x0018) 66*4882a593Smuzhiyun #define SD_DEBUG (0x001C) 67*4882a593Smuzhiyun #define SD_CMD (0x0020) 68*4882a593Smuzhiyun #define SD_CMDARG (0x0024) 69*4882a593Smuzhiyun #define SD_RESP3 (0x0028) 70*4882a593Smuzhiyun #define SD_RESP2 (0x002C) 71*4882a593Smuzhiyun #define SD_RESP1 (0x0030) 72*4882a593Smuzhiyun #define SD_RESP0 (0x0034) 73*4882a593Smuzhiyun #define SD_TIMEOUT (0x0038) 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun /* 77*4882a593Smuzhiyun * SD_TXPORT bit definitions. 78*4882a593Smuzhiyun */ 79*4882a593Smuzhiyun #define SD_TXPORT_TXD (0x000000ff) 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun /* 83*4882a593Smuzhiyun * SD_RXPORT bit definitions. 84*4882a593Smuzhiyun */ 85*4882a593Smuzhiyun #define SD_RXPORT_RXD (0x000000ff) 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun /* 89*4882a593Smuzhiyun * SD_CONFIG bit definitions. 90*4882a593Smuzhiyun */ 91*4882a593Smuzhiyun #define SD_CONFIG_DIV (0x000001ff) 92*4882a593Smuzhiyun #define SD_CONFIG_DE (0x00000200) 93*4882a593Smuzhiyun #define SD_CONFIG_NE (0x00000400) 94*4882a593Smuzhiyun #define SD_CONFIG_TU (0x00000800) 95*4882a593Smuzhiyun #define SD_CONFIG_TO (0x00001000) 96*4882a593Smuzhiyun #define SD_CONFIG_RU (0x00002000) 97*4882a593Smuzhiyun #define SD_CONFIG_RO (0x00004000) 98*4882a593Smuzhiyun #define SD_CONFIG_I (0x00008000) 99*4882a593Smuzhiyun #define SD_CONFIG_CR (0x00010000) 100*4882a593Smuzhiyun #define SD_CONFIG_RAT (0x00020000) 101*4882a593Smuzhiyun #define SD_CONFIG_DD (0x00040000) 102*4882a593Smuzhiyun #define SD_CONFIG_DT (0x00080000) 103*4882a593Smuzhiyun #define SD_CONFIG_SC (0x00100000) 104*4882a593Smuzhiyun #define SD_CONFIG_RC (0x00200000) 105*4882a593Smuzhiyun #define SD_CONFIG_WC (0x00400000) 106*4882a593Smuzhiyun #define SD_CONFIG_xxx (0x00800000) 107*4882a593Smuzhiyun #define SD_CONFIG_TH (0x01000000) 108*4882a593Smuzhiyun #define SD_CONFIG_TE (0x02000000) 109*4882a593Smuzhiyun #define SD_CONFIG_TA (0x04000000) 110*4882a593Smuzhiyun #define SD_CONFIG_RH (0x08000000) 111*4882a593Smuzhiyun #define SD_CONFIG_RA (0x10000000) 112*4882a593Smuzhiyun #define SD_CONFIG_RF (0x20000000) 113*4882a593Smuzhiyun #define SD_CONFIG_CD (0x40000000) 114*4882a593Smuzhiyun #define SD_CONFIG_SI (0x80000000) 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun /* 118*4882a593Smuzhiyun * SD_ENABLE bit definitions. 119*4882a593Smuzhiyun */ 120*4882a593Smuzhiyun #define SD_ENABLE_CE (0x00000001) 121*4882a593Smuzhiyun #define SD_ENABLE_R (0x00000002) 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun /* 125*4882a593Smuzhiyun * SD_CONFIG2 bit definitions. 126*4882a593Smuzhiyun */ 127*4882a593Smuzhiyun #define SD_CONFIG2_EN (0x00000001) 128*4882a593Smuzhiyun #define SD_CONFIG2_FF (0x00000002) 129*4882a593Smuzhiyun #define SD_CONFIG2_xx1 (0x00000004) 130*4882a593Smuzhiyun #define SD_CONFIG2_DF (0x00000008) 131*4882a593Smuzhiyun #define SD_CONFIG2_DC (0x00000010) 132*4882a593Smuzhiyun #define SD_CONFIG2_xx2 (0x000000e0) 133*4882a593Smuzhiyun #define SD_CONFIG2_BB (0x00000080) 134*4882a593Smuzhiyun #define SD_CONFIG2_WB (0x00000100) 135*4882a593Smuzhiyun #define SD_CONFIG2_RW (0x00000200) 136*4882a593Smuzhiyun #define SD_CONFIG2_DP (0x00000400) 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun /* 140*4882a593Smuzhiyun * SD_BLKSIZE bit definitions. 141*4882a593Smuzhiyun */ 142*4882a593Smuzhiyun #define SD_BLKSIZE_BS (0x000007ff) 143*4882a593Smuzhiyun #define SD_BLKSIZE_BS_SHIFT (0) 144*4882a593Smuzhiyun #define SD_BLKSIZE_BC (0x01ff0000) 145*4882a593Smuzhiyun #define SD_BLKSIZE_BC_SHIFT (16) 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun /* 149*4882a593Smuzhiyun * SD_STATUS bit definitions. 150*4882a593Smuzhiyun */ 151*4882a593Smuzhiyun #define SD_STATUS_DCRCW (0x00000007) 152*4882a593Smuzhiyun #define SD_STATUS_xx1 (0x00000008) 153*4882a593Smuzhiyun #define SD_STATUS_CB (0x00000010) 154*4882a593Smuzhiyun #define SD_STATUS_DB (0x00000020) 155*4882a593Smuzhiyun #define SD_STATUS_CF (0x00000040) 156*4882a593Smuzhiyun #define SD_STATUS_D3 (0x00000080) 157*4882a593Smuzhiyun #define SD_STATUS_xx2 (0x00000300) 158*4882a593Smuzhiyun #define SD_STATUS_NE (0x00000400) 159*4882a593Smuzhiyun #define SD_STATUS_TU (0x00000800) 160*4882a593Smuzhiyun #define SD_STATUS_TO (0x00001000) 161*4882a593Smuzhiyun #define SD_STATUS_RU (0x00002000) 162*4882a593Smuzhiyun #define SD_STATUS_RO (0x00004000) 163*4882a593Smuzhiyun #define SD_STATUS_I (0x00008000) 164*4882a593Smuzhiyun #define SD_STATUS_CR (0x00010000) 165*4882a593Smuzhiyun #define SD_STATUS_RAT (0x00020000) 166*4882a593Smuzhiyun #define SD_STATUS_DD (0x00040000) 167*4882a593Smuzhiyun #define SD_STATUS_DT (0x00080000) 168*4882a593Smuzhiyun #define SD_STATUS_SC (0x00100000) 169*4882a593Smuzhiyun #define SD_STATUS_RC (0x00200000) 170*4882a593Smuzhiyun #define SD_STATUS_WC (0x00400000) 171*4882a593Smuzhiyun #define SD_STATUS_xx3 (0x00800000) 172*4882a593Smuzhiyun #define SD_STATUS_TH (0x01000000) 173*4882a593Smuzhiyun #define SD_STATUS_TE (0x02000000) 174*4882a593Smuzhiyun #define SD_STATUS_TA (0x04000000) 175*4882a593Smuzhiyun #define SD_STATUS_RH (0x08000000) 176*4882a593Smuzhiyun #define SD_STATUS_RA (0x10000000) 177*4882a593Smuzhiyun #define SD_STATUS_RF (0x20000000) 178*4882a593Smuzhiyun #define SD_STATUS_CD (0x40000000) 179*4882a593Smuzhiyun #define SD_STATUS_SI (0x80000000) 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun /* 183*4882a593Smuzhiyun * SD_CMD bit definitions. 184*4882a593Smuzhiyun */ 185*4882a593Smuzhiyun #define SD_CMD_GO (0x00000001) 186*4882a593Smuzhiyun #define SD_CMD_RY (0x00000002) 187*4882a593Smuzhiyun #define SD_CMD_xx1 (0x0000000c) 188*4882a593Smuzhiyun #define SD_CMD_CT_MASK (0x000000f0) 189*4882a593Smuzhiyun #define SD_CMD_CT_0 (0x00000000) 190*4882a593Smuzhiyun #define SD_CMD_CT_1 (0x00000010) 191*4882a593Smuzhiyun #define SD_CMD_CT_2 (0x00000020) 192*4882a593Smuzhiyun #define SD_CMD_CT_3 (0x00000030) 193*4882a593Smuzhiyun #define SD_CMD_CT_4 (0x00000040) 194*4882a593Smuzhiyun #define SD_CMD_CT_5 (0x00000050) 195*4882a593Smuzhiyun #define SD_CMD_CT_6 (0x00000060) 196*4882a593Smuzhiyun #define SD_CMD_CT_7 (0x00000070) 197*4882a593Smuzhiyun #define SD_CMD_CI (0x0000ff00) 198*4882a593Smuzhiyun #define SD_CMD_CI_SHIFT (8) 199*4882a593Smuzhiyun #define SD_CMD_RT_MASK (0x00ff0000) 200*4882a593Smuzhiyun #define SD_CMD_RT_0 (0x00000000) 201*4882a593Smuzhiyun #define SD_CMD_RT_1 (0x00010000) 202*4882a593Smuzhiyun #define SD_CMD_RT_2 (0x00020000) 203*4882a593Smuzhiyun #define SD_CMD_RT_3 (0x00030000) 204*4882a593Smuzhiyun #define SD_CMD_RT_4 (0x00040000) 205*4882a593Smuzhiyun #define SD_CMD_RT_5 (0x00050000) 206*4882a593Smuzhiyun #define SD_CMD_RT_6 (0x00060000) 207*4882a593Smuzhiyun #define SD_CMD_RT_1B (0x00810000) 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun #endif /* __ASM_AU1100_MMC_H */ 211