sdio.h revision 492884be0b302c6c6ea51b360c1f7b0996d96a8b
14d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* 24d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * SDIO spec header file 34d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * Protocol and standard (common) device definitions 44d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * 54d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * Copyright (C) 1999-2009, Broadcom Corporation 64d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * 74d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * Unless you and Broadcom execute a separate written software license 84d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * agreement governing use of this software, this software is licensed to you 94d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * under the terms of the GNU General Public License version 2 (the "GPL"), 104d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * available at http://www.broadcom.com/licenses/GPLv2.php, with the 114d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * following added to such license: 124d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * 134d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * As a special exception, the copyright holders of this software give you 144d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * permission to link this software with independent modules, and to copy and 154d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * distribute the resulting executable under terms of your choice, provided that 164d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * you also meet, for each linked independent module, the terms and conditions of 174d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * the license of that module. An independent module is a module which is not 184d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * derived from this software. The special exception does not apply to any 194d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * modifications of the software. 204d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * 214d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * Notwithstanding the above, under no circumstances may you combine this 224d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * software in any way with any other Broadcom software provided under a license 234d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * other than the GPL, without Broadcom's express prior written consent. 244d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * 25492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt * $Id: sdio.h,v 13.24.4.1.4.1.16.1 2009/08/12 01:08:02 Exp $ 264d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 274d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 284d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#ifndef _SDIO_H 294d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define _SDIO_H 304d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 314d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 324d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* CCCR structure for function 0 */ 334d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidttypedef volatile struct { 344d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 cccr_sdio_rev; /* RO, cccr and sdio revision */ 354d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 sd_rev; /* RO, sd spec revision */ 364d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 io_en; /* I/O enable */ 374d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 io_rdy; /* I/O ready reg */ 384d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 intr_ctl; /* Master and per function interrupt enable control */ 394d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 intr_status; /* RO, interrupt pending status */ 404d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 io_abort; /* read/write abort or reset all functions */ 414d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 bus_inter; /* bus interface control */ 424d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 capability; /* RO, card capability */ 434d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 444d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 cis_base_low; /* 0x9 RO, common CIS base address, LSB */ 454d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 cis_base_mid; 464d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 cis_base_high; /* 0xB RO, common CIS base address, MSB */ 474d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 484d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt /* suspend/resume registers */ 494d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 bus_suspend; /* 0xC */ 504d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 func_select; /* 0xD */ 514d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 exec_flag; /* 0xE */ 524d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 ready_flag; /* 0xF */ 534d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 544d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 fn0_blk_size[2]; /* 0x10(LSB), 0x11(MSB) */ 554d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 564d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 power_control; /* 0x12 (SDIO version 1.10) */ 574d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 584d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 speed_control; /* 0x13 */ 594d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt} sdio_regs_t; 604d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 614d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* SDIO Device CCCR offsets */ 624d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_REV 0x00 634d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_SDREV 0x01 644d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_IOEN 0x02 654d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_IORDY 0x03 664d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_INTEN 0x04 674d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_INTPEND 0x05 684d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_IOABORT 0x06 694d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_BICTRL 0x07 704d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_CAPABLITIES 0x08 714d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_CISPTR_0 0x09 724d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_CISPTR_1 0x0A 734d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_CISPTR_2 0x0B 744d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_BUSSUSP 0x0C 754d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_FUNCSEL 0x0D 764d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_EXECFLAGS 0x0E 774d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_RDYFLAGS 0x0F 784d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_BLKSIZE_0 0x10 794d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_BLKSIZE_1 0x11 804d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_POWER_CONTROL 0x12 814d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_CCCR_SPEED_CONTROL 0x13 824d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 83492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt/* Broadcom extensions (corerev >= 1) */ 84492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt#define SDIOD_CCCR_BRCM_SEPINT 0xf2 85492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt 864d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* cccr_sdio_rev */ 874d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_REV_SDIOID_MASK 0xf0 /* SDIO spec revision number */ 884d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_REV_CCCRID_MASK 0x0f /* CCCR format version number */ 894d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 904d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* sd_rev */ 914d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_REV_PHY_MASK 0x0f /* SD format version number */ 924d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 934d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* io_en */ 944d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_FUNC_ENABLE_1 0x02 /* function 1 I/O enable */ 954d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_FUNC_ENABLE_2 0x04 /* function 2 I/O enable */ 964d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 974d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* io_rdys */ 984d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_FUNC_READY_1 0x02 /* function 1 I/O ready */ 994d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_FUNC_READY_2 0x04 /* function 2 I/O ready */ 1004d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1014d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* intr_ctl */ 1024d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define INTR_CTL_MASTER_EN 0x1 /* interrupt enable master */ 1034d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define INTR_CTL_FUNC1_EN 0x2 /* interrupt enable for function 1 */ 1044d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define INTR_CTL_FUNC2_EN 0x4 /* interrupt enable for function 2 */ 1054d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1064d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* intr_status */ 1074d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define INTR_STATUS_FUNC1 0x2 /* interrupt pending for function 1 */ 1084d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define INTR_STATUS_FUNC2 0x4 /* interrupt pending for function 2 */ 1094d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1104d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* io_abort */ 1114d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define IO_ABORT_RESET_ALL 0x08 /* I/O card reset */ 1124d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define IO_ABORT_FUNC_MASK 0x07 /* abort selction: function x */ 1134d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1144d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* bus_inter */ 1154d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define BUS_CARD_DETECT_DIS 0x80 /* Card Detect disable */ 1164d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define BUS_SPI_CONT_INTR_CAP 0x40 /* support continuous SPI interrupt */ 1174d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define BUS_SPI_CONT_INTR_EN 0x20 /* continuous SPI interrupt enable */ 1184d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define BUS_SD_DATA_WIDTH_MASK 0x03 /* bus width mask */ 1194d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define BUS_SD_DATA_WIDTH_4BIT 0x02 /* bus width 4-bit mode */ 1204d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define BUS_SD_DATA_WIDTH_1BIT 0x00 /* bus width 1-bit mode */ 1214d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1224d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* capability */ 1234d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_CAP_4BLS 0x80 /* 4-bit support for low speed card */ 1244d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_CAP_LSC 0x40 /* low speed card */ 1254d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_CAP_E4MI 0x20 /* enable interrupt between block of data in 4-bit mode */ 1264d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_CAP_S4MI 0x10 /* support interrupt between block of data in 4-bit mode */ 1274d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_CAP_SBS 0x08 /* support suspend/resume */ 1284d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_CAP_SRW 0x04 /* support read wait */ 1294d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_CAP_SMB 0x02 /* support multi-block transfer */ 1304d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_CAP_SDC 0x01 /* Support Direct commands during multi-byte transfer */ 1314d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1324d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* power_control */ 1334d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_POWER_SMPC 0x01 /* supports master power control (RO) */ 1344d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_POWER_EMPC 0x02 /* enable master power control (allow > 200mA) (RW) */ 1354d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1364d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* speed_control (control device entry into high-speed clocking mode) */ 1374d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_SPEED_SHS 0x01 /* supports high-speed [clocking] mode (RO) */ 1384d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_SPEED_EHS 0x02 /* enable high-speed [clocking] mode (RW) */ 1394d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 140492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt/* brcm sepint */ 141492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt#define SDIO_SEPINT_MASK 0x01 /* route sdpcmdev intr onto separate pad (chip-specific) */ 142492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt#define SDIO_SEPINT_OE 0x02 /* 1 asserts output enable for above pad */ 143492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt#define SDIO_SEPINT_ACT_HI 0x04 /* use active high interrupt level instead of active low */ 144492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt 1454d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* FBR structure for function 1-7, FBR addresses and register offsets */ 1464d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidttypedef volatile struct { 1474d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 devctr; /* device interface, CSA control */ 1484d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 ext_dev; /* extended standard I/O device type code */ 1494d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 pwr_sel; /* power selection support */ 1504d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 PAD[6]; /* reserved */ 1514d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1524d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 cis_low; /* CIS LSB */ 1534d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 cis_mid; 1544d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 cis_high; /* CIS MSB */ 1554d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 csa_low; /* code storage area, LSB */ 1564d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 csa_mid; 1574d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 csa_high; /* code storage area, MSB */ 1584d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 csa_dat_win; /* data access window to function */ 1594d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1604d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt uint8 fnx_blk_size[2]; /* block size, little endian */ 1614d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt} sdio_fbr_t; 1624d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1634d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* Maximum number of I/O funcs */ 1644d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_MAX_IOFUNCS 7 1654d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1664d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* SDIO Device FBR Start Address */ 1674d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_STARTADDR 0x100 1684d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1694d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* SDIO Device FBR Size */ 1704d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_SIZE 0x100 1714d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1724d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* Macro to calculate FBR register base */ 173492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt#define SDIOD_FBR_BASE(n) ((n) * 0x100) 1744d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1754d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* Function register offsets */ 1764d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_DEVCTR 0x00 /* basic info for function */ 1774d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_EXT_DEV 0x01 /* extended I/O device code */ 1784d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_PWR_SEL 0x02 /* power selection bits */ 1794d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1804d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* SDIO Function CIS ptr offset */ 1814d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_CISPTR_0 0x09 1824d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_CISPTR_1 0x0A 1834d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_CISPTR_2 0x0B 1844d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1854d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* Code Storage Area pointer */ 1864d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_CSA_ADDR_0 0x0C 1874d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_CSA_ADDR_1 0x0D 1884d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_CSA_ADDR_2 0x0E 1894d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_CSA_DATA 0x0F 1904d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1914d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* SDIO Function I/O Block Size */ 1924d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_BLKSIZE_0 0x10 1934d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_BLKSIZE_1 0x11 1944d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 1954d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* devctr */ 1964d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_DEVCTR_DIC 0x0f /* device interface code */ 1974d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_DECVTR_CSA 0x40 /* CSA support flag */ 1984d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_FBR_DEVCTR_CSA_EN 0x80 /* CSA enabled */ 1994d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* interface codes */ 2004d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_DIC_NONE 0 /* SDIO standard interface is not supported */ 2014d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_DIC_UART 1 2024d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_DIC_BLUETOOTH_A 2 2034d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_DIC_BLUETOOTH_B 3 2044d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_DIC_GPS 4 2054d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_DIC_CAMERA 5 2064d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_DIC_PHS 6 2074d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_DIC_WLAN 7 2084d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_DIC_EXT 0xf /* extended device interface, read ext_dev register */ 2094d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 2104d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* pwr_sel */ 2114d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_PWR_SEL_SPS 0x01 /* supports power selection */ 2124d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOD_PWR_SEL_EPS 0x02 /* enable power selection (low-current mode) */ 2134d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 2144d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* misc defines */ 2154d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_FUNC_0 0 2164d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_FUNC_1 1 2174d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_FUNC_2 2 2184d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_FUNC_3 3 2194d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_FUNC_4 4 2204d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_FUNC_5 5 2214d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_FUNC_6 6 2224d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_FUNC_7 7 2234d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 2244d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CARD_TYPE_UNKNOWN 0 /* bad type or unrecognized */ 2254d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CARD_TYPE_IO 1 /* IO only card */ 2264d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CARD_TYPE_MEMORY 2 /* memory only card */ 2274d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CARD_TYPE_COMBO 3 /* IO and memory combo card */ 2284d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 2294d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_MAX_BLOCK_SIZE 2048 /* maximum block size for block mode operation */ 2304d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_MIN_BLOCK_SIZE 1 /* minimum block size for block mode operation */ 2314d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 2324d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* Card registers: status bit position */ 2334d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CARDREG_STATUS_BIT_OUTOFRANGE 31 2344d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CARDREG_STATUS_BIT_COMCRCERROR 23 2354d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CARDREG_STATUS_BIT_ILLEGALCOMMAND 22 2364d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CARDREG_STATUS_BIT_ERROR 19 2374d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CARDREG_STATUS_BIT_IOCURRENTSTATE3 12 2384d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CARDREG_STATUS_BIT_IOCURRENTSTATE2 11 2394d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CARDREG_STATUS_BIT_IOCURRENTSTATE1 10 2404d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CARDREG_STATUS_BIT_IOCURRENTSTATE0 9 2414d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CARDREG_STATUS_BIT_FUN_NUM_ERROR 4 2424d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 2434d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 2444d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 2454d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_GO_IDLE_STATE 0 /* mandatory for SDIO */ 2464d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_SEND_OPCOND 1 2474d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_MMC_SET_RCA 3 2484d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_IO_SEND_OP_COND 5 /* mandatory for SDIO */ 2494d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_SELECT_DESELECT_CARD 7 2504d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_SEND_CSD 9 2514d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_SEND_CID 10 2524d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_STOP_TRANSMISSION 12 2534d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_SEND_STATUS 13 2544d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_GO_INACTIVE_STATE 15 2554d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_SET_BLOCKLEN 16 2564d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_READ_SINGLE_BLOCK 17 2574d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_READ_MULTIPLE_BLOCK 18 2584d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_WRITE_BLOCK 24 2594d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_WRITE_MULTIPLE_BLOCK 25 2604d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_PROGRAM_CSD 27 2614d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_SET_WRITE_PROT 28 2624d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_CLR_WRITE_PROT 29 2634d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_SEND_WRITE_PROT 30 2644d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_ERASE_WR_BLK_START 32 2654d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_ERASE_WR_BLK_END 33 2664d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_ERASE 38 2674d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_LOCK_UNLOCK 42 2684d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_IO_RW_DIRECT 52 /* mandatory for SDIO */ 2694d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_IO_RW_EXTENDED 53 /* mandatory for SDIO */ 2704d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_APP_CMD 55 2714d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_GEN_CMD 56 2724d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_READ_OCR 58 2734d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_CMD_CRC_ON_OFF 59 /* mandatory for SDIO */ 2744d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_ACMD_SD_STATUS 13 2754d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_ACMD_SEND_NUM_WR_BLOCKS 22 2764d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_ACMD_SET_WR_BLOCK_ERASE_CNT 23 2774d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_ACMD_SD_SEND_OP_COND 41 2784d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_ACMD_SET_CLR_CARD_DETECT 42 2794d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_ACMD_SEND_SCR 51 2804d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 2814d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* argument for SD_CMD_IO_RW_DIRECT and SD_CMD_IO_RW_EXTENDED */ 2824d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_IO_OP_READ 0 /* Read_Write: Read */ 2834d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_IO_OP_WRITE 1 /* Read_Write: Write */ 2844d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_IO_RW_NORMAL 0 /* no RAW */ 2854d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_IO_RW_RAW 1 /* RAW */ 2864d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_IO_BYTE_MODE 0 /* Byte Mode */ 2874d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_IO_BLOCK_MODE 1 /* BlockMode */ 2884d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_IO_FIXED_ADDRESS 0 /* fix Address */ 2894d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_IO_INCREMENT_ADDRESS 1 /* IncrementAddress */ 2904d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 2914d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* build SD_CMD_IO_RW_DIRECT Argument */ 2924d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_IO_RW_DIRECT_ARG(rw, raw, func, addr, data) \ 293492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt ((((rw) & 1) << 31) | (((func) & 0x7) << 28) | (((raw) & 1) << 27) | \ 294492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt (((addr) & 0x1FFFF) << 9) | ((data) & 0xFF)) 2954d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 2964d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* build SD_CMD_IO_RW_EXTENDED Argument */ 2974d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIO_IO_RW_EXTENDED_ARG(rw, blk, func, addr, inc_addr, count) \ 298492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt ((((rw) & 1) << 31) | (((func) & 0x7) << 28) | (((blk) & 1) << 27) | \ 299492884be0b302c6c6ea51b360c1f7b0996d96a8bDmitry Shmidt (((inc_addr) & 1) << 26) | (((addr) & 0x1FFFF) << 9) | ((count) & 0x1FF)) 3004d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3014d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* SDIO response parameters */ 3024d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_NO_NONE 0 3034d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_NO_1 1 3044d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_NO_2 2 3054d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_NO_3 3 3064d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_NO_4 4 3074d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_NO_5 5 3084d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_NO_6 6 3094d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3104d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt /* Modified R6 response (to CMD3) */ 3114d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_MR6_COM_CRC_ERROR 0x8000 3124d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_MR6_ILLEGAL_COMMAND 0x4000 3134d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_MR6_ERROR 0x2000 3144d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3154d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt /* Modified R1 in R4 Response (to CMD5) */ 3164d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_MR1_SBIT 0x80 3174d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_MR1_PARAMETER_ERROR 0x40 3184d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_MR1_RFU5 0x20 3194d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_MR1_FUNC_NUM_ERROR 0x10 3204d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_MR1_COM_CRC_ERROR 0x08 3214d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_MR1_ILLEGAL_COMMAND 0x04 3224d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_MR1_RFU1 0x02 3234d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_MR1_IDLE_STATE 0x01 3244d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3254d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt /* R5 response (to CMD52 and CMD53) */ 3264d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_R5_COM_CRC_ERROR 0x80 3274d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_R5_ILLEGAL_COMMAND 0x40 3284d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_R5_IO_CURRENTSTATE1 0x20 3294d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_R5_IO_CURRENTSTATE0 0x10 3304d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_R5_ERROR 0x08 3314d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_R5_RFU 0x04 3324d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_R5_FUNC_NUM_ERROR 0x02 3334d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_R5_OUT_OF_RANGE 0x01 3344d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3354d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SD_RSP_R5_ERRBITS 0xCB 3364d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3374d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3384d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* ------------------------------------------------ 3394d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * SDIO Commands and responses 3404d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * 3414d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * I/O only commands are: 3424d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * CMD0, CMD3, CMD5, CMD7, CMD15, CMD52, CMD53 3434d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * ------------------------------------------------ 3444d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 3454d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3464d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* SDIO Commands */ 3474d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_CMD_0 0 3484d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_CMD_3 3 3494d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_CMD_5 5 3504d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_CMD_7 7 3514d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_CMD_15 15 3524d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_CMD_52 52 3534d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_CMD_53 53 3544d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_CMD_59 59 3554d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3564d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* SDIO Command Responses */ 3574d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_RSP_NONE 0 3584d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_RSP_R1 1 3594d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_RSP_R2 2 3604d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_RSP_R3 3 3614d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_RSP_R4 4 3624d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_RSP_R5 5 3634d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_RSP_R6 6 3644d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3654d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* 3664d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * SDIO Response Error flags 3674d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 3684d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_RSP5_ERROR_FLAGS 0xCB 3694d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3704d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* ------------------------------------------------ 3714d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * SDIO Command structures. I/O only commands are: 3724d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * 3734d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * CMD0, CMD3, CMD5, CMD7, CMD15, CMD52, CMD53 3744d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * ------------------------------------------------ 3754d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 3764d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3774d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD5_OCR_M BITFIELD_MASK(24) 3784d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD5_OCR_S 0 3794d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3804d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD7_RCA_M BITFIELD_MASK(16) 3814d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD7_RCA_S 16 3824d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3834d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD_15_RCA_M BITFIELD_MASK(16) 3844d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD_15_RCA_S 16 3854d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3864d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD52_DATA_M BITFIELD_MASK(8) /* Bits [7:0] - Write Data/Stuff bits of CMD52 3874d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 3884d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD52_DATA_S 0 3894d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD52_REG_ADDR_M BITFIELD_MASK(17) /* Bits [25:9] - register address */ 3904d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD52_REG_ADDR_S 9 3914d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD52_RAW_M BITFIELD_MASK(1) /* Bit 27 - Read after Write flag */ 3924d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD52_RAW_S 27 3934d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD52_FUNCTION_M BITFIELD_MASK(3) /* Bits [30:28] - Function number */ 3944d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD52_FUNCTION_S 28 3954d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD52_RW_FLAG_M BITFIELD_MASK(1) /* Bit 31 - R/W flag */ 3964d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD52_RW_FLAG_S 31 3974d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3984d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 3994d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD53_BYTE_BLK_CNT_M BITFIELD_MASK(9) /* Bits [8:0] - Byte/Block Count of CMD53 */ 4004d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD53_BYTE_BLK_CNT_S 0 4014d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD53_REG_ADDR_M BITFIELD_MASK(17) /* Bits [25:9] - register address */ 4024d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD53_REG_ADDR_S 9 4034d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD53_OP_CODE_M BITFIELD_MASK(1) /* Bit 26 - R/W Operation Code */ 4044d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD53_OP_CODE_S 26 4054d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD53_BLK_MODE_M BITFIELD_MASK(1) /* Bit 27 - Block Mode */ 4064d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD53_BLK_MODE_S 27 4074d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD53_FUNCTION_M BITFIELD_MASK(3) /* Bits [30:28] - Function number */ 4084d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD53_FUNCTION_S 28 4094d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD53_RW_FLAG_M BITFIELD_MASK(1) /* Bit 31 - R/W flag */ 4104d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define CMD53_RW_FLAG_S 31 4114d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 4124d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* ------------------------------------------------------ 4134d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * SDIO Command Response structures for SD1 and SD4 modes 4144d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * ----------------------------------------------------- 4154d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 4164d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP4_IO_OCR_M BITFIELD_MASK(24) /* Bits [23:0] - Card's OCR Bits [23:0] */ 4174d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP4_IO_OCR_S 0 4184d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP4_STUFF_M BITFIELD_MASK(3) /* Bits [26:24] - Stuff bits */ 4194d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP4_STUFF_S 24 4204d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP4_MEM_PRESENT_M BITFIELD_MASK(1) /* Bit 27 - Memory present */ 4214d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP4_MEM_PRESENT_S 27 4224d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP4_NUM_FUNCS_M BITFIELD_MASK(3) /* Bits [30:28] - Number of I/O funcs */ 4234d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP4_NUM_FUNCS_S 28 4244d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP4_CARD_READY_M BITFIELD_MASK(1) /* Bit 31 - SDIO card ready */ 4254d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP4_CARD_READY_S 31 4264d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 4274d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6_STATUS_M BITFIELD_MASK(16) /* Bits [15:0] - Card status bits [19,22,23,12:0] 4284d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 4294d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6_STATUS_S 0 4304d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6_IO_RCA_M BITFIELD_MASK(16) /* Bits [31:16] - RCA bits[31-16] */ 4314d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6_IO_RCA_S 16 4324d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 4334d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_AKE_SEQ_ERROR_M BITFIELD_MASK(1) /* Bit 3 - Authentication seq error */ 4344d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_AKE_SEQ_ERROR_S 3 4354d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_APP_CMD_M BITFIELD_MASK(1) /* Bit 5 - Card expects ACMD */ 4364d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_APP_CMD_S 5 4374d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_READY_FOR_DATA_M BITFIELD_MASK(1) /* Bit 8 - Ready for data (buff empty) */ 4384d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_READY_FOR_DATA_S 8 4394d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_CURR_STATE_M BITFIELD_MASK(4) /* Bits [12:9] - State of card 4404d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * when Cmd was received 4414d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 4424d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_CURR_STATE_S 9 4434d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_EARSE_RESET_M BITFIELD_MASK(1) /* Bit 13 - Erase seq cleared */ 4444d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_EARSE_RESET_S 13 4454d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_CARD_ECC_DISABLE_M BITFIELD_MASK(1) /* Bit 14 - Card ECC disabled */ 4464d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_CARD_ECC_DISABLE_S 14 4474d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_WP_ERASE_SKIP_M BITFIELD_MASK(1) /* Bit 15 - Partial blocks erased due to W/P */ 4484d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_WP_ERASE_SKIP_S 15 4494d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_CID_CSD_OVERW_M BITFIELD_MASK(1) /* Bit 16 - Illegal write to CID or R/O bits 4504d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * of CSD 4514d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 4524d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_CID_CSD_OVERW_S 16 4534d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_ERROR_M BITFIELD_MASK(1) /* Bit 19 - General/Unknown error */ 4544d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_ERROR_S 19 4554d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_CC_ERROR_M BITFIELD_MASK(1) /* Bit 20 - Internal Card Control error */ 4564d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_CC_ERROR_S 20 4574d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_CARD_ECC_FAILED_M BITFIELD_MASK(1) /* Bit 21 - Card internal ECC failed 4584d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * to correct data 4594d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 4604d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_CARD_ECC_FAILED_S 21 4614d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_ILLEGAL_CMD_M BITFIELD_MASK(1) /* Bit 22 - Cmd not legal for the card state */ 4624d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_ILLEGAL_CMD_S 22 4634d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_COM_CRC_ERROR_M BITFIELD_MASK(1) /* Bit 23 - CRC check of previous command failed 4644d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 4654d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_COM_CRC_ERROR_S 23 4664d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_LOCK_UNLOCK_FAIL_M BITFIELD_MASK(1) /* Bit 24 - Card lock-unlock Cmd Seq error */ 4674d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_LOCK_UNLOCK_FAIL_S 24 4684d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_CARD_LOCKED_M BITFIELD_MASK(1) /* Bit 25 - Card locked by the host */ 4694d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_CARD_LOCKED_S 25 4704d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_WP_VIOLATION_M BITFIELD_MASK(1) /* Bit 26 - Attempt to program 4714d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * write-protected blocks 4724d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 4734d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_WP_VIOLATION_S 26 4744d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_ERASE_PARAM_M BITFIELD_MASK(1) /* Bit 27 - Invalid erase blocks */ 4754d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_ERASE_PARAM_S 27 4764d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_ERASE_SEQ_ERR_M BITFIELD_MASK(1) /* Bit 28 - Erase Cmd seq error */ 4774d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_ERASE_SEQ_ERR_S 28 4784d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_BLK_LEN_ERR_M BITFIELD_MASK(1) /* Bit 29 - Block length error */ 4794d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_BLK_LEN_ERR_S 29 4804d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_ADDR_ERR_M BITFIELD_MASK(1) /* Bit 30 - Misaligned address */ 4814d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_ADDR_ERR_S 30 4824d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_OUT_OF_RANGE_M BITFIELD_MASK(1) /* Bit 31 - Cmd arg was out of range */ 4834d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP1_OUT_OF_RANGE_S 31 4844d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 4854d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 4864d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP5_DATA_M BITFIELD_MASK(8) /* Bits [0:7] - data */ 4874d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP5_DATA_S 0 4884d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP5_FLAGS_M BITFIELD_MASK(8) /* Bit [15:8] - Rsp flags */ 4894d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP5_FLAGS_S 8 4904d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP5_STUFF_M BITFIELD_MASK(16) /* Bits [31:16] - Stuff bits */ 4914d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP5_STUFF_S 16 4924d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 4934d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* ---------------------------------------------- 4944d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * SDIO Command Response structures for SPI mode 4954d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * ---------------------------------------------- 4964d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 4974d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_IO_OCR_M BITFIELD_MASK(16) /* Bits [15:0] - Card's OCR Bits [23:8] */ 4984d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_IO_OCR_S 0 4994d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_STUFF_M BITFIELD_MASK(3) /* Bits [18:16] - Stuff bits */ 5004d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_STUFF_S 16 5014d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_MEM_PRESENT_M BITFIELD_MASK(1) /* Bit 19 - Memory present */ 5024d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_MEM_PRESENT_S 19 5034d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_NUM_FUNCS_M BITFIELD_MASK(3) /* Bits [22:20] - Number of I/O funcs */ 5044d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_NUM_FUNCS_S 20 5054d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_CARD_READY_M BITFIELD_MASK(1) /* Bit 23 - SDIO card ready */ 5064d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_CARD_READY_S 23 5074d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_IDLE_STATE_M BITFIELD_MASK(1) /* Bit 24 - idle state */ 5084d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_IDLE_STATE_S 24 5094d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_ILLEGAL_CMD_M BITFIELD_MASK(1) /* Bit 26 - Illegal Cmd error */ 5104d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_ILLEGAL_CMD_S 26 5114d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_COM_CRC_ERROR_M BITFIELD_MASK(1) /* Bit 27 - COM CRC error */ 5124d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_COM_CRC_ERROR_S 27 5134d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_FUNC_NUM_ERROR_M BITFIELD_MASK(1) /* Bit 28 - Function number error 5144d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 5154d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_FUNC_NUM_ERROR_S 28 5164d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_PARAM_ERROR_M BITFIELD_MASK(1) /* Bit 30 - Parameter Error Bit */ 5174d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_PARAM_ERROR_S 30 5184d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_START_BIT_M BITFIELD_MASK(1) /* Bit 31 - Start Bit */ 5194d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP4_START_BIT_S 31 5204d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 5214d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_DATA_M BITFIELD_MASK(8) /* Bits [23:16] - R/W Data */ 5224d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_DATA_S 16 5234d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_IDLE_STATE_M BITFIELD_MASK(1) /* Bit 24 - Idle state */ 5244d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_IDLE_STATE_S 24 5254d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_ILLEGAL_CMD_M BITFIELD_MASK(1) /* Bit 26 - Illegal Cmd error */ 5264d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_ILLEGAL_CMD_S 26 5274d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_COM_CRC_ERROR_M BITFIELD_MASK(1) /* Bit 27 - COM CRC error */ 5284d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_COM_CRC_ERROR_S 27 5294d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_FUNC_NUM_ERROR_M BITFIELD_MASK(1) /* Bit 28 - Function number error 5304d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 5314d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_FUNC_NUM_ERROR_S 28 5324d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_PARAM_ERROR_M BITFIELD_MASK(1) /* Bit 30 - Parameter Error Bit */ 5334d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_PARAM_ERROR_S 30 5344d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_START_BIT_M BITFIELD_MASK(1) /* Bit 31 - Start Bit */ 5354d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SPIRSP5_START_BIT_S 31 5364d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 5374d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt/* RSP6 card status format; Pg 68 Physical Layer spec v 1.10 */ 5384d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_AKE_SEQ_ERROR_M BITFIELD_MASK(1) /* Bit 3 - Authentication seq error 5394d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 5404d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_AKE_SEQ_ERROR_S 3 5414d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_APP_CMD_M BITFIELD_MASK(1) /* Bit 5 - Card expects ACMD */ 5424d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_APP_CMD_S 5 5434d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_READY_FOR_DATA_M BITFIELD_MASK(1) /* Bit 8 - Ready for data 5444d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * (buff empty) 5454d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 5464d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_READY_FOR_DATA_S 8 5474d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_CURR_STATE_M BITFIELD_MASK(4) /* Bits [12:9] - Card state at 5484d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * Cmd reception 5494d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 5504d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_CURR_STATE_S 9 5514d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_ERROR_M BITFIELD_MASK(1) /* Bit 13 - General/Unknown error Bit 19 5524d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 5534d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_ERROR_S 13 5544d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_ILLEGAL_CMD_M BITFIELD_MASK(1) /* Bit 14 - Illegal cmd for 5554d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * card state Bit 22 5564d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 5574d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_ILLEGAL_CMD_S 14 5584d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_COM_CRC_ERROR_M BITFIELD_MASK(1) /* Bit 15 - CRC previous command 5594d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt * failed Bit 23 5604d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt */ 5614d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define RSP6STAT_COM_CRC_ERROR_S 15 5624d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 5634d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_XFER_TYPE_READ SD_IO_OP_READ 5644d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#define SDIOH_XFER_TYPE_WRITE SD_IO_OP_WRITE 5654d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt 5664d92e4c7da35860a39214c8fdb794ce0243dfabbDmitry Shmidt#endif /* _SDIO_H */ 567