1384740dcSRalf Baechle /* 2384740dcSRalf Baechle * BRIEF MODULE DESCRIPTION 3384740dcSRalf Baechle * Defines for using the MMC/SD controllers on the 4384740dcSRalf Baechle * Alchemy Au1100 mips processor. 5384740dcSRalf Baechle * 6384740dcSRalf Baechle * Copyright (c) 2003 Embedded Edge, LLC. 7384740dcSRalf Baechle * Author: Embedded Edge, LLC. 8384740dcSRalf Baechle * dan@embeddededge.com or tim@embeddededge.com 9384740dcSRalf Baechle * 10384740dcSRalf Baechle * This program is free software; you can redistribute it and/or modify it 11384740dcSRalf Baechle * under the terms of the GNU General Public License as published by the 12384740dcSRalf Baechle * Free Software Foundation; either version 2 of the License, or (at your 13384740dcSRalf Baechle * option) any later version. 14384740dcSRalf Baechle * 15384740dcSRalf Baechle * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 16384740dcSRalf Baechle * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17384740dcSRalf Baechle * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 18384740dcSRalf Baechle * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19384740dcSRalf Baechle * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20384740dcSRalf Baechle * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 21384740dcSRalf Baechle * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 22384740dcSRalf Baechle * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23384740dcSRalf Baechle * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24384740dcSRalf Baechle * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25384740dcSRalf Baechle * 26384740dcSRalf Baechle * You should have received a copy of the GNU General Public License along 27384740dcSRalf Baechle * with this program; if not, write to the Free Software Foundation, Inc., 28384740dcSRalf Baechle * 675 Mass Ave, Cambridge, MA 02139, USA. 29384740dcSRalf Baechle * 30384740dcSRalf Baechle */ 31384740dcSRalf Baechle /* 32384740dcSRalf Baechle * AU1100 MMC/SD definitions. 33384740dcSRalf Baechle * 34384740dcSRalf Baechle * From "AMD Alchemy Solutions Au1100 Processor Data Book - Preliminary" 35384740dcSRalf Baechle * June, 2003 36384740dcSRalf Baechle */ 37384740dcSRalf Baechle 38384740dcSRalf Baechle #ifndef __ASM_AU1100_MMC_H 39384740dcSRalf Baechle #define __ASM_AU1100_MMC_H 40384740dcSRalf Baechle 41384740dcSRalf Baechle #include <linux/leds.h> 42384740dcSRalf Baechle 43384740dcSRalf Baechle struct au1xmmc_platform_data { 44384740dcSRalf Baechle int(*cd_setup)(void *mmc_host, int on); 45384740dcSRalf Baechle int(*card_inserted)(void *mmc_host); 46384740dcSRalf Baechle int(*card_readonly)(void *mmc_host); 47384740dcSRalf Baechle void(*set_power)(void *mmc_host, int state); 48384740dcSRalf Baechle struct led_classdev *led; 493b839070SManuel Lauss unsigned long mask_host_caps; 50384740dcSRalf Baechle }; 51384740dcSRalf Baechle 52384740dcSRalf Baechle #define SD0_BASE 0xB0600000 53384740dcSRalf Baechle #define SD1_BASE 0xB0680000 54384740dcSRalf Baechle 55384740dcSRalf Baechle 56384740dcSRalf Baechle /* 57384740dcSRalf Baechle * Register offsets. 58384740dcSRalf Baechle */ 59384740dcSRalf Baechle #define SD_TXPORT (0x0000) 60384740dcSRalf Baechle #define SD_RXPORT (0x0004) 61384740dcSRalf Baechle #define SD_CONFIG (0x0008) 62384740dcSRalf Baechle #define SD_ENABLE (0x000C) 63384740dcSRalf Baechle #define SD_CONFIG2 (0x0010) 64384740dcSRalf Baechle #define SD_BLKSIZE (0x0014) 65384740dcSRalf Baechle #define SD_STATUS (0x0018) 66384740dcSRalf Baechle #define SD_DEBUG (0x001C) 67384740dcSRalf Baechle #define SD_CMD (0x0020) 68384740dcSRalf Baechle #define SD_CMDARG (0x0024) 69384740dcSRalf Baechle #define SD_RESP3 (0x0028) 70384740dcSRalf Baechle #define SD_RESP2 (0x002C) 71384740dcSRalf Baechle #define SD_RESP1 (0x0030) 72384740dcSRalf Baechle #define SD_RESP0 (0x0034) 73384740dcSRalf Baechle #define SD_TIMEOUT (0x0038) 74384740dcSRalf Baechle 75384740dcSRalf Baechle 76384740dcSRalf Baechle /* 77384740dcSRalf Baechle * SD_TXPORT bit definitions. 78384740dcSRalf Baechle */ 79384740dcSRalf Baechle #define SD_TXPORT_TXD (0x000000ff) 80384740dcSRalf Baechle 81384740dcSRalf Baechle 82384740dcSRalf Baechle /* 83384740dcSRalf Baechle * SD_RXPORT bit definitions. 84384740dcSRalf Baechle */ 85384740dcSRalf Baechle #define SD_RXPORT_RXD (0x000000ff) 86384740dcSRalf Baechle 87384740dcSRalf Baechle 88384740dcSRalf Baechle /* 89384740dcSRalf Baechle * SD_CONFIG bit definitions. 90384740dcSRalf Baechle */ 91384740dcSRalf Baechle #define SD_CONFIG_DIV (0x000001ff) 92384740dcSRalf Baechle #define SD_CONFIG_DE (0x00000200) 93384740dcSRalf Baechle #define SD_CONFIG_NE (0x00000400) 94384740dcSRalf Baechle #define SD_CONFIG_TU (0x00000800) 95384740dcSRalf Baechle #define SD_CONFIG_TO (0x00001000) 96384740dcSRalf Baechle #define SD_CONFIG_RU (0x00002000) 97384740dcSRalf Baechle #define SD_CONFIG_RO (0x00004000) 98384740dcSRalf Baechle #define SD_CONFIG_I (0x00008000) 99384740dcSRalf Baechle #define SD_CONFIG_CR (0x00010000) 100384740dcSRalf Baechle #define SD_CONFIG_RAT (0x00020000) 101384740dcSRalf Baechle #define SD_CONFIG_DD (0x00040000) 102384740dcSRalf Baechle #define SD_CONFIG_DT (0x00080000) 103384740dcSRalf Baechle #define SD_CONFIG_SC (0x00100000) 104384740dcSRalf Baechle #define SD_CONFIG_RC (0x00200000) 105384740dcSRalf Baechle #define SD_CONFIG_WC (0x00400000) 106384740dcSRalf Baechle #define SD_CONFIG_xxx (0x00800000) 107384740dcSRalf Baechle #define SD_CONFIG_TH (0x01000000) 108384740dcSRalf Baechle #define SD_CONFIG_TE (0x02000000) 109384740dcSRalf Baechle #define SD_CONFIG_TA (0x04000000) 110384740dcSRalf Baechle #define SD_CONFIG_RH (0x08000000) 111384740dcSRalf Baechle #define SD_CONFIG_RA (0x10000000) 112384740dcSRalf Baechle #define SD_CONFIG_RF (0x20000000) 113384740dcSRalf Baechle #define SD_CONFIG_CD (0x40000000) 114384740dcSRalf Baechle #define SD_CONFIG_SI (0x80000000) 115384740dcSRalf Baechle 116384740dcSRalf Baechle 117384740dcSRalf Baechle /* 118384740dcSRalf Baechle * SD_ENABLE bit definitions. 119384740dcSRalf Baechle */ 120384740dcSRalf Baechle #define SD_ENABLE_CE (0x00000001) 121384740dcSRalf Baechle #define SD_ENABLE_R (0x00000002) 122384740dcSRalf Baechle 123384740dcSRalf Baechle 124384740dcSRalf Baechle /* 125384740dcSRalf Baechle * SD_CONFIG2 bit definitions. 126384740dcSRalf Baechle */ 127384740dcSRalf Baechle #define SD_CONFIG2_EN (0x00000001) 128384740dcSRalf Baechle #define SD_CONFIG2_FF (0x00000002) 129384740dcSRalf Baechle #define SD_CONFIG2_xx1 (0x00000004) 130384740dcSRalf Baechle #define SD_CONFIG2_DF (0x00000008) 131384740dcSRalf Baechle #define SD_CONFIG2_DC (0x00000010) 132384740dcSRalf Baechle #define SD_CONFIG2_xx2 (0x000000e0) 133*809f36c6SManuel Lauss #define SD_CONFIG2_BB (0x00000080) 134384740dcSRalf Baechle #define SD_CONFIG2_WB (0x00000100) 135384740dcSRalf Baechle #define SD_CONFIG2_RW (0x00000200) 136*809f36c6SManuel Lauss #define SD_CONFIG2_DP (0x00000400) 137384740dcSRalf Baechle 138384740dcSRalf Baechle 139384740dcSRalf Baechle /* 140384740dcSRalf Baechle * SD_BLKSIZE bit definitions. 141384740dcSRalf Baechle */ 142384740dcSRalf Baechle #define SD_BLKSIZE_BS (0x000007ff) 143384740dcSRalf Baechle #define SD_BLKSIZE_BS_SHIFT (0) 144384740dcSRalf Baechle #define SD_BLKSIZE_BC (0x01ff0000) 145384740dcSRalf Baechle #define SD_BLKSIZE_BC_SHIFT (16) 146384740dcSRalf Baechle 147384740dcSRalf Baechle 148384740dcSRalf Baechle /* 149384740dcSRalf Baechle * SD_STATUS bit definitions. 150384740dcSRalf Baechle */ 151384740dcSRalf Baechle #define SD_STATUS_DCRCW (0x00000007) 152384740dcSRalf Baechle #define SD_STATUS_xx1 (0x00000008) 153384740dcSRalf Baechle #define SD_STATUS_CB (0x00000010) 154384740dcSRalf Baechle #define SD_STATUS_DB (0x00000020) 155384740dcSRalf Baechle #define SD_STATUS_CF (0x00000040) 156384740dcSRalf Baechle #define SD_STATUS_D3 (0x00000080) 157384740dcSRalf Baechle #define SD_STATUS_xx2 (0x00000300) 158384740dcSRalf Baechle #define SD_STATUS_NE (0x00000400) 159384740dcSRalf Baechle #define SD_STATUS_TU (0x00000800) 160384740dcSRalf Baechle #define SD_STATUS_TO (0x00001000) 161384740dcSRalf Baechle #define SD_STATUS_RU (0x00002000) 162384740dcSRalf Baechle #define SD_STATUS_RO (0x00004000) 163384740dcSRalf Baechle #define SD_STATUS_I (0x00008000) 164384740dcSRalf Baechle #define SD_STATUS_CR (0x00010000) 165384740dcSRalf Baechle #define SD_STATUS_RAT (0x00020000) 166384740dcSRalf Baechle #define SD_STATUS_DD (0x00040000) 167384740dcSRalf Baechle #define SD_STATUS_DT (0x00080000) 168384740dcSRalf Baechle #define SD_STATUS_SC (0x00100000) 169384740dcSRalf Baechle #define SD_STATUS_RC (0x00200000) 170384740dcSRalf Baechle #define SD_STATUS_WC (0x00400000) 171384740dcSRalf Baechle #define SD_STATUS_xx3 (0x00800000) 172384740dcSRalf Baechle #define SD_STATUS_TH (0x01000000) 173384740dcSRalf Baechle #define SD_STATUS_TE (0x02000000) 174384740dcSRalf Baechle #define SD_STATUS_TA (0x04000000) 175384740dcSRalf Baechle #define SD_STATUS_RH (0x08000000) 176384740dcSRalf Baechle #define SD_STATUS_RA (0x10000000) 177384740dcSRalf Baechle #define SD_STATUS_RF (0x20000000) 178384740dcSRalf Baechle #define SD_STATUS_CD (0x40000000) 179384740dcSRalf Baechle #define SD_STATUS_SI (0x80000000) 180384740dcSRalf Baechle 181384740dcSRalf Baechle 182384740dcSRalf Baechle /* 183384740dcSRalf Baechle * SD_CMD bit definitions. 184384740dcSRalf Baechle */ 185384740dcSRalf Baechle #define SD_CMD_GO (0x00000001) 186384740dcSRalf Baechle #define SD_CMD_RY (0x00000002) 187384740dcSRalf Baechle #define SD_CMD_xx1 (0x0000000c) 188384740dcSRalf Baechle #define SD_CMD_CT_MASK (0x000000f0) 189384740dcSRalf Baechle #define SD_CMD_CT_0 (0x00000000) 190384740dcSRalf Baechle #define SD_CMD_CT_1 (0x00000010) 191384740dcSRalf Baechle #define SD_CMD_CT_2 (0x00000020) 192384740dcSRalf Baechle #define SD_CMD_CT_3 (0x00000030) 193384740dcSRalf Baechle #define SD_CMD_CT_4 (0x00000040) 194384740dcSRalf Baechle #define SD_CMD_CT_5 (0x00000050) 195384740dcSRalf Baechle #define SD_CMD_CT_6 (0x00000060) 196384740dcSRalf Baechle #define SD_CMD_CT_7 (0x00000070) 197384740dcSRalf Baechle #define SD_CMD_CI (0x0000ff00) 198384740dcSRalf Baechle #define SD_CMD_CI_SHIFT (8) 199384740dcSRalf Baechle #define SD_CMD_RT_MASK (0x00ff0000) 200384740dcSRalf Baechle #define SD_CMD_RT_0 (0x00000000) 201384740dcSRalf Baechle #define SD_CMD_RT_1 (0x00010000) 202384740dcSRalf Baechle #define SD_CMD_RT_2 (0x00020000) 203384740dcSRalf Baechle #define SD_CMD_RT_3 (0x00030000) 204384740dcSRalf Baechle #define SD_CMD_RT_4 (0x00040000) 205384740dcSRalf Baechle #define SD_CMD_RT_5 (0x00050000) 206384740dcSRalf Baechle #define SD_CMD_RT_6 (0x00060000) 207384740dcSRalf Baechle #define SD_CMD_RT_1B (0x00810000) 208384740dcSRalf Baechle 209384740dcSRalf Baechle 210384740dcSRalf Baechle #endif /* __ASM_AU1100_MMC_H */ 211