• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
17 struct 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 
69 struct 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 
75 struct mmc_card;
76 struct device;
77 
78 struct 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