diff options
Diffstat (limited to 'include/linux/mmc/host.h')
-rw-r--r-- | include/linux/mmc/host.h | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index bcb793ec7374..1ee4424462eb 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h | |||
@@ -50,12 +50,30 @@ struct mmc_ios { | |||
50 | #define MMC_TIMING_LEGACY 0 | 50 | #define MMC_TIMING_LEGACY 0 |
51 | #define MMC_TIMING_MMC_HS 1 | 51 | #define MMC_TIMING_MMC_HS 1 |
52 | #define MMC_TIMING_SD_HS 2 | 52 | #define MMC_TIMING_SD_HS 2 |
53 | #define MMC_TIMING_UHS_SDR12 MMC_TIMING_LEGACY | ||
54 | #define MMC_TIMING_UHS_SDR25 MMC_TIMING_SD_HS | ||
55 | #define MMC_TIMING_UHS_SDR50 3 | ||
56 | #define MMC_TIMING_UHS_SDR104 4 | ||
57 | #define MMC_TIMING_UHS_DDR50 5 | ||
53 | 58 | ||
54 | unsigned char ddr; /* dual data rate used */ | 59 | unsigned char ddr; /* dual data rate used */ |
55 | 60 | ||
56 | #define MMC_SDR_MODE 0 | 61 | #define MMC_SDR_MODE 0 |
57 | #define MMC_1_2V_DDR_MODE 1 | 62 | #define MMC_1_2V_DDR_MODE 1 |
58 | #define MMC_1_8V_DDR_MODE 2 | 63 | #define MMC_1_8V_DDR_MODE 2 |
64 | |||
65 | unsigned char signal_voltage; /* signalling voltage (1.8V or 3.3V) */ | ||
66 | |||
67 | #define MMC_SIGNAL_VOLTAGE_330 0 | ||
68 | #define MMC_SIGNAL_VOLTAGE_180 1 | ||
69 | #define MMC_SIGNAL_VOLTAGE_120 2 | ||
70 | |||
71 | unsigned char drv_type; /* driver type (A, B, C, D) */ | ||
72 | |||
73 | #define MMC_SET_DRIVER_TYPE_B 0 | ||
74 | #define MMC_SET_DRIVER_TYPE_A 1 | ||
75 | #define MMC_SET_DRIVER_TYPE_C 2 | ||
76 | #define MMC_SET_DRIVER_TYPE_D 3 | ||
59 | }; | 77 | }; |
60 | 78 | ||
61 | struct mmc_host_ops { | 79 | struct mmc_host_ops { |
@@ -117,6 +135,10 @@ struct mmc_host_ops { | |||
117 | 135 | ||
118 | /* optional callback for HC quirks */ | 136 | /* optional callback for HC quirks */ |
119 | void (*init_card)(struct mmc_host *host, struct mmc_card *card); | 137 | void (*init_card)(struct mmc_host *host, struct mmc_card *card); |
138 | |||
139 | int (*start_signal_voltage_switch)(struct mmc_host *host, struct mmc_ios *ios); | ||
140 | int (*execute_tuning)(struct mmc_host *host); | ||
141 | void (*enable_preset_value)(struct mmc_host *host, bool enable); | ||
120 | }; | 142 | }; |
121 | 143 | ||
122 | struct mmc_card; | 144 | struct mmc_card; |
@@ -173,6 +195,22 @@ struct mmc_host { | |||
173 | /* DDR mode at 1.2V */ | 195 | /* DDR mode at 1.2V */ |
174 | #define MMC_CAP_POWER_OFF_CARD (1 << 13) /* Can power off after boot */ | 196 | #define MMC_CAP_POWER_OFF_CARD (1 << 13) /* Can power off after boot */ |
175 | #define MMC_CAP_BUS_WIDTH_TEST (1 << 14) /* CMD14/CMD19 bus width ok */ | 197 | #define MMC_CAP_BUS_WIDTH_TEST (1 << 14) /* CMD14/CMD19 bus width ok */ |
198 | #define MMC_CAP_UHS_SDR12 (1 << 15) /* Host supports UHS SDR12 mode */ | ||
199 | #define MMC_CAP_UHS_SDR25 (1 << 16) /* Host supports UHS SDR25 mode */ | ||
200 | #define MMC_CAP_UHS_SDR50 (1 << 17) /* Host supports UHS SDR50 mode */ | ||
201 | #define MMC_CAP_UHS_SDR104 (1 << 18) /* Host supports UHS SDR104 mode */ | ||
202 | #define MMC_CAP_UHS_DDR50 (1 << 19) /* Host supports UHS DDR50 mode */ | ||
203 | #define MMC_CAP_SET_XPC_330 (1 << 20) /* Host supports >150mA current at 3.3V */ | ||
204 | #define MMC_CAP_SET_XPC_300 (1 << 21) /* Host supports >150mA current at 3.0V */ | ||
205 | #define MMC_CAP_SET_XPC_180 (1 << 22) /* Host supports >150mA current at 1.8V */ | ||
206 | #define MMC_CAP_DRIVER_TYPE_A (1 << 23) /* Host supports Driver Type A */ | ||
207 | #define MMC_CAP_DRIVER_TYPE_C (1 << 24) /* Host supports Driver Type C */ | ||
208 | #define MMC_CAP_DRIVER_TYPE_D (1 << 25) /* Host supports Driver Type D */ | ||
209 | #define MMC_CAP_MAX_CURRENT_200 (1 << 26) /* Host max current limit is 200mA */ | ||
210 | #define MMC_CAP_MAX_CURRENT_400 (1 << 27) /* Host max current limit is 400mA */ | ||
211 | #define MMC_CAP_MAX_CURRENT_600 (1 << 28) /* Host max current limit is 600mA */ | ||
212 | #define MMC_CAP_MAX_CURRENT_800 (1 << 29) /* Host max current limit is 800mA */ | ||
213 | #define MMC_CAP_CMD23 (1 << 30) /* CMD23 supported. */ | ||
176 | 214 | ||
177 | mmc_pm_flag_t pm_caps; /* supported pm features */ | 215 | mmc_pm_flag_t pm_caps; /* supported pm features */ |
178 | 216 | ||
@@ -321,10 +359,19 @@ static inline int mmc_card_is_removable(struct mmc_host *host) | |||
321 | return !(host->caps & MMC_CAP_NONREMOVABLE) && mmc_assume_removable; | 359 | return !(host->caps & MMC_CAP_NONREMOVABLE) && mmc_assume_removable; |
322 | } | 360 | } |
323 | 361 | ||
324 | static inline int mmc_card_is_powered_resumed(struct mmc_host *host) | 362 | static inline int mmc_card_keep_power(struct mmc_host *host) |
325 | { | 363 | { |
326 | return host->pm_flags & MMC_PM_KEEP_POWER; | 364 | return host->pm_flags & MMC_PM_KEEP_POWER; |
327 | } | 365 | } |
328 | 366 | ||
367 | static inline int mmc_card_wake_sdio_irq(struct mmc_host *host) | ||
368 | { | ||
369 | return host->pm_flags & MMC_PM_WAKE_SDIO_IRQ; | ||
370 | } | ||
371 | |||
372 | static inline int mmc_host_cmd23(struct mmc_host *host) | ||
373 | { | ||
374 | return host->caps & MMC_CAP_CMD23; | ||
375 | } | ||
329 | #endif | 376 | #endif |
330 | 377 | ||