[PATCH v2 0/3] ASoC: mediatek: Remove redundant code and add sample rate checker of MT7986 SoC
Changes in v2: - devide v1 patch [1/2] into v2 [1/3] [2/3] with appropriate title and description - refine error log based on reviewer's suggestions [3/3]
1. Drop the remove callback of mt7986_wm8960. 2. Remove the mt7986_wm8960_priv structure 3. Add sample rate checker. Patches are based on broonie tree "for-next" branch.
Maso Huang (3): ASoC: mediatek: mt7986: drop the remove callback of mt7986_wm8960 ASoC: mediatek: mt7986: remove the mt7986_wm8960_priv structure ASoC: mediatek: mt7986: add sample rate checker
sound/soc/mediatek/mt7986/mt7986-dai-etdm.c | 23 +++++++++-- sound/soc/mediatek/mt7986/mt7986-wm8960.c | 43 ++++++--------------- 2 files changed, 31 insertions(+), 35 deletions(-)
Drop the remove callback of mt7986_wm8960.
Signed-off-by: Maso Huang maso.huang@mediatek.com --- sound/soc/mediatek/mt7986/mt7986-wm8960.c | 10 ---------- 1 file changed, 10 deletions(-)
diff --git a/sound/soc/mediatek/mt7986/mt7986-wm8960.c b/sound/soc/mediatek/mt7986/mt7986-wm8960.c index 364d13b1c426..f6b9794b7229 100644 --- a/sound/soc/mediatek/mt7986/mt7986-wm8960.c +++ b/sound/soc/mediatek/mt7986/mt7986-wm8960.c @@ -163,15 +163,6 @@ static int mt7986_wm8960_machine_probe(struct platform_device *pdev) return ret; }
-static void mt7986_wm8960_machine_remove(struct platform_device *pdev) -{ - struct snd_soc_card *card = platform_get_drvdata(pdev); - struct mt7986_wm8960_priv *priv = snd_soc_card_get_drvdata(card); - - of_node_put(priv->codec_node); - of_node_put(priv->platform_node); -} - static const struct of_device_id mt7986_wm8960_machine_dt_match[] = { {.compatible = "mediatek,mt7986-wm8960-sound"}, { /* sentinel */ } @@ -184,7 +175,6 @@ static struct platform_driver mt7986_wm8960_machine = { .of_match_table = mt7986_wm8960_machine_dt_match, }, .probe = mt7986_wm8960_machine_probe, - .remove_new = mt7986_wm8960_machine_remove, };
module_platform_driver(mt7986_wm8960_machine);
Il 24/10/23 05:50, Maso Huang ha scritto:
Drop the remove callback of mt7986_wm8960.
Signed-off-by: Maso Huang maso.huang@mediatek.com
Reviewed-by: AngeloGioacchino Del Regno angelogioacchino.delregno@collabora.com
Remove the mt7986_wm8960_priv structure.
Signed-off-by: Maso Huang maso.huang@mediatek.com --- sound/soc/mediatek/mt7986/mt7986-wm8960.c | 33 +++++++++-------------- 1 file changed, 12 insertions(+), 21 deletions(-)
diff --git a/sound/soc/mediatek/mt7986/mt7986-wm8960.c b/sound/soc/mediatek/mt7986/mt7986-wm8960.c index f6b9794b7229..c1390b373410 100644 --- a/sound/soc/mediatek/mt7986/mt7986-wm8960.c +++ b/sound/soc/mediatek/mt7986/mt7986-wm8960.c @@ -12,11 +12,6 @@
#include "mt7986-afe-common.h"
-struct mt7986_wm8960_priv { - struct device_node *platform_node; - struct device_node *codec_node; -}; - static const struct snd_soc_dapm_widget mt7986_wm8960_widgets[] = { SND_SOC_DAPM_HP("Headphone", NULL), SND_SOC_DAPM_MIC("AMIC", NULL), @@ -92,20 +87,18 @@ static int mt7986_wm8960_machine_probe(struct platform_device *pdev) struct snd_soc_card *card = &mt7986_wm8960_card; struct snd_soc_dai_link *dai_link; struct device_node *platform, *codec; - struct mt7986_wm8960_priv *priv; + struct device_node *platform_dai_node, *codec_dai_node; int ret, i;
- priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); - if (!priv) - return -ENOMEM; + card->dev = &pdev->dev;
platform = of_get_child_by_name(pdev->dev.of_node, "platform");
if (platform) { - priv->platform_node = of_parse_phandle(platform, "sound-dai", 0); + platform_dai_node = of_parse_phandle(platform, "sound-dai", 0); of_node_put(platform);
- if (!priv->platform_node) { + if (!platform_dai_node) { dev_err(&pdev->dev, "Failed to parse platform/sound-dai property\n"); return -EINVAL; } @@ -117,24 +110,22 @@ static int mt7986_wm8960_machine_probe(struct platform_device *pdev) for_each_card_prelinks(card, i, dai_link) { if (dai_link->platforms->name) continue; - dai_link->platforms->of_node = priv->platform_node; + dai_link->platforms->of_node = platform_dai_node; }
- card->dev = &pdev->dev; - codec = of_get_child_by_name(pdev->dev.of_node, "codec");
if (codec) { - priv->codec_node = of_parse_phandle(codec, "sound-dai", 0); + codec_dai_node = of_parse_phandle(codec, "sound-dai", 0); of_node_put(codec);
- if (!priv->codec_node) { - of_node_put(priv->platform_node); + if (!codec_dai_node) { + of_node_put(platform_dai_node); dev_err(&pdev->dev, "Failed to parse codec/sound-dai property\n"); return -EINVAL; } } else { - of_node_put(priv->platform_node); + of_node_put(platform_dai_node); dev_err(&pdev->dev, "Property 'codec' missing or invalid\n"); return -EINVAL; } @@ -142,7 +133,7 @@ static int mt7986_wm8960_machine_probe(struct platform_device *pdev) for_each_card_prelinks(card, i, dai_link) { if (dai_link->codecs->name) continue; - dai_link->codecs->of_node = priv->codec_node; + dai_link->codecs->of_node = codec_dai_node; }
ret = snd_soc_of_parse_audio_routing(card, "audio-routing"); @@ -158,8 +149,8 @@ static int mt7986_wm8960_machine_probe(struct platform_device *pdev) }
err_of_node_put: - of_node_put(priv->codec_node); - of_node_put(priv->platform_node); + of_node_put(platform_dai_node); + of_node_put(codec_dai_node); return ret; }
Il 24/10/23 05:50, Maso Huang ha scritto:
Remove the mt7986_wm8960_priv structure.
Signed-off-by: Maso Huang maso.huang@mediatek.com
Reviewed-by: AngeloGioacchino Del Regno angelogioacchino.delregno@collabora.com
mt7986 only supports 8/12/16/24/32/48/96/192 kHz
Signed-off-by: Maso Huang maso.huang@mediatek.com Reviewed-by: AngeloGioacchino Del Regno angelogioacchino.delregno@collabora.com --- sound/soc/mediatek/mt7986/mt7986-dai-etdm.c | 23 +++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/sound/soc/mediatek/mt7986/mt7986-dai-etdm.c b/sound/soc/mediatek/mt7986/mt7986-dai-etdm.c index e523d33846fe..d57971413a04 100644 --- a/sound/soc/mediatek/mt7986/mt7986-dai-etdm.c +++ b/sound/soc/mediatek/mt7986/mt7986-dai-etdm.c @@ -237,12 +237,27 @@ static int mtk_dai_etdm_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) { + unsigned int rate = params_rate(params); struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
- mtk_dai_etdm_config(afe, params, dai, SNDRV_PCM_STREAM_PLAYBACK); - mtk_dai_etdm_config(afe, params, dai, SNDRV_PCM_STREAM_CAPTURE); - - return 0; + switch (rate) { + case 8000: + case 12000: + case 16000: + case 24000: + case 32000: + case 48000: + case 96000: + case 192000: + mtk_dai_etdm_config(afe, params, dai, SNDRV_PCM_STREAM_PLAYBACK); + mtk_dai_etdm_config(afe, params, dai, SNDRV_PCM_STREAM_CAPTURE); + return 0; + default: + dev_err(afe->dev, + "Sample rate %d invalid. Supported rates: 8/12/16/24/32/48/96/192 kHz\n", + rate); + return -EINVAL; + } }
static int mtk_dai_etdm_trigger(struct snd_pcm_substream *substream, int cmd,
On Tue, 24 Oct 2023 11:50:16 +0800, Maso Huang wrote:
Changes in v2:
- devide v1 patch [1/2] into v2 [1/3] [2/3] with appropriate title and description
- refine error log based on reviewer's suggestions [3/3]
- Drop the remove callback of mt7986_wm8960.
- Remove the mt7986_wm8960_priv structure
- Add sample rate checker.
Patches are based on broonie tree "for-next" branch.
[...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
Thanks!
[1/3] ASoC: mediatek: mt7986: drop the remove callback of mt7986_wm8960 commit: 3e92ea2a460bc410789b24f328de9985ddc3eea6 [2/3] ASoC: mediatek: mt7986: remove the mt7986_wm8960_priv structure commit: 0f10adb0ed0c0d74f8bc5facf2c70bc515210295 [3/3] ASoC: mediatek: mt7986: add sample rate checker commit: 0e20929434080aa87614fa0135c97bb9337ece27
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks, Mark
participants (3)
-
AngeloGioacchino Del Regno
-
Mark Brown
-
Maso Huang