1. 08 Feb, 2024 1 commit
    • Richard Fitzgerald's avatar
      ASoC: cs35l56: Fix deadlock in ASP1 mixer register initialization · c14f09f0
      Richard Fitzgerald authored
      Rewrite the handling of ASP1 TX mixer mux initialization to prevent a
      deadlock during component_remove().
      
      The firmware can overwrite the ASP1 TX mixer registers with
      system-specific settings. This is mainly for hardware that uses the
      ASP as a chip-to-chip link controlled by the firmware. Because of this
      the driver cannot know the starting state of the ASP1 mixer muxes until
      the firmware has been downloaded and rebooted.
      
      The original workaround for this was to queue a work function from the
      dsp_work() job. This work then read the register values (populating the
      regmap cache the first time around) and then called
      snd_soc_dapm_mux_update_power(). The problem with this is that it was
      ultimately triggered by cs35l56_component_probe() queueing dsp_work,
      which meant that it would be running in parallel with the rest of the
      ASoC component and card initialization. To prevent accessing DAPM before
      it was fully initialized the work function took the card mutex. But this
      would deadlock if cs35l56_component_remove() was called before the work job
      had completed, because ASoC calls component_remove() with the card mutex
      held.
      
      This new version removes the work function. Instead the regmap cache and
      DAPM mux widgets are initialized the first time any of the associated ALSA
      controls is read or written.
      Signed-off-by: default avatarRichard Fitzgerald <rf@opensource.cirrus.com>
      Fixes: 07f7d6e7 ("ASoC: cs35l56: Fix for initializing ASP1 mixer registers")
      Link: https://lore.kernel.org/r/20240208123742.1278104-1-rf@opensource.cirrus.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      c14f09f0
  2. 07 Feb, 2024 3 commits
  3. 06 Feb, 2024 1 commit
  4. 05 Feb, 2024 4 commits
  5. 01 Feb, 2024 19 commits
  6. 29 Jan, 2024 7 commits
  7. 28 Jan, 2024 5 commits