860-v6.7-09-ASoC-mediatek-mt7986-add-sample-rate-checker.patch 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. From 4e229f4264f4be7a6a554487714c0913ef59cf7f Mon Sep 17 00:00:00 2001
  2. From: Maso Huang <[email protected]>
  3. Date: Tue, 24 Oct 2023 11:50:19 +0800
  4. Subject: [PATCH 9/9] ASoC: mediatek: mt7986: add sample rate checker
  5. mt7986 only supports 8/12/16/24/32/48/96/192 kHz
  6. Signed-off-by: Maso Huang <[email protected]>
  7. Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
  8. Link: https://lore.kernel.org/r/[email protected]
  9. Signed-off-by: Mark Brown <[email protected]>
  10. ---
  11. sound/soc/mediatek/mt7986/mt7986-dai-etdm.c | 23 +++++++++++++++++----
  12. 1 file changed, 19 insertions(+), 4 deletions(-)
  13. --- a/sound/soc/mediatek/mt7986/mt7986-dai-etdm.c
  14. +++ b/sound/soc/mediatek/mt7986/mt7986-dai-etdm.c
  15. @@ -237,12 +237,27 @@ static int mtk_dai_etdm_hw_params(struct
  16. struct snd_pcm_hw_params *params,
  17. struct snd_soc_dai *dai)
  18. {
  19. + unsigned int rate = params_rate(params);
  20. struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
  21. - mtk_dai_etdm_config(afe, params, dai, SNDRV_PCM_STREAM_PLAYBACK);
  22. - mtk_dai_etdm_config(afe, params, dai, SNDRV_PCM_STREAM_CAPTURE);
  23. -
  24. - return 0;
  25. + switch (rate) {
  26. + case 8000:
  27. + case 12000:
  28. + case 16000:
  29. + case 24000:
  30. + case 32000:
  31. + case 48000:
  32. + case 96000:
  33. + case 192000:
  34. + mtk_dai_etdm_config(afe, params, dai, SNDRV_PCM_STREAM_PLAYBACK);
  35. + mtk_dai_etdm_config(afe, params, dai, SNDRV_PCM_STREAM_CAPTURE);
  36. + return 0;
  37. + default:
  38. + dev_err(afe->dev,
  39. + "Sample rate %d invalid. Supported rates: 8/12/16/24/32/48/96/192 kHz\n",
  40. + rate);
  41. + return -EINVAL;
  42. + }
  43. }
  44. static int mtk_dai_etdm_trigger(struct snd_pcm_substream *substream, int cmd,