linux/sound/soc
Mark Brown cdd23ae6e6
Merge series "Fix reset controls and RPM of NVIDIA Tegra ASoC drivers" from Dmitry Osipenko <digetx@gmail.com>:
Hi,

This series adds missing hardware reset controls to I2S and AC97 drivers,
corrects runtime PM usage and drivers probe/remove order. Currently drivers
happen to work properly because reset is implicitly deasserted by tegra-clk
driver, but clk driver shouldn't touch the resets and we need to fix it
because this breaks other Tegra drivers. Previously we fixed the resets of
the AHUB and HDMI codec drivers, but turned out that we missed the I2C and
AC97 drivers.

Thanks to Paul Fertser for testing the pending clk patches and finding
that audio got broken on Tegra20 AC100 netbook because of the missing I2S
reset.

Changelog:

v5: - After taking another look at the drivers I noticed couple more
      things that could be improved. These new patches correct runtime PM
      and probe/remove order of the drivers:

        ASoC: tegra20: spdif: Correct driver removal order
        ASoC: tegra20: spdif: Remove handing of disabled runtime PM
        ASoC: tegra20: i2s: Add system level suspend-resume callbacks
        ASoC: tegra20: i2s: Correct driver removal order
        ASoC: tegra20: i2s: Use devm_clk_get()
        ASoC: tegra20: i2s: Remove handing of disabled runtime PM
        ASoC: tegra30: i2s: Correct driver removal order
        ASoC: tegra30: i2s: Use devm_clk_get()
        ASoC: tegra30: i2s: Remove handing of disabled runtime PM
        ASoC: tegra30: ahub: Reset global variable
        ASoC: tegra30: ahub: Correct suspend-resume callbacks
        ASoC: tegra30: ahub: Remove handing of disabled runtime PM

v4: - Added missing prototype for reset_control_bulk_put().

v3: - Fixed reset stubs for !CONFIG_RESET_CONTROLLER.

v2: - After some more testing I found that I2S control logic doesn't require
      I2S clock to be enabled for resetting. Hence it's fine to have I2S to
      be reset by parent AHUB driver, so I dropped "tegra30: i2s: Add reset
      control" patch.

    - While I was double-checking resets on Tegra30, I found that that
      Tegra30 I2S driver has a broken runtime PM which doesn't restore
      hardware state on resume and it's lost after AHUB RPM-resume.
      Thus, added this new patch "tegra30: i2s: Restore hardware state
      on runtime PM resume".

    - Added new patches which switch AHUB driver to use reset-bulk API.
      I took the RFC patch from Philipp Zabel, fixed it and added
      devm_reset_control_bulk_optional_get_exclusive_released() that
      will be useful for further Tegra GPU patches. This is a minor
      improvement which makes code cleaner.

Dmitry Osipenko (16):
  ASoC: tegra20: ac97: Add reset control
  ASoC: tegra20: i2s: Add reset control
  ASoC: tegra30: i2s: Restore hardware state on runtime PM resume
  ASoC: tegra30: ahub: Switch to use reset-bulk API
  ASoC: tegra20: spdif: Correct driver removal order
  ASoC: tegra20: spdif: Remove handing of disabled runtime PM
  ASoC: tegra20: i2s: Add system level suspend-resume callbacks
  ASoC: tegra20: i2s: Correct driver removal order
  ASoC: tegra20: i2s: Use devm_clk_get()
  ASoC: tegra20: i2s: Remove handing of disabled runtime PM
  ASoC: tegra30: i2s: Correct driver removal order
  ASoC: tegra30: i2s: Use devm_clk_get()
  ASoC: tegra30: i2s: Remove handing of disabled runtime PM
  ASoC: tegra30: ahub: Reset global variable
  ASoC: tegra30: ahub: Correct suspend-resume callbacks
  ASoC: tegra30: ahub: Remove handing of disabled runtime PM

Philipp Zabel (1):
  reset: Add reset_control_bulk API

 drivers/reset/core.c            | 215 ++++++++++++++++++++++
 include/linux/reset.h           | 315 ++++++++++++++++++++++++++++++++
 sound/soc/tegra/tegra20_ac97.c  |  21 +++
 sound/soc/tegra/tegra20_ac97.h  |   1 +
 sound/soc/tegra/tegra20_i2s.c   |  60 +++---
 sound/soc/tegra/tegra20_i2s.h   |   1 +
 sound/soc/tegra/tegra20_spdif.c |  16 +-
 sound/soc/tegra/tegra30_ahub.c  | 168 ++++++-----------
 sound/soc/tegra/tegra30_ahub.h  |   5 +-
 sound/soc/tegra/tegra30_i2s.c   |  65 ++-----
 10 files changed, 667 insertions(+), 200 deletions(-)

--
2.30.2

