linux_dsm_epyc7002/arch/arm/plat-omap
Janusz Krzysztofik 96fbd74551 omap: McBSP: Use cache when modifying individual register bits
Change the way McBSP registers are updated: use cached values instead of
relying upon those read back from the device.

With this patch, I have finally managed to get rid of all random
playback/recording hangups on my OMAP1510 based Amstrad Delta hardware. Before
that, values read back from McBSP registers to be used for updating them
happened to be errornous.

From the hardware side, the issue appeared to be caused by a relatively high
power requirements of an external USB adapter connected to the board's printer
dedicated USB port.

I think there is one important point that makes this patch worth of applying,
apart from my hardware quality. With the current code, if it ever happens to
any machine, no matter if OMAP1510 or newer, to read incorrect value from a
McBSP register, this wrong value will get written back without any checking.
That can lead to hardware damage if, for example, an input pin is turned into
output as a result.

Applies on top of patch 3 from this series:
[PATCH v9 3/4] OMAP: McBSP: Introduce caching in register write operations

Tested on OMAP1510 based Amstrad Delta using linux-omap for-next, commit
fb7380d70e041e4b3892f6b19dff7efb609d15a4 (2.6.33-rc3+ dated 2010-01-11).
Compile-tested with omap_3430sdp_defconfig.

Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Acked-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Acked-by: Jarkko Nikula <jhnikula@gmail.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
2010-02-15 10:03:33 -08:00
..
include/plat omap: McBSP: Introduce caching in register write operations 2010-02-15 10:03:33 -08:00
clock.c Merge branch 'omap-fixes-for-linus' into omap-for-linus 2010-02-10 18:18:13 -08:00
common.c omap3: Replace ARCH_OMAP34XX with ARCH_OMAP3 2010-02-15 09:27:02 -08:00
cpu-omap.c OMAP clock/CPUFreq: add clk_exit_cpufreq_table() 2010-01-08 15:23:16 -07:00
debug-devices.c omap: use smc91x_platdata to setup smc91x 2009-12-11 16:16:33 -08:00
debug-leds.c const: constify remaining dev_pm_ops 2009-12-15 08:53:25 -08:00
devices.c omap2: Convert ARCH_OMAP24XX to ARCH_OMAP2 2010-02-15 09:27:01 -08:00
dma.c omap2/3/4: Replace orred CONFIG_ARCH_OMAP2/3/4 with CONFIG_ARCH_OMAP2PLUS 2010-02-15 09:27:04 -08:00
dmtimer.c omap2/3/4: Replace orred CONFIG_ARCH_OMAP2/3/4 with CONFIG_ARCH_OMAP2PLUS 2010-02-15 09:27:04 -08:00
fb.c OMAP: DSS2: omapfb driver 2009-12-09 12:12:44 +02:00
gpio.c omap: Fix gpio.c for multi-omap for omap4 2010-02-15 09:27:25 -08:00
i2c.c omap3: Replace ARCH_OMAP34XX with ARCH_OMAP3 2010-02-15 09:27:02 -08:00
io.c OMAP2xxx IO mapping: mark DSP mappings as being 2420-only 2010-01-08 15:23:05 -07:00
iommu-debug.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
iommu.c omap iommu: fix incorrect address for largepage 1st entry 2010-02-15 10:03:32 -08:00
iopgtable.h omap iommu: cleanup iommu page address mask and definitions 2010-02-15 10:03:32 -08:00
iovmm.c arch/arm/plat-omap: Drop an unnecessary NULL test 2009-11-22 10:24:32 -08:00
Kconfig omap2/3/4: Replace orred CONFIG_ARCH_OMAP2/3/4 with CONFIG_ARCH_OMAP2PLUS 2010-02-15 09:27:04 -08:00
mailbox.c omap: mailbox: OMAP4 Mailbox-driver Patch to support tasklet implementation 2009-11-22 10:24:33 -08:00
Makefile OMAP2/3/4 core: create omap_device layer 2009-09-03 20:14:05 +03:00
mcbsp.c omap: McBSP: Use cache when modifying individual register bits 2010-02-15 10:03:33 -08:00
mux.c omap: mux: Add new style pin multiplexing code for omap3 2009-12-11 16:16:32 -08:00
ocpi.c [ARM] Convert asm/io.h to linux/io.h 2008-09-06 12:10:45 +01:00
omap_device.c Merge branch 'omap-fixes-for-linus' into omap-for-linus 2010-02-10 18:18:13 -08:00
omap-pm-noop.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
sram.c omap3: Replace ARCH_OMAP34XX with ARCH_OMAP3 2010-02-15 09:27:02 -08:00
usb.c omap1: Add omap7xx USB support 2009-12-11 16:16:34 -08:00