[PATCH 14/25] OMAP4: PM: Add CPUX OFF mode support
From: Shilimkar, Santosh <hidden>
Date: 2011-09-10 03:38:16
Also in:
linux-omap
IOn Sat, Sep 10, 2011 at 5:04 AM, Shawn Guo [off-list ref] wrote:
On Fri, Sep 09, 2011 at 10:29:49PM +0530, Santosh wrote:quoted
On Friday 09 September 2011 08:57 PM, Shawn Guo wrote:quoted
On Fri, Sep 09, 2011 at 07:41:08PM +0530, Shilimkar, Santosh wrote:quoted
On Fri, Sep 9, 2011 at 7:43 PM, Shawn Guo[off-list ref] ?wrote:quoted
On Fri, Sep 09, 2011 at 01:39:51PM +0530, Santosh wrote:quoted
On Friday 09 September 2011 01:34 PM, Shawn Guo wrote:quoted
Hi Santosh,[...]quoted
quoted
#ifdef CONFIG_CACHE_L2X0 ? ?/* ? ? * Clean and invalidate the L2 cache. ? ? * Common cache-l2x0.c functions can't be used here since it ? ? * uses spinlocks. We are out of coherency here with data cache ? ? * disabled. The spinlock implementation uses exclusive load/store ? ? * instruction which can fail without data cache being enabled. ? ? * OMAP4 hardware doesn't support exclusive monitor which can ? ? * overcome exclusive access issue. Because of this, CPU can ? ? * lead to deadlock. ? ? */ l2x_clean_inv: ? ?bl ? ? ?omap4_get_sar_ram_base ? ?mov ? ? r8, r0 ? ?mrc ? ? p15, 0, r5, c0, c0, 5 ? ? ? ? ? @ Read MPIDR ? ?ands ? ?r5, r5, #0x0f ? ?ldreq ? r0, [r8, #L2X0_SAVE_OFFSET0] ? ?ldrne ? r0, [r8, #L2X0_SAVE_OFFSET1] ? ?cmp ? ? r0, #3 ? ?bne ? ? do_WFIIt looks like you are bypassing L2 clean and invalidate for cases "1" and "2" here. ?But I really do not understand how you get r0 back here.The value which is passed in R0 is also stored in scratch patch memory and retrieved using L2X0_SAVE_OFFSET0. Simple :)Aha, no wonder that I read it wrongly. ?The parameter passing in r0 is here simply for confusing people.
No It's not. Same cod is used for CPUIDLE and we do have different C-states than just OSWR. ON and INACTIVE makes use of it.
Also, IMO, lable "l2x_clean_inv" should be put after the "bne do_WFI". Otherwise, my original statement (it seems l2x_clean_inv will be called for case "2") stands correct :)
It's just a label. All L2 related code and checks for the valid state is kept under that by purpose. Regards Santosh