There is an upcoming patch for core.c shown in the git tree shown below. A standard sdhci.c controller running at 50MHz can divide the speed down to 50MHz/256 or 193000 bits/sec. This MINIMUM value is larger than the +#define MMC_INIT_FREQ 64000 and will invoke the error message in static void mmc_power_up(struct mmc_host *host) in core.c pr_warning("%s: Minimum clock frequency too high for " "identification mode\n", mmc_hostname(host)); ======= The minimum value should be raised to a more appropriate value. Philip ==== upcoming patch in git tree for 2.6.34 === --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -907,12 +907,12 @@ static void mmc_power_up(struct mmc_host *host) */ mmc_delay(10); - if (host->f_min > 400000) { + if (host->f_min > MMC_INIT_FREQ) { pr_warning("%s: Minimum clock frequency too high for " "identification mode\n", mmc_hostname(host)); host->ios.clock = host->f_min; } else - host->ios.clock = 400000; + host->ios.clock = MMC_INIT_FREQ; host->ios.power_mode = MMC_POWER_ON; mmc_set_ios(host); --- a/drivers/mmc/core/core.h +++ b/drivers/mmc/core/core.h @@ -15,6 +15,16 @@ #define MMC_CMD_RETRIES 3 +/* Spec says initialisation must happen at or below 400kHz. + * Some MMC cards fail to initialise at 400kHz (even as low as 200kHz) and + * Some host controllers (eg. tmio_mmc) cannot garantee to set the clock below + * 400kHz (it rounds to the closest clock freq available). + * + * 64 kHz seems like a good speed/reliability compromise. + */ + +#define MMC_INIT_FREQ 64000 + struct mmc_bus_ops { int (*awake)(struct mmc_host *); int (*sleep)(struct mmc_host *); -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html