lkml.org 
[lkml]   [2008]   [Dec]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 1/8] SDHCI: Add timeout hooks
    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);
    };


    --
    Ben (ben@fluff.org, http://www.fluff.org/)

    'a smiley only costs 4 bytes'


    \
     
     \ /
      Last update: 2008-12-02 16:45    [W:0.021 / U:119.756 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site