linux-stable/arch/arm/mach-omap2
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
..
include/mach omap3: zoom: rename zoom2 name to generic zoom 2009-11-22 10:24:33 -08:00
board-2430sdp.c mfd: Rename twl4030* driver files to enable re-use 2009-12-13 20:05:51 +01:00
board-3430sdp.c mfd: Rename twl4030* driver files to enable re-use 2009-12-13 20:05:51 +01:00
board-3630sdp.c omap: mux: Add 36xx CBP package support 2009-12-11 16:16:33 -08:00
board-4430sdp.c Merge branch '7xx-iosplit-plat' with omap-fixes 2009-11-10 18:10:34 -08:00
board-am3517evm.c omap: mux: Add new style init functions to omap3 board-*.c files 2009-12-11 16:16:32 -08:00
board-apollon.c omap: use smc91x_platdata to setup smc91x 2009-12-11 16:16:33 -08:00
board-cm-t35.c mfd: twl: fix twl4030 rename for remaining driver, board files 2009-12-16 12:44:04 -08:00
board-generic.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
board-h4.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
board-igep0020.c mfd: twl: fix twl4030 rename for remaining driver, board files 2009-12-16 12:44:04 -08:00
board-ldp.c mfd: Rename twl4030* driver files to enable re-use 2009-12-13 20:05:51 +01:00
board-n8x0.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
board-omap3beagle.c mfd: Rename twl4030* driver files to enable re-use 2009-12-13 20:05:51 +01:00
board-omap3evm.c mfd: twl: fix twl4030 rename for remaining driver, board files 2009-12-16 12:44:04 -08:00
board-omap3pandora.c mfd: Rename twl4030* driver files to enable re-use 2009-12-13 20:05:51 +01:00
board-omap3touchbook.c mfd: twl: fix twl4030 rename for remaining driver, board files 2009-12-16 12:44:04 -08:00
board-overo.c mfd: Rename twl4030* driver files to enable re-use 2009-12-13 20:05:51 +01:00
board-rx51-peripherals.c mfd: twl: fix twl4030 rename for remaining driver, board files 2009-12-16 12:44:04 -08:00
board-rx51-sdram.c omap3: rx51: Add SDRAM init 2009-11-22 10:24:33 -08:00
board-rx51.c omap: mux: Remove old mux code for 34xx 2009-12-11 16:16:33 -08:00
board-zoom-debugboard.c omap3: zoom: rename zoom2 name to generic zoom 2009-11-22 10:24:33 -08:00
board-zoom-peripherals.c omap2/3: ZOOM: Correcting key mapping for few keys 2010-01-08 10:29:07 -08:00
board-zoom2.c omap: mux: Add new style init functions to omap3 board-*.c files 2009-12-11 16:16:32 -08:00
board-zoom3.c omap: mux: Add 36xx CBP package support 2009-12-11 16:16:33 -08:00
clock.c ARM: OMAP4: PM: Add init api for DPLL nodes 2009-12-11 17:00:47 -07:00
clock.h ARM: OMAP4: PM: Add init api for DPLL nodes 2009-12-11 17:00:47 -07:00
clock2xxx.c OMAP2 clock: dynamically allocate CPUFreq frequency table 2010-01-08 15:23:17 -07:00
clock2xxx.h OMAP2 clock: convert clock24xx.h to clock2xxx_data.c, opp2xxx* 2009-12-11 16:16:00 -07:00
clock2xxx_data.c OMAP2 clock: convert clock24xx.h to clock2xxx_data.c, opp2xxx* 2009-12-11 16:16:00 -07:00
clock34xx.c OMAP2: remove duplicated #include 2010-01-08 15:23:03 -07:00
clock34xx.h ARM: OMAP4: PM: Move DPLL control apis to dpll.c 2009-12-11 17:00:46 -07:00
clock34xx_data.c OMAP3 clock: Add capability to change rate of dpll4_m5_ck 2010-01-08 15:23:08 -07:00
clock44xx.c ARM: OMAP4: PM: Add support for OMAP4 dpll api's 2009-12-11 17:00:46 -07:00
clock44xx.h ARM: OMAP4: PM: Move DPLL control apis to dpll.c 2009-12-11 17:00:46 -07:00
clock44xx_data.c ARM: OMAP4: PM: Add init api for DPLL nodes 2009-12-11 17:00:47 -07:00
clock_common_data.c OMAP3 clock: convert clock34xx.h to clock34xx_data.c 2009-12-11 16:12:15 -07:00
clockdomain.c ARM: OMAP3: PM: Fix the Invalid CM_CLKSTCTRL reg access. 2010-01-08 15:23:04 -07:00
clockdomains.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
cm-regbits-24xx.h [ARM] OMAP2 PRCM: clean up CM_IDLEST bits 2009-02-08 17:50:37 +00:00
cm-regbits-34xx.h OMAP3: PM: Add D2D clocks and auto-idle setup to PRCM init 2009-05-28 10:59:07 -07:00
cm-regbits-44xx.h ARM: OMAP4: PM: Adds CM1/2 register field masks 2009-12-11 17:00:45 -07:00
cm.c OMAP clock/hwmod: fix off-by-one errors 2009-12-11 17:00:43 -07:00
cm.h ARM: OMAP4: PM: Add dummy hooks for OMAP4 dpll api's 2009-12-11 17:00:46 -07:00
cm4xxx.c omap: Fix 44xx compile 2009-09-24 16:23:07 -07:00
cm44xx.h ARM: OMAP4: PM: Adds CM1/2 register defs for OMAP4 2009-12-11 17:00:45 -07:00
control.c OMAP3: PM: Program SDRC to send self refresh on timeout of AUTO_CNT 2009-11-11 14:42:28 -08:00
cpuidle34xx.c OMAP3: PM: Added resched check into idle calls 2009-11-11 14:42:50 -08:00
devices.c omap: mux: Replace omap_cfg_reg() with new style signal or gpio functions 2009-12-11 16:16:32 -08:00
dpll.c ARM: OMAP4: PM: Add support for OMAP4 dpll api's 2009-12-11 17:00:46 -07:00
emu.c ARM: 5843/1: OMAP3: add AMBA devices for ETM and ETB 2009-12-02 10:25:23 +00:00
gpmc-onenand.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
gpmc-smc91x.c omap: use smc91x_platdata to setup smc91x 2009-12-11 16:16:33 -08:00
gpmc.c ARM: OMAP4: PM: Add dummy hooks for OMAP4 dpll api's 2009-12-11 17:00:46 -07:00
i2c.c omap: Split i2c platform init for mach-omap1 and mach-omap2 2009-12-11 16:16:32 -08:00
id.c omap3: id code detection 3525 vs 3515 2009-12-11 16:16:37 -08:00
io.c OMAP2xxx IO mapping: mark DSP mappings as being 2420-only 2010-01-08 15:23:05 -07:00
iommu2.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
irq.c OMAP3: PM: Fix INTC context save/restore 2009-11-11 14:42:27 -08:00
Kconfig omap3: EVM: Choose OMAP_PACKAGE_CBB 2010-01-08 10:29:08 -08:00
mailbox.c omap: mailbox: Adds code changes to support OMAP4 mailbox 2009-11-22 10:24:33 -08:00
Makefile omap3: Board file of Always Innovating OMAP3-based Touch Book 2009-12-11 16:16:34 -08:00
Makefile.boot
mcbsp.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
mmc-twl4030.c omap3630: Set omap3630 MMC1 I/O speed to 52Mhz 2009-11-22 10:24:32 -08:00
mmc-twl4030.h omap_hsmmc: support for deeper power saving states 2009-09-23 07:39:35 -07:00
mux.c omap3: Fix booting if package is uninitialized 2010-01-08 10:29:08 -08:00
mux.h omap: mux: Add 36xx CBP package support 2009-12-11 16:16:33 -08:00
mux34xx.c omap: mux: Add 36xx CBP package support 2009-12-11 16:16:33 -08:00
mux34xx.h omap: mux: Add 36xx CBP package support 2009-12-11 16:16:33 -08:00
omap-headsmp.S OMAP4: AuxCoreBoot registers only accessible in secure mode 2009-12-11 16:16:35 -08:00
omap-smp.c OMAP4: Remove the secondary wait loop 2009-12-11 16:16:35 -08:00
omap3-iommu.c omap: iommu: reorganize 2009-11-22 10:24:32 -08:00
omap_hwmod.c OMAP3: hwmod: Adding flag to prevent caching of sysconfig register. 2010-01-19 17:30:51 -07:00
omap_hwmod_34xx.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
omap_hwmod_2420.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
omap_hwmod_2430.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
opp2xxx.h OMAP2 clock: convert clock24xx.h to clock2xxx_data.c, opp2xxx* 2009-12-11 16:16:00 -07:00
opp2420_data.c OMAP2xxx OPP: clean up comments in OPP data 2010-01-08 15:23:15 -07:00
opp2430_data.c OMAP2xxx OPP: clean up comments in OPP data 2010-01-08 15:23:15 -07:00
pm-debug.c OMAP powerdomain/PM: use symbolic constants for the max number of power states 2009-12-11 17:00:41 -07:00
pm.h OMAP3: PM: CPUidle: fix init sequencing 2009-11-11 14:42:49 -08:00
pm24xx.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
pm34xx.c omap3: add missing parentheses 2010-01-08 10:29:07 -08:00
powerdomain.c OMAP3: PM: Fix for MPU power domain MEM BANK position 2009-12-11 17:00:42 -07:00
powerdomains.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
powerdomains24xx.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
powerdomains34xx.h OMAP3: PM: Fix for MPU power domain MEM BANK position 2009-12-11 17:00:42 -07:00
prcm-common.h ARM: OMAP4: PM: Adds PRM register shift and mask bits 2009-12-11 17:00:45 -07:00
prcm.c ARM: OMAP4: PM: Fix the PRM and CM base addresses 2009-12-11 17:00:44 -07:00
prm-regbits-24xx.h ARM: OMAP2: Powerdomain: Add OMAP2 powerdomains 2008-08-19 11:08:42 +03:00
prm-regbits-34xx.h OMAP3: PM: Enable IO-CHAIN wakeup 2009-11-11 14:42:28 -08:00
prm-regbits-44xx.h ARM: OMAP4: PM: Adds PRM register shift and mask bits 2009-12-11 17:00:45 -07:00
prm.h ARM: OMAP4: PM: Adds PRM register defs for OMAP4 2009-12-11 17:00:45 -07:00
prm44xx.h ARM: OMAP4: PM: Adds PRM register defs for OMAP4 2009-12-11 17:00:45 -07:00
sdram-hynix-h8mbx00u0mer-0em.h omap3: zoom: Introduce zoom3 board support 2009-11-22 10:24:33 -08:00
sdram-micron-mt46h32m32lf-6.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
sdram-qimonda-hyb18m512160af-6.h omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
sdrc.c OMAP2: Add funcs for writing SMS_ROT_* registers 2009-12-09 11:44:32 +02:00
sdrc.h OMAP2 clock: convert clock24xx.h to clock2xxx_data.c, opp2xxx* 2009-12-11 16:16:00 -07:00
sdrc2xxx.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
serial.c omap2/3: make serial_in_override() address the right uart port 2010-01-08 10:29:06 -08:00
sleep24xx.S omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
sleep34xx.S OMAP3: PM: Wait for SDRC ready iso a blind delay 2009-11-11 14:42:27 -08:00
sram34xx.S OMAP3: SDRC: Place SDRC AC timing and MR changes in CORE DVFS SRAM code behind Kconfig 2009-12-11 17:00:42 -07:00
sram242x.S omap: Split OMAP2_IO_ADDRESS to L3 and L4 2009-10-19 15:25:31 -07:00
sram243x.S omap: Split OMAP2_IO_ADDRESS to L3 and L4 2009-10-19 15:25:31 -07:00
timer-gp.c PM debug: allow configurable wakeup from suspend on OMAP GPtimer 2009-11-11 14:42:28 -08:00
timer-mpu.c ARM: OMAP4: SMP: Add mpu timer support for OMAP4430 2009-06-09 13:03:59 +05:30
usb-ehci.c omap: mux: Replace omap_cfg_reg() with new style signal or gpio functions 2009-12-11 16:16:32 -08:00
usb-musb.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
usb-tusb6010.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00