"Munegowda, Keshava" <keshava_mgowda@xxxxxx> writes: > On Thu, May 24, 2012 at 5:55 AM, Kevin Hilman <khilman@xxxxxx> wrote: >> On 05/23/2012 05:01 PM, Kevin Hilman wrote: >>> >>> Hi Keshava, >>> >>> Using current l-o master, I noticed that CORE was not hitting retention >>> in idle on my 3530/Overo. CORE hits retention on suspend just fine. >>> >>> Debugging this, I found that usbtll_fck was still enabled during idle, >>> thus preventing CORE from hitting retention. >>> >>> To test, I disabled USB host (CONFIG_MFD_OMAP_USB_HOST=n in .config) and >>> was then started seeing CORE hit retention in idle again. >>> >>> I have nothing plugged into the USB host port on this board, so I >>> would've expected that runtime PM would've kicked in and shutdown this >>> clock. >>> >>> Any ideas what's going on here? Is this expected behavior? >>> >> >> If it helps, attached is a bootlog after enabling debug for >> mfd/omap-usb-host.c as well. Notice there's a couple of clock-related >> warnings from this driver as well. Not sure if they're relevant: >> >> usbhs_omap: alias fck already exists >> usbhs_omap usbhs_omap: xclk60mhsp2_ck set parentfailed error:-22 > > these clocks were specific to omap4 and it should not cause any > problem to omap3 boards. OK, they seem unrelated to this CORE retention problem, but the warnings should still be understood and fixed. > I will try to reproduce this on 3430 sdp to explore further. Thanks for looking. Note that I only saw this problem on my 3530 platforms (Overo, OMAP3EVM.) My 3430/n900 doesn't support USBHS host AFAICT, so didn't test there. FYI, in order to hit core retention, there's another bug in mainline where the counter_32k IP also prevents retention. You'll need the hack below[1] (on top of l-o master) to workaround this problem (real patch with description will be coming soon.) Also, you'll likely need the UART mux patch from Govindraj[2]. Without this, UARTs in CORE may have runtime PM disabled, and thus also prevent CORE from hitting retention. Kevin [1] diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 840929b..42eb39d 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c @@ -292,6 +292,7 @@ static int __init omap2_sync32k_clocksource_init(void) __func__, ret); return ret; } + omap_hwmod_set_slave_idlemode(oh, SIDLE_FORCE); ret = omap_init_clocksource_32k(vbase); if (ret) { [2] http://marc.info/?l=linux-omap&m=133672962809100&w=2 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html