linux/arch/arm
Paul Walmsley 69d4255b13 OMAP3 SRAM: add ARM barriers to omap3_sram_configure_core_dpll
Add more barriers in the SRAM CORE DPLL M2 divider change code.

- Add a DSB SY after the function's entry point to flush all cached
  and buffered writes and wait for the interconnect to claim that they
  have completed[1].  The idea here is to force all delayed write
  traffic going to the SDRAM to at least post to the L3 interconnect
  before continuing.  If these writes are allowed to occur after the
  SDRC is idled, the writes will not be acknowledged and the ARM will
  stall.

  Note that in this case, it does not matter if the writes actually
  complete to the SDRAM - it is only necessary for the writes to leave
  the ARM itself.  If the writes are posted by the interconnect when
  the SDRC goes into idle, the writes will be delayed until the SDRC
  returns from idle[2].  If the SDRC is in the middle of a write when
  it is requested to enter idle, the SDRC will not acknowledge the
  idle request until the writes complete to the SDRAM.[3]

  The old-style DMB in sdram_in_selfrefresh is now superfluous, so,
  remove it.

- Add an ISB before the function's exit point to prevent the ARM from
  speculatively executing into SDRAM before the SDRAM is enabled[4].

...

1. ARMv7 ARM (DDI 0406A) A3-47, A3-48.

2. Private communication with Richard Woodruff <r-woodruff2@ti.com>.

3. Private communication with Richard Woodruff <r-woodruff2@ti.com>.

