summaryrefslogtreecommitdiff
path: root/arch/arm64/boot/dts/rockchip/rk1808.dtsi
diff options
context:
space:
mode:
authorSugar Zhang <sugar.zhang@rock-chips.com>2018-11-29 13:05:12 +0800
committerTao Huang <huangtao@rock-chips.com>2018-12-05 18:16:28 +0800
commit5af049f8ebb49b5d6bc288688f66543a62e95c9c (patch)
tree64633020b7d892b803a41a4708a5843ce0328183 /arch/arm64/boot/dts/rockchip/rk1808.dtsi
parentd83ced5248207b94078289de1125389fd2b60b9e (diff)
ASoC: rockchip: i2s_tdm: Correct some regmap config
When restoring registers during runtime resume, we must not write to I2S_TXDR which is the transmit FIFO as this queues up a sample to be output and pushes all of the output channels down by one. This can be demonstrated with the speaker-test utility: for i in a b c; do speaker-test -c 2 -s 1; done which should play a test with through the left speaker three times but if the I2S hardware starts runtime suspended the first sample will be played through the right speaker. Fix this by marking I2S_TXDR as volatile (which also requires marking it as readable, even though it technically isn't). This seems to be the most robust fix, the alternative of giving I2S_TXDR a default value is more fragile since it does not prevent regcache writing to the register in all circumstances. While here, also fix the configuration of I2S_RXDR and I2S_FIFOLR; these are not writable so they do not suffer from the same problem as I2S_TXDR but reading from I2S_RXDR does suffer from a similar problem. Change-Id: Id91d3f54f3fda0e9140c9da162b0dff2c3df067b Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
Diffstat (limited to 'arch/arm64/boot/dts/rockchip/rk1808.dtsi')
0 files changed, 0 insertions, 0 deletions