base-commit: a38fd87484
2021-03-18 17:52:21 +00:00
..
adi ASoC: adi: sync parameter naming (rate/sample_bits) 2021-01-21 12:37:44 +00:00
amd ASoC: amd: renoir: remove invalid kernel-doc comment 2021-03-10 13:10:41 +00:00
atmel ASoC: mchp-i2s-mcc: Add FIFOs support 2021-03-10 13:08:39 +00:00
au1x ASoC: au1x: sync parameter naming (rate/sample_bits) 2021-01-21 12:37:46 +00:00
bcm ASoC: bcm: sync parameter naming (rate/sample_bits) 2021-01-21 12:37:47 +00:00
cirrus ASoC: cirrus: sync parameter naming (rate/sample_bits) 2021-01-21 12:37:48 +00:00
codecs ASoC: rt1019: add rt1019 amplifier driver 2021-03-18 13:54:44 +00:00
dwc
fsl ASoC: imx-hdmi: fix platform_no_drv_owner.cocci warnings 2021-03-16 13:29:38 +00:00
generic ASoC: generic: simple-card-utils: remove useless assignment 2021-03-10 13:06:58 +00:00
hisilicon
img
intel ASoC: Intel: sof_rt5682: Add ALC1015Q-VB speaker amp support 2021-03-18 13:54:45 +00:00
jz4740 ASoC: jz4740: sync parameter naming (rate/sample_bits) 2021-01-21 12:38:08 +00:00
kirkwood ASoC: kirkwood: Use managed DMA buffer allocation 2021-01-13 11:36:16 +00:00
mediatek ASoC: mediatek: mt8173: rename local irq variable 2021-03-12 14:29:54 +00:00
meson ASoC: constify of_phandle_args in snd_soc_get_dai_name() 2021-03-10 13:07:14 +00:00
mxs ASoC: mxs-saif: drop unneeded snd_soc_dai_set_drvdata 2021-03-10 13:07:06 +00:00
pxa ASoC: mmp-sspa: drop unneeded snd_soc_dai_set_drvdata 2021-03-10 13:07:05 +00:00
qcom ASoC: qcom: q6dsp: fix kernel-doc warning 2021-03-10 13:10:44 +00:00
rockchip ASoC: rockchip: sync parameter naming (rate/sample_bits) 2021-01-21 12:37:50 +00:00
samsung ASoC: samsung: tm2_wm5110: remove shadowed variable 2021-03-12 20:45:41 +00:00
sh ASoC: rsnd: core: Check convert rate in rsnd_hw_params 2021-03-16 13:29:37 +00:00
sof ASoC: SOF: remove superfluous NULL check in debugfs read 2021-03-16 13:25:46 +00:00
spear
sprd ASoC: sprd: Switch to use list_entry_is_head() helper 2020-12-28 12:24:45 +00:00
sti
stm ASoC: stm32: i2s: add master clock provider 2021-02-05 15:03:03 +00:00
sunxi ASoC: sun4i-i2s: drop unneeded snd_soc_dai_set_drvdata 2021-03-10 13:07:07 +00:00
tegra ASoC: tegra30: ahub: Remove handing of disabled runtime PM 2021-03-18 13:49:45 +00:00
ti ASoC: ti: Fix a typo in the file ams-delta.c 2021-03-17 13:10:46 +00:00
uniphier ASoC: uniphier: Simplify the return expression of uniphier_aio_startup 2021-03-10 13:07:15 +00:00
ux500
xilinx
xtensa
Kconfig ASoC: topology: KUnit: Add KUnit tests passing various arguments to snd_soc_tplg_component_load 2021-01-21 12:36:24 +00:00
Makefile ASoC: topology: KUnit: Add KUnit tests passing various arguments to snd_soc_tplg_component_load 2021-01-21 12:36:24 +00:00
soc-ac97.c
soc-acpi.c
soc-card.c
soc-component.c ASoC: constify of_phandle_args in snd_soc_get_dai_name() 2021-03-10 13:07:14 +00:00
soc-compress.c ASoC: soc-pcm: share DPCM BE DAI stop operation 2021-03-12 14:26:32 +00:00
soc-core.c ASoC: soc-core: fix DMI handling 2021-03-11 13:25:09 +00:00
soc-dai.c ASoC: soc-dai: fix kernel-doc 2021-03-10 13:08:46 +00:00
soc-dapm.c ASoC: dapm: use component prefix when checking widget names 2021-02-10 17:16:29 +00:00
soc-devres.c
soc-generic-dmaengine-pcm.c ASoC: dmaengine: Document support for TX only or RX only streams 2020-10-09 15:11:20 +01:00
soc-jack.c
soc-link.c ASoC: soc-pcm: care trigger rollback 2020-12-09 12:13:38 +00:00
soc-ops.c ASoC: soc-ops: remove useless assignment 2021-03-10 13:06:53 +00:00
soc-pcm.c ASoC: soc-pcm: share DPCM BE DAI stop operation 2021-03-12 14:26:32 +00:00
soc-topology-test.c ASoC: topology: KUnit: Convert from cpu to data format 2021-02-02 17:08:21 +00:00
soc-topology.c ASoC: soc-topology: clarify expression 2021-03-10 13:06:57 +00:00
soc-utils.c