Hi Kristo,
There are some issues with this patch in PM branch.
Please find my comments inline.
Regards,
Ajay
> OMAP3: PM: Disable OTG autoidle when waking up from off-mode
>
> OMAP3 sleep can be prevented in some cases where OTG autoidle is
> enabled.
> This patch force disables autoidle during wakeup from off-mode. See
> omap
> errata 1.164.
>
> This fix can't be done in driver level, as off-mode entry resets and
> enables
> the autoidle bit, and driver does not access the register after each
> off-mode
> entry even if it is loaded.
>
> Tero Kristo <tero.kristo nokia.com>
> Kevin Hilman <khilman deeprootsystems.com>
>
> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
> index 81ed252..ddd19cd 100644
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -37,6 +37,7 @@
> #include <plat/gpmc.h>
> #include <plat/dma.h>
> #include <plat/dmtimer.h>
> +#include <plat/usb.h>
>
> #include <asm/tlbflush.h>
>
> @@ -430,6 +431,11 @@ void omap_sram_idle(void)
> omap3_prcm_restore_context();
> omap3_sram_restore_context();
> omap2_sms_restore_context();
> + /*
> + * Errata 1.164 fix : OTG autoidle can prevent
> + * sleep
> + */
> + usb_musb_disable_autoidle();
Do we really need it? We are anyway disabling autoidle in
Drivers/usb/musb/omap2430.c file.
> clk_disable(otg_clk);
> - clk_put(otg_clk);
> - }
> +}
<snip..>
>
> - iounmap(otg_base);
> +void usb_musb_disable_autoidle(void)
> +{
> + __raw_writel(0, otg_base + OTG_SYSCONFIG);
We should first read the register and the reset the first bit D0
for disabling autoidle.
Also, musb clock needs to be enabled during this function call.
When I tool musb save/restore patch (accepted and in queue),
I found a system hand during resume.
-Ajay
> }
--
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