blob: 94336264e144122c380e3f1a4122e7bd9eb6a888 [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 LINUX_MMC_HOST_H
13#define LINUX_MMC_HOST_H
Ben Cheng4b29af02012-03-07 16:14:53 -080014
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080015#include <linux/mmc/mmc.h>
Ben Cheng4b29af02012-03-07 16:14:53 -080016
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080017struct mmc_ios {
18 unsigned int clock;
19 unsigned short vdd;
Ben Cheng4b29af02012-03-07 16:14:53 -080020
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080021#define MMC_VDD_150 0
22#define MMC_VDD_155 1
23#define MMC_VDD_160 2
24#define MMC_VDD_165 3
25#define MMC_VDD_170 4
26#define MMC_VDD_180 5
27#define MMC_VDD_190 6
28#define MMC_VDD_200 7
29#define MMC_VDD_210 8
30#define MMC_VDD_220 9
31#define MMC_VDD_230 10
32#define MMC_VDD_240 11
33#define MMC_VDD_250 12
34#define MMC_VDD_260 13
35#define MMC_VDD_270 14
36#define MMC_VDD_280 15
37#define MMC_VDD_290 16
38#define MMC_VDD_300 17
39#define MMC_VDD_310 18
40#define MMC_VDD_320 19
41#define MMC_VDD_330 20
42#define MMC_VDD_340 21
43#define MMC_VDD_350 22
44#define MMC_VDD_360 23
Ben Cheng4b29af02012-03-07 16:14:53 -080045
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080046 unsigned char bus_mode;
Ben Cheng4b29af02012-03-07 16:14:53 -080047
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080048#define MMC_BUSMODE_OPENDRAIN 1
49#define MMC_BUSMODE_PUSHPULL 2
Ben Cheng4b29af02012-03-07 16:14:53 -080050
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080051 unsigned char chip_select;
Ben Cheng4b29af02012-03-07 16:14:53 -080052
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080053#define MMC_CS_DONTCARE 0
54#define MMC_CS_HIGH 1
55#define MMC_CS_LOW 2
Ben Cheng4b29af02012-03-07 16:14:53 -080056
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080057 unsigned char power_mode;
Ben Cheng4b29af02012-03-07 16:14:53 -080058
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080059#define MMC_POWER_OFF 0
60#define MMC_POWER_UP 1
61#define MMC_POWER_ON 2
Ben Cheng4b29af02012-03-07 16:14:53 -080062
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080063 unsigned char bus_width;
Ben Cheng4b29af02012-03-07 16:14:53 -080064
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080065#define MMC_BUS_WIDTH_1 0
66#define MMC_BUS_WIDTH_4 2
67};
Ben Cheng4b29af02012-03-07 16:14:53 -080068
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080069struct mmc_host_ops {
70 void (*request)(struct mmc_host *host, struct mmc_request *req);
71 void (*set_ios)(struct mmc_host *host, struct mmc_ios *ios);
72 int (*get_ro)(struct mmc_host *host);
73};
Ben Cheng4b29af02012-03-07 16:14:53 -080074
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080075struct mmc_card;
76struct device;
Ben Cheng4b29af02012-03-07 16:14:53 -080077
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080078struct mmc_host {
79 struct device *dev;
80 struct class_device class_dev;
81 int index;
82 const struct mmc_host_ops *ops;
83 unsigned int f_min;
84 unsigned int f_max;
85 u32 ocr_avail;
Ben Cheng4b29af02012-03-07 16:14:53 -080086
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080087 unsigned long caps;
Ben Cheng4b29af02012-03-07 16:14:53 -080088
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080089#define MMC_CAP_4_BIT_DATA (1 << 0)
Ben Cheng4b29af02012-03-07 16:14:53 -080090
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080091 unsigned int max_seg_size;
92 unsigned short max_hw_segs;
93 unsigned short max_phys_segs;
94 unsigned short max_sectors;
95 unsigned short unused;
Ben Cheng4b29af02012-03-07 16:14:53 -080096
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080097 struct mmc_ios ios;
98 u32 ocr;
Ben Cheng4b29af02012-03-07 16:14:53 -080099
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800100 unsigned int mode;
101#define MMC_MODE_MMC 0
102#define MMC_MODE_SD 1
Ben Cheng4b29af02012-03-07 16:14:53 -0800103
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800104 struct list_head cards;
Ben Cheng4b29af02012-03-07 16:14:53 -0800105
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800106 wait_queue_head_t wq;
107 spinlock_t lock;
108 struct mmc_card *card_busy;
109 struct mmc_card *card_selected;
Ben Cheng4b29af02012-03-07 16:14:53 -0800110
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800111 struct work_struct detect;
Ben Cheng4b29af02012-03-07 16:14:53 -0800112
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800113 unsigned long private[0] ____cacheline_aligned;
114};
Ben Cheng4b29af02012-03-07 16:14:53 -0800115
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800116#define mmc_dev(x) ((x)->dev)
117#define mmc_hostname(x) ((x)->class_dev.class_id)
Ben Cheng4b29af02012-03-07 16:14:53 -0800118
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800119#endif
Ben Cheng4b29af02012-03-07 16:14:53 -0800120