diff options
Diffstat (limited to 'include/linux/mmc/host.h')
-rw-r--r-- | include/linux/mmc/host.h | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index 9a0893f3249e..c1f021eddffa 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h | |||
@@ -46,16 +46,28 @@ struct mmc_ios { | |||
46 | #define MMC_BUSMODE_OPENDRAIN 1 | 46 | #define MMC_BUSMODE_OPENDRAIN 1 |
47 | #define MMC_BUSMODE_PUSHPULL 2 | 47 | #define MMC_BUSMODE_PUSHPULL 2 |
48 | 48 | ||
49 | unsigned char chip_select; /* SPI chip select */ | ||
50 | |||
51 | #define MMC_CS_DONTCARE 0 | ||
52 | #define MMC_CS_HIGH 1 | ||
53 | #define MMC_CS_LOW 2 | ||
54 | |||
49 | unsigned char power_mode; /* power supply mode */ | 55 | unsigned char power_mode; /* power supply mode */ |
50 | 56 | ||
51 | #define MMC_POWER_OFF 0 | 57 | #define MMC_POWER_OFF 0 |
52 | #define MMC_POWER_UP 1 | 58 | #define MMC_POWER_UP 1 |
53 | #define MMC_POWER_ON 2 | 59 | #define MMC_POWER_ON 2 |
60 | |||
61 | unsigned char bus_width; /* data bus width */ | ||
62 | |||
63 | #define MMC_BUS_WIDTH_1 0 | ||
64 | #define MMC_BUS_WIDTH_4 2 | ||
54 | }; | 65 | }; |
55 | 66 | ||
56 | struct mmc_host_ops { | 67 | struct mmc_host_ops { |
57 | void (*request)(struct mmc_host *host, struct mmc_request *req); | 68 | void (*request)(struct mmc_host *host, struct mmc_request *req); |
58 | void (*set_ios)(struct mmc_host *host, struct mmc_ios *ios); | 69 | void (*set_ios)(struct mmc_host *host, struct mmc_ios *ios); |
70 | int (*get_ro)(struct mmc_host *host); | ||
59 | }; | 71 | }; |
60 | 72 | ||
61 | struct mmc_card; | 73 | struct mmc_card; |
@@ -70,6 +82,10 @@ struct mmc_host { | |||
70 | unsigned int f_max; | 82 | unsigned int f_max; |
71 | u32 ocr_avail; | 83 | u32 ocr_avail; |
72 | 84 | ||
85 | unsigned long caps; /* Host capabilities */ | ||
86 | |||
87 | #define MMC_CAP_4_BIT_DATA (1 << 0) /* Can the host do 4 bit transfers */ | ||
88 | |||
73 | /* host specific block data */ | 89 | /* host specific block data */ |
74 | unsigned int max_seg_size; /* see blk_queue_max_segment_size */ | 90 | unsigned int max_seg_size; /* see blk_queue_max_segment_size */ |
75 | unsigned short max_hw_segs; /* see blk_queue_max_hw_segments */ | 91 | unsigned short max_hw_segs; /* see blk_queue_max_hw_segments */ |
@@ -81,6 +97,10 @@ struct mmc_host { | |||
81 | struct mmc_ios ios; /* current io bus settings */ | 97 | struct mmc_ios ios; /* current io bus settings */ |
82 | u32 ocr; /* the current OCR setting */ | 98 | u32 ocr; /* the current OCR setting */ |
83 | 99 | ||
100 | unsigned int mode; /* current card mode of host */ | ||
101 | #define MMC_MODE_MMC 0 | ||
102 | #define MMC_MODE_SD 1 | ||
103 | |||
84 | struct list_head cards; /* devices attached to this host */ | 104 | struct list_head cards; /* devices attached to this host */ |
85 | 105 | ||
86 | wait_queue_head_t wq; | 106 | wait_queue_head_t wq; |
@@ -89,6 +109,8 @@ struct mmc_host { | |||
89 | struct mmc_card *card_selected; /* the selected MMC card */ | 109 | struct mmc_card *card_selected; /* the selected MMC card */ |
90 | 110 | ||
91 | struct work_struct detect; | 111 | struct work_struct detect; |
112 | |||
113 | unsigned long private[0] ____cacheline_aligned; | ||
92 | }; | 114 | }; |
93 | 115 | ||
94 | extern struct mmc_host *mmc_alloc_host(int extra, struct device *); | 116 | extern struct mmc_host *mmc_alloc_host(int extra, struct device *); |
@@ -96,14 +118,18 @@ extern int mmc_add_host(struct mmc_host *); | |||
96 | extern void mmc_remove_host(struct mmc_host *); | 118 | extern void mmc_remove_host(struct mmc_host *); |
97 | extern void mmc_free_host(struct mmc_host *); | 119 | extern void mmc_free_host(struct mmc_host *); |
98 | 120 | ||
99 | #define mmc_priv(x) ((void *)((x) + 1)) | 121 | static inline void *mmc_priv(struct mmc_host *host) |
122 | { | ||
123 | return (void *)host->private; | ||
124 | } | ||
125 | |||
100 | #define mmc_dev(x) ((x)->dev) | 126 | #define mmc_dev(x) ((x)->dev) |
101 | #define mmc_hostname(x) ((x)->class_dev.class_id) | 127 | #define mmc_hostname(x) ((x)->class_dev.class_id) |
102 | 128 | ||
103 | extern int mmc_suspend_host(struct mmc_host *, pm_message_t); | 129 | extern int mmc_suspend_host(struct mmc_host *, pm_message_t); |
104 | extern int mmc_resume_host(struct mmc_host *); | 130 | extern int mmc_resume_host(struct mmc_host *); |
105 | 131 | ||
106 | extern void mmc_detect_change(struct mmc_host *); | 132 | extern void mmc_detect_change(struct mmc_host *, unsigned long delay); |
107 | extern void mmc_request_done(struct mmc_host *, struct mmc_request *); | 133 | extern void mmc_request_done(struct mmc_host *, struct mmc_request *); |
108 | 134 | ||
109 | #endif | 135 | #endif |