linux/arch/arm
Santosh Shilimkar 68523f4233 ARM: OMAP4: Workaround the OCP synchronisation issue with 32K synctimer.
On OMAP4, recently a synchronisation bug is discovered by hardware
team, which leads to incorrect timer value read from 32K sync timer
IP when the IP is comming out of idle.

The issue is due to the synchronization methodology used in the SYNCTIMER IP.
The value of the counter register in 32kHz domain is synchronized to the OCP
domain register only at count up event, and if the OCP clock is switched off,
the OCP register gets out of synch until the first count up event after the
clock is switched back -at the next falling edge of the 32kHz clock.

Further investigation revealed that it applies to gptimer1 and watchdog timer2
as well which may run on 32KHz. This patch fixes the issue for all the
applicable modules.

The BUG has not made it yet to the OMAP errata list and it is applicable to
OMAP1/2/3/4/5. OMAP1/2/3 it is taken care indirectly by autodeps.

By enabling static depedency of wakeup clockdomain with MPU, as soon as MPU
is woken up from lowpower state(idle) or whenever MPU is active, PRCM forces
the OCP clock to be running and allow the counter value to be updated properly
in the OCP clock domain.

The bug is going to fixed in future OMAP versions.

Reported-Tested-by: dave.long@linaro.org
[dave.long@linaro.org: Reported the oprofile time stamp issue with synctimer
and helped to test this patch]
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
2012-03-22 16:11:17 -07:00
..
boot Merge branch 'fixes-for-grant' of git://sources.calxeda.com/kernel/linux into devicetree/merge 2012-02-27 14:04:40 -07:00
common ARM/PCI: Remove ARM's duplicate definition of 'pcibios_max_latency' 2012-02-21 09:35:32 +00:00
configs Consolidate i.MX 5 platforms to be under the new shared i.MX 3/5/6 tree. 2012-01-23 14:50:30 -08:00
include/asm ARM: 7354/1: perf: limit sample_period to half max_period in non-sampling mode 2012-03-07 09:40:48 +00:00
kernel ARM: 7358/1: perf: add PMU hotplug notifier 2012-03-07 09:40:50 +00:00
lib ARM: 7301/1: Rename the T() macro to TUSER() to avoid namespace conflicts 2012-01-25 11:07:40 +00:00
mach-at91 ARM: at91/dma: DMA controller registering with DT support 2012-02-29 18:20:39 +01:00
mach-bcmring ARM: bcmring: fix build failure in mach-bcmring/arch.c 2012-02-04 11:38:20 -08:00
mach-clps711x Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-cns3xxx Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-davinci ARM: davinci: update mdio bus name 2012-01-27 22:29:09 +05:30
mach-dove ARM: orion: Fix USB phy for orion5x. 2012-02-09 16:16:35 -08:00
mach-ebsa110 Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-ep93xx ARM: ep93xx: convert vision_ep9307 to MULTI_IRQ_HANDLER 2012-03-06 15:57:56 +00:00
mach-exynos ARM: EXYNOS: fix touchscreen IRQ setup on Universal C210 board 2012-03-06 02:25:15 -08:00
mach-footbridge Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-gemini ARM: big removal of now unused vmalloc.h files 2011-11-26 19:21:29 -05:00
mach-h720x Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-highbank ARM: 7293/1: logical_cpu_map: decouple CPU mapping from SMP 2012-01-23 10:20:05 +00:00
mach-imx Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm 2012-01-28 13:27:10 -08:00
mach-integrator Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-iop13xx Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-iop32x Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-iop33x Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-ixp4xx Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-ixp23xx Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-ixp2000 Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-kirkwood ARM: orion: Fix USB phy for orion5x. 2012-02-09 16:16:35 -08:00
mach-ks8695 Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-l7200/include/mach
mach-lpc32xx ARM: LPC32xx: serial.c: Fixed loop limit 2012-02-27 17:28:03 +01:00
mach-mmp arch/arm/mach-mmp/: some files include some headers twice 2012-02-16 23:24:30 +08:00
mach-msm ARM: 7293/1: logical_cpu_map: decouple CPU mapping from SMP 2012-01-23 10:20:05 +00:00
mach-mv78xx0 ARM: orion: Fix USB phy for orion5x. 2012-02-09 16:16:35 -08:00
mach-mxs clock management changes for i.MX 2012-01-09 14:44:15 -08:00
mach-netx Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-nomadik Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-omap1 ARM: OMAP1: Fix out-of-bounds array access for Innovator 2012-02-21 16:33:08 -08:00
mach-omap2 ARM: OMAP4: Workaround the OCP synchronisation issue with 32K synctimer. 2012-03-22 16:11:17 -07:00
mach-orion5x ARM: orion: Fix USB phy for orion5x. 2012-02-09 16:16:35 -08:00
mach-picoxcell Merge branch 'picoxcell-fixes' of git://github.com/jamieiles/linux-2.6-ji into fixes 2012-01-16 22:45:42 -08:00
mach-pnx4008 Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-prima2 Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-pxa ARM: pxa: fix invalid mfp pin issue 2012-03-06 14:57:16 +08:00
mach-realview ARM: 7298/1: realview: fix mapping of MPCore private memory region 2012-01-25 09:24:36 +00:00
mach-rpc Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-s3c64xx ARM: S3C6410: Use device names for both I2C clocks 2012-01-27 14:43:44 +09:00
mach-s3c2410 ARM: SAMSUNG: Fix missing api-change from subsys_interface change 2012-01-27 15:35:47 +09:00
mach-s3c2412 ARM: SAMSUNG: Fix missing api-change from subsys_interface change 2012-01-27 15:35:47 +09:00
mach-s3c2416 ARM: SAMSUNG: Fix missing api-change from subsys_interface change 2012-01-27 15:35:47 +09:00
mach-s3c2440 ARM: S3C2440: Fixed build error for s3c244x 2012-03-08 08:57:29 -08:00
mach-s3c2443 ARM: SAMSUNG: Fix missing api-change from subsys_interface change 2012-01-27 15:35:47 +09:00
mach-s5p64x0 ARM: SAMSUNG: Fix missing api-change from subsys_interface change 2012-01-27 15:35:47 +09:00
mach-s5pc100 Cleanups for the Samsung platforms 2012-01-09 14:30:28 -08:00
mach-s5pv210 ARM: SAMSUNG: Fix missing api-change from subsys_interface change 2012-01-27 15:35:47 +09:00
mach-sa1100 Merge branch 'sa11x0-mcp-fixes' into fixes 2012-01-26 21:06:54 +00:00
mach-shark Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-shmobile ARM: mach-shmobile: ap4evb: fixup fsi2_ak4643_info typo 2012-03-07 17:04:29 +09:00
mach-spear3xx Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-spear6xx Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mach-tegra ARM: tegra: paz00: fix wrong UART port on mini-pcie plug 2012-02-06 18:32:51 -08:00
mach-u300 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl 2012-01-10 10:19:57 -08:00
mach-ux500 ARM: 7346/1: errata: fix PL310 erratum #753970 workaround selection 2012-02-27 11:22:38 +00:00
mach-versatile Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
mach-vexpress ARM: 7346/1: errata: fix PL310 erratum #753970 workaround selection 2012-02-27 11:22:38 +00:00
mach-vt8500 ARM: big removal of now unused vmalloc.h files 2011-11-26 19:21:29 -05:00
mach-w90x900 Merge branch 'master' into fixes 2012-01-13 15:00:22 +00:00
mach-zynq Merge branch 'depends/rmk/restart' into next/cleanup 2012-01-07 11:51:28 +00:00
mm ARM: 7345/1: errata: update workaround for A9 erratum #743622 2012-02-27 11:22:08 +00:00
nwfpe ARM: 7207/1: Use generic ARM instruction set condition code checks for nwfpe. 2011-12-13 08:52:02 +00:00
oprofile oprofile, arm/sh: Fix oprofile_arch_exit() linkage issue 2011-12-23 11:58:34 +01:00
plat-iop Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
plat-mxc arm-soc fixes for 3.3-rc: 2012-01-28 13:21:54 -08:00
plat-nomadik Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2012-01-17 18:40:24 -08:00
plat-omap ARM: OMAP: irqs: Fix NR_IRQS value to handle PRCM interrupts 2012-02-28 15:49:54 -08:00
plat-orion ARM: orion: Fix USB phy for orion5x. 2012-02-09 16:16:35 -08:00
plat-pxa Merge branches 'drivers/macb-gem' and 'drivers/pxa-gpio' into next/drivers 2011-11-23 20:47:41 +00:00
plat-s3c24xx ARM: S3C24XX: DMA resume regression fix 2012-03-03 07:36:59 +09:00
plat-s5p Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core 2012-01-07 12:03:30 -08:00
plat-samsung ARM: SAMSUNG: Fix memory size for hsotg 2012-03-01 13:19:47 +09:00
plat-spear ARM: 7348/1: arm/spear600: fix one-shot timer 2012-02-27 11:18:40 +00:00
plat-versatile ARM: 7293/1: logical_cpu_map: decouple CPU mapping from SMP 2012-01-23 10:20:05 +00:00
tools ARM: Update mach-types 2011-12-23 22:58:10 +00:00
vfp
Kconfig ARM: 7345/1: errata: update workaround for A9 erratum #743622 2012-02-27 11:22:08 +00:00
Kconfig-nommu
Kconfig.debug Merge branches 'at91/gpio', 'at91/ioremap', 'drivers/macb-gem-cleanup' and 'msm/misc' into next/cleanup 2011-12-01 12:34:21 +00:00
Makefile Consolidate i.MX 5 platforms to be under the new shared i.MX 3/5/6 tree. 2012-01-23 14:50:30 -08:00