linux/arch
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
..
alpha alpha: Convert BUG() to use unreachable() 2009-12-18 01:14:52 -05:00
arm OMAP3: hwmod: Adding flag to prevent caching of sysconfig register. 2010-01-19 17:30:51 -07:00
avr32 Merge branch 'for-33' of git://repo.or.cz/linux-kbuild 2009-12-17 07:23:42 -08:00
blackfin blackfin,kgdb: Do not put PC in gdb_regs into retx. 2010-01-07 11:58:37 -06:00
cris Merge branch 'for-33' of git://repo.or.cz/linux-kbuild 2009-12-17 07:23:42 -08:00
frv FDPIC: Respect PT_GNU_STACK exec protection markings when creating NOMMU stack 2010-01-06 18:16:02 -08:00
h8300 Merge branch 'for-33' of git://repo.or.cz/linux-kbuild 2009-12-17 07:23:42 -08:00
ia64 [IA64] move fnptr definition inside #ifdef __KERNEL__ 2010-01-08 10:53:28 -08:00
m32r elf: kill USE_ELF_CORE_DUMP 2009-12-16 07:20:12 -08:00
m68k m68knommu: fix definitions of __pa() and __va() 2010-01-12 20:51:45 -08:00
m68knommu Unify sys_mmap* 2009-12-11 06:44:29 -05:00
microblaze Merge branch 'for-33' of git://repo.or.cz/linux-kbuild 2009-12-17 07:23:42 -08:00
mips MIPS: Ignore vmlinux.* 2010-01-12 18:19:38 +01:00
mn10300 mn10300: update the ASB2303 defconfig 2010-01-11 09:34:10 -08:00
parisc Merge branch 'for-33' of git://repo.or.cz/linux-kbuild 2009-12-17 07:23:42 -08:00
powerpc zlib: optimize inffast when copying direct from output 2010-01-11 09:34:04 -08:00
s390 [S390] Update default configuration. 2010-01-04 09:05:58 +01:00
score mm: make totalhigh_pages unsigned long 2010-01-11 09:34:03 -08:00
sh sh: update defconfigs. 2010-01-04 15:38:50 +09:00
sparc sparc64: Fix Niagara2 perf event handling. 2010-01-04 23:16:03 -08:00
um Merge branch 'for-33' of git://repo.or.cz/linux-kbuild 2009-12-17 07:23:42 -08:00
x86 Revert "x86, apic: Use logical flat on intel with <= 8 logical cpus" 2010-01-11 16:47:57 -08:00
xtensa Merge branch 'for-33' of git://repo.or.cz/linux-kbuild 2009-12-17 07:23:42 -08:00
.gitignore
Kconfig hw-breakpoints: Fix hardware breakpoints -> perf events dependency 2009-12-18 13:11:51 +01:00