lkml.org 
[lkml]   [2008]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    SubjectRe: [patch 1/8] SDHCI: Add timeout hooks
    From
    On Tue, Dec 02, 2008 at 03:40:19PM +0000, Ben Dooks wrote:
    > Some controllers do not provide clock information in their
    > capabilities (in the Samsung case, it is because there are
    > multiple clock sources available to the controller). Add hooks
    > to allow the system to supply clock information.
    >
    > Signed-off-by: Ben Dooks <ben-linux@fluff.org>
    >
    > Index: linux.git/drivers/mmc/host/sdhci.c
    > ===================================================================
    > --- linux.git.orig/drivers/mmc/host/sdhci.c 2008-12-01 19:11:54.000000000 +0000
    > +++ linux.git/drivers/mmc/host/sdhci.c 2008-12-01 19:24:14.000000000 +0000
    > @@ -1606,18 +1606,26 @@ 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) {
    > - printk(KERN_ERR "%s: Hardware doesn't specify base clock "
    > - "frequency.\n", mmc_hostname(mmc));
    > + if (host->ops->get_max_clock)
    > + host->max_clk = host->ops->get_max_clock(host);
    > + else
    > + printk(KERN_ERR
    > + "%s: Hardware doesn't specify base clock "
    > + "frequency.\n", mmc_hostname(mmc));
    > return -ENODEV;
    > }
    > - host->max_clk *= 1000000;
    >
    > host->timeout_clk =
    > (caps & SDHCI_TIMEOUT_CLK_MASK) >> SDHCI_TIMEOUT_CLK_SHIFT;
    > if (host->timeout_clk == 0) {
    > - printk(KERN_ERR "%s: Hardware doesn't specify timeout clock "
    > - "frequency.\n", mmc_hostname(mmc));
    > + if (host->ops->get_timeout_clock)
    > + host->timeout_clk = host->ops->get_timeout_clock(host);
    > + else
    > + printk(KERN_ERR
    > + "%s: Hardware doesn't specify timeout clock "
    > + "frequency.\n", mmc_hostname(mmc));
    > return -ENODEV;
    > }
    > if (caps & SDHCI_TIMEOUT_CLK_UNIT)
    > Index: linux.git/drivers/mmc/host/sdhci.h
    > ===================================================================
    > --- linux.git.orig/drivers/mmc/host/sdhci.h 2008-12-01 19:11:54.000000000 +0000
    > +++ linux.git/drivers/mmc/host/sdhci.h 2008-12-01 19:17:55.000000000 +0000
    > @@ -267,6 +267,8 @@ struct sdhci_host {
    >
    > struct sdhci_ops {
    > int (*enable_dma)(struct sdhci_host *host);
    > + unsigned int (*get_max_clock)(struct sdhci_host *host);
    > + unsigned int (*get_timeout_clock)(struct sdhci_host *host);
    > };
    >

    Can we cache the multiple dereferences. Here host->ops can be
    saved to a local, instead of multiple dereference several time.




    \
     
     \ /
      Last update: 2008-12-02 17:51    [W:0.027 / U:121.672 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site