linux/arch/arm
Eduardo Valentin a8ae645c01 OMAP3: PM: Do not rely on ROM code to restore CM_AUTOIDLE_PLL.AUTO_PERIPH_DPLL
As per OMAP3 erratum (i671), ROM code adds extra latencies while
restoring CM_AUTOIDLE_PLL register, if AUTO_PERIPH_DPLL is equal to 1.

This patch stores 0's in scratchpad content area corresponding to
AUTO_PERIPH_DPLL, to prevent ROM code to try to lock per DPLL, since
it won't respect proper programing scheme.

This register is then stored in prcm context. The saving and restore
is now done by kernel side.

Here follow the erratum description

DESCRIPTION

After OFF mode transition, among many restorations, the ROM Code restores the
CM_AUTOIDLE_PLL register, and after that, it tries to relock the PER DPLL.

In case the restoration data stored in scratchpad memory contains a field
CM_AUTOIDLE_PLL.AUTO_PERIPH_DPLL = 1, then the way the ROM Code restores and
locks the PER DPLL does not respect the PER DPLL programming scheme.

In that case, the DPLL might not lock. Meanwhile, when trying to lock the PER
DPLL, the ROM Code does not hang. Only extra latencies are introduced at
wake-up.

WORKAROUND

When saving the context-restore structure in scratchpad memory, in order to
respect the PER DPLL programming scheme, it is advised to store 0 in the
CM_AUTOIDLE_PLL.AUTO_PERIPH_DPLL field of the saved structure.

After wake-up, the application should store in CM_AUTOIDLE_PLL register the
right desired value.

Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
2011-04-20 12:43:56 -06:00
..
boot ARM: 6826/1: Merge v6 and v7 DEBUG_LL DCC support 2011-03-28 19:01:43 +01:00
common Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into fixes 2011-04-13 23:32:13 +01:00
configs Merge branch 'for-linus' of git://android.git.kernel.org/kernel/tegra 2011-03-24 09:33:14 -07:00
include/asm Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into fixes 2011-04-13 23:32:13 +01:00
kernel ARM: 6879/1: fix personality test wrt usage of domain handlers 2011-04-14 09:15:25 +01:00
lib Merge branches 'fixes', 'pgt-next' and 'versatile' into devel 2011-03-20 09:32:12 +00:00
mach-at91 Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-bcmring Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-clps711x arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-cns3xxx ARM: P2V: separate PHYS_OFFSET from platform definitions 2011-02-17 23:26:55 +00:00
mach-davinci Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-dove arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-ebsa110 arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-ep93xx Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-exynos4 Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-footbridge arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-gemini arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-h720x arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-imx Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel-stable 2011-03-28 18:52:44 +01:00
mach-integrator Merge branches 'fixes', 'pgt-next' and 'versatile' into devel 2011-03-20 09:32:12 +00:00
mach-iop13xx Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-iop32x arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-iop33x arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-ixp4xx arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-ixp23xx arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-ixp2000 arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-kirkwood Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-ks8695 arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-l7200/include/mach
mach-loki Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-03-17 19:08:06 -07:00
mach-lpc32xx Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-mmp ARM: mmp: align NR_BUILTIN_GPIO with gpio interrupt number 2011-04-12 23:26:39 +08:00
mach-msm Merge branch 'for-39-rc4' of git://codeaurora.org/quic/kernel/davidb/linux-msm 2011-04-18 15:44:29 -07:00
mach-mv78xx0 arm: Cleanup the irq namespace 2011-03-29 14:47:57 +02:00
mach-mx3 Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-03-30 07:50:45 -07:00
mach-mx5 Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-03-30 07:50:45 -07:00
mach-mxc91231 ARM: mxc91231/iomux: allow pin_list to be const 2011-03-07 19:29:28 +01:00
mach-mxs Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-03-30 07:50:45 -07:00
mach-netx arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-nomadik ARM: P2V: separate PHYS_OFFSET from platform definitions 2011-02-17 23:26:55 +00:00
mach-ns9xxx arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-nuc93x arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-omap1 Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-omap2 OMAP3: PM: Do not rely on ROM code to restore CM_AUTOIDLE_PLL.AUTO_PERIPH_DPLL 2011-04-20 12:43:56 -06:00
mach-orion5x Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-pnx4008 arm: Cleanup the irq namespace 2011-03-29 14:47:57 +02:00
mach-pxa ARM: pxa: convert incorrect IRQ_TO_IRQ() to irq_to_gpio() 2011-04-13 09:30:40 +08:00
mach-realview ARM: 6807/1: realview: Fix secondary GIC initialisation for EB with MPCore tile 2011-03-26 10:06:08 +00:00
mach-rpc arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-s3c24a0/include/mach ARM: P2V: separate PHYS_OFFSET from platform definitions 2011-02-17 23:26:55 +00:00
mach-s3c64xx Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-s3c2400 ARM: P2V: separate PHYS_OFFSET from platform definitions 2011-02-17 23:26:55 +00:00
mach-s3c2410 Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-s3c2412 arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-s3c2416 arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-s3c2440 Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-s3c2443 arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-s5p64x0 ARM: S5P64X0: Fix iodesc array size for S5P6450 2011-03-28 16:17:53 +09:00
mach-s5p6442 Merge branch 'p2v' into devel 2011-03-16 23:35:27 +00:00
mach-s5pc100 Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-s5pv210 Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-sa1100 Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-shark arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-shmobile ARM: arch-shmobile: only run FSI init on respective boards 2011-04-06 11:21:38 -07:00
mach-spear3xx ARM: 6794/1: SPEAr: Append UL to device address macros. 2011-03-09 09:50:04 +00:00
mach-spear6xx ARM: 6794/1: SPEAr: Append UL to device address macros. 2011-03-09 09:50:04 +00:00
mach-stmp37xx
mach-stmp378x
mach-tcc8k arm: Cleanup the irq namespace 2011-03-29 14:47:57 +02:00
mach-tegra Merge branch 'for-linus' of git://android.git.kernel.org/kernel/tegra 2011-04-15 20:19:17 -07:00
mach-u300 Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-ux500 Fix common misspellings 2011-03-31 11:26:23 -03:00
mach-versatile arm: versatile : Fix typo introduced in irq namespace cleanup 2011-03-30 12:02:15 +02:00
mach-vexpress ARM: 6771/1: vexpress: add support for multiple core tiles 2011-03-20 09:32:21 +00:00
mach-vt8500 arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mach-w90x900 arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
mm ARM: 6877/1: the ADDR_NO_RANDOMIZE personality flag should be honored with mmap() 2011-04-14 09:15:24 +01:00
nwfpe
oprofile Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-02-15 10:18:48 -08:00
plat-iop
plat-mxc Fix common misspellings 2011-03-31 11:26:23 -03:00
plat-nomadik arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
plat-omap Fix common misspellings 2011-03-31 11:26:23 -03:00
plat-orion arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
plat-pxa Fix common misspellings 2011-03-31 11:26:23 -03:00
plat-s3c24xx Fix common misspellings 2011-03-31 11:26:23 -03:00
plat-s5p ARM: S5P: Remove unused s3c_pm_check_resume_pin 2011-04-14 13:19:40 +09:00
plat-samsung ARM: SAMSUNG: Fix warning 's3c_pm_show_resume_irqs' defined but not used 2011-04-14 13:20:05 +09:00
plat-spear Fix common misspellings 2011-03-31 11:26:23 -03:00
plat-stmp3xxx arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
plat-tcc ARM: P2V: separate PHYS_OFFSET from platform definitions 2011-02-17 23:26:55 +00:00
plat-versatile arm: Fold irq_set_chip/irq_set_handler 2011-03-29 14:47:58 +02:00
tools ARM: Update (and cut down) mach-types 2011-03-20 18:07:44 +00:00
vfp ARM: 6868/1: Preserve the VFP state during fork 2011-04-10 21:13:37 +01:00
Kconfig Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into fixes 2011-04-13 23:32:13 +01:00
Kconfig-nommu Fix common misspellings 2011-03-31 11:26:23 -03:00
Kconfig.debug ARM: 6876/1: Kconfig.debug: Remove unused CONFIG_DEBUG_ERRORS 2011-04-14 09:15:24 +01:00
Makefile Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-03-17 19:08:06 -07:00