Jean Pihet <[email protected]> writes:

> From: Nishanth Menon <[email protected]>
>
> SmartReflex fix for erratum ID i724.
>
> Since OMAP's VP and PRM modules do not get reset by warm reset,
> we should ensure that proper shutdown procedure is followed prior
> to allowing the kernel to reboot back up.

prior to reboot?  how?

This patch only ensures a proper shutdown if the kernel goes down
cleanly.

How is this handled on reboot?

Kevin

> Without this patch, Smartreflex module might be left active or
> system might be caught in an indeterminate sequence when reboot
> is triggered, leaving the next reboot behavior to be unpredictable.
>
> Signed-off-by: Nishanth Menon <[email protected]>
> Signed-off-by: Jean Pihet <[email protected]>
> ---
>  arch/arm/mach-omap2/smartreflex.c |   24 ++++++++++++++++++++++++
>  1 files changed, 24 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/smartreflex.c 
> b/arch/arm/mach-omap2/smartreflex.c
> index ec2b0e7..9c39484 100644
> --- a/arch/arm/mach-omap2/smartreflex.c
> +++ b/arch/arm/mach-omap2/smartreflex.c
> @@ -1055,8 +1055,32 @@ static int __devexit omap_sr_remove(struct 
> platform_device *pdev)
>       return 0;
>  }
>  
> +static void __devexit omap_sr_shutdown(struct platform_device *pdev)
> +{
> +     struct omap_sr_data *pdata = pdev->dev.platform_data;
> +     struct omap_sr *sr_info;
> +
> +     if (!pdata) {
> +             dev_err(&pdev->dev, "%s: platform data missing\n", __func__);
> +             return;
> +     }
> +
> +     sr_info = _sr_lookup(pdata->voltdm);
> +     if (IS_ERR(sr_info)) {
> +             dev_warn(&pdev->dev, "%s: omap_sr struct not found\n",
> +                     __func__);
> +             return;
> +     }
> +
> +     if (sr_info->autocomp_active)
> +             sr_stop_vddautocomp(sr_info);
> +
> +     return;
> +}
> +
>  static struct platform_driver smartreflex_driver = {
>       .remove         = omap_sr_remove,
> +     .shutdown       = __devexit_p(omap_sr_shutdown),
>       .driver         = {
>               .name   = "smartreflex",
>       },
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to