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 LINUX_MMC_HOST_H
13#define LINUX_MMC_HOST_H
14
15#include <linux/mmc/mmc.h>
16
17struct mmc_ios {
18 unsigned int clock;
19 unsigned short vdd;
20
21#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
45
46 unsigned char bus_mode;
47
48#define MMC_BUSMODE_OPENDRAIN 1
49#define MMC_BUSMODE_PUSHPULL 2
50
51 unsigned char chip_select;
52
53#define MMC_CS_DONTCARE 0
54#define MMC_CS_HIGH 1
55#define MMC_CS_LOW 2
56
57 unsigned char power_mode;
58
59#define MMC_POWER_OFF 0
60#define MMC_POWER_UP 1
61#define MMC_POWER_ON 2
62
63 unsigned char bus_width;
64
65#define MMC_BUS_WIDTH_1 0
66#define MMC_BUS_WIDTH_4 2
67};
68
69struct 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};
74
75struct mmc_card;
76struct device;
77
78struct 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;
86
87 unsigned long caps;
88
89#define MMC_CAP_4_BIT_DATA (1 << 0)
90
91 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;
96
97 struct mmc_ios ios;
98 u32 ocr;
99
100 unsigned int mode;
101#define MMC_MODE_MMC 0
102#define MMC_MODE_SD 1
103
104 struct list_head cards;
105
106 wait_queue_head_t wq;
107 spinlock_t lock;
108 struct mmc_card *card_busy;
109 struct mmc_card *card_selected;
110
111 struct work_struct detect;
112
113 unsigned long private[0] ____cacheline_aligned;
114};
115
116#define mmc_dev(x) ((x)->dev)
117#define mmc_hostname(x) ((x)->class_dev.class_id)
118
119#endif
120
121