lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <87tyv0p0no.fsf@deeprootsystems.com>
Date:	Tue, 05 Jan 2010 15:55:23 -0800
From:	Kevin Hilman <khilman@...prootsystems.com>
To:	Chaithrika U S <chaithrika@...com>
Cc:	linux-kernel@...r.kernel.org, akpm@...ux-foundation.org,
	davinci-linux-open-source@...ux.davincidsp.com
Subject: Re: [PATCH 1/2] davinci: MMC: Add a function to control reset state of the controller

Chaithrika U S <chaithrika@...com> writes:

> Add a helper function which will aid in changing the reset
> status of the controller.
>
> Signed-off-by: Chaithrika U S <chaithrika@...com>

Signed-off-by: Kevin Hilman <khilman@...prootsystems.com>


> ---
> Applies to Linus' kernel tree.
>
>  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 dd45e7c..25645bf 100644
> --- a/drivers/mmc/host/davinci_mmc.c
> +++ b/drivers/mmc/host/davinci_mmc.c
> @@ -884,19 +884,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)
> @@ -1100,15 +1107,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);
> @@ -1116,12 +1116,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.5.6
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