diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c index 2829b8e..67668d5 100644 --- a/drivers/mci/mci-core.c +++ b/drivers/mci/mci-core.c @@ -667,10 +667,6 @@ if (clock < host->f_min) clock = host->f_min; - /* check against the limit at the card's side */ - if (mci->tran_speed != 0 && clock > mci->tran_speed) - clock = mci->tran_speed; - host->clock = clock; /* the new target frequency */ mci_set_ios(mci); } @@ -922,11 +918,8 @@ } mci_set_bus_width(mci, MMC_BUS_WIDTH_4); } - /* if possible, speed up the transfer */ - if (mci_caps(mci) & MMC_CAP_SD_HIGHSPEED) - mci_set_clock(mci, 50000000); - else - mci_set_clock(mci, 25000000); + + mci_set_clock(mci, mci->tran_speed); return 0; } @@ -948,13 +941,13 @@ /* if possible, speed up the transfer */ if (mci_caps(mci) & MMC_CAP_MMC_HIGHSPEED) { if (mci->card_caps & MMC_CAP_MMC_HIGHSPEED_52MHZ) - mci_set_clock(mci, 52000000); + mci->tran_speed = 52000000; else - mci_set_clock(mci, 26000000); - } else { - mci_set_clock(mci, 20000000); + mci->tran_speed = 26000000; } + mci_set_clock(mci, mci->tran_speed); + /* * Unlike SD, MMC cards dont have a configuration register to notify * supported bus width. So bus test command should be run to identify diff --git a/include/mci.h b/include/mci.h index edb7c7f..1ca00c7 100644 --- a/include/mci.h +++ b/include/mci.h @@ -336,7 +336,7 @@ unsigned csd[4]; /**< card's "card specific data register" */ unsigned cid[4]; /**< card's "card identification register" */ unsigned short rca; /* FIXME */ - unsigned tran_speed; /**< not yet used */ + unsigned tran_speed; /**< Maximum transfer speed */ /** currently used data block length for read accesses */ unsigned read_bl_len; /** currently used data block length for write accesses */