1. 05 Jun, 2023 22 commits
  2. 02 Jun, 2023 4 commits
  3. 01 Jun, 2023 5 commits
  4. 31 May, 2023 7 commits
  5. 30 May, 2023 2 commits
    • Mark Brown's avatar
      ES8316 audio codec fixes on Rock5B · b48aa6a3
      Mark Brown authored
      Merge series from Cristian Ciocaltea <cristian.ciocaltea@collabora.com>:
      
      This patch series handles a few issues related to the ES8316 audio
      codec, discovered while doing some testing on the Rock 5B board.
      b48aa6a3
    • Cristian Ciocaltea's avatar
      ASoC: es8316: Do not set rate constraints for unsupported MCLKs · 60413129
      Cristian Ciocaltea authored
      When using the codec through the generic audio graph card, there are at
      least two calls of es8316_set_dai_sysclk(), with the effect of limiting
      the allowed sample rates according to the MCLK/LRCK ratios supported by
      the codec:
      
      1. During audio card setup, to set the initial MCLK - see
         asoc_simple_init_dai().
      
      2. Before opening a stream, to update MCLK, according to the stream
         sample rate and the multiplication factor - see
         asoc_simple_hw_params().
      
      In some cases the initial MCLK might be set to a frequency that doesn't
      match any of the supported ratios, e.g. 12287999 instead of 12288000,
      which is only 1 Hz below the supported clock, as that is what the
      hardware reports. This creates an empty list of rate constraints, which
      is further passed to snd_pcm_hw_constraint_list() via
      es8316_pcm_startup(), and causes the following error on the very first
      access of the sound card:
      
        $ speaker-test -D hw:Analog,0 -F S16_LE -c 2 -t wav
        Broken configuration for playback: no configurations available: Invalid argument
        Setting of hwparams failed: Invalid argument
      
      Note that all subsequent retries succeed thanks to the updated MCLK set
      at point 2 above, which uses a computed frequency value instead of a
      reading from the hardware registers. Normally this would have mitigated
      the issue, but es8316_pcm_startup() executes before the 2nd call to
      es8316_set_dai_sysclk(), hence it cannot make use of the updated
      constraints.
      
      Since es8316_pcm_hw_params() performs anyway a final validation of MCLK
      against the stream sample rate and the supported MCLK/LRCK ratios, fix
      the issue by ensuring that sysclk_constraints list is only set when at
      least one supported sample rate is autodetected by the codec.
      
      Fixes: b8b88b70 ("ASoC: add es8316 codec driver")
      Signed-off-by: default avatarCristian Ciocaltea <cristian.ciocaltea@collabora.com>
      Link: https://lore.kernel.org/r/20230530181140.483936-3-cristian.ciocaltea@collabora.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      60413129