Loading drivers/mmc/core/Kconfig +8 −0 Original line number Diff line number Diff line Loading @@ -22,3 +22,11 @@ config PWRSEQ_SIMPLE This driver can also be built as a module. If so, the module will be called pwrseq_simple. config MMC_PARANOID_SD_INIT bool "Enable paranoid SD card initialization (EXPERIMENTAL)" help If you say Y here, the MMC layer will be extra paranoid about re-trying SD init requests. This can be a useful work-around for buggy controllers and hardware. Enable if you are experiencing issues with SD detection. drivers/mmc/core/sd.c +22 −0 Original line number Diff line number Diff line Loading @@ -839,6 +839,9 @@ int mmc_sd_setup_card(struct mmc_host *host, struct mmc_card *card, bool reinit) { int err; #ifdef CONFIG_MMC_PARANOID_SD_INIT int retries; #endif if (!reinit) { /* Loading @@ -865,7 +868,26 @@ int mmc_sd_setup_card(struct mmc_host *host, struct mmc_card *card, /* * Fetch switch information from card. */ #ifdef CONFIG_MMC_PARANOID_SD_INIT for (retries = 1; retries <= 3; retries++) { err = mmc_read_switch(card); if (!err) { if (retries > 1) { printk(KERN_WARNING "%s: recovered\n", mmc_hostname(host)); } break; } else { printk(KERN_WARNING "%s: read switch failed (attempt %d)\n", mmc_hostname(host), retries); } } #else err = mmc_read_switch(card); #endif if (err) return err; } Loading Loading
drivers/mmc/core/Kconfig +8 −0 Original line number Diff line number Diff line Loading @@ -22,3 +22,11 @@ config PWRSEQ_SIMPLE This driver can also be built as a module. If so, the module will be called pwrseq_simple. config MMC_PARANOID_SD_INIT bool "Enable paranoid SD card initialization (EXPERIMENTAL)" help If you say Y here, the MMC layer will be extra paranoid about re-trying SD init requests. This can be a useful work-around for buggy controllers and hardware. Enable if you are experiencing issues with SD detection.
drivers/mmc/core/sd.c +22 −0 Original line number Diff line number Diff line Loading @@ -839,6 +839,9 @@ int mmc_sd_setup_card(struct mmc_host *host, struct mmc_card *card, bool reinit) { int err; #ifdef CONFIG_MMC_PARANOID_SD_INIT int retries; #endif if (!reinit) { /* Loading @@ -865,7 +868,26 @@ int mmc_sd_setup_card(struct mmc_host *host, struct mmc_card *card, /* * Fetch switch information from card. */ #ifdef CONFIG_MMC_PARANOID_SD_INIT for (retries = 1; retries <= 3; retries++) { err = mmc_read_switch(card); if (!err) { if (retries > 1) { printk(KERN_WARNING "%s: recovered\n", mmc_hostname(host)); } break; } else { printk(KERN_WARNING "%s: read switch failed (attempt %d)\n", mmc_hostname(host), retries); } } #else err = mmc_read_switch(card); #endif if (err) return err; } Loading