linux/arch/arm/plat-omap/include/plat
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
..
blizzard.h
board-ams-delta.h
board-sx1.h
board-voiceblue.h
board.h omap1: Fix compile for omap1_bl.c 2010-01-08 10:29:06 -08:00
clkdev_omap.h ARM: OMAP4: PM: OMAP4 clock tree and clkdev registration 2009-12-11 17:00:45 -07:00
clkdev.h
clock.h OMAP clock/CPUFreq: add clk_exit_cpufreq_table() 2010-01-08 15:23:16 -07:00
clockdomain.h
common.h omap: Split i2c platform init for mach-omap1 and mach-omap2 2009-12-11 16:16:32 -08:00
control.h omap3: add missing parentheses 2010-01-08 10:29:07 -08:00
cpu.h omap3: Fix OMAP35XX_REV macros 2009-12-11 16:16:37 -08:00
display.h OMAP: DSS2: Display Subsystem Driver core 2009-12-09 12:04:34 +02:00
dma.h omap1: DMA: move LCD related code from plat-omap to mach-omap1 2009-12-11 16:16:33 -08:00
dmtimer.h
dsp_common.h
fpga.h
gpio-switch.h
gpio.h OMAP3: PM: GPIO context save/restore 2009-11-11 14:40:12 -08:00
gpmc-smc91x.h
gpmc.h omap: Correcting GPMC_CONFIG1_DEVICETYPE_NAND 2009-12-11 16:16:35 -08:00
hardware.h
hwa742.h
i2c.h omap: Split i2c platform init for mach-omap1 and mach-omap2 2009-12-11 16:16:32 -08:00
io.h OMAP2420 IO mapping: move IVA mapping virtual address out of vmalloc space 2010-01-08 15:23:06 -07:00
iommu2.h
iommu.h
iovmm.h
irda.h
irqs.h mfd: Add support for twl6030 irq framework 2009-12-14 00:25:31 +01:00
keypad.h
lcd_mipid.h
led.h
mailbox.h omap: mailbox: OMAP4 Mailbox-driver Patch to support tasklet implementation 2009-11-22 10:24:33 -08:00
mcbsp.h
mcspi.h
memory.h Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 2009-12-08 08:15:29 -08:00
menelaus.h
mmc.h
mux.h omap1: Add 7xx clocks and pin muxes for SPI 2010-01-08 10:29:05 -08:00
nand.h
omap7xx.h omap1: Add 7xx clocks and pin muxes for SPI 2010-01-08 10:29:05 -08:00
omap16xx.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
omap24xx.h
omap34xx.h omap3: drop all IVA-related address base definitions 2009-11-22 10:24:32 -08:00
omap44xx.h ARM: OMAP4: PM: Fix the PRM and CM base addresses 2009-12-11 17:00:44 -07:00
omap730.h
omap850.h
omap1510.h
omap_device.h OMAP: omap_device: track latency in nanoseconds 2009-12-11 17:00:44 -07:00
omap_hwmod.h OMAP3: hwmod: Adding flag to prevent caching of sysconfig register. 2010-01-19 17:30:51 -07:00
omap-alsa.h
omap-pm.h
onenand.h
param.h
powerdomain.h OMAP3: PM: Fix for MPU power domain MEM BANK position 2009-12-11 17:00:42 -07:00
prcm.h OMAP3: PM: PRCM context save/restore 2009-11-11 14:40:13 -08:00
sdrc.h OMAP2: Add funcs for writing SMS_ROT_* registers 2009-12-09 11:44:32 +02:00
serial.h OMAP3: serial - allow platforms specify which UARTs to initialize 2009-12-11 16:16:35 -08:00
smp.h OMAP4: AuxCoreBoot registers only accessible in secure mode 2009-12-11 16:16:35 -08:00
sram.h OMAP3: PM: CORE domain off-mode support 2009-11-11 14:42:25 -08:00
system.h
tc.h
timer-gp.h
timex.h
uncompress.h omap: introduce OMAP_LL_DEBUG_NONE DEBUG_LL config 2009-11-22 10:24:32 -08:00
usb.h omap: update plat/usb.h to allow ehci driver to build 2009-11-22 10:24:32 -08:00
vram.h OMAP: Add VRAM manager 2009-12-09 12:04:33 +02:00
vrfb.h OMAP: Add support for VRFB rotation engine 2009-12-09 12:04:33 +02:00