4. ARMv7 ARM (DDI 0406A) A3-48.

Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Richard Woodruff <r-woodruff2@ti.com>
2009-05-12 17:27:09 -06:00
..
boot arm: allow usage of string functions in linux/string.h 2009-03-31 13:05:36 +10:30
common [ARM] 5455/1: Fix IRQ noise from VIC code 2009-04-16 21:29:46 +01:00
configs Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 2009-05-05 09:22:26 +01:00
include/asm [ARM] 5507/1: support R_ARM_MOVW_ABS_NC and MOVT_ABS relocation types 2009-05-07 17:21:01 +01:00
kernel [ARM] 5507/1: support R_ARM_MOVW_ABS_NC and MOVT_ABS relocation types 2009-05-07 17:21:01 +01:00
lib Merge branch 'clps7500' into devel 2008-11-27 12:39:43 +00:00
mach-aaec2000 [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-at91 clocksource: pass clocksource to read() callback 2009-04-21 13:41:47 -07:00
mach-clps711x [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-davinci [ARM] 5506/1: davinci: DMA_32BIT_MASK --> DMA_BIT_MASK(32) 2009-05-07 14:44:47 +01:00
mach-ebsa110 [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-ep93xx [ARM] 5451/1: ep93xx:core.c: build warning fix 2009-04-15 10:01:03 +01:00
mach-footbridge [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-gemini [ARM] arch_reset() now takes a second parameter 2009-03-30 10:40:12 +01:00
mach-h720x [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-imx Merge master.kernel.org:/home/rmk/linux-2.6-arm 2009-04-24 08:36:41 -07:00
mach-integrator [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-iop13xx dma-mapping: replace all DMA_64BIT_MASK macro with DMA_BIT_MASK(64) 2009-04-07 08:31:10 -07:00
mach-iop32x [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-iop33x [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-ixp4xx Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2009-05-10 10:46:45 -07:00
mach-ixp23xx [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-ixp2000 [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-kirkwood [ARM] 5460/1: Orion: reduce namespace pollution 2009-04-23 23:25:41 +01:00
mach-ks8695 Merge branch 'highmem' into devel 2009-03-24 22:47:45 +00:00
mach-l7200 [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-lh7a40x [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-loki [ARM] 5460/1: Orion: reduce namespace pollution 2009-04-23 23:25:41 +01:00
mach-mmp [ARM] arch_reset() now takes a second parameter 2009-03-30 10:40:12 +01:00
mach-msm clocksource: pass clocksource to read() callback 2009-04-21 13:41:47 -07:00
mach-mv78xx0 [ARM] 5460/1: Orion: reduce namespace pollution 2009-04-23 23:25:41 +01:00
mach-mx1 MX1ADS: remove I2C ifdefs 2009-04-16 12:57:15 +02:00
mach-mx2 imx21: activate i2c 2009-04-16 12:57:13 +02:00
mach-mx3 mx31ads: Mark as having full regulatoion constraints with 1133-EV1 board 2009-04-16 13:03:56 +02:00
mach-netx clocksource: pass clocksource to read() callback 2009-04-21 13:41:47 -07:00
mach-ns9xxx clocksource: pass clocksource to read() callback 2009-04-21 13:41:47 -07:00
mach-omap1 Merge branch 'omap-clock-fixes' into omap-fixes 2009-04-24 09:56:16 -07:00
mach-omap2 OMAP3 SRAM: add ARM barriers to omap3_sram_configure_core_dpll 2009-05-12 17:27:09 -06:00
mach-orion5x [ARM] 5460/1: Orion: reduce namespace pollution 2009-04-23 23:25:41 +01:00
mach-pnx4008 [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-pxa [ARM] Kconfig typo fix: "PXA930" -> "CPU_PXA930". 2009-05-03 10:58:31 +01:00
mach-realview clocksource: pass clocksource to read() callback 2009-04-21 13:41:47 -07:00
mach-rpc [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-s3c24a0/include/mach [ARM] S3C: Make IRQ_EINT sleep control common 2009-03-08 12:35:36 +00:00
mach-s3c2400 [ARM] remove a common set of __virt_to_bus definitions 2008-11-28 15:36:49 +00:00
mach-s3c2410 i2c-s3c2410: Simplify bus frequency calculation 2009-04-07 10:18:33 +01:00
mach-s3c2412 [ARM] S3C2412: Add missing cache flush in suspend code 2009-05-01 12:28:16 +01:00
mach-s3c2440 [ARM] Osiris: Fix double initialisation in machine block 2009-04-17 12:42:24 +01:00
mach-s3c2442 [ARM] Arrange for platforms to select appropriate CPU support 2008-11-27 12:38:00 +00:00
mach-s3c2443 S3C24XX: Move and update IIS headers 2009-03-05 12:00:59 +00:00
mach-s3c6400 [ARM] S3C64XX: Add S3C64XX_PA_IIS{0,1} to <mach/map.h> 2009-05-01 12:28:16 +01:00
mach-s3c6410 [ARM] SMDK6410: Request GPIOs for LCD power control 2009-04-15 14:46:03 +01:00
mach-sa1100 [ARM] lart: fix build error 2009-04-26 13:56:01 +01:00
mach-shark [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mach-versatile clocksource: pass clocksource to read() callback 2009-04-21 13:41:47 -07:00
mach-w90x900 [ARM] pass reboot command line to arch_reset() 2009-03-19 16:20:24 +00:00
mm Merge master.kernel.org:/home/rmk/linux-2.6-arm 2009-05-02 16:40:20 -07:00
nwfpe [ARM] Convert asm/uaccess.h to linux/uaccess.h 2008-09-06 11:35:55 +01:00
oprofile Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2009-03-28 14:03:14 -07:00
plat-iop dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) 2009-04-07 08:31:11 -07:00
plat-mxc mx27ads: move PBC mapping out of vmalloc space 2009-05-05 09:37:08 +02:00
plat-omap OMAP3 SRAM: mark OCM RAM as Non-cacheable Normal memory 2009-05-12 17:27:09 -06:00
plat-orion Merge master.kernel.org:/home/rmk/linux-2.6-arm 2009-04-24 08:36:41 -07:00
plat-pxa [ARM] pxa: fix issue of muxed GPIO irq_chip functions touching non-muxed GPIOs 2009-04-27 11:45:16 +08:00
plat-s3c [ARM] S3C: Fix sparse warning from missing 's3c_device_hwmon' 2009-04-17 12:42:24 +01:00
plat-s3c24xx [ARM] S3C24XX: ADC: Check pending queue before freeing adc client 2009-04-17 12:46:36 +01:00
plat-s3c64xx [ARM] S3C64XX: add AHB_CON and SPCON register address definitions 2009-03-10 16:33:42 +00:00
tools [ARM] update mach-types 2009-03-23 16:12:37 -04:00
vfp [ARM] 5440/1: Fix VFP state corruption due to preemption during VFP exceptions 2009-04-01 22:17:50 +01:00
Kconfig ARM: ARCH_MXC should select HAVE_CLK 2009-05-05 09:36:44 +02:00
Kconfig-nommu
Kconfig.debug [ARM] 5412/1: XSCALE: add ice dcc support 2009-02-27 20:57:46 +00:00
Makefile Merge branch 'for-rmk' of git://gitorious.org/linux-gemini/mainline into devel 2009-03-26 23:10:11 +00:00