mmc: implement SDIO IO_RW_DIRECT operation
[powerpc.git] / include / linux / mmc / sdio.h
1 /*
2  *  include/linux/mmc/sdio.h
3  *
4  *  Copyright 2006-2007 Pierre Ossman
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or (at
9  * your option) any later version.
10  */
11
12 #ifndef MMC_SDIO_H
13 #define MMC_SDIO_H
14
15 /* SDIO commands                         type  argument     response */
16 #define SD_IO_SEND_OP_COND          5 /* bcr  [23:0] OCR         R4  */
17 #define SD_IO_RW_DIRECT            52 /* ac   [31:0] See below   R5  */
18
19 /*
20  * SD_IO_RW_DIRECT argument format:
21  *
22  *      [31] R/W flag
23  *      [30:28] Function number
24  *      [27] RAW flag
25  *      [25:9] Register address
26  *      [7:0] Data
27  */
28
29 /*
30   SDIO status in R5
31   Type
32         e : error bit
33         s : status bit
34         r : detected and set for the actual command response
35         x : detected and set during command execution. the host must poll
36             the card by sending status command in order to read these bits.
37   Clear condition
38         a : according to the card state
39         b : always related to the previous command. Reception of
40             a valid command will clear it (with a delay of one command)
41         c : clear by read
42  */
43
44 #define R5_COM_CRC_ERROR        (1 << 15)       /* er, b */
45 #define R5_ILLEGAL_COMMAND      (1 << 14)       /* er, b */
46 #define R5_ERROR                (1 << 11)       /* erx, c */
47 #define R5_FUNCTION_NUMBER      (1 << 9)        /* er, c */
48 #define R5_OUT_OF_RANGE         (1 << 8)        /* er, c */
49 #define R5_STATUS(x)            (x & 0xCB00)
50 #define R5_IO_CURRENT_STATE(x)  ((x & 0x3000) >> 12) /* s, b */
51
52 #endif
53