Re: MFD USB host: prevents CORE retention in idle

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"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


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux