davinci: mmc: add a function to control reset state of the controller
PATCH 6/203 davinci: mmc: add a function to control reset state of the controller
From: Chaithrika U S <[email protected]>
Add a helper function which will aid in changing the reset status of the controller.
Signed-off-by Chaithrika U S <[email protected]>
Signed-off-by Kevin Hilman <[email protected]>
Cc Vipin Bhandari <[email protected]>
Cc Sudhakar Rajashekhara <[email protected]>
Cc <[email protected]>
Signed-off-by Andrew Morton <[email protected]>
---
drivers/mmc/host/davinci_mmc.c | 37 +++++++++++++------------------ 1 file changed, 16 insertions(+), 21 deletions(-)
drivers/mmc/host/davinci_mmc.c renamed from drivers/mmc/host/davinci_mmc.c~davinci-mmc-add-a-function-to-control-reset-state-of-the-controller +16 -21
@@ -909,19 +909,26 @@ static void mmc_davinci_cmd_done(struct } } -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_d#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(strucwritel (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)
_