Thread (11 messages) 11 messages, 6 authors, 2012-03-02
STALE5218d

[PATCH] ARM: OMAP: hsmmc: add max_freq field

From: zonque@gmail.com (Daniel Mack)
Date: 2011-12-22 23:02:39
Also in: linux-mmc, linux-omap

On 12/22/2011 08:37 PM, Kishore Kadiyala wrote:
On Wed, Dec 14, 2011 at 6:52 PM, Daniel Mack [off-list ref] wrote:
quoted
External circuitry like level shifters may limit the maximum operation
speed of the hsmmc controller. Add a field to struct omap2_hsmmc_info
so boards can adjust the setting on demand.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Cc: Tony Lindgren <tony@atomide.com>
---
 arch/arm/mach-omap2/hsmmc.c   |    1 +
 arch/arm/mach-omap2/hsmmc.h   |    2 ++
 drivers/mmc/host/omap_hsmmc.c |    8 ++++++--
 3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c
index f4a1020..4c7bc36 100644
--- a/arch/arm/mach-omap2/hsmmc.c
+++ b/arch/arm/mach-omap2/hsmmc.c
@@ -298,6 +298,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
       mmc->slots[0].caps = c->caps;
       mmc->slots[0].internal_clock = !c->ext_clock;
       mmc->dma_mask = 0xffffffff;
+       mmc->max_freq = c->max_freq;
       if (cpu_is_omap44xx())
               mmc->reg_offset = OMAP4_MMC_REG_OFFSET;
       else
diff --git a/arch/arm/mach-omap2/hsmmc.h b/arch/arm/mach-omap2/hsmmc.h
index f757e78..65a8c12 100644
--- a/arch/arm/mach-omap2/hsmmc.h
+++ b/arch/arm/mach-omap2/hsmmc.h
@@ -25,6 +25,8 @@ struct omap2_hsmmc_info {
       char    *name;          /* or NULL for default */
       struct device *dev;     /* returned: pointer to mmc adapter */
       int     ocr_mask;       /* temporary HACK */
+       int     max_freq;       /* maximum clock, if constrained by external
+                                * circuitry, or 0 for default */
       /* Remux (pad configuration) when powering on/off */
       void (*remux)(struct device *dev, int slot, int power_on);
       /* init some special card */
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index 101cd31..8215ef9 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -1927,8 +1927,12 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev)
       if (mmc_slot(host).vcc_aux_disable_is_sleep)
               mmc_slot(host).no_off = 1;

-       mmc->f_min      = OMAP_MMC_MIN_CLOCK;
-       mmc->f_max      = OMAP_MMC_MAX_CLOCK;
+       mmc->f_min = OMAP_MMC_MIN_CLOCK;
+
+       if (pdata->max_freq > 0)
What about having check as below:
if (pdata->max_freq > 0 && pdata->max_freq < OMAP_MMC_MAX_CLOCK)
I can quickly do that if Tony agrees on it. Any opinions?

Thanks,
Daniel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help