[PATCH V2 16/16] mmc: omap_hsmmc: add a hardware reset before initialization
Varadarajan, Charulatha
charu at ti.com
Fri May 6 09:26:36 EDT 2011
Hi,
On Fri, May 6, 2011 at 14:44, Adrian Hunter <adrian.hunter at nokia.com> wrote:
> After a warm restart, an eMMC which cannot be powered off is
> in an unknown state, so reset it to be sure it will initialize.
>
> Signed-off-by: Adrian Hunter <adrian.hunter at nokia.com>
> ---
> drivers/mmc/host/omap_hsmmc.c | 38 +++++++++++++++++++++++++++++++++++++-
> 1 files changed, 37 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index e1c9017..70b8ef8 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -530,10 +530,25 @@ static int omap_hsmmc_gpio_init(struct omap_mmc_platform_data *pdata)
> } else
> pdata->slots[0].gpio_wp = -EINVAL;
>
> + if (gpio_is_valid(pdata->slots[0].gpio_hw_reset)) {
Not required as gpio_request takes care of it.
> + ret = gpio_request(pdata->slots[0].gpio_hw_reset,
> + "mmc_hw_reset");
> + if (ret)
> + goto err_free_wp;
> + ret = gpio_direction_output(pdata->slots[0].gpio_hw_reset, 1);
Use gpio_request_one instead.
> + if (ret)
> + goto err_free_hw_reset;
> + } else
> + pdata->slots[0].gpio_hw_reset = -EINVAL;
> +
> return 0;
>
> +
> +err_free_hw_reset:
> + gpio_free(pdata->slots[0].gpio_hw_reset);
> err_free_wp:
> - gpio_free(pdata->slots[0].gpio_wp);
> + if (gpio_is_valid(pdata->slots[0].gpio_wp))
Not required as gpio_free takes care of it.
> + gpio_free(pdata->slots[0].gpio_wp);
> err_free_cd:
> if (gpio_is_valid(pdata->slots[0].switch_pin))
> err_free_sp:
> @@ -543,6 +558,8 @@ err_free_sp:
>
> static void omap_hsmmc_gpio_free(struct omap_mmc_platform_data *pdata)
> {
> + if (gpio_is_valid(pdata->slots[0].gpio_hw_reset))
ditto
> + gpio_free(pdata->slots[0].gpio_hw_reset);
> if (gpio_is_valid(pdata->slots[0].gpio_wp))
> gpio_free(pdata->slots[0].gpio_wp);
> if (gpio_is_valid(pdata->slots[0].switch_pin))
<<snip>>
More information about the linux-arm-kernel
mailing list