summaryrefslogtreecommitdiff
path: root/drivers/mmc/core/mmc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mmc/core/mmc.c')
-rw-r--r--drivers/mmc/core/mmc.c62
1 files changed, 30 insertions, 32 deletions
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 7af569522624..a5e09b8ee068 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -675,40 +675,38 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
goto free_card;
}
- if (!oldcard) {
- /*
- * Fetch and process extended CSD.
- */
-
- err = mmc_get_ext_csd(card, &ext_csd);
- if (err)
- goto free_card;
- err = mmc_read_ext_csd(card, ext_csd);
- if (err)
- goto free_card;
-
- if (card->ext_csd.refresh) {
- init_timer(&card->timer);
- card->timer.data = (unsigned long) card;
- card->timer.function = mmc_refresh;
- card->timer.expires = MMC_BKOPS_INTERVAL <
- MMC_REFRESH_INTERVAL ? MMC_BKOPS_INTERVAL :
- MMC_REFRESH_INTERVAL;
- card->timer.expires *= HZ;
- card->timer.expires += jiffies;
- add_timer(&card->timer);
- }
- /* If doing byte addressing, check if required to do sector
- * addressing. Handle the case of <2GB cards needing sector
- * addressing. See section 8.1 JEDEC Standard JED84-A441;
- * ocr register has bit 30 set for sector addressing.
- */
- if (!(mmc_card_blockaddr(card)) && (rocr & (1<<30)))
- mmc_card_set_blockaddr(card);
+ /*
+ * Fetch and process extended CSD.
+ */
- /* Erase size depends on CSD and Extended CSD */
- mmc_set_erase_size(card);
+ err = mmc_get_ext_csd(card, &ext_csd);
+ if (err)
+ goto free_card;
+ err = mmc_read_ext_csd(card, ext_csd);
+ if (err)
+ goto free_card;
+
+ if (card->ext_csd.refresh) {
+ init_timer(&card->timer);
+ card->timer.data = (unsigned long) card;
+ card->timer.function = mmc_refresh;
+ card->timer.expires = MMC_BKOPS_INTERVAL <
+ MMC_REFRESH_INTERVAL ? MMC_BKOPS_INTERVAL :
+ MMC_REFRESH_INTERVAL;
+ card->timer.expires *= HZ;
+ card->timer.expires += jiffies;
+ add_timer(&card->timer);
}
+ /* If doing byte addressing, check if required to do sector
+ * addressing. Handle the case of <2GB cards needing sector
+ * addressing. See section 8.1 JEDEC Standard JED84-A441;
+ * ocr register has bit 30 set for sector addressing.
+ */
+ if (!(mmc_card_blockaddr(card)) && (rocr & (1<<30)))
+ mmc_card_set_blockaddr(card);
+
+ /* Erase size depends on CSD and Extended CSD */
+ mmc_set_erase_size(card);
/*
* If enhanced_area_en is TRUE, host needs to enable ERASE_GRP_DEF