blob: 089714cbf3fe779b6adb7931450958f2b1033d94 [file] [log] [blame]
The Android Open Source Project1dc9e472009-03-03 19:28:35 -08001/****************************************************************************
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
Ben Cheng4b29af02012-03-07 16:14:53 -080014
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080015#include <linux/list.h>
16#include <linux/interrupt.h>
17#include <linux/device.h>
Ben Cheng4b29af02012-03-07 16:14:53 -080018
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080019struct request;
20struct mmc_data;
21struct mmc_request;
Ben Cheng4b29af02012-03-07 16:14:53 -080022
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080023struct 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)
Ben Cheng4b29af02012-03-07 16:14:53 -080038
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080039#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)
Ben Cheng4b29af02012-03-07 16:14:53 -080045
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080046#define mmc_resp_type(cmd) ((cmd)->flags & (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC|MMC_RSP_BUSY|MMC_RSP_OPCODE))
Ben Cheng4b29af02012-03-07 16:14:53 -080047
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080048#define mmc_cmd_type(cmd) ((cmd)->flags & MMC_CMD_MASK)
Ben Cheng4b29af02012-03-07 16:14:53 -080049
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080050 unsigned int retries;
51 unsigned int error;
Ben Cheng4b29af02012-03-07 16:14:53 -080052
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080053#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
Ben Cheng4b29af02012-03-07 16:14:53 -080059
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080060 struct mmc_data *data;
61 struct mmc_request *mrq;
62};
Ben Cheng4b29af02012-03-07 16:14:53 -080063
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080064struct 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;
Ben Cheng4b29af02012-03-07 16:14:53 -080072
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080073#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)
Ben Cheng4b29af02012-03-07 16:14:53 -080077
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080078 unsigned int bytes_xfered;
Ben Cheng4b29af02012-03-07 16:14:53 -080079
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080080 struct mmc_command *stop;
81 struct mmc_request *mrq;
Ben Cheng4b29af02012-03-07 16:14:53 -080082
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080083 unsigned int sg_len;
84 struct scatterlist *sg;
85};
Ben Cheng4b29af02012-03-07 16:14:53 -080086
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080087struct mmc_request {
88 struct mmc_command *cmd;
89 struct mmc_data *data;
90 struct mmc_command *stop;
Ben Cheng4b29af02012-03-07 16:14:53 -080091
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080092 void *done_data;
93 void (*done)(struct mmc_request *);
94};
Ben Cheng4b29af02012-03-07 16:14:53 -080095
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080096struct mmc_host;
97struct mmc_card;
Ben Cheng4b29af02012-03-07 16:14:53 -080098
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080099#endif