OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / prebuilt / ndk / android-ndk-r4 / platforms / android-8 / arch-arm / usr / include / linux / mmc / mmc.h
1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ****************************************************************************
11  ****************************************************************************/
12 #ifndef MMC_H
13 #define MMC_H
14
15 #include <linux/list.h>
16 #include <linux/interrupt.h>
17 #include <linux/device.h>
18
19 struct request;
20 struct mmc_data;
21 struct mmc_request;
22
23 struct mmc_command {
24  u32 opcode;
25  u32 arg;
26  u32 resp[4];
27  unsigned int flags;
28 #define MMC_RSP_PRESENT (1 << 0)
29 #define MMC_RSP_136 (1 << 1)  
30 #define MMC_RSP_CRC (1 << 2)  
31 #define MMC_RSP_BUSY (1 << 3)  
32 #define MMC_RSP_OPCODE (1 << 4)  
33 #define MMC_CMD_MASK (3 << 5)  
34 #define MMC_CMD_AC (0 << 5)
35 #define MMC_CMD_ADTC (1 << 5)
36 #define MMC_CMD_BC (2 << 5)
37 #define MMC_CMD_BCR (3 << 5)
38
39 #define MMC_RSP_NONE (0)
40 #define MMC_RSP_R1 (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE)
41 #define MMC_RSP_R1B (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE|MMC_RSP_BUSY)
42 #define MMC_RSP_R2 (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC)
43 #define MMC_RSP_R3 (MMC_RSP_PRESENT)
44 #define MMC_RSP_R6 (MMC_RSP_PRESENT|MMC_RSP_CRC)
45
46 #define mmc_resp_type(cmd) ((cmd)->flags & (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC|MMC_RSP_BUSY|MMC_RSP_OPCODE))
47
48 #define mmc_cmd_type(cmd) ((cmd)->flags & MMC_CMD_MASK)
49
50  unsigned int retries;
51  unsigned int error;
52
53 #define MMC_ERR_NONE 0
54 #define MMC_ERR_TIMEOUT 1
55 #define MMC_ERR_BADCRC 2
56 #define MMC_ERR_FIFO 3
57 #define MMC_ERR_FAILED 4
58 #define MMC_ERR_INVALID 5
59
60  struct mmc_data *data;
61  struct mmc_request *mrq;
62 };
63
64 struct mmc_data {
65  unsigned int timeout_ns;
66  unsigned int timeout_clks;
67  unsigned int blksz_bits;
68  unsigned int blksz;
69  unsigned int blocks;
70  unsigned int error;
71  unsigned int flags;
72
73 #define MMC_DATA_WRITE (1 << 8)
74 #define MMC_DATA_READ (1 << 9)
75 #define MMC_DATA_STREAM (1 << 10)
76 #define MMC_DATA_MULTI (1 << 11)
77
78  unsigned int bytes_xfered;
79
80  struct mmc_command *stop;
81  struct mmc_request *mrq;
82
83  unsigned int sg_len;
84  struct scatterlist *sg;
85 };
86
87 struct mmc_request {
88  struct mmc_command *cmd;
89  struct mmc_data *data;
90  struct mmc_command *stop;
91
92  void *done_data;
93  void (*done)(struct mmc_request *);
94 };
95
96 struct mmc_host;
97 struct mmc_card;
98
99 #endif