Lines Matching full:card

12 #include <linux/mmc/card.h>
19 #include "card.h"
30 MMC_DEV_ATTR(vendor, "0x%04x\n", card->cis.vendor);
31 MMC_DEV_ATTR(device, "0x%04x\n", card->cis.device);
32 MMC_DEV_ATTR(revision, "%u.%u\n", card->major_rev, card->minor_rev);
33 MMC_DEV_ATTR(ocr, "0x%08x\n", card->ocr);
34 MMC_DEV_ATTR(rca, "0x%04x\n", card->rca);
39 struct mmc_card *card = mmc_dev_to_card(dev); \
41 if (num > card->num_info) \
43 if (!card->info[num-1][0]) \
45 return sprintf(buf, "%s\n", card->info[num-1]); \
77 if (mmc_card_nonstd_func_interface(func->card)) { in sdio_read_fbr()
82 ret = mmc_io_rw_direct(func->card, 0, 0, in sdio_read_fbr()
90 ret = mmc_io_rw_direct(func->card, 0, 0, in sdio_read_fbr()
102 static int sdio_init_func(struct mmc_card *card, unsigned int fn) in sdio_init_func() argument
110 func = sdio_alloc_func(card); in sdio_init_func()
116 if (!(card->quirks & MMC_QUIRK_NONSTD_SDIO)) { in sdio_init_func()
125 func->vendor = func->card->cis.vendor; in sdio_init_func()
126 func->device = func->card->cis.device; in sdio_init_func()
127 func->max_blksize = func->card->cis.blksize; in sdio_init_func()
130 card->sdio_func[fn - 1] = func; in sdio_init_func()
143 static int sdio_read_cccr(struct mmc_card *card, u32 ocr) in sdio_read_cccr() argument
151 ret = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_CCCR, 0, &data); in sdio_read_cccr()
159 mmc_hostname(card->host), cccr_vsn); in sdio_read_cccr()
163 card->cccr.sdio_vsn = (data & 0xf0) >> 4; in sdio_read_cccr()
165 ret = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_CAPS, 0, &data); in sdio_read_cccr()
170 card->cccr.multi_block = 1; in sdio_read_cccr()
172 card->cccr.low_speed = 1; in sdio_read_cccr()
174 card->cccr.wide_bus = 1; in sdio_read_cccr()
177 ret = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_POWER, 0, &data); in sdio_read_cccr()
182 card->cccr.high_power = 1; in sdio_read_cccr()
186 ret = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_SPEED, 0, &speed); in sdio_read_cccr()
190 card->scr.sda_spec3 = 0; in sdio_read_cccr()
191 card->sw_caps.sd3_bus_mode = 0; in sdio_read_cccr()
192 card->sw_caps.sd3_drv_type = 0; in sdio_read_cccr()
194 card->scr.sda_spec3 = 1; in sdio_read_cccr()
195 ret = mmc_io_rw_direct(card, 0, 0, in sdio_read_cccr()
200 if (mmc_host_uhs(card->host)) { in sdio_read_cccr()
202 card->sw_caps.sd3_bus_mode in sdio_read_cccr()
207 card->sw_caps.sd3_bus_mode in sdio_read_cccr()
212 card->sw_caps.sd3_bus_mode in sdio_read_cccr()
217 ret = mmc_io_rw_direct(card, 0, 0, in sdio_read_cccr()
223 card->sw_caps.sd3_drv_type |= SD_DRIVER_TYPE_A; in sdio_read_cccr()
225 card->sw_caps.sd3_drv_type |= SD_DRIVER_TYPE_C; in sdio_read_cccr()
227 card->sw_caps.sd3_drv_type |= SD_DRIVER_TYPE_D; in sdio_read_cccr()
231 if (!card->sw_caps.sd3_bus_mode) { in sdio_read_cccr()
233 card->cccr.high_speed = 1; in sdio_read_cccr()
234 card->sw_caps.hs_max_dtr = 50000000; in sdio_read_cccr()
236 card->cccr.high_speed = 0; in sdio_read_cccr()
237 card->sw_caps.hs_max_dtr = 25000000; in sdio_read_cccr()
246 static int sdio_enable_wide(struct mmc_card *card) in sdio_enable_wide() argument
251 if (!(card->host->caps & MMC_CAP_4_BIT_DATA)) in sdio_enable_wide()
254 if (card->cccr.low_speed && !card->cccr.wide_bus) in sdio_enable_wide()
257 ret = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_IF, 0, &ctrl); in sdio_enable_wide()
263 mmc_hostname(card->host), ctrl); in sdio_enable_wide()
269 ret = mmc_io_rw_direct(card, 1, 0, SDIO_CCCR_IF, ctrl, NULL); in sdio_enable_wide()
278 * of the card. This may be required on certain setups of boards,
279 * controllers and embedded sdio device which do not need the card's
280 * pull-up. As a result, card detection is disabled and power is saved.
282 static int sdio_disable_cd(struct mmc_card *card) in sdio_disable_cd() argument
287 if (!mmc_card_disable_cd(card)) in sdio_disable_cd()
290 ret = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_IF, 0, &ctrl); in sdio_disable_cd()
296 return mmc_io_rw_direct(card, 1, 0, SDIO_CCCR_IF, ctrl, NULL); in sdio_disable_cd()
303 static int sdio_disable_wide(struct mmc_card *card) in sdio_disable_wide() argument
308 if (!(card->host->caps & MMC_CAP_4_BIT_DATA)) in sdio_disable_wide()
311 if (card->cccr.low_speed && !card->cccr.wide_bus) in sdio_disable_wide()
314 ret = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_IF, 0, &ctrl); in sdio_disable_wide()
324 ret = mmc_io_rw_direct(card, 1, 0, SDIO_CCCR_IF, ctrl, NULL); in sdio_disable_wide()
328 mmc_set_bus_width(card->host, MMC_BUS_WIDTH_1); in sdio_disable_wide()
333 static int sdio_disable_4bit_bus(struct mmc_card *card) in sdio_disable_4bit_bus() argument
337 if (card->type == MMC_TYPE_SDIO) in sdio_disable_4bit_bus()
340 if (!(card->host->caps & MMC_CAP_4_BIT_DATA)) in sdio_disable_4bit_bus()
343 if (!(card->scr.bus_widths & SD_SCR_BUS_WIDTH_4)) in sdio_disable_4bit_bus()
346 err = mmc_app_set_bus_width(card, MMC_BUS_WIDTH_1); in sdio_disable_4bit_bus()
351 return sdio_disable_wide(card); in sdio_disable_4bit_bus()
355 static int sdio_enable_4bit_bus(struct mmc_card *card) in sdio_enable_4bit_bus() argument
359 err = sdio_enable_wide(card); in sdio_enable_4bit_bus()
362 if (card->type == MMC_TYPE_SDIO) in sdio_enable_4bit_bus()
365 if (card->scr.bus_widths & SD_SCR_BUS_WIDTH_4) { in sdio_enable_4bit_bus()
366 err = mmc_app_set_bus_width(card, MMC_BUS_WIDTH_4); in sdio_enable_4bit_bus()
368 sdio_disable_wide(card); in sdio_enable_4bit_bus()
373 mmc_set_bus_width(card->host, MMC_BUS_WIDTH_4); in sdio_enable_4bit_bus()
380 * Test if the card supports high-speed mode and, if so, switch to it.
382 static int mmc_sdio_switch_hs(struct mmc_card *card, int enable) in mmc_sdio_switch_hs() argument
387 if (!(card->host->caps & MMC_CAP_SD_HIGHSPEED)) in mmc_sdio_switch_hs()
390 if (!card->cccr.high_speed) in mmc_sdio_switch_hs()
393 ret = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_SPEED, 0, &speed); in mmc_sdio_switch_hs()
402 ret = mmc_io_rw_direct(card, 1, 0, SDIO_CCCR_SPEED, speed, NULL); in mmc_sdio_switch_hs()
410 * Enable SDIO/combo card's high-speed mode. Return 0/1 if [not]supported.
412 static int sdio_enable_hs(struct mmc_card *card) in sdio_enable_hs() argument
416 ret = mmc_sdio_switch_hs(card, true); in sdio_enable_hs()
417 if (ret <= 0 || card->type == MMC_TYPE_SDIO) in sdio_enable_hs()
420 ret = mmc_sd_switch_hs(card); in sdio_enable_hs()
422 mmc_sdio_switch_hs(card, false); in sdio_enable_hs()
427 static unsigned mmc_sdio_get_max_clock(struct mmc_card *card) in mmc_sdio_get_max_clock() argument
431 if (mmc_card_hs(card)) { in mmc_sdio_get_max_clock()
440 max_dtr = card->cis.max_dtr; in mmc_sdio_get_max_clock()
443 if (card->type == MMC_TYPE_SD_COMBO) in mmc_sdio_get_max_clock()
444 max_dtr = min(max_dtr, mmc_sd_get_max_clock(card)); in mmc_sdio_get_max_clock()
465 static void sdio_select_driver_type(struct mmc_card *card) in sdio_select_driver_type() argument
471 card->drive_strength = 0; in sdio_select_driver_type()
473 card_drv_type = card->sw_caps.sd3_drv_type | SD_DRIVER_TYPE_B; in sdio_select_driver_type()
475 drive_strength = mmc_select_drive_strength(card, in sdio_select_driver_type()
476 card->sw_caps.uhs_max_dtr, in sdio_select_driver_type()
481 err = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_DRIVE_STRENGTH, 0, in sdio_select_driver_type()
490 err = mmc_io_rw_direct(card, 1, 0, SDIO_CCCR_DRIVE_STRENGTH, in sdio_select_driver_type()
494 card->drive_strength = drive_strength; in sdio_select_driver_type()
498 mmc_set_driver_type(card->host, drv_type); in sdio_select_driver_type()
502 static int sdio_set_bus_speed_mode(struct mmc_card *card) in sdio_set_bus_speed_mode() argument
513 if (!mmc_host_uhs(card->host)) in sdio_set_bus_speed_mode()
518 if ((card->host->caps & MMC_CAP_UHS_SDR104) && in sdio_set_bus_speed_mode()
519 (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_SDR104)) { in sdio_set_bus_speed_mode()
522 card->sw_caps.uhs_max_dtr = UHS_SDR104_MAX_DTR; in sdio_set_bus_speed_mode()
523 card->sd_bus_speed = UHS_SDR104_BUS_SPEED; in sdio_set_bus_speed_mode()
524 } else if ((card->host->caps & MMC_CAP_UHS_DDR50) && in sdio_set_bus_speed_mode()
525 (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_DDR50)) { in sdio_set_bus_speed_mode()
528 card->sw_caps.uhs_max_dtr = UHS_DDR50_MAX_DTR; in sdio_set_bus_speed_mode()
529 card->sd_bus_speed = UHS_DDR50_BUS_SPEED; in sdio_set_bus_speed_mode()
530 } else if ((card->host->caps & (MMC_CAP_UHS_SDR104 | in sdio_set_bus_speed_mode()
531 MMC_CAP_UHS_SDR50)) && (card->sw_caps.sd3_bus_mode & in sdio_set_bus_speed_mode()
535 card->sw_caps.uhs_max_dtr = UHS_SDR50_MAX_DTR; in sdio_set_bus_speed_mode()
536 card->sd_bus_speed = UHS_SDR50_BUS_SPEED; in sdio_set_bus_speed_mode()
537 } else if ((card->host->caps & (MMC_CAP_UHS_SDR104 | in sdio_set_bus_speed_mode()
539 (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_SDR25)) { in sdio_set_bus_speed_mode()
542 card->sw_caps.uhs_max_dtr = UHS_SDR25_MAX_DTR; in sdio_set_bus_speed_mode()
543 card->sd_bus_speed = UHS_SDR25_BUS_SPEED; in sdio_set_bus_speed_mode()
544 } else if ((card->host->caps & (MMC_CAP_UHS_SDR104 | in sdio_set_bus_speed_mode()
546 MMC_CAP_UHS_SDR12)) && (card->sw_caps.sd3_bus_mode & in sdio_set_bus_speed_mode()
550 card->sw_caps.uhs_max_dtr = UHS_SDR12_MAX_DTR; in sdio_set_bus_speed_mode()
551 card->sd_bus_speed = UHS_SDR12_BUS_SPEED; in sdio_set_bus_speed_mode()
554 err = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_SPEED, 0, &speed); in sdio_set_bus_speed_mode()
560 err = mmc_io_rw_direct(card, 1, 0, SDIO_CCCR_SPEED, speed, NULL); in sdio_set_bus_speed_mode()
564 max_rate = min_not_zero(card->quirk_max_rate, in sdio_set_bus_speed_mode()
565 card->sw_caps.uhs_max_dtr); in sdio_set_bus_speed_mode()
567 mmc_set_timing(card->host, timing); in sdio_set_bus_speed_mode()
568 mmc_set_clock(card->host, max_rate); in sdio_set_bus_speed_mode()
576 static int mmc_sdio_init_uhs_card(struct mmc_card *card) in mmc_sdio_init_uhs_card() argument
580 if (!card->scr.sda_spec3) in mmc_sdio_init_uhs_card()
584 err = sdio_enable_4bit_bus(card); in mmc_sdio_init_uhs_card()
588 /* Set the driver strength for the card */ in mmc_sdio_init_uhs_card()
589 sdio_select_driver_type(card); in mmc_sdio_init_uhs_card()
591 /* Set bus speed mode of the card */ in mmc_sdio_init_uhs_card()
592 err = sdio_set_bus_speed_mode(card); in mmc_sdio_init_uhs_card()
600 if (!mmc_host_is_spi(card->host) && in mmc_sdio_init_uhs_card()
601 ((card->host->ios.timing == MMC_TIMING_UHS_SDR50) || in mmc_sdio_init_uhs_card()
602 (card->host->ios.timing == MMC_TIMING_UHS_SDR104))) in mmc_sdio_init_uhs_card()
603 err = mmc_execute_tuning(card); in mmc_sdio_init_uhs_card()
609 struct mmc_card *card) in mmc_sdio_pre_init() argument
611 if (card) in mmc_sdio_pre_init()
612 mmc_remove_card(card); in mmc_sdio_pre_init()
615 * Reset the card by performing the same steps that are taken by in mmc_sdio_pre_init()
638 * Handle the detection and initialisation of a card.
640 * In the case of a resume, "oldcard" will contain the card
646 struct mmc_card *card; in mmc_sdio_init_card() local
654 /* to query card if 1.8V signalling is supported */ in mmc_sdio_init_card()
665 * Inform the card of the voltage in mmc_sdio_init_card()
681 * Allocate card structure. in mmc_sdio_init_card()
683 card = mmc_alloc_card(host, &sdio_type); in mmc_sdio_init_card()
684 if (IS_ERR(card)) in mmc_sdio_init_card()
685 return PTR_ERR(card); in mmc_sdio_init_card()
688 mmc_sd_get_cid(host, ocr & rocr, card->raw_cid, NULL) == 0) { in mmc_sdio_init_card()
689 card->type = MMC_TYPE_SD_COMBO; in mmc_sdio_init_card()
692 memcmp(card->raw_cid, oldcard->raw_cid, sizeof(card->raw_cid)) != 0)) { in mmc_sdio_init_card()
697 card->type = MMC_TYPE_SDIO; in mmc_sdio_init_card()
709 host->ops->init_card(host, card); in mmc_sdio_init_card()
712 * If the host and card support UHS-I mode request the card in mmc_sdio_init_card()
717 * 1.8v, the card sets S18A to 0 in the R4 response. So it will in mmc_sdio_init_card()
719 * try to init uhs card. sdio_read_cccr will take over this task in mmc_sdio_init_card()
725 mmc_sdio_pre_init(host, ocr_card, card); in mmc_sdio_init_card()
734 * For native busses: set card RCA and quit open drain mode. in mmc_sdio_init_card()
737 err = mmc_send_relative_addr(host, &card->rca); in mmc_sdio_init_card()
744 * "card" struct when oldcard overwrites that later. in mmc_sdio_init_card()
747 oldcard->rca = card->rca; in mmc_sdio_init_card()
751 * Read CSD, before selecting the card in mmc_sdio_init_card()
753 if (!oldcard && card->type == MMC_TYPE_SD_COMBO) { in mmc_sdio_init_card()
754 err = mmc_sd_get_csd(host, card); in mmc_sdio_init_card()
758 mmc_decode_cid(card); in mmc_sdio_init_card()
762 * Select card, as all following commands rely on that. in mmc_sdio_init_card()
765 err = mmc_select_card(card); in mmc_sdio_init_card()
770 if (card->quirks & MMC_QUIRK_NONSTD_SDIO) { in mmc_sdio_init_card()
777 mmc_set_clock(host, card->cis.max_dtr); in mmc_sdio_init_card()
779 if (card->cccr.high_speed) { in mmc_sdio_init_card()
780 mmc_set_timing(card->host, MMC_TIMING_SD_HS); in mmc_sdio_init_card()
784 mmc_remove_card(card); in mmc_sdio_init_card()
786 host->card = card; in mmc_sdio_init_card()
795 err = sdio_read_cccr(card, ocr); in mmc_sdio_init_card()
797 mmc_sdio_pre_init(host, ocr_card, card); in mmc_sdio_init_card()
809 err = sdio_read_common_cis(card); in mmc_sdio_init_card()
814 if (card->cis.vendor == oldcard->cis.vendor && in mmc_sdio_init_card()
815 card->cis.device == oldcard->cis.device) { in mmc_sdio_init_card()
816 mmc_remove_card(card); in mmc_sdio_init_card()
817 card = oldcard; in mmc_sdio_init_card()
823 card->ocr = ocr_card; in mmc_sdio_init_card()
824 mmc_fixup_device(card, sdio_fixup_methods); in mmc_sdio_init_card()
826 if (card->type == MMC_TYPE_SD_COMBO) { in mmc_sdio_init_card()
827 err = mmc_sd_setup_card(host, card, oldcard != NULL); in mmc_sdio_init_card()
828 /* handle as SDIO-only card if memory init failed */ in mmc_sdio_init_card()
834 card->type = MMC_TYPE_SDIO; in mmc_sdio_init_card()
836 card->dev.type = &sd_type; in mmc_sdio_init_card()
840 * If needed, disconnect card detection pull-up resistor. in mmc_sdio_init_card()
842 err = sdio_disable_cd(card); in mmc_sdio_init_card()
847 /* Only if card supports 1.8v and UHS signaling */ in mmc_sdio_init_card()
848 if ((ocr & R4_18V_PRESENT) && card->sw_caps.sd3_bus_mode) { in mmc_sdio_init_card()
849 err = mmc_sdio_init_uhs_card(card); in mmc_sdio_init_card()
856 err = sdio_enable_hs(card); in mmc_sdio_init_card()
858 mmc_set_timing(card->host, MMC_TIMING_SD_HS); in mmc_sdio_init_card()
863 * Change to the card's maximum speed. in mmc_sdio_init_card()
865 mmc_set_clock(host, mmc_sdio_get_max_clock(card)); in mmc_sdio_init_card()
870 err = sdio_enable_4bit_bus(card); in mmc_sdio_init_card()
883 host->card = card; in mmc_sdio_init_card()
887 pr_debug("%s: Perhaps the card was replaced\n", mmc_hostname(host)); in mmc_sdio_init_card()
889 if (oldcard != card) in mmc_sdio_init_card()
890 mmc_remove_card(card); in mmc_sdio_init_card()
898 ret = mmc_sdio_pre_init(host, host->card->ocr, NULL); in mmc_sdio_reinit_card()
902 return mmc_sdio_init_card(host, host->card->ocr, host->card); in mmc_sdio_reinit_card()
906 * Host is being removed. Free up the current card.
912 for (i = 0;i < host->card->sdio_funcs;i++) { in mmc_sdio_remove()
913 if (host->card->sdio_func[i]) { in mmc_sdio_remove()
914 sdio_remove_func(host->card->sdio_func[i]); in mmc_sdio_remove()
915 host->card->sdio_func[i] = NULL; in mmc_sdio_remove()
919 mmc_remove_card(host->card); in mmc_sdio_remove()
920 host->card = NULL; in mmc_sdio_remove()
924 * Card detection - card is alive.
928 return mmc_select_card(host->card); in mmc_sdio_alive()
932 * Card detection callback from host.
938 /* Make sure card is powered before detecting it */ in mmc_sdio_detect()
940 err = pm_runtime_get_sync(&host->card->dev); in mmc_sdio_detect()
942 pm_runtime_put_noidle(&host->card->dev); in mmc_sdio_detect()
950 * Just check if our card has been removed. in mmc_sdio_detect()
957 * Tell PM core it's OK to power off the card now. in mmc_sdio_detect()
959 * The _sync variant is used in order to ensure that the card in mmc_sdio_detect()
960 * is left powered off in case an error occurred, and the card in mmc_sdio_detect()
968 pm_runtime_put_sync(&host->card->dev); in mmc_sdio_detect()
984 * and resume methods. Failing that we simply remove the whole card.
990 for (i = 0; i < host->card->sdio_funcs; i++) { in mmc_sdio_pre_suspend()
991 struct sdio_func *func = host->card->sdio_func[i]; in mmc_sdio_pre_suspend()
995 /* force removal of entire card in that case */ in mmc_sdio_pre_suspend()
1013 mmc_card_set_suspended(host->card); in mmc_sdio_suspend()
1019 sdio_disable_4bit_bus(host->card); in mmc_sdio_suspend()
1037 /* Basic card reinitialization. */ in mmc_sdio_resume()
1041 * Restore power and reinitialize the card when needed. Note that a in mmc_sdio_resume()
1042 * removable card is checked from a detect work later on in the resume in mmc_sdio_resume()
1046 mmc_power_up(host, host->card->ocr); in mmc_sdio_resume()
1048 * Tell runtime PM core we just powered up the card, in mmc_sdio_resume()
1049 * since it still believes the card is powered off. in mmc_sdio_resume()
1054 pm_runtime_disable(&host->card->dev); in mmc_sdio_resume()
1055 pm_runtime_set_active(&host->card->dev); in mmc_sdio_resume()
1056 pm_runtime_enable(&host->card->dev); in mmc_sdio_resume()
1061 err = sdio_enable_4bit_bus(host->card); in mmc_sdio_resume()
1068 mmc_card_clr_suspended(host->card); in mmc_sdio_resume()
1086 /* No references to the card, cut the power to it. */ in mmc_sdio_runtime_suspend()
1100 mmc_power_up(host, host->card->ocr); in mmc_sdio_runtime_resume()
1115 struct mmc_card *card = host->card; in mmc_sdio_hw_reset() local
1118 * In case the card is shared among multiple func drivers, reset the in mmc_sdio_hw_reset()
1119 * card through a rescan work. In this way it will be removed and in mmc_sdio_hw_reset()
1122 if (atomic_read(&card->sdio_funcs_probed) > 1) { in mmc_sdio_hw_reset()
1123 if (mmc_card_removed(card)) in mmc_sdio_hw_reset()
1126 mmc_card_set_removed(card); in mmc_sdio_hw_reset()
1135 mmc_power_cycle(host, card->ocr); in mmc_sdio_hw_reset()
1166 * Starting point for SDIO card init.
1172 struct mmc_card *card; in mmc_attach_sdio() local
1188 * Can we support the voltage(s) of the card(s)? in mmc_attach_sdio()
1196 * Detect and init the card. in mmc_attach_sdio()
1202 card = host->card; in mmc_attach_sdio()
1205 * Enable runtime PM only if supported by host+card+board in mmc_attach_sdio()
1212 pm_runtime_get_noresume(&card->dev); in mmc_attach_sdio()
1215 * Let runtime PM core know our card is active in mmc_attach_sdio()
1217 err = pm_runtime_set_active(&card->dev); in mmc_attach_sdio()
1222 * Enable runtime PM for this card in mmc_attach_sdio()
1224 pm_runtime_enable(&card->dev); in mmc_attach_sdio()
1228 * The number of functions on the card is encoded inside in mmc_attach_sdio()
1232 card->sdio_funcs = 0; in mmc_attach_sdio()
1237 for (i = 0; i < funcs; i++, card->sdio_funcs++) { in mmc_attach_sdio()
1238 err = sdio_init_func(host->card, i + 1); in mmc_attach_sdio()
1246 pm_runtime_enable(&card->sdio_func[i]->dev); in mmc_attach_sdio()
1250 * First add the card to the driver model... in mmc_attach_sdio()
1253 err = mmc_add_card(host->card); in mmc_attach_sdio()
1261 err = sdio_add_func(host->card->sdio_func[i]); in mmc_attach_sdio()
1267 pm_runtime_put(&card->dev); in mmc_attach_sdio()
1278 * runtime PM. Similarly we also don't pm_runtime_put() the SDIO card in mmc_attach_sdio()
1287 pr_err("%s: error %d whilst initialising SDIO card\n", in mmc_attach_sdio()