From: khilman@ti.com (Kevin Hilman) Date: Wed, 29 Jun 2011 10:29:49 -0700 Subject: [PATCH] OMAP3: run the ASM sleep code from DDR In-Reply-To: <1309365623-14704-1-git-send-email-j-pihet@ti.com> (jean pihet's message of "Wed, 29 Jun 2011 18:40:23 +0200") References: <1309365623-14704-1-git-send-email-j-pihet@ti.com> Message-ID: <87mxh0tuk2.fsf@ti.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org jean.pihet at newoldbits.com writes: > From: Jean Pihet > > Most of the ASM sleep code (in arch/arm/mach-omap2/sleep34xx.S) > is copied to internal SRAM at boot and after wake-up from CORE OFF mode. > However only a small part of the code really needs to run from internal SRAM. > > This fix lets most of the ASM idle code run from the DDR > in order to minimize the SRAM usage and the overhead in the code copy. > > The only pieces of code that are mandatory in SRAM are: > - the i443 erratum WA, > - the i581 erratum WA, > - the security extension code. > > SRAM usage: > - original code: > . 560 bytes for omap3_sram_configure_core_dpll (used by DVFS), > . 852 bytes for omap_sram_idle (used by suspend/resume in RETention), > . 124 bytes for es3_sdrc_fix (used by suspend/resume in OFF mode on ES3.x), > . 108 bytes for save_secure_ram_context (used on HS parts only). > > With this fix the usage for suspend/resume in RETention goes down 288 bytes, > so the gain in SRAM usage for suspend/resume is 564 bytes. > > Also fixed the SRAM initialization sequence to avoid an unnecessary > copy to SRAM at boot time and for readability. > > Tested on Beagleboard (ES2.x) in idle with full RET and OFF modes. > > Signed-off-by: Jean Pihet Reviewed-by: Kevin Hilman Also tested retention and off on 3430/n900, 3530/Overo and 3630/Zoom3 Tested-by: Kevin Hilman Russell, if you're OK with it, can you add it to your suspend branch for the upcoming merge window? Kevin