lkml.org 
[lkml]   [2010]   [Mar]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/2] davinci: MMC: Add a function to control reset state of the controller
    Date
    From: Chaithrika U S <chaithrika@ti.com>

    Add a helper function which will aid in changing the reset
    status of the controller.

    Signed-off-by: Chaithrika U S <chaithrika@ti.com>
    Acked-by: Kevin Hilman <khilman@deeprootsystems.com>
    ---
    I thought this series had made it into -mm for 2.6.34, but I guess not.
    Here it is again for 2.6.35.

    drivers/mmc/host/davinci_mmc.c | 37 ++++++++++++++++---------------------
    1 files changed, 16 insertions(+), 21 deletions(-)

    diff --git a/drivers/mmc/host/davinci_mmc.c b/drivers/mmc/host/davinci_mmc.c
    index 547d29c..56afe0a 100644
    --- a/drivers/mmc/host/davinci_mmc.c
    +++ b/drivers/mmc/host/davinci_mmc.c
    @@ -909,19 +909,26 @@ static void mmc_davinci_cmd_done(struct mmc_davinci_host *host,
    }
    }

    -static void
    -davinci_abort_data(struct mmc_davinci_host *host, struct mmc_data *data)
    +static inline void mmc_davinci_reset_ctrl(struct mmc_davinci_host *host,
    + int val)
    {
    u32 temp;

    - /* reset command and data state machines */
    temp = readl(host->base + DAVINCI_MMCCTL);
    - writel(temp | MMCCTL_CMDRST | MMCCTL_DATRST,
    - host->base + DAVINCI_MMCCTL);
    + if (val) /* reset */
    + temp |= MMCCTL_CMDRST | MMCCTL_DATRST;
    + else /* enable */
    + temp &= ~(MMCCTL_CMDRST | MMCCTL_DATRST);

    - temp &= ~(MMCCTL_CMDRST | MMCCTL_DATRST);
    - udelay(10);
    writel(temp, host->base + DAVINCI_MMCCTL);
    + udelay(10);
    +}
    +
    +static void
    +davinci_abort_data(struct mmc_davinci_host *host, struct mmc_data *data)
    +{
    + mmc_davinci_reset_ctrl(host, 1);
    + mmc_davinci_reset_ctrl(host, 0);
    }

    static irqreturn_t mmc_davinci_irq(int irq, void *dev_id)
    @@ -1125,15 +1132,8 @@ static inline void mmc_davinci_cpufreq_deregister(struct mmc_davinci_host *host)
    #endif
    static void __init init_mmcsd_host(struct mmc_davinci_host *host)
    {
    - /* DAT line portion is diabled and in reset state */
    - writel(readl(host->base + DAVINCI_MMCCTL) | MMCCTL_DATRST,
    - host->base + DAVINCI_MMCCTL);
    -
    - /* CMD line portion is diabled and in reset state */
    - writel(readl(host->base + DAVINCI_MMCCTL) | MMCCTL_CMDRST,
    - host->base + DAVINCI_MMCCTL);

    - udelay(10);
    + mmc_davinci_reset_ctrl(host, 1);

    writel(0, host->base + DAVINCI_MMCCLK);
    writel(MMCCLK_CLKEN, host->base + DAVINCI_MMCCLK);
    @@ -1141,12 +1141,7 @@ static void __init init_mmcsd_host(struct mmc_davinci_host *host)
    writel(0x1FFF, host->base + DAVINCI_MMCTOR);
    writel(0xFFFF, host->base + DAVINCI_MMCTOD);

    - writel(readl(host->base + DAVINCI_MMCCTL) & ~MMCCTL_DATRST,
    - host->base + DAVINCI_MMCCTL);
    - writel(readl(host->base + DAVINCI_MMCCTL) & ~MMCCTL_CMDRST,
    - host->base + DAVINCI_MMCCTL);
    -
    - udelay(10);
    + mmc_davinci_reset_ctrl(host, 0);
    }

    static int __init davinci_mmcsd_probe(struct platform_device *pdev)
    --
    1.7.0.2


    \
     
     \ /
      Last update: 2010-03-16 21:37    [W:0.048 / U:92.032 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site