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