The patch titled sdhci: implement CAP_CLOCK_BASE_BROKEN quirk has been added to the -mm tree. Its filename is sdhci-implement-cap_clock_base_broken-quirk.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: sdhci: implement CAP_CLOCK_BASE_BROKEN quirk From: Anton Vorontsov <avorontsov@xxxxxxxxxxxxx> Some hosts (e.g. as found in CNS3xxx SOCs) report wrong value in CLOCK_BASE capability field, and currently there is no way to force the SDHCI core to use the platform-provided base clock value. This patch implements CAP_CLOCK_BASE_BROKEN quirk. When enabled, the SDHCI core will always use base clock frequency provided by the platform. Signed-off-by: Anton Vorontsov <avorontsov@xxxxxxxxxxxxx> Cc: Richard Röjfors <richard.rojfors@xxxxxxxxxxxxxx> Cc: David Vrabel <david.vrabel@xxxxxxx> Cc: Pierre Ossman <pierre@xxxxxxxxx> Cc: Ben Dooks <ben@xxxxxxxxxxxx> Cc: <linux-mmc@xxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/mmc/host/sdhci.c | 3 ++- drivers/mmc/host/sdhci.h | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff -puN drivers/mmc/host/sdhci.c~sdhci-implement-cap_clock_base_broken-quirk drivers/mmc/host/sdhci.c --- a/drivers/mmc/host/sdhci.c~sdhci-implement-cap_clock_base_broken-quirk +++ a/drivers/mmc/host/sdhci.c @@ -1743,7 +1743,8 @@ int sdhci_add_host(struct sdhci_host *ho host->max_clk = (caps & SDHCI_CLOCK_BASE_MASK) >> SDHCI_CLOCK_BASE_SHIFT; host->max_clk *= 1000000; - if (host->max_clk == 0) { + if (host->max_clk == 0 || host->quirks & + SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN) { if (!host->ops->get_max_clock) { printk(KERN_ERR "%s: Hardware doesn't specify base clock " diff -puN drivers/mmc/host/sdhci.h~sdhci-implement-cap_clock_base_broken-quirk drivers/mmc/host/sdhci.h --- a/drivers/mmc/host/sdhci.h~sdhci-implement-cap_clock_base_broken-quirk +++ a/drivers/mmc/host/sdhci.h @@ -236,6 +236,8 @@ struct sdhci_host { #define SDHCI_QUIRK_DELAY_AFTER_POWER (1<<23) /* Controller uses SDCLK instead of TMCLK for data timeouts */ #define SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK (1<<24) +/* Controller reports wrong base clock capability */ +#define SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN (1<<25) int irq; /* Device IRQ */ void __iomem * ioaddr; /* Mapped address */ _ Patches currently in -mm which might be from avorontsov@xxxxxxxxxxxxx are linux-next.patch gpiolib-introduce-chip-addition-removal-notifier.patch of-gpio-add-support-for-two-stage-registration-for-the-of_gpio_chips.patch of-gpio-implement-gpiolib-notifier-hooks.patch of-gpio-implement-gpiolib-notifier-hooks-fix.patch of-gpio-implement-gpiolib-notifier-hooks-fix-fix2.patch powerpc-mcu_mpc8349emitx-remove-of-gpio-handling-stuff.patch gpiolib-cosmetic-improvements-for-error-handling-in-gpiochip_add.patch sdhci-implement-cap_clock_base_broken-quirk.patch sdhci-pltfm-implement-platform-data-passing.patch sdhci-pltfm-do-not-print-errors-in-case-of-an-extended-iomem-size.patch -- 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