diff options
author | Seungwon Jeon <tgih.jun@samsung.com> | 2014-04-23 04:07:35 -0400 |
---|---|---|
committer | Chris Ball <chris@printf.net> | 2014-05-12 18:05:53 -0400 |
commit | cdc991790c51c693d0c347a5286af017826a5d01 (patch) | |
tree | 6a40a17c97298372886e1c41a5b892974743a680 | |
parent | b78871d0cf13d37e7bdcf39c49782ca3885343bc (diff) |
mmc: drop the speed mode of card's state
Timing mode identifier has same role and can take the place
of speed mode. This change removes all related speed mode.
Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
Tested-by: Jaehoon Chung <jh80.chung@samsung.com>
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Chris Ball <chris@printf.net>
-rw-r--r-- | drivers/mmc/core/bus.c | 8 | ||||
-rw-r--r-- | drivers/mmc/core/core.c | 3 | ||||
-rw-r--r-- | drivers/mmc/core/mmc.c | 11 | ||||
-rw-r--r-- | drivers/mmc/core/sd.c | 16 | ||||
-rw-r--r-- | drivers/mmc/core/sd.h | 1 | ||||
-rw-r--r-- | drivers/mmc/core/sdio.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/rsi/rsi_91x_sdio.c | 4 | ||||
-rw-r--r-- | include/linux/mmc/card.h | 23 | ||||
-rw-r--r-- | include/linux/mmc/host.h | 23 |
9 files changed, 43 insertions, 54 deletions
diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c index 824644875d41..f37e9d6af84a 100644 --- a/drivers/mmc/core/bus.c +++ b/drivers/mmc/core/bus.c | |||
@@ -341,16 +341,16 @@ int mmc_add_card(struct mmc_card *card) | |||
341 | if (mmc_host_is_spi(card->host)) { | 341 | if (mmc_host_is_spi(card->host)) { |
342 | pr_info("%s: new %s%s%s card on SPI\n", | 342 | pr_info("%s: new %s%s%s card on SPI\n", |
343 | mmc_hostname(card->host), | 343 | mmc_hostname(card->host), |
344 | mmc_card_highspeed(card) ? "high speed " : "", | 344 | mmc_card_hs(card) ? "high speed " : "", |
345 | mmc_card_ddr_mode(card) ? "DDR " : "", | 345 | mmc_card_ddr52(card) ? "DDR " : "", |
346 | type); | 346 | type); |
347 | } else { | 347 | } else { |
348 | pr_info("%s: new %s%s%s%s%s card at address %04x\n", | 348 | pr_info("%s: new %s%s%s%s%s card at address %04x\n", |
349 | mmc_hostname(card->host), | 349 | mmc_hostname(card->host), |
350 | mmc_card_uhs(card) ? "ultra high speed " : | 350 | mmc_card_uhs(card) ? "ultra high speed " : |
351 | (mmc_card_highspeed(card) ? "high speed " : ""), | 351 | (mmc_card_hs(card) ? "high speed " : ""), |
352 | (mmc_card_hs200(card) ? "HS200 " : ""), | 352 | (mmc_card_hs200(card) ? "HS200 " : ""), |
353 | mmc_card_ddr_mode(card) ? "DDR " : "", | 353 | mmc_card_ddr52(card) ? "DDR " : "", |
354 | uhs_bus_speed_mode, type, card->rca); | 354 | uhs_bus_speed_mode, type, card->rca); |
355 | } | 355 | } |
356 | 356 | ||
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index d97dff5fab62..02baa30653fa 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c | |||
@@ -2192,7 +2192,7 @@ int mmc_set_blocklen(struct mmc_card *card, unsigned int blocklen) | |||
2192 | { | 2192 | { |
2193 | struct mmc_command cmd = {0}; | 2193 | struct mmc_command cmd = {0}; |
2194 | 2194 | ||
2195 | if (mmc_card_blockaddr(card) || mmc_card_ddr_mode(card)) | 2195 | if (mmc_card_blockaddr(card) || mmc_card_ddr52(card)) |
2196 | return 0; | 2196 | return 0; |
2197 | 2197 | ||
2198 | cmd.opcode = MMC_SET_BLOCKLEN; | 2198 | cmd.opcode = MMC_SET_BLOCKLEN; |
@@ -2272,7 +2272,6 @@ static int mmc_do_hw_reset(struct mmc_host *host, int check) | |||
2272 | } | 2272 | } |
2273 | } | 2273 | } |
2274 | 2274 | ||
2275 | host->card->state &= ~(MMC_STATE_HIGHSPEED | MMC_STATE_HIGHSPEED_DDR); | ||
2276 | if (mmc_host_is_spi(host)) { | 2275 | if (mmc_host_is_spi(host)) { |
2277 | host->ios.chip_select = MMC_CS_HIGH; | 2276 | host->ios.chip_select = MMC_CS_HIGH; |
2278 | host->ios.bus_mode = MMC_BUSMODE_PUSHPULL; | 2277 | host->ios.bus_mode = MMC_BUSMODE_PUSHPULL; |
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index fbcf93d81858..31220529e171 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c | |||
@@ -1083,11 +1083,9 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, | |||
1083 | } else { | 1083 | } else { |
1084 | if (card->ext_csd.hs_max_dtr > 52000000 && | 1084 | if (card->ext_csd.hs_max_dtr > 52000000 && |
1085 | host->caps2 & MMC_CAP2_HS200) { | 1085 | host->caps2 & MMC_CAP2_HS200) { |
1086 | mmc_card_set_hs200(card); | ||
1087 | mmc_set_timing(card->host, | 1086 | mmc_set_timing(card->host, |
1088 | MMC_TIMING_MMC_HS200); | 1087 | MMC_TIMING_MMC_HS200); |
1089 | } else { | 1088 | } else { |
1090 | mmc_card_set_highspeed(card); | ||
1091 | mmc_set_timing(card->host, MMC_TIMING_MMC_HS); | 1089 | mmc_set_timing(card->host, MMC_TIMING_MMC_HS); |
1092 | } | 1090 | } |
1093 | } | 1091 | } |
@@ -1098,10 +1096,10 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, | |||
1098 | */ | 1096 | */ |
1099 | max_dtr = (unsigned int)-1; | 1097 | max_dtr = (unsigned int)-1; |
1100 | 1098 | ||
1101 | if (mmc_card_highspeed(card) || mmc_card_hs200(card)) { | 1099 | if (mmc_card_hs(card) || mmc_card_hs200(card)) { |
1102 | if (max_dtr > card->ext_csd.hs_max_dtr) | 1100 | if (max_dtr > card->ext_csd.hs_max_dtr) |
1103 | max_dtr = card->ext_csd.hs_max_dtr; | 1101 | max_dtr = card->ext_csd.hs_max_dtr; |
1104 | if (mmc_card_highspeed(card) && (max_dtr > 52000000)) | 1102 | if (mmc_card_hs(card) && (max_dtr > 52000000)) |
1105 | max_dtr = 52000000; | 1103 | max_dtr = 52000000; |
1106 | } else if (max_dtr > card->csd.max_dtr) { | 1104 | } else if (max_dtr > card->csd.max_dtr) { |
1107 | max_dtr = card->csd.max_dtr; | 1105 | max_dtr = card->csd.max_dtr; |
@@ -1112,7 +1110,7 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, | |||
1112 | /* | 1110 | /* |
1113 | * Indicate DDR mode (if supported). | 1111 | * Indicate DDR mode (if supported). |
1114 | */ | 1112 | */ |
1115 | if (mmc_card_highspeed(card)) { | 1113 | if (mmc_card_hs(card)) { |
1116 | if ((card->ext_csd.card_type & EXT_CSD_CARD_TYPE_DDR_1_8V) | 1114 | if ((card->ext_csd.card_type & EXT_CSD_CARD_TYPE_DDR_1_8V) |
1117 | && (host->caps & MMC_CAP_1_8V_DDR)) | 1115 | && (host->caps & MMC_CAP_1_8V_DDR)) |
1118 | ddr = MMC_1_8V_DDR_MODE; | 1116 | ddr = MMC_1_8V_DDR_MODE; |
@@ -1255,7 +1253,6 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, | |||
1255 | if (err) | 1253 | if (err) |
1256 | goto err; | 1254 | goto err; |
1257 | } | 1255 | } |
1258 | mmc_card_set_ddr_mode(card); | ||
1259 | mmc_set_timing(card->host, MMC_TIMING_MMC_DDR52); | 1256 | mmc_set_timing(card->host, MMC_TIMING_MMC_DDR52); |
1260 | mmc_set_bus_width(card->host, bus_width); | 1257 | mmc_set_bus_width(card->host, bus_width); |
1261 | } | 1258 | } |
@@ -1499,7 +1496,6 @@ static int _mmc_suspend(struct mmc_host *host, bool is_suspend) | |||
1499 | err = mmc_sleep(host); | 1496 | err = mmc_sleep(host); |
1500 | else if (!mmc_host_is_spi(host)) | 1497 | else if (!mmc_host_is_spi(host)) |
1501 | err = mmc_deselect_cards(host); | 1498 | err = mmc_deselect_cards(host); |
1502 | host->card->state &= ~(MMC_STATE_HIGHSPEED | MMC_STATE_HIGHSPEED_200); | ||
1503 | 1499 | ||
1504 | if (!err) { | 1500 | if (!err) { |
1505 | mmc_power_off(host); | 1501 | mmc_power_off(host); |
@@ -1629,7 +1625,6 @@ static int mmc_power_restore(struct mmc_host *host) | |||
1629 | { | 1625 | { |
1630 | int ret; | 1626 | int ret; |
1631 | 1627 | ||
1632 | host->card->state &= ~(MMC_STATE_HIGHSPEED | MMC_STATE_HIGHSPEED_200); | ||
1633 | mmc_claim_host(host); | 1628 | mmc_claim_host(host); |
1634 | ret = mmc_init_card(host, host->card->ocr, host->card); | 1629 | ret = mmc_init_card(host, host->card->ocr, host->card); |
1635 | mmc_release_host(host); | 1630 | mmc_release_host(host); |
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index aef515755e5b..0c44510bf717 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c | |||
@@ -887,7 +887,7 @@ unsigned mmc_sd_get_max_clock(struct mmc_card *card) | |||
887 | { | 887 | { |
888 | unsigned max_dtr = (unsigned int)-1; | 888 | unsigned max_dtr = (unsigned int)-1; |
889 | 889 | ||
890 | if (mmc_card_highspeed(card)) { | 890 | if (mmc_card_hs(card)) { |
891 | if (max_dtr > card->sw_caps.hs_max_dtr) | 891 | if (max_dtr > card->sw_caps.hs_max_dtr) |
892 | max_dtr = card->sw_caps.hs_max_dtr; | 892 | max_dtr = card->sw_caps.hs_max_dtr; |
893 | } else if (max_dtr > card->csd.max_dtr) { | 893 | } else if (max_dtr > card->csd.max_dtr) { |
@@ -897,12 +897,6 @@ unsigned mmc_sd_get_max_clock(struct mmc_card *card) | |||
897 | return max_dtr; | 897 | return max_dtr; |
898 | } | 898 | } |
899 | 899 | ||
900 | void mmc_sd_go_highspeed(struct mmc_card *card) | ||
901 | { | ||
902 | mmc_card_set_highspeed(card); | ||
903 | mmc_set_timing(card->host, MMC_TIMING_SD_HS); | ||
904 | } | ||
905 | |||
906 | /* | 900 | /* |
907 | * Handle the detection and initialisation of a card. | 901 | * Handle the detection and initialisation of a card. |
908 | * | 902 | * |
@@ -977,16 +971,13 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr, | |||
977 | err = mmc_sd_init_uhs_card(card); | 971 | err = mmc_sd_init_uhs_card(card); |
978 | if (err) | 972 | if (err) |
979 | goto free_card; | 973 | goto free_card; |
980 | |||
981 | /* Card is an ultra-high-speed card */ | ||
982 | mmc_card_set_uhs(card); | ||
983 | } else { | 974 | } else { |
984 | /* | 975 | /* |
985 | * Attempt to change to high-speed (if supported) | 976 | * Attempt to change to high-speed (if supported) |
986 | */ | 977 | */ |
987 | err = mmc_sd_switch_hs(card); | 978 | err = mmc_sd_switch_hs(card); |
988 | if (err > 0) | 979 | if (err > 0) |
989 | mmc_sd_go_highspeed(card); | 980 | mmc_set_timing(card->host, MMC_TIMING_SD_HS); |
990 | else if (err) | 981 | else if (err) |
991 | goto free_card; | 982 | goto free_card; |
992 | 983 | ||
@@ -1081,7 +1072,7 @@ static int _mmc_sd_suspend(struct mmc_host *host) | |||
1081 | 1072 | ||
1082 | if (!mmc_host_is_spi(host)) | 1073 | if (!mmc_host_is_spi(host)) |
1083 | err = mmc_deselect_cards(host); | 1074 | err = mmc_deselect_cards(host); |
1084 | host->card->state &= ~MMC_STATE_HIGHSPEED; | 1075 | |
1085 | if (!err) { | 1076 | if (!err) { |
1086 | mmc_power_off(host); | 1077 | mmc_power_off(host); |
1087 | mmc_card_set_suspended(host->card); | 1078 | mmc_card_set_suspended(host->card); |
@@ -1190,7 +1181,6 @@ static int mmc_sd_power_restore(struct mmc_host *host) | |||
1190 | { | 1181 | { |
1191 | int ret; | 1182 | int ret; |
1192 | 1183 | ||
1193 | host->card->state &= ~MMC_STATE_HIGHSPEED; | ||
1194 | mmc_claim_host(host); | 1184 | mmc_claim_host(host); |
1195 | ret = mmc_sd_init_card(host, host->card->ocr, host->card); | 1185 | ret = mmc_sd_init_card(host, host->card->ocr, host->card); |
1196 | mmc_release_host(host); | 1186 | mmc_release_host(host); |
diff --git a/drivers/mmc/core/sd.h b/drivers/mmc/core/sd.h index 4b34b24f3f76..aab824a9a7f3 100644 --- a/drivers/mmc/core/sd.h +++ b/drivers/mmc/core/sd.h | |||
@@ -12,6 +12,5 @@ int mmc_sd_setup_card(struct mmc_host *host, struct mmc_card *card, | |||
12 | bool reinit); | 12 | bool reinit); |
13 | unsigned mmc_sd_get_max_clock(struct mmc_card *card); | 13 | unsigned mmc_sd_get_max_clock(struct mmc_card *card); |
14 | int mmc_sd_switch_hs(struct mmc_card *card); | 14 | int mmc_sd_switch_hs(struct mmc_card *card); |
15 | void mmc_sd_go_highspeed(struct mmc_card *card); | ||
16 | 15 | ||
17 | #endif | 16 | #endif |
diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c index 9933e426bc36..e636d9e99e4a 100644 --- a/drivers/mmc/core/sdio.c +++ b/drivers/mmc/core/sdio.c | |||
@@ -363,7 +363,7 @@ static unsigned mmc_sdio_get_max_clock(struct mmc_card *card) | |||
363 | { | 363 | { |
364 | unsigned max_dtr; | 364 | unsigned max_dtr; |
365 | 365 | ||
366 | if (mmc_card_highspeed(card)) { | 366 | if (mmc_card_hs(card)) { |
367 | /* | 367 | /* |
368 | * The SDIO specification doesn't mention how | 368 | * The SDIO specification doesn't mention how |
369 | * the CIS transfer speed register relates to | 369 | * the CIS transfer speed register relates to |
@@ -733,7 +733,6 @@ try_again: | |||
733 | mmc_set_clock(host, card->cis.max_dtr); | 733 | mmc_set_clock(host, card->cis.max_dtr); |
734 | 734 | ||
735 | if (card->cccr.high_speed) { | 735 | if (card->cccr.high_speed) { |
736 | mmc_card_set_highspeed(card); | ||
737 | mmc_set_timing(card->host, MMC_TIMING_SD_HS); | 736 | mmc_set_timing(card->host, MMC_TIMING_SD_HS); |
738 | } | 737 | } |
739 | 738 | ||
@@ -792,16 +791,13 @@ try_again: | |||
792 | err = mmc_sdio_init_uhs_card(card); | 791 | err = mmc_sdio_init_uhs_card(card); |
793 | if (err) | 792 | if (err) |
794 | goto remove; | 793 | goto remove; |
795 | |||
796 | /* Card is an ultra-high-speed card */ | ||
797 | mmc_card_set_uhs(card); | ||
798 | } else { | 794 | } else { |
799 | /* | 795 | /* |
800 | * Switch to high-speed (if supported). | 796 | * Switch to high-speed (if supported). |
801 | */ | 797 | */ |
802 | err = sdio_enable_hs(card); | 798 | err = sdio_enable_hs(card); |
803 | if (err > 0) | 799 | if (err > 0) |
804 | mmc_sd_go_highspeed(card); | 800 | mmc_set_timing(card->host, MMC_TIMING_SD_HS); |
805 | else if (err) | 801 | else if (err) |
806 | goto remove; | 802 | goto remove; |
807 | 803 | ||
diff --git a/drivers/net/wireless/rsi/rsi_91x_sdio.c b/drivers/net/wireless/rsi/rsi_91x_sdio.c index 2e39d38d6a9e..46e7af446f01 100644 --- a/drivers/net/wireless/rsi/rsi_91x_sdio.c +++ b/drivers/net/wireless/rsi/rsi_91x_sdio.c | |||
@@ -285,7 +285,6 @@ static void rsi_reset_card(struct sdio_func *pfunction) | |||
285 | if (err) { | 285 | if (err) { |
286 | rsi_dbg(ERR_ZONE, "%s: CCCR speed reg read failed: %d\n", | 286 | rsi_dbg(ERR_ZONE, "%s: CCCR speed reg read failed: %d\n", |
287 | __func__, err); | 287 | __func__, err); |
288 | card->state &= ~MMC_STATE_HIGHSPEED; | ||
289 | } else { | 288 | } else { |
290 | err = rsi_cmd52writebyte(card, | 289 | err = rsi_cmd52writebyte(card, |
291 | SDIO_CCCR_SPEED, | 290 | SDIO_CCCR_SPEED, |
@@ -296,14 +295,13 @@ static void rsi_reset_card(struct sdio_func *pfunction) | |||
296 | __func__, err); | 295 | __func__, err); |
297 | return; | 296 | return; |
298 | } | 297 | } |
299 | mmc_card_set_highspeed(card); | ||
300 | host->ios.timing = MMC_TIMING_SD_HS; | 298 | host->ios.timing = MMC_TIMING_SD_HS; |
301 | host->ops->set_ios(host, &host->ios); | 299 | host->ops->set_ios(host, &host->ios); |
302 | } | 300 | } |
303 | } | 301 | } |
304 | 302 | ||
305 | /* Set clock */ | 303 | /* Set clock */ |
306 | if (mmc_card_highspeed(card)) | 304 | if (mmc_card_hs(card)) |
307 | clock = 50000000; | 305 | clock = 50000000; |
308 | else | 306 | else |
309 | clock = card->cis.max_dtr; | 307 | clock = card->cis.max_dtr; |
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index aa7e57f60fb2..aadeaf155d0e 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h | |||
@@ -194,6 +194,7 @@ struct sdio_cis { | |||
194 | }; | 194 | }; |
195 | 195 | ||
196 | struct mmc_host; | 196 | struct mmc_host; |
197 | struct mmc_ios; | ||
197 | struct sdio_func; | 198 | struct sdio_func; |
198 | struct sdio_func_tuple; | 199 | struct sdio_func_tuple; |
199 | 200 | ||
@@ -250,15 +251,11 @@ struct mmc_card { | |||
250 | unsigned int state; /* (our) card state */ | 251 | unsigned int state; /* (our) card state */ |
251 | #define MMC_STATE_PRESENT (1<<0) /* present in sysfs */ | 252 | #define MMC_STATE_PRESENT (1<<0) /* present in sysfs */ |
252 | #define MMC_STATE_READONLY (1<<1) /* card is read-only */ | 253 | #define MMC_STATE_READONLY (1<<1) /* card is read-only */ |
253 | #define MMC_STATE_HIGHSPEED (1<<2) /* card is in high speed mode */ | 254 | #define MMC_STATE_BLOCKADDR (1<<2) /* card uses block-addressing */ |
254 | #define MMC_STATE_BLOCKADDR (1<<3) /* card uses block-addressing */ | 255 | #define MMC_CARD_SDXC (1<<3) /* card is SDXC */ |
255 | #define MMC_STATE_HIGHSPEED_DDR (1<<4) /* card is in high speed mode */ | 256 | #define MMC_CARD_REMOVED (1<<4) /* card has been removed */ |
256 | #define MMC_STATE_ULTRAHIGHSPEED (1<<5) /* card is in ultra high speed mode */ | 257 | #define MMC_STATE_DOING_BKOPS (1<<5) /* card is doing BKOPS */ |
257 | #define MMC_CARD_SDXC (1<<6) /* card is SDXC */ | 258 | #define MMC_STATE_SUSPENDED (1<<6) /* card is suspended */ |
258 | #define MMC_CARD_REMOVED (1<<7) /* card has been removed */ | ||
259 | #define MMC_STATE_HIGHSPEED_200 (1<<8) /* card is in HS200 mode */ | ||
260 | #define MMC_STATE_DOING_BKOPS (1<<10) /* card is doing BKOPS */ | ||
261 | #define MMC_STATE_SUSPENDED (1<<11) /* card is suspended */ | ||
262 | unsigned int quirks; /* card quirks */ | 259 | unsigned int quirks; /* card quirks */ |
263 | #define MMC_QUIRK_LENIENT_FN0 (1<<0) /* allow SDIO FN0 writes outside of the VS CCCR range */ | 260 | #define MMC_QUIRK_LENIENT_FN0 (1<<0) /* allow SDIO FN0 writes outside of the VS CCCR range */ |
264 | #define MMC_QUIRK_BLKSZ_FOR_BYTE_MODE (1<<1) /* use func->cur_blksize */ | 261 | #define MMC_QUIRK_BLKSZ_FOR_BYTE_MODE (1<<1) /* use func->cur_blksize */ |
@@ -418,11 +415,7 @@ static inline void __maybe_unused remove_quirk(struct mmc_card *card, int data) | |||
418 | 415 | ||
419 | #define mmc_card_present(c) ((c)->state & MMC_STATE_PRESENT) | 416 | #define mmc_card_present(c) ((c)->state & MMC_STATE_PRESENT) |
420 | #define mmc_card_readonly(c) ((c)->state & MMC_STATE_READONLY) | 417 | #define mmc_card_readonly(c) ((c)->state & MMC_STATE_READONLY) |
421 | #define mmc_card_highspeed(c) ((c)->state & MMC_STATE_HIGHSPEED) | ||
422 | #define mmc_card_hs200(c) ((c)->state & MMC_STATE_HIGHSPEED_200) | ||
423 | #define mmc_card_blockaddr(c) ((c)->state & MMC_STATE_BLOCKADDR) | 418 | #define mmc_card_blockaddr(c) ((c)->state & MMC_STATE_BLOCKADDR) |
424 | #define mmc_card_ddr_mode(c) ((c)->state & MMC_STATE_HIGHSPEED_DDR) | ||
425 | #define mmc_card_uhs(c) ((c)->state & MMC_STATE_ULTRAHIGHSPEED) | ||
426 | #define mmc_card_ext_capacity(c) ((c)->state & MMC_CARD_SDXC) | 419 | #define mmc_card_ext_capacity(c) ((c)->state & MMC_CARD_SDXC) |
427 | #define mmc_card_removed(c) ((c) && ((c)->state & MMC_CARD_REMOVED)) | 420 | #define mmc_card_removed(c) ((c) && ((c)->state & MMC_CARD_REMOVED)) |
428 | #define mmc_card_doing_bkops(c) ((c)->state & MMC_STATE_DOING_BKOPS) | 421 | #define mmc_card_doing_bkops(c) ((c)->state & MMC_STATE_DOING_BKOPS) |
@@ -430,11 +423,7 @@ static inline void __maybe_unused remove_quirk(struct mmc_card *card, int data) | |||
430 | 423 | ||
431 | #define mmc_card_set_present(c) ((c)->state |= MMC_STATE_PRESENT) | 424 | #define mmc_card_set_present(c) ((c)->state |= MMC_STATE_PRESENT) |
432 | #define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY) | 425 | #define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY) |
433 | #define mmc_card_set_highspeed(c) ((c)->state |= MMC_STATE_HIGHSPEED) | ||
434 | #define mmc_card_set_hs200(c) ((c)->state |= MMC_STATE_HIGHSPEED_200) | ||
435 | #define mmc_card_set_blockaddr(c) ((c)->state |= MMC_STATE_BLOCKADDR) | 426 | #define mmc_card_set_blockaddr(c) ((c)->state |= MMC_STATE_BLOCKADDR) |
436 | #define mmc_card_set_ddr_mode(c) ((c)->state |= MMC_STATE_HIGHSPEED_DDR) | ||
437 | #define mmc_card_set_uhs(c) ((c)->state |= MMC_STATE_ULTRAHIGHSPEED) | ||
438 | #define mmc_card_set_ext_capacity(c) ((c)->state |= MMC_CARD_SDXC) | 427 | #define mmc_card_set_ext_capacity(c) ((c)->state |= MMC_CARD_SDXC) |
439 | #define mmc_card_set_removed(c) ((c)->state |= MMC_CARD_REMOVED) | 428 | #define mmc_card_set_removed(c) ((c)->state |= MMC_CARD_REMOVED) |
440 | #define mmc_card_set_doing_bkops(c) ((c)->state |= MMC_STATE_DOING_BKOPS) | 429 | #define mmc_card_set_doing_bkops(c) ((c)->state |= MMC_STATE_DOING_BKOPS) |
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index 0cf705c83998..a43853779799 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/fault-inject.h> | 17 | #include <linux/fault-inject.h> |
18 | 18 | ||
19 | #include <linux/mmc/core.h> | 19 | #include <linux/mmc/core.h> |
20 | #include <linux/mmc/card.h> | ||
20 | #include <linux/mmc/pm.h> | 21 | #include <linux/mmc/pm.h> |
21 | 22 | ||
22 | struct mmc_ios { | 23 | struct mmc_ios { |
@@ -478,4 +479,26 @@ static inline unsigned int mmc_host_clk_rate(struct mmc_host *host) | |||
478 | return host->ios.clock; | 479 | return host->ios.clock; |
479 | } | 480 | } |
480 | #endif | 481 | #endif |
482 | |||
483 | static inline int mmc_card_hs(struct mmc_card *card) | ||
484 | { | ||
485 | return card->host->ios.timing == MMC_TIMING_SD_HS || | ||
486 | card->host->ios.timing == MMC_TIMING_MMC_HS; | ||
487 | } | ||
488 | |||
489 | static inline int mmc_card_uhs(struct mmc_card *card) | ||
490 | { | ||
491 | return card->host->ios.timing >= MMC_TIMING_UHS_SDR12 && | ||
492 | card->host->ios.timing <= MMC_TIMING_UHS_DDR50; | ||
493 | } | ||
494 | |||
495 | static inline bool mmc_card_hs200(struct mmc_card *card) | ||
496 | { | ||
497 | return card->host->ios.timing == MMC_TIMING_MMC_HS200; | ||
498 | } | ||
499 | |||
500 | static inline bool mmc_card_ddr52(struct mmc_card *card) | ||
501 | { | ||
502 | return card->host->ios.timing == MMC_TIMING_MMC_DDR52; | ||
503 | } | ||
481 | #endif /* LINUX_MMC_HOST_H */ | 504 | #endif /* LINUX_MMC_HOST_H */ |