All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kishore Kadiyala <kishorek.kadiyala@gmail.com>
To: Balaji T K <balajitk@ti.com>
Cc: tony@atomide.com, linux-omap@vger.kernel.org, cjb@laptop.org,
	linux-arm-kernel@lists.infradead.org, linux-mmc@vger.kernel.org,
	madhu.cr@ti.com
Subject: Re: [PATCH 2/2] ARM: OMAP4: MMC: no regulator off during probe for eMMC
Date: Tue, 31 May 2011 20:11:48 +0530	[thread overview]
Message-ID: <BANLkTiks92tGJfaTVW2b7DTmU0SuQpbZ4g@mail.gmail.com> (raw)
In-Reply-To: <1306765534-20103-3-git-send-email-balajitk@ti.com>

On Mon, May 30, 2011 at 7:55 PM, Balaji T K <balajitk@ti.com> wrote:
> eMMC does not handle power off when not in sleep state,
> Skip regulator disable during probe when eMMC is
> not in known state - state left by bootloader.
>
> Resolves eMMC failure on OMAP4
> mmc0: error -110 whilst initialising MMC card
>
> Signed-off-by: Balaji T K <balajitk@ti.com>

Tested-by:  Kishore Kadiyala <kishore.kadiyala@ti.com>
Acked-by:  Kishore Kadiyala <kishore.kadiyala@ti.com>

> ---
>  arch/arm/mach-omap2/board-4430sdp.c   |    1 +
>  arch/arm/mach-omap2/hsmmc.c           |    3 +++
>  arch/arm/mach-omap2/hsmmc.h           |    1 +
>  arch/arm/plat-omap/include/plat/mmc.h |    3 +++
>  drivers/mmc/host/omap_hsmmc.c         |    3 +++
>  5 files changed, 11 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
> index 73fa90b..b324605 100644
> --- a/arch/arm/mach-omap2/board-4430sdp.c
> +++ b/arch/arm/mach-omap2/board-4430sdp.c
> @@ -322,6 +322,7 @@ static struct omap2_hsmmc_info mmc[] = {
>                .gpio_wp        = -EINVAL,
>                .nonremovable   = true,
>                .ocr_mask       = MMC_VDD_29_30,
> +               .no_off_init    = true,
>        },
>        {
>                .mmc            = 1,
> diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c
> index 3f8dc16..28ca144 100644
> --- a/arch/arm/mach-omap2/hsmmc.c
> +++ b/arch/arm/mach-omap2/hsmmc.c
> @@ -338,6 +338,9 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
>        if (c->no_off)
>                mmc->slots[0].no_off = 1;
>
> +       if (c->no_off_init)
> +               mmc->slots[0].no_regulator_off_init = c->no_off_init;
> +
>        if (c->vcc_aux_disable_is_sleep)
>                mmc->slots[0].vcc_aux_disable_is_sleep = 1;
>
> diff --git a/arch/arm/mach-omap2/hsmmc.h b/arch/arm/mach-omap2/hsmmc.h
> index f119348..f757e78 100644
> --- a/arch/arm/mach-omap2/hsmmc.h
> +++ b/arch/arm/mach-omap2/hsmmc.h
> @@ -18,6 +18,7 @@ struct omap2_hsmmc_info {
>        bool    nonremovable;   /* Nonremovable e.g. eMMC */
>        bool    power_saving;   /* Try to sleep or power off when possible */
>        bool    no_off;         /* power_saving and power is not to go off */
> +       bool    no_off_init;    /* no power off when not in MMC sleep state */
>        bool    vcc_aux_disable_is_sleep; /* Regulator off remapped to sleep */
>        int     gpio_cd;        /* or -EINVAL */
>        int     gpio_wp;        /* or -EINVAL */
> diff --git a/arch/arm/plat-omap/include/plat/mmc.h b/arch/arm/plat-omap/include/plat/mmc.h
> index f38fef9..c7b8741 100644
> --- a/arch/arm/plat-omap/include/plat/mmc.h
> +++ b/arch/arm/plat-omap/include/plat/mmc.h
> @@ -101,6 +101,9 @@ struct omap_mmc_platform_data {
>                /* If using power_saving and the MMC power is not to go off */
>                unsigned no_off:1;
>
> +               /* eMMC does not handle power off when not in sleep state */
> +               unsigned no_regulator_off_init:1;
> +
>                /* Regulator off remapped to sleep */
>                unsigned vcc_aux_disable_is_sleep:1;
>
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index 259ece0..5b2e215 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -435,6 +435,9 @@ static int omap_hsmmc_reg_get(struct omap_hsmmc_host *host)
>                reg = regulator_get(host->dev, "vmmc_aux");
>                host->vcc_aux = IS_ERR(reg) ? NULL : reg;
>
> +               /* For eMMC do not power off when not in sleep state */
> +               if (mmc_slot(host).no_regulator_off_init)
> +                       return 0;
>                /*
>                * UGLY HACK:  workaround regulator framework bugs.
>                * When the bootloader leaves a supply active, it's
> --
> 1.7.0.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

WARNING: multiple messages have this Message-ID (diff)
From: kishorek.kadiyala@gmail.com (Kishore Kadiyala)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/2] ARM: OMAP4: MMC: no regulator off during probe for eMMC
Date: Tue, 31 May 2011 20:11:48 +0530	[thread overview]
Message-ID: <BANLkTiks92tGJfaTVW2b7DTmU0SuQpbZ4g@mail.gmail.com> (raw)
In-Reply-To: <1306765534-20103-3-git-send-email-balajitk@ti.com>

On Mon, May 30, 2011 at 7:55 PM, Balaji T K <balajitk@ti.com> wrote:
> eMMC does not handle power off when not in sleep state,
> Skip regulator disable during probe when eMMC is
> not in known state - state left by bootloader.
>
> Resolves eMMC failure on OMAP4
> mmc0: error -110 whilst initialising MMC card
>
> Signed-off-by: Balaji T K <balajitk@ti.com>

Tested-by:  Kishore Kadiyala <kishore.kadiyala@ti.com>
Acked-by:  Kishore Kadiyala <kishore.kadiyala@ti.com>

> ---
> ?arch/arm/mach-omap2/board-4430sdp.c ? | ? ?1 +
> ?arch/arm/mach-omap2/hsmmc.c ? ? ? ? ? | ? ?3 +++
> ?arch/arm/mach-omap2/hsmmc.h ? ? ? ? ? | ? ?1 +
> ?arch/arm/plat-omap/include/plat/mmc.h | ? ?3 +++
> ?drivers/mmc/host/omap_hsmmc.c ? ? ? ? | ? ?3 +++
> ?5 files changed, 11 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
> index 73fa90b..b324605 100644
> --- a/arch/arm/mach-omap2/board-4430sdp.c
> +++ b/arch/arm/mach-omap2/board-4430sdp.c
> @@ -322,6 +322,7 @@ static struct omap2_hsmmc_info mmc[] = {
> ? ? ? ? ? ? ? ?.gpio_wp ? ? ? ?= -EINVAL,
> ? ? ? ? ? ? ? ?.nonremovable ? = true,
> ? ? ? ? ? ? ? ?.ocr_mask ? ? ? = MMC_VDD_29_30,
> + ? ? ? ? ? ? ? .no_off_init ? ?= true,
> ? ? ? ?},
> ? ? ? ?{
> ? ? ? ? ? ? ? ?.mmc ? ? ? ? ? ?= 1,
> diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c
> index 3f8dc16..28ca144 100644
> --- a/arch/arm/mach-omap2/hsmmc.c
> +++ b/arch/arm/mach-omap2/hsmmc.c
> @@ -338,6 +338,9 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
> ? ? ? ?if (c->no_off)
> ? ? ? ? ? ? ? ?mmc->slots[0].no_off = 1;
>
> + ? ? ? if (c->no_off_init)
> + ? ? ? ? ? ? ? mmc->slots[0].no_regulator_off_init = c->no_off_init;
> +
> ? ? ? ?if (c->vcc_aux_disable_is_sleep)
> ? ? ? ? ? ? ? ?mmc->slots[0].vcc_aux_disable_is_sleep = 1;
>
> diff --git a/arch/arm/mach-omap2/hsmmc.h b/arch/arm/mach-omap2/hsmmc.h
> index f119348..f757e78 100644
> --- a/arch/arm/mach-omap2/hsmmc.h
> +++ b/arch/arm/mach-omap2/hsmmc.h
> @@ -18,6 +18,7 @@ struct omap2_hsmmc_info {
> ? ? ? ?bool ? ?nonremovable; ? /* Nonremovable e.g. eMMC */
> ? ? ? ?bool ? ?power_saving; ? /* Try to sleep or power off when possible */
> ? ? ? ?bool ? ?no_off; ? ? ? ? /* power_saving and power is not to go off */
> + ? ? ? bool ? ?no_off_init; ? ?/* no power off when not in MMC sleep state */
> ? ? ? ?bool ? ?vcc_aux_disable_is_sleep; /* Regulator off remapped to sleep */
> ? ? ? ?int ? ? gpio_cd; ? ? ? ?/* or -EINVAL */
> ? ? ? ?int ? ? gpio_wp; ? ? ? ?/* or -EINVAL */
> diff --git a/arch/arm/plat-omap/include/plat/mmc.h b/arch/arm/plat-omap/include/plat/mmc.h
> index f38fef9..c7b8741 100644
> --- a/arch/arm/plat-omap/include/plat/mmc.h
> +++ b/arch/arm/plat-omap/include/plat/mmc.h
> @@ -101,6 +101,9 @@ struct omap_mmc_platform_data {
> ? ? ? ? ? ? ? ?/* If using power_saving and the MMC power is not to go off */
> ? ? ? ? ? ? ? ?unsigned no_off:1;
>
> + ? ? ? ? ? ? ? /* eMMC does not handle power off when not in sleep state */
> + ? ? ? ? ? ? ? unsigned no_regulator_off_init:1;
> +
> ? ? ? ? ? ? ? ?/* Regulator off remapped to sleep */
> ? ? ? ? ? ? ? ?unsigned vcc_aux_disable_is_sleep:1;
>
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index 259ece0..5b2e215 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -435,6 +435,9 @@ static int omap_hsmmc_reg_get(struct omap_hsmmc_host *host)
> ? ? ? ? ? ? ? ?reg = regulator_get(host->dev, "vmmc_aux");
> ? ? ? ? ? ? ? ?host->vcc_aux = IS_ERR(reg) ? NULL : reg;
>
> + ? ? ? ? ? ? ? /* For eMMC do not power off when not in sleep state */
> + ? ? ? ? ? ? ? if (mmc_slot(host).no_regulator_off_init)
> + ? ? ? ? ? ? ? ? ? ? ? return 0;
> ? ? ? ? ? ? ? ?/*
> ? ? ? ? ? ? ? ?* UGLY HACK: ?workaround regulator framework bugs.
> ? ? ? ? ? ? ? ?* When the bootloader leaves a supply active, it's
> --
> 1.7.0.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>

  parent reply	other threads:[~2011-05-31 14:42 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-30 14:25 [PATCH 0/2] ARM: OMAP4: fix MMC failure due to regulator enable/disable ops Balaji T K
2011-05-30 14:25 ` Balaji T K
2011-05-30 14:25 ` [PATCH 1/2] ARM: OMAP4: MMC: increase delay for pbias Balaji T K
2011-05-30 14:25   ` Balaji T K
2011-05-31 13:28   ` Tony Lindgren
2011-05-31 13:28     ` Tony Lindgren
2011-05-31 14:04   ` Kishore Kadiyala
2011-05-31 14:04     ` Kishore Kadiyala
2011-06-01  7:41   ` Tony Lindgren
2011-06-01  7:41     ` Tony Lindgren
2011-06-01  9:18     ` T Krishnamoorthy, Balaji
2011-06-01  9:18       ` T Krishnamoorthy, Balaji
2011-05-30 14:25 ` [PATCH 2/2] ARM: OMAP4: MMC: no regulator off during probe for eMMC Balaji T K
2011-05-30 14:25   ` Balaji T K
2011-05-31 13:26   ` Tony Lindgren
2011-05-31 13:26     ` Tony Lindgren
2011-05-31 13:32     ` T Krishnamoorthy, Balaji
2011-05-31 13:32       ` T Krishnamoorthy, Balaji
2011-05-31 13:45       ` Tony Lindgren
2011-05-31 13:45         ` Tony Lindgren
2011-05-31 14:41   ` Kishore Kadiyala [this message]
2011-05-31 14:41     ` Kishore Kadiyala

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BANLkTiks92tGJfaTVW2b7DTmU0SuQpbZ4g@mail.gmail.com \
    --to=kishorek.kadiyala@gmail.com \
    --cc=balajitk@ti.com \
    --cc=cjb@laptop.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=madhu.cr@ti.com \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.