1. Mar 21, 2023
    • Jianhua Lu's avatar
      ASoC: cs35l41: Add 12288000 clk freq to cs35l41_fs_mon clk config · 00a7ef32
      Jianhua Lu authored
      
      
      There are 8 cs35l41 speaker amplifier connected to TDM
      in my Xiaomi Mi Pad 5 Pro tablet. In this case, it's necessary
      to set 12288000 (48000 * 32 * 8) clk freq for it.
      
      rate=48000, slot_width=32, slots=8.
      
      Signed-off-by: default avatarJianhua Lu <lujianhua000@gmail.com>
      Reviewed-by: default avatarDavid Rhodes <David.Rhodes@cirrus.com>
      Link: https://lore.kernel.org/r/20230318141440.29023-1-lujianhua000@gmail.com
      
      
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      00a7ef32
    • Mark Brown's avatar
      Enable I2S support for RK3588/RK3588S SoCs · 446967a4
      Mark Brown authored
      Merge series from Cristian Ciocaltea <cristian.ciocaltea@collabora.com>:
      
      There are five I2S/PCM/TDM controllers and two I2S/PCM controllers embedded
      in the RK3588 and RK3588S SoCs. Furthermore, RK3588 provides four additional
      I2S/PCM/TDM controllers.
      
      This patch series adds the required device tree nodes to support all the above.
      
      Additionally, it enables analog audio support for the Rock 5B SBC, which has
      been used to test both audio playback and recording.
      446967a4
    • Mark Brown's avatar
      Fix sound on ASUS Transformers · be7a2dad
      Mark Brown authored
      Merge series from Svyatoslav Ryhel <clamor95@gmail.com>:
      
      - add quirk for headset detection used by some T30 devices
        (ASUS Transformers, LG Optimus 4X HD and Vu);
      - add RT5631 and MAX9808x machine drivers
      - update bindings
      
      ---
      Changes from v1
      - fm34 dropped for re-work
      - quirk for headset detection and rt5631 bringup splitted
      - minor adjustments in binding updates
      - improvement of rt5631 rate asignment
      ---
      
      David Heidelberg (1):
        dt-bindings: sound: nvidia,tegra-audio: add RT5631 CODEC
      
      Svyatoslav Ryhel (7):
        dt-bindings: sound: nvidia,tegra-audio-common: add
          coupled-mic-hp-detect property
        ASoC: tegra: Support coupled mic-hp detection
        ARM: tegra: transformers: update sound nodes
        ASoC: tegra: Support RT5631 by machine driver
        ARM: tegra: transformers: bind RT5631 sound nodes
        dt-bindings: sound: nvidia,tegra-audio: add MAX9808x CODEC
        ASoC: tegra: Support MAX9808x by machine driver
      
       .../sound/nvidia,tegra-audio-common.yaml      |   4 +
       .../sound/nvidia,tegra-audio-max9808x.yaml    |  90 +++++++++++++
       .../sound/nvidia,tegra-audio-rt5631.yaml      |  85 ++++++++++++
       arch/arm/boot/dts/tegra20-asus-tf101.dts      |   7 +-
       arch/arm/boot/dts/tegra30-asus-tf201.dts      |  17 +++
       arch/arm/boot/dts/tegra30-asus-tf300t.dts     |   5 +-
       arch/arm/boot/dts/tegra30-asus-tf300tg.dts    |  17 +++
       arch/arm/boot/dts/tegra30-asus-tf700t.dts     |  17 +++
       .../dts/tegra30-asus-transformer-common.dtsi  |   9 +-
       sound/soc/tegra/Kconfig                       |  18 +++
       sound/soc/tegra/tegra_asoc_machine.c          | 125 +++++++++++++++++-
       11 files changed, 380 insertions(+), 14 deletions(-)
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max9808x.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5631.yaml
      
      --
      2.37.2
      be7a2dad
  2. Mar 20, 2023
  3. Mar 18, 2023
    • Mark Brown's avatar
      ASoC: SOF: ipc4-topology: Add support for effect · e32acf7b
      Mark Brown authored
      Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:
      
      The following series will add support for IPC4 process modules as effect
      widgets.  We can cover wide range of modules as a generic process or
      effect module, the patches will lay down the fundation and the generic
      code to handle them.
      
      At initialization time process modules can receive additional
      information on top of the base_cfg, which is defined as base_cfg_ext, an
      extension for the base configuration struct.  Other parameters or blobs
      for these modules are sent as a separate message via
      LARGE_CONFIG message, which is handled by the existing bytes control support.
      e32acf7b
    • Mark Brown's avatar
      ASoC: SOF: ipc4: upport multiple configs for BE DAIs · 6a36690a
      Mark Brown authored
      Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:
      
      Backend DAIs may support multiple audio formats. Modify pipeline setup to select
      a suitable configuration based on topology and frontend DAI runtime configuration.
      
      The prime use case is BT offload support where we need the abality to select
      different configuration on the BE side.
      6a36690a
  4. Mar 17, 2023
  5. Mar 16, 2023
  6. Mar 15, 2023
  7. Mar 14, 2023
    • Herve Codina's avatar
      soc: fsl: cpm1: qmc: Fix test dependency · 6ffa0da5
      Herve Codina authored
      
      
      The QMC depends on (SOC_FSL && COMPILE_TEST). SOC_FSL does not exist.
      
      Fix the dependency using the correct one: FSL_SOC.
      
      Signed-off-by: default avatarHerve Codina <herve.codina@bootlin.com>
      Link: https://lore.kernel.org/r/20230314082157.137176-1-herve.codina@bootlin.com
      
      
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      6ffa0da5
    • Kuninori Morimoto's avatar
      ASoC: soc-pcm.c: remove indirect runtime copy · 0d3a5178
      Kuninori Morimoto authored
      
      
      substream->runtime will be attached when substream was opened
      at snd_pcm_attach_substream(). When it uses DPCM,
      FE substream->runtime is attached, but BE substream->runtime is not.
      Thus, we are copying FE substream->runtime to BE.
      
      But, we are copyig FE substream->runtime to FE dpcm->runtime first (A),
      and copy it to BE dpcm->runtime (B), and copy it to
      BE substream->runtime (C).
      
      	static int dpcm_fe_dai_open(...) {
      		...
      (A)		fe->dpcm[stream].runtime = fe_substream->runtime;
      		...
      	}
      
      	static int dpcm_be_connect(...) {
      		...
      (B)		be->dpcm[stream].runtime = fe->dpcm[stream].runtime;
      		...
      	}
      
      	int dpcm_be_dai_startup(...) {
      		...
      (C)		be_substream->runtime = be->dpcm[stream].runtime;
      		...
      	}
      
      It is too roundabout and troublesome.
      OTOH, it is directly copying fe_substream->runtime at dpcm_be_reparent()
      without using be->dpcm[stream].runtime.
      
      	static void dpcm_be_reparent(...)
      	{
      		...
      		for_each_dpcm_fe(be, stream, dpcm) {
      			...
      =>			be_substream->runtime = fe_substream->runtime;
      			break;
      		}
      	}
      
      This patch removes indirect copying.
      
      Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Link: https://lore.kernel.org/r/87v8je64dh.wl-kuninori.morimoto.gx@renesas.com
      
      
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      0d3a5178
    • Kuninori Morimoto's avatar
      ASoC: soc-dai.c: add missing flag check at snd_soc_pcm_dai_probe() · 5c5a7521
      Kuninori Morimoto authored
      
      
      dai->probed is used at snd_soc_pcm_dai_probe/remove(),
      and used to call real remove() function only when it was probed.
      
      	int snd_soc_pcm_dai_probe(...)
      	{
      		...
      		for_each_rtd_dais(rtd, i, dai) {
      			...
      
      			if (dai->driver->probe) {
      (A)				int ret = dai->driver->probe(dai);
      
      				if (ret < 0)
      					return soc_dai_ret(dai, ret);
      			}
      
      =>			dai->probed = 1;
      		}
      		...
      	}
      
      	int snd_soc_pcm_dai_remove(...)
      	{
      		...
      		for_each_rtd_dais(rtd, i, dai) {
      			...
      =>			if (dai->probed &&
      			    ...) {
      				...
      			}
      
      =>			dai->probed = 0;
      		}
      		...
      	}
      
      But on probe() case, we need to check dai->probed before calling
      real probe() function at (A), otherwise real probe() might be called
      multi times (but real remove() will be called only once).
      This patch checks it at probe().
      
      Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Link: https://lore.kernel.org/r/87wn3u64e6.wl-kuninori.morimoto.gx@renesas.com
      
      
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      5c5a7521
    • Mark Brown's avatar
      ASoC: SOF: ipc4: Add support for formats per pins · 9c3bd790
      Mark Brown authored
      Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:
      
      The modules in IPC4 can have multiple 'pins' on their input and output
      and these pins can receive or output audio in different formats.
      Currently we assume that all pins are using the same format which is a
      limitation that needs to be lifted in order to support more complex
      components.
      
      This series will extend and rework the format handling to allow
      different formats on pins.
      9c3bd790
    • Mark Brown's avatar
      ASoC: SOF: ipc4: Add support for bytes control · bec88efd
      Mark Brown authored
      Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:
      
      This series will add support for bytes control and topology types.
      With IPC4 only the binary payload is sent to the firmware via LARGE_CONFIG
      message (which does similar multi-part message handling as the IPC3 control
      message did).
      
      The bytes payload itself is not checked by the kernel but user space expected to
      wrap it in sof_abi_hdr struct in order to get the target information of the
      binary data.
      
      The SOF firmware and sof-ctl have been updated to support blobs used in IPC4
      setups.
      bec88efd