On Mon, Feb 21, 2011 at 11:37 AM, Anand Gadiyar <gadi...@ti.com> wrote:
> The OMAP HSMMC driver uses an ocr_mask to determine the
> list of voltages supported by the card. It populates this
> mask based on the list of voltages supported by the
> regulator that supplies the voltage.
>
> Commit 64be97822b (omap4 hsmmc: Update ocr mask for MMC2 for
> regulator to use) passed a fixed ocr_mask from the OMAP4 SDP
> board file to limit the voltage to 2.9-3.0 Volts, and updated
> the driver to use this mask if provided, instead of using the
> regulator's supported voltages.
>
> However the commit is buggy - the ocr_mask is overridden
> by the regulator's capabilities anyway. Fix this.
>
> (The bug shows up when a system-wide suspend is attempted
> on the OMAP4 SDP/Blaze platforms. The eMMC card comes up
> at 3V, but drops to 1.65V after the system resumes).
>
> Signed-off-by: Anand Gadiyar <gadi...@ti.com>

Tested this patch on OMAP4430SDP & OMAP4 Blaze.

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

> Cc: Kishore Kadiyala <kishore.kadiy...@ti.com>
> Cc: Tony Lindgren <t...@atomide.com>
> Cc: Madhusudhan Chikkature <madhu...@ti.com>
> Cc: Chris Ball <c...@laptop.org>
> ---
> Tony, Chris,
>
> This is only a partial fix. It fixes the obvious bug introduced
> in the commit I noted above, however it is not the final
> fix. I'm not convinced the way the regulators are handled
> in this driver is correct - I'm still studying the code and
> will come up with a proper fix later.
>
> However, this does fix a real bug and I believe the bug is
> obvious. Would be nice to get this into the -rc series if
> we still can.
>
> - Anand
>
>  drivers/mmc/host/omap_hsmmc.c |    1 -
>  1 file changed, 1 deletion(-)
>
> Index: linux-2.6/drivers/mmc/host/omap_hsmmc.c
> ===================================================================
> --- linux-2.6.orig/drivers/mmc/host/omap_hsmmc.c
> +++ linux-2.6/drivers/mmc/host/omap_hsmmc.c
> @@ -413,7 +413,6 @@ static int omap_hsmmc_reg_get(struct oma
>                                return -EINVAL;
>                        }
>                }
> -               mmc_slot(host).ocr_mask = mmc_regulator_get_ocrmask(reg);
>
>                /* Allow an aux regulator */
>                reg = regulator_get(host->dev, "vmmc_aux");
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to