linux/sound/soc/rockchip
Nicolas Frattaroli d6365d0f0a
ASoC: rockchip: i2s-tdm: Strip out direct CRU use
In cases where both rx and tx lrck are synced to the same source,
the resets for rx and tx need to be triggered simultaneously,
according to the downstream driver.

As there is no reset API to atomically bulk (de)assert two resets
at once, what the driver did was implement half a reset controller
specific to Rockchip, which tried to write the registers for the
resets within one write ideally or several writes within an irqsave
section.

This of course violates abstractions quite badly. The driver should
not write to the CRU's registers directly.

In practice, for the cases I tested the driver with, which is audio
playback, replacing the synchronised asserts with just individual
ones does not seem to make any difference.

If it turns out that this breaks something in the future, it should
be fixed through the specification and implementation of an atomic
bulk reset API, not with a CRU hack.

Signed-off-by: Nicolas Frattaroli <frattaroli.nicolas@gmail.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Message-Id: <20211016105354.116513-2-frattaroli.nicolas@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-10-17 00:16:43 +01:00
..
Kconfig ASoC: rockchip: add support for i2s-tdm controller 2021-10-07 16:58:16 +01:00
Makefile ASoC: rockchip: add support for i2s-tdm controller 2021-10-07 16:58:16 +01:00
rk3288_hdmi_analog.c ASoC: rockchip: use asoc_substream_to_rtd() 2020-07-23 19:07:29 +01:00
rk3399_gru_sound.c ASoC: rk3399_gru_sound: Add DAPM pins, kcontrols for jack detection 2020-07-30 22:54:39 +01:00
rockchip_i2s_tdm.c ASoC: rockchip: i2s-tdm: Strip out direct CRU use 2021-10-17 00:16:43 +01:00
rockchip_i2s_tdm.h ASoC: rockchip: add support for i2s-tdm controller 2021-10-07 16:58:16 +01:00
rockchip_i2s.c ASoC: rockchip: i2s: Fix concurrency between tx/rx 2021-09-03 16:19:01 +01:00
rockchip_i2s.h ASoC: rockchip: i2s: Add support for frame inversion 2021-08-26 13:59:40 +01:00
rockchip_max98090.c ASoC: hdmi-codec: Use set_jack ops to set jack 2020-09-22 12:48:03 +01:00
rockchip_pcm.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rockchip_pcm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rockchip_pdm.c ASoC: rockchip: pdm: Add support for path map 2021-09-13 01:44:10 +01:00
rockchip_pdm.h ASoC: rockchip: pdm: Add support for path map 2021-09-13 01:44:10 +01:00
rockchip_rt5645.c ASoC: rockchip: use asoc_substream_to_rtd() 2020-07-23 19:07:29 +01:00
rockchip_spdif.c ASoC: rockchip: spdif: Add support for rk3568 spdif 2021-08-26 13:56:56 +01:00
rockchip_spdif.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00