linux/arch/arm
Thara Gopinath 883edfdd58 OMAP3: hwmod: Adding flag to prevent caching of sysconfig register.
In the current implementation the sysconfig value is read into
 _sysc_cache once and an actual update to the sysconfig register
happens only if the new value paased is differnt from the one in _sysc_cache.
_sysc_cache is updated only if _HWMOD_SYSCONFIG_LOADED is not set.
This can lead to the follwing issue if off mode is enabled in modules
which employs "always-retore" mechanism of context save and restore.

        a. The module sets the sysconfig register through omap_device_enable.
           Here _sysc_cache is updated with the value written to the sysconfig
           register and left.
        b. The power domain containig the module enters off mode and the
           module context is lost.
        c. The module in use becomes active and calls omap_device_enable to
           enable itself. Here a read of sysconfig register does not happen
           as _HWMOD_SYSCONFIG_LOADED flag is set. The value to be written
           to the sysconfig register will be same as the one written in step a.
           Since _sysc_cache reflects the previous written value an update
           of the sysconfig register does not happen.
This means in modules which employs "always-restore" mechanism
after off , the sysconfig regsiters will never get updated.

This patch introduces a flag SYSC_NO_CACHE which if set ensures that the
sysconfig register is always read into _sysc_cache before an update is
attempted.

This flags need to be set only by modules which does not do a context save
but re-initializes the registers every time the module is accessed. This
includes modules like i2c, smartreflex etc.

Signed-off-by: Thara Gopinath <thara@ti.com>
[paul@pwsan.com: tweaked to apply on a different head, added flag comment]
Signed-off-by: Paul Walmsley <paul@pwsan.com>
2010-01-19 17:30:51 -07:00
..
boot arm: add support for LZO-compressed kernels 2010-01-11 09:34:05 -08:00
common ARM: 5857/1: ARM: dmabounce: fix build 2009-12-22 15:32:32 +00:00
configs ARM: 5867/1: Update U300 defconfig 2010-01-08 16:14:28 +00:00
include/asm ARM: 5872/1: ARM: include needed linux/cpu.h in asm/cpu.h 2010-01-10 13:03:52 +00:00
kernel ARM: Fix wrong dmb 2010-01-12 18:59:16 +00:00
lib Merge branch 'for-rmk' of git://linux-arm.org/linux-2.6 2009-09-19 13:47:57 +01:00
mach-aaec2000
mach-at91 atmel-mci: change use of dma slave interface 2009-12-15 08:53:35 -08:00
mach-bcmring Merge git://git.infradead.org/mtd-2.6 2009-12-16 10:23:43 -08:00
mach-clps711x ARM: fix clps711x, footbridge, integrator, ixp2000, ixp2300 and s3c build bug 2009-12-13 16:33:19 +00:00
mach-davinci DaVinci: DM365: Add the device_enable for the DaVinci Keyscan 2010-01-06 08:57:45 -08:00
mach-dove ARM: Add Tauros2 L2 cache controller support 2009-11-27 15:43:21 -05:00
mach-ebsa110
mach-ep93xx Input: ep93xx_keypad - update driver to new core support 2009-12-15 08:54:45 -08:00
mach-footbridge ARM: footbridge: trim down old ISA rtc setup 2009-12-24 13:39:18 +00:00
mach-gemini
mach-h720x
mach-integrator ARM: fix clps711x, footbridge, integrator, ixp2000, ixp2300 and s3c build bug 2009-12-13 16:33:19 +00:00
mach-iop13xx Merge branch 'devel-stable' into devel 2009-12-05 10:35:33 +00:00
mach-iop32x iop: enable generic time 2009-10-29 11:46:55 -07:00
mach-iop33x iop: enable generic time 2009-10-29 11:46:55 -07:00
mach-ixp4xx IXP4xx: GTWX5715 platform only has two PCI IRQ lines, not four. 2009-12-05 16:58:41 +01:00
mach-ixp23xx ARM: fix clps711x, footbridge, integrator, ixp2000, ixp2300 and s3c build bug 2009-12-13 16:33:19 +00:00
mach-ixp2000 ARM: fix clps711x, footbridge, integrator, ixp2000, ixp2300 and s3c build bug 2009-12-13 16:33:19 +00:00
mach-kirkwood [ARM] Kirkwood: Add LaCie Network Space v2 support 2009-12-10 23:01:57 -05:00
mach-ks8695 ARM: dma-mapping: provide dma_to_page() 2009-11-23 12:53:54 +00:00
mach-l7200
mach-lh7a40x ARM: 5871/1: arch/arm: Fix build failure for lpd7a404_defconfig caused by missing includes 2010-01-10 00:08:14 +00:00
mach-loki
mach-mmp [ARM] pxa/ttc_dkb: remove duplicate macro definition 2009-12-29 14:11:33 +08:00
mach-msm HTC Dream: mmc compilation fixes 2009-12-10 10:14:34 -08:00
mach-mv78xx0 [ARM] properly report mv78100 stepping A1 2009-11-05 23:03:19 -05:00
mach-mx1
mach-mx2 mx27: mxt_td60: Remove not used UART pins 2010-01-04 11:47:43 +01:00
mach-mx3 imx/mx3: depend on USB_ULPI for otg_ulpi_create 2010-01-04 13:26:23 +01:00
mach-mx25 mx25: pdk: add platform code for FEC support 2010-01-04 11:47:44 +01:00
mach-mxc91231
mach-netx
mach-nomadik Merge git://git.infradead.org/mtd-2.6 2009-12-16 10:23:43 -08:00
mach-ns9xxx genirq: Convert irq_desc.lock to raw_spinlock 2009-12-14 23:55:33 +01:00
mach-omap1 Merge branch 'for_2.6.33rc_c' of git://git.pwsan.com/linux-2.6 into omap-fixes-for-linus 2010-01-08 14:27:56 -08:00
mach-omap2 OMAP3: hwmod: Adding flag to prevent caching of sysconfig register. 2010-01-19 17:30:51 -07:00
mach-orion5x tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
mach-pnx4008
mach-pxa [ARM] pxa: fix strange characters in zaurus gpio .desc 2010-01-08 09:42:45 +08:00
mach-realview ARM: 5873/1: ARM: Fix the reset logic for ARM RealView boards 2010-01-11 15:39:21 +00:00
mach-rpc
mach-s3c24a0/include/mach ARM: fix clps711x, footbridge, integrator, ixp2000, ixp2300 and s3c build bug 2009-12-13 16:33:19 +00:00
mach-s3c2400 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
mach-s3c2410 ARM: S3C24XX: touchscreen device definition 2009-12-23 19:28:12 +00:00
mach-s3c2412 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
mach-s3c2440 ARM: mach-osiris: add NAND_SCAN_SILENT_NODEV to optional devices 2009-12-23 19:28:11 +00:00
mach-s3c2442 Merge git://git.infradead.org/battery-2.6 2009-12-15 08:59:33 -08:00
mach-s3c2443 Kconfig: Remove useless and sometimes wrong comments 2009-11-09 09:40:56 +01:00
mach-s3c6400 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
mach-s3c6410 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
mach-s5pc100 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
mach-sa1100 ARM: fix sa1100 build 2009-12-13 19:38:08 +00:00
mach-shark
mach-stmp37xx
mach-stmp378x
mach-u300 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 2009-12-16 10:28:56 -08:00
mach-ux500 ARM: 5832/1: ARM: U8500 Makefile.boot 2009-11-28 10:22:52 +00:00
mach-versatile ARM: 5720/1: Move MMCI header to amba include dir 2009-09-22 20:49:04 +01:00
mach-w90x900 ARM: 5864/1: Implement arch_reset() in NUC900 2010-01-05 20:52:45 +00:00
mm Merge master.kernel.org:/home/rmk/linux-2.6-arm 2010-01-12 20:56:01 -08:00
nwfpe ARM: Kill CONFIG_CPU_32 2009-12-18 16:07:53 +00:00
oprofile ARM: 5849/1: ARMv7: fix Oprofile events count 2009-12-22 15:32:31 +00:00
plat-iop iop: implement sched_clock() 2009-10-29 11:46:56 -07:00
plat-mxc mx25: add support for FEC on i.MX25 2010-01-04 11:47:44 +01:00
plat-nomadik ARM: 5833/1: ARM nomadik: enable U8500 for common platform 2009-11-28 10:22:53 +00:00
plat-omap OMAP3: hwmod: Adding flag to prevent caching of sysconfig register. 2010-01-19 17:30:51 -07:00
plat-orion
plat-pxa [ARM] pxa: use resource_size() in pwm.c 2009-12-29 14:11:27 +08:00
plat-s3c ARM: S3C: Fix NAND device registration by s3c_nand_set_platdata(). 2009-12-23 20:34:29 +00:00
plat-s3c24xx ARM: S3C24XX: touchscreen device definition 2009-12-23 19:28:12 +00:00
plat-s3c64xx ARM: S3C64XX: Fix possible clock look in EPLL and MPLL clock chains 2010-01-07 11:34:51 +09:00
plat-s5pc1xx Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
plat-samsung ARM: SAMSUNG: Add plat-samsung as starting point for plat-s3c* moves 2009-12-01 01:28:37 +00:00
plat-stmp3xxx ARM: STMP3xxx: deallocation with negative index of descriptors[] 2009-09-19 12:14:05 +01:00
tools Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2009-12-17 15:53:41 -08:00
vfp ARM: Convert VFP/Crunch/XscaleCP thread_release() to exit_thread() 2009-12-18 14:53:41 +00:00
Kconfig arm: add support for LZO-compressed kernels 2010-01-11 09:34:05 -08:00
Kconfig-nommu
Kconfig.debug Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel 2009-12-13 16:35:09 +00:00
Makefile arm: move mach-types to include/generated 2009-12-12 13:08:14 +01:00