summaryrefslogtreecommitdiff
path: root/sound/soc/mediatek
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/mediatek')
-rw-r--r--sound/soc/mediatek/common/mtk-btcvsd.c5
-rw-r--r--sound/soc/mediatek/common/mtk-soundcard-driver.c12
-rw-r--r--sound/soc/mediatek/mt2701/mt2701-afe-pcm.c6
-rw-r--r--sound/soc/mediatek/mt6797/mt6797-afe-pcm.c6
-rw-r--r--sound/soc/mediatek/mt8173/mt8173-afe-pcm.c5
-rw-r--r--sound/soc/mediatek/mt8183/mt8183-afe-pcm.c6
-rw-r--r--sound/soc/mediatek/mt8186/mt8186-afe-gpio.c28
-rw-r--r--sound/soc/mediatek/mt8186/mt8186-dai-adda.c4
-rw-r--r--sound/soc/mediatek/mt8186/mt8186-mt6366-da7219-max98357.c2
-rw-r--r--sound/soc/mediatek/mt8186/mt8186-mt6366-rt1019-rt5682s.c6
-rw-r--r--sound/soc/mediatek/mt8188/mt8188-afe-pcm.c6
-rw-r--r--sound/soc/mediatek/mt8192/mt8192-afe-clk.c4
-rw-r--r--sound/soc/mediatek/mt8192/mt8192-afe-pcm.c11
-rw-r--r--sound/soc/mediatek/mt8192/mt8192-dai-tdm.c28
-rw-r--r--sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c12
-rw-r--r--sound/soc/mediatek/mt8195/mt8195-afe-pcm.c5
-rw-r--r--sound/soc/mediatek/mt8195/mt8195-dai-adda.c17
-rw-r--r--sound/soc/mediatek/mt8195/mt8195-dai-etdm.c177
-rw-r--r--sound/soc/mediatek/mt8195/mt8195-dai-pcm.c26
-rw-r--r--sound/soc/mediatek/mt8195/mt8195-mt6359.c2
20 files changed, 250 insertions, 118 deletions
diff --git a/sound/soc/mediatek/common/mtk-btcvsd.c b/sound/soc/mediatek/common/mtk-btcvsd.c
index 1c28b41e4311..1ba0633e542f 100644
--- a/sound/soc/mediatek/common/mtk-btcvsd.c
+++ b/sound/soc/mediatek/common/mtk-btcvsd.c
@@ -1387,13 +1387,12 @@ unmap_pkv_err:
return ret;
}
-static int mtk_btcvsd_snd_remove(struct platform_device *pdev)
+static void mtk_btcvsd_snd_remove(struct platform_device *pdev)
{
struct mtk_btcvsd_snd *btcvsd = dev_get_drvdata(&pdev->dev);
iounmap(btcvsd->bt_pkv_base);
iounmap(btcvsd->bt_sram_bank2_base);
- return 0;
}
static const struct of_device_id mtk_btcvsd_snd_dt_match[] = {
@@ -1408,7 +1407,7 @@ static struct platform_driver mtk_btcvsd_snd_driver = {
.of_match_table = mtk_btcvsd_snd_dt_match,
},
.probe = mtk_btcvsd_snd_probe,
- .remove = mtk_btcvsd_snd_remove,
+ .remove_new = mtk_btcvsd_snd_remove,
};
module_platform_driver(mtk_btcvsd_snd_driver);
diff --git a/sound/soc/mediatek/common/mtk-soundcard-driver.c b/sound/soc/mediatek/common/mtk-soundcard-driver.c
index 7c55c2cb1f21..738093451ccb 100644
--- a/sound/soc/mediatek/common/mtk-soundcard-driver.c
+++ b/sound/soc/mediatek/common/mtk-soundcard-driver.c
@@ -47,20 +47,26 @@ int parse_dai_link_info(struct snd_soc_card *card)
/* Loop over all the dai link sub nodes */
for_each_available_child_of_node(dev->of_node, sub_node) {
if (of_property_read_string(sub_node, "link-name",
- &dai_link_name))
+ &dai_link_name)) {
+ of_node_put(sub_node);
return -EINVAL;
+ }
for_each_card_prelinks(card, i, dai_link) {
if (!strcmp(dai_link_name, dai_link->name))
break;
}
- if (i >= card->num_links)
+ if (i >= card->num_links) {
+ of_node_put(sub_node);
return -EINVAL;
+ }
ret = set_card_codec_info(card, sub_node, dai_link);
- if (ret < 0)
+ if (ret < 0) {
+ of_node_put(sub_node);
return ret;
+ }
}
return 0;
diff --git a/sound/soc/mediatek/mt2701/mt2701-afe-pcm.c b/sound/soc/mediatek/mt2701/mt2701-afe-pcm.c
index 0f178de92a0f..c9d4420e9b4c 100644
--- a/sound/soc/mediatek/mt2701/mt2701-afe-pcm.c
+++ b/sound/soc/mediatek/mt2701/mt2701-afe-pcm.c
@@ -1439,14 +1439,12 @@ err_pm_disable:
return ret;
}
-static int mt2701_afe_pcm_dev_remove(struct platform_device *pdev)
+static void mt2701_afe_pcm_dev_remove(struct platform_device *pdev)
{
pm_runtime_put_sync(&pdev->dev);
pm_runtime_disable(&pdev->dev);
if (!pm_runtime_status_suspended(&pdev->dev))
mt2701_afe_runtime_suspend(&pdev->dev);
-
- return 0;
}
static const struct mt2701_soc_variants mt2701_soc_v1 = {
@@ -1477,7 +1475,7 @@ static struct platform_driver mt2701_afe_pcm_driver = {
.pm = &mt2701_afe_pm_ops,
},
.probe = mt2701_afe_pcm_dev_probe,
- .remove = mt2701_afe_pcm_dev_remove,
+ .remove_new = mt2701_afe_pcm_dev_remove,
};
module_platform_driver(mt2701_afe_pcm_driver);
diff --git a/sound/soc/mediatek/mt6797/mt6797-afe-pcm.c b/sound/soc/mediatek/mt6797/mt6797-afe-pcm.c
index fb4abec9aa5f..43038444c43d 100644
--- a/sound/soc/mediatek/mt6797/mt6797-afe-pcm.c
+++ b/sound/soc/mediatek/mt6797/mt6797-afe-pcm.c
@@ -876,14 +876,12 @@ err_pm_disable:
return ret;
}
-static int mt6797_afe_pcm_dev_remove(struct platform_device *pdev)
+static void mt6797_afe_pcm_dev_remove(struct platform_device *pdev)
{
pm_runtime_disable(&pdev->dev);
if (!pm_runtime_status_suspended(&pdev->dev))
mt6797_afe_runtime_suspend(&pdev->dev);
pm_runtime_put_sync(&pdev->dev);
-
- return 0;
}
static const struct of_device_id mt6797_afe_pcm_dt_match[] = {
@@ -904,7 +902,7 @@ static struct platform_driver mt6797_afe_pcm_driver = {
.pm = &mt6797_afe_pm_ops,
},
.probe = mt6797_afe_pcm_dev_probe,
- .remove = mt6797_afe_pcm_dev_remove,
+ .remove_new = mt6797_afe_pcm_dev_remove,
};
module_platform_driver(mt6797_afe_pcm_driver);
diff --git a/sound/soc/mediatek/mt8173/mt8173-afe-pcm.c b/sound/soc/mediatek/mt8173/mt8173-afe-pcm.c
index bc155dd937e0..f93c2ec8beb7 100644
--- a/sound/soc/mediatek/mt8173/mt8173-afe-pcm.c
+++ b/sound/soc/mediatek/mt8173/mt8173-afe-pcm.c
@@ -1195,14 +1195,13 @@ err_pm_disable:
return ret;
}
-static int mt8173_afe_pcm_dev_remove(struct platform_device *pdev)
+static void mt8173_afe_pcm_dev_remove(struct platform_device *pdev)
{
snd_soc_unregister_component(&pdev->dev);
pm_runtime_disable(&pdev->dev);
if (!pm_runtime_status_suspended(&pdev->dev))
mt8173_afe_runtime_suspend(&pdev->dev);
- return 0;
}
static const struct of_device_id mt8173_afe_pcm_dt_match[] = {
@@ -1223,7 +1222,7 @@ static struct platform_driver mt8173_afe_pcm_driver = {
.pm = &mt8173_afe_pm_ops,
},
.probe = mt8173_afe_pcm_dev_probe,
- .remove = mt8173_afe_pcm_dev_remove,
+ .remove_new = mt8173_afe_pcm_dev_remove,
};
module_platform_driver(mt8173_afe_pcm_driver);
diff --git a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c b/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c
index 86c8a523fe9e..90422ed2bbcc 100644
--- a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c
+++ b/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c
@@ -1255,13 +1255,11 @@ err_pm_disable:
return ret;
}
-static int mt8183_afe_pcm_dev_remove(struct platform_device *pdev)
+static void mt8183_afe_pcm_dev_remove(struct platform_device *pdev)
{
pm_runtime_disable(&pdev->dev);
if (!pm_runtime_status_suspended(&pdev->dev))
mt8183_afe_runtime_suspend(&pdev->dev);
-
- return 0;
}
static const struct of_device_id mt8183_afe_pcm_dt_match[] = {
@@ -1282,7 +1280,7 @@ static struct platform_driver mt8183_afe_pcm_driver = {
.pm = &mt8183_afe_pm_ops,
},
.probe = mt8183_afe_pcm_dev_probe,
- .remove = mt8183_afe_pcm_dev_remove,
+ .remove_new = mt8183_afe_pcm_dev_remove,
};
module_platform_driver(mt8183_afe_pcm_driver);
diff --git a/sound/soc/mediatek/mt8186/mt8186-afe-gpio.c b/sound/soc/mediatek/mt8186/mt8186-afe-gpio.c
index eda913fa147a..f12e91cc4fcf 100644
--- a/sound/soc/mediatek/mt8186/mt8186-afe-gpio.c
+++ b/sound/soc/mediatek/mt8186/mt8186-afe-gpio.c
@@ -11,7 +11,7 @@
#include "mt8186-afe-common.h"
#include "mt8186-afe-gpio.h"
-struct pinctrl *aud_pinctrl;
+static struct pinctrl *aud_pinctrl;
enum mt8186_afe_gpio {
MT8186_AFE_GPIO_CLK_MOSI_OFF,
@@ -85,7 +85,7 @@ int mt8186_afe_gpio_init(struct device *dev)
aud_gpios[i].name);
if (IS_ERR(aud_gpios[i].gpioctrl)) {
ret = PTR_ERR(aud_gpios[i].gpioctrl);
- dev_info(dev, "%s(), pinctrl_lookup_state %s fail, ret %d\n",
+ dev_dbg(dev, "%s(), pinctrl_lookup_state %s fail, ret %d\n",
__func__, aud_gpios[i].name, ret);
} else {
aud_gpios[i].gpio_prepare = true;
@@ -108,13 +108,13 @@ static int mt8186_afe_gpio_select(struct device *dev,
int ret = 0;
if (type < 0 || type >= MT8186_AFE_GPIO_GPIO_NUM) {
- dev_err(dev, "%s(), error, invalid gpio type %d\n",
+ dev_dbg(dev, "%s(), error, invalid gpio type %d\n",
__func__, type);
return -EINVAL;
}
if (!aud_gpios[type].gpio_prepare) {
- dev_err(dev, "%s(), error, gpio type %d not prepared\n",
+ dev_dbg(dev, "%s(), error, gpio type %d not prepared\n",
__func__, type);
return -EIO;
}
@@ -122,7 +122,7 @@ static int mt8186_afe_gpio_select(struct device *dev,
ret = pinctrl_select_state(aud_pinctrl,
aud_gpios[type].gpioctrl);
if (ret) {
- dev_err(dev, "%s(), error, can not set gpio type %d\n",
+ dev_dbg(dev, "%s(), error, can not set gpio type %d\n",
__func__, type);
return ret;
}
@@ -137,25 +137,25 @@ static int mt8186_afe_gpio_adda_dl(struct device *dev, bool enable)
if (enable) {
ret = mt8186_afe_gpio_select(dev, MT8186_AFE_GPIO_CLK_MOSI_ON);
if (ret) {
- dev_err(dev, "%s(), MOSI CLK ON select fail!\n", __func__);
+ dev_dbg(dev, "%s(), MOSI CLK ON select fail!\n", __func__);
return ret;
}
ret = mt8186_afe_gpio_select(dev, MT8186_AFE_GPIO_DAT_MOSI_ON);
if (ret) {
- dev_err(dev, "%s(), MOSI DAT ON select fail!\n", __func__);
+ dev_dbg(dev, "%s(), MOSI DAT ON select fail!\n", __func__);
return ret;
}
} else {
ret = mt8186_afe_gpio_select(dev, MT8186_AFE_GPIO_DAT_MOSI_OFF);
if (ret) {
- dev_err(dev, "%s(), MOSI DAT OFF select fail!\n", __func__);
+ dev_dbg(dev, "%s(), MOSI DAT OFF select fail!\n", __func__);
return ret;
}
ret = mt8186_afe_gpio_select(dev, MT8186_AFE_GPIO_CLK_MOSI_OFF);
if (ret) {
- dev_err(dev, "%s(), MOSI CLK ON select fail!\n", __func__);
+ dev_dbg(dev, "%s(), MOSI CLK ON select fail!\n", __func__);
return ret;
}
}
@@ -170,25 +170,25 @@ static int mt8186_afe_gpio_adda_ul(struct device *dev, bool enable)
if (enable) {
ret = mt8186_afe_gpio_select(dev, MT8186_AFE_GPIO_CLK_MISO_ON);
if (ret) {
- dev_err(dev, "%s(), MISO CLK ON select fail!\n", __func__);
+ dev_dbg(dev, "%s(), MISO CLK ON select fail!\n", __func__);
return ret;
}
ret = mt8186_afe_gpio_select(dev, MT8186_AFE_GPIO_DAT_MISO_ON);
if (ret) {
- dev_err(dev, "%s(), MISO DAT ON select fail!\n", __func__);
+ dev_dbg(dev, "%s(), MISO DAT ON select fail!\n", __func__);
return ret;
}
} else {
ret = mt8186_afe_gpio_select(dev, MT8186_AFE_GPIO_DAT_MISO_OFF);
if (ret) {
- dev_err(dev, "%s(), MISO DAT OFF select fail!\n", __func__);
+ dev_dbg(dev, "%s(), MISO DAT OFF select fail!\n", __func__);
return ret;
}
ret = mt8186_afe_gpio_select(dev, MT8186_AFE_GPIO_CLK_MISO_OFF);
if (ret) {
- dev_err(dev, "%s(), MISO CLK OFF select fail!\n", __func__);
+ dev_dbg(dev, "%s(), MISO CLK OFF select fail!\n", __func__);
return ret;
}
}
@@ -230,7 +230,7 @@ int mt8186_afe_gpio_request(struct device *dev, bool enable,
sel = enable ? MT8186_AFE_GPIO_PCM_ON : MT8186_AFE_GPIO_PCM_OFF;
break;
default:
- dev_err(dev, "%s(), invalid dai %d\n", __func__, dai);
+ dev_dbg(dev, "%s(), invalid dai %d\n", __func__, dai);
goto unlock;
}
diff --git a/sound/soc/mediatek/mt8186/mt8186-dai-adda.c b/sound/soc/mediatek/mt8186/mt8186-dai-adda.c
index 094402470dc2..247ab8df941f 100644
--- a/sound/soc/mediatek/mt8186/mt8186-dai-adda.c
+++ b/sound/soc/mediatek/mt8186/mt8186-dai-adda.c
@@ -110,7 +110,7 @@ static unsigned int adda_dl_rate_transform(struct mtk_base_afe *afe,
case 192000:
return MTK_AFE_ADDA_DL_RATE_192K;
default:
- dev_info(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
+ dev_dbg(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
__func__, rate);
}
@@ -134,7 +134,7 @@ static unsigned int adda_ul_rate_transform(struct mtk_base_afe *afe,
case 192000:
return MTK_AFE_ADDA_UL_RATE_192K;
default:
- dev_info(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
+ dev_dbg(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
__func__, rate);
}
diff --git a/sound/soc/mediatek/mt8186/mt8186-mt6366-da7219-max98357.c b/sound/soc/mediatek/mt8186/mt8186-mt6366-da7219-max98357.c
index 970b980a81e6..cdf54d1eb50d 100644
--- a/sound/soc/mediatek/mt8186/mt8186-mt6366-da7219-max98357.c
+++ b/sound/soc/mediatek/mt8186/mt8186-mt6366-da7219-max98357.c
@@ -1061,7 +1061,7 @@ static int mt8186_mt6366_da7219_max98357_dev_probe(struct platform_device *pdev)
card->name = card->topology_shortname;
sof_on = 1;
} else {
- dev_info(&pdev->dev, "Probe without adsp\n");
+ dev_dbg(&pdev->dev, "Probe without adsp\n");
}
if (of_property_read_bool(pdev->dev.of_node, "mediatek,dai-link")) {
diff --git a/sound/soc/mediatek/mt8186/mt8186-mt6366-rt1019-rt5682s.c b/sound/soc/mediatek/mt8186/mt8186-mt6366-rt1019-rt5682s.c
index b333950aa3c3..7538274641fd 100644
--- a/sound/soc/mediatek/mt8186/mt8186-mt6366-rt1019-rt5682s.c
+++ b/sound/soc/mediatek/mt8186/mt8186-mt6366-rt1019-rt5682s.c
@@ -95,7 +95,7 @@ static int dmic_set(struct snd_kcontrol *kcontrol,
priv->dmic_switch = ucontrol->value.integer.value[0];
if (priv->dmic_sel) {
gpiod_set_value(priv->dmic_sel, priv->dmic_switch);
- dev_info(dapm->card->dev, "dmic_set_value %d\n",
+ dev_dbg(dapm->card->dev, "dmic_set_value %d\n",
priv->dmic_switch);
}
return 0;
@@ -139,7 +139,7 @@ static int primary_codec_init(struct snd_soc_pcm_runtime *rtd)
}
if (!priv->dmic_sel) {
- dev_info(card->dev, "dmic_sel is null\n");
+ dev_dbg(card->dev, "dmic_sel is null\n");
return 0;
}
@@ -1152,7 +1152,7 @@ static int mt8186_mt6366_rt1019_rt5682s_dev_probe(struct platform_device *pdev)
card->name = card->topology_shortname;
sof_on = 1;
} else {
- dev_info(&pdev->dev, "Probe without adsp\n");
+ dev_dbg(&pdev->dev, "Probe without adsp\n");
}
if (of_property_read_bool(pdev->dev.of_node, "mediatek,dai-link")) {
diff --git a/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c b/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c
index e8e84de86542..e5f9373bed56 100644
--- a/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c
+++ b/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c
@@ -3323,11 +3323,9 @@ err_pm_put:
return ret;
}
-static int mt8188_afe_pcm_dev_remove(struct platform_device *pdev)
+static void mt8188_afe_pcm_dev_remove(struct platform_device *pdev)
{
snd_soc_unregister_component(&pdev->dev);
-
- return 0;
}
static const struct of_device_id mt8188_afe_pcm_dt_match[] = {
@@ -3348,7 +3346,7 @@ static struct platform_driver mt8188_afe_pcm_driver = {
.pm = &mt8188_afe_pm_ops,
},
.probe = mt8188_afe_pcm_dev_probe,
- .remove = mt8188_afe_pcm_dev_remove,
+ .remove_new = mt8188_afe_pcm_dev_remove,
};
module_platform_driver(mt8188_afe_pcm_driver);
diff --git a/sound/soc/mediatek/mt8192/mt8192-afe-clk.c b/sound/soc/mediatek/mt8192/mt8192-afe-clk.c
index bba5f3056e8f..416aff726253 100644
--- a/sound/soc/mediatek/mt8192/mt8192-afe-clk.c
+++ b/sound/soc/mediatek/mt8192/mt8192-afe-clk.c
@@ -206,8 +206,6 @@ int mt8192_afe_enable_clock(struct mtk_base_afe *afe)
struct mt8192_afe_private *afe_priv = afe->platform_priv;
int ret;
- dev_info(afe->dev, "%s()\n", __func__);
-
ret = clk_prepare_enable(afe_priv->clk[CLK_INFRA_SYS_AUDIO]);
if (ret) {
dev_err(afe->dev, "%s clk_prepare_enable %s fail %d\n",
@@ -276,8 +274,6 @@ void mt8192_afe_disable_clock(struct mtk_base_afe *afe)
{
struct mt8192_afe_private *afe_priv = afe->platform_priv;
- dev_info(afe->dev, "%s()\n", __func__);
-
clk_disable_unprepare(afe_priv->clk[CLK_AFE]);
mt8192_set_audio_int_bus_parent(afe, CLK_CLK26M);
clk_disable_unprepare(afe_priv->clk[CLK_MUX_AUDIOINTBUS]);
diff --git a/sound/soc/mediatek/mt8192/mt8192-afe-pcm.c b/sound/soc/mediatek/mt8192/mt8192-afe-pcm.c
index e1e4ca931551..d0520e7e1d79 100644
--- a/sound/soc/mediatek/mt8192/mt8192-afe-pcm.c
+++ b/sound/soc/mediatek/mt8192/mt8192-afe-pcm.c
@@ -369,7 +369,7 @@ static int ul_tinyconn_event(struct snd_soc_dapm_widget *w,
unsigned int reg_shift;
unsigned int reg_mask_shift;
- dev_info(afe->dev, "%s(), event 0x%x\n", __func__, event);
+ dev_dbg(afe->dev, "%s(), event 0x%x\n", __func__, event);
if (strstr(w->name, "UL1")) {
reg_shift = VUL1_USE_TINY_SFT;
@@ -2055,8 +2055,6 @@ static int mt8192_afe_runtime_suspend(struct device *dev)
unsigned int value;
int ret;
- dev_info(afe->dev, "%s()\n", __func__);
-
if (!afe->regmap || afe_priv->pm_runtime_bypass_reg_ctl)
goto skip_regmap;
@@ -2097,8 +2095,6 @@ static int mt8192_afe_runtime_resume(struct device *dev)
struct mt8192_afe_private *afe_priv = afe->platform_priv;
int ret;
- dev_info(afe->dev, "%s()\n", __func__);
-
ret = mt8192_afe_enable_clock(afe);
if (ret)
return ret;
@@ -2353,7 +2349,7 @@ err_pm_disable:
return ret;
}
-static int mt8192_afe_pcm_dev_remove(struct platform_device *pdev)
+static void mt8192_afe_pcm_dev_remove(struct platform_device *pdev)
{
struct mtk_base_afe *afe = platform_get_drvdata(pdev);
@@ -2363,7 +2359,6 @@ static int mt8192_afe_pcm_dev_remove(struct platform_device *pdev)
/* disable afe clock */
mt8192_afe_disable_clock(afe);
- return 0;
}
static const struct of_device_id mt8192_afe_pcm_dt_match[] = {
@@ -2384,7 +2379,7 @@ static struct platform_driver mt8192_afe_pcm_driver = {
.pm = &mt8192_afe_pm_ops,
},
.probe = mt8192_afe_pcm_dev_probe,
- .remove = mt8192_afe_pcm_dev_remove,
+ .remove_new = mt8192_afe_pcm_dev_remove,
};
module_platform_driver(mt8192_afe_pcm_driver);
diff --git a/sound/soc/mediatek/mt8192/mt8192-dai-tdm.c b/sound/soc/mediatek/mt8192/mt8192-dai-tdm.c
index f3bebed2428a..9ce06821c7d0 100644
--- a/sound/soc/mediatek/mt8192/mt8192-dai-tdm.c
+++ b/sound/soc/mediatek/mt8192/mt8192-dai-tdm.c
@@ -256,8 +256,8 @@ static int mtk_tdm_en_event(struct snd_soc_dapm_widget *w,
return -EINVAL;
}
- dev_info(cmpnt->dev, "%s(), name %s, event 0x%x\n",
- __func__, w->name, event);
+ dev_dbg(cmpnt->dev, "%s(), name %s, event 0x%x\n",
+ __func__, w->name, event);
switch (event) {
case SND_SOC_DAPM_PRE_PMU:
@@ -288,8 +288,8 @@ static int mtk_tdm_bck_en_event(struct snd_soc_dapm_widget *w,
return -EINVAL;
}
- dev_info(cmpnt->dev, "%s(), name %s, event 0x%x, dai_id %d\n",
- __func__, w->name, event, dai_id);
+ dev_dbg(cmpnt->dev, "%s(), name %s, event 0x%x, dai_id %d\n",
+ __func__, w->name, event, dai_id);
switch (event) {
case SND_SOC_DAPM_PRE_PMU:
@@ -320,8 +320,8 @@ static int mtk_tdm_mck_en_event(struct snd_soc_dapm_widget *w,
return -EINVAL;
}
- dev_info(cmpnt->dev, "%s(), name %s, event 0x%x, dai_id %d\n",
- __func__, w->name, event, dai_id);
+ dev_dbg(cmpnt->dev, "%s(), name %s, event 0x%x, dai_id %d\n",
+ __func__, w->name, event, dai_id);
switch (event) {
case SND_SOC_DAPM_PRE_PMU:
@@ -545,13 +545,13 @@ static int mtk_dai_tdm_hw_params(struct snd_pcm_substream *substream,
if (tdm_priv->mclk_rate % tdm_priv->bck_rate != 0)
dev_warn(afe->dev, "%s(), bck cannot generate", __func__);
- dev_info(afe->dev, "%s(), id %d, rate %d, channels %d, format %d, mclk_rate %d, bck_rate %d\n",
- __func__,
- tdm_id, rate, channels, format,
- tdm_priv->mclk_rate, tdm_priv->bck_rate);
+ dev_dbg(afe->dev, "%s(), id %d, rate %d, channels %d, format %d, mclk_rate %d, bck_rate %d\n",
+ __func__,
+ tdm_id, rate, channels, format,
+ tdm_priv->mclk_rate, tdm_priv->bck_rate);
- dev_info(afe->dev, "%s(), out_channels_per_sdata = %d\n",
- __func__, out_channels_per_sdata);
+ dev_dbg(afe->dev, "%s(), out_channels_per_sdata = %d\n",
+ __func__, out_channels_per_sdata);
/* set tdm */
if (tdm_priv->bck_invert)
@@ -644,7 +644,7 @@ static int mtk_dai_tdm_set_sysclk(struct snd_soc_dai *dai,
return -EINVAL;
}
- dev_info(afe->dev, "%s(), freq %d\n", __func__, freq);
+ dev_dbg(afe->dev, "%s(), freq %d\n", __func__, freq);
return mtk_dai_tdm_cal_mclk(afe, tdm_priv, freq);
}
@@ -754,8 +754,6 @@ int mt8192_dai_tdm_register(struct mtk_base_afe *afe)
struct mtk_afe_tdm_priv *tdm_priv;
struct mtk_base_afe_dai *dai;
- dev_info(afe->dev, "%s()\n", __func__);
-
dai = devm_kzalloc(afe->dev, sizeof(*dai), GFP_KERNEL);
if (!dai)
return -ENOMEM;
diff --git a/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c b/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c
index 16660eda577e..5e163e23a207 100644
--- a/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c
+++ b/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c
@@ -161,8 +161,6 @@ static int mt8192_mt6359_mtkaif_calibration(struct snd_soc_pcm_runtime *rtd)
int counter;
int mtkaif_calib_ok;
- dev_info(afe->dev, "%s(), start\n", __func__);
-
pm_runtime_get_sync(afe->dev);
mt8192_afe_gpio_request(afe->dev, true, MT8192_DAI_ADDA, 1);
mt8192_afe_gpio_request(afe->dev, true, MT8192_DAI_ADDA, 0);
@@ -294,11 +292,11 @@ static int mt8192_mt6359_mtkaif_calibration(struct snd_soc_pcm_runtime *rtd)
mt8192_afe_gpio_request(afe->dev, false, MT8192_DAI_ADDA_CH34, 0);
pm_runtime_put(afe->dev);
- dev_info(afe->dev, "%s(), mtkaif_chosen_phase[0/1/2]:%d/%d/%d\n",
- __func__,
- afe_priv->mtkaif_chosen_phase[0],
- afe_priv->mtkaif_chosen_phase[1],
- afe_priv->mtkaif_chosen_phase[2]);
+ dev_dbg(afe->dev, "%s(), mtkaif_chosen_phase[0/1/2]:%d/%d/%d\n",
+ __func__,
+ afe_priv->mtkaif_chosen_phase[0],
+ afe_priv->mtkaif_chosen_phase[1],
+ afe_priv->mtkaif_chosen_phase[2]);
return 0;
}
diff --git a/sound/soc/mediatek/mt8195/mt8195-afe-pcm.c b/sound/soc/mediatek/mt8195/mt8195-afe-pcm.c
index 72b2c6d629b9..9e45efeada55 100644
--- a/sound/soc/mediatek/mt8195/mt8195-afe-pcm.c
+++ b/sound/soc/mediatek/mt8195/mt8195-afe-pcm.c
@@ -3253,7 +3253,7 @@ err_pm_put:
return ret;
}
-static int mt8195_afe_pcm_dev_remove(struct platform_device *pdev)
+static void mt8195_afe_pcm_dev_remove(struct platform_device *pdev)
{
struct mtk_base_afe *afe = platform_get_drvdata(pdev);
@@ -3264,7 +3264,6 @@ static int mt8195_afe_pcm_dev_remove(struct platform_device *pdev)
mt8195_afe_runtime_suspend(&pdev->dev);
mt8195_afe_deinit_clock(afe);
- return 0;
}
static const struct of_device_id mt8195_afe_pcm_dt_match[] = {
@@ -3285,7 +3284,7 @@ static struct platform_driver mt8195_afe_pcm_driver = {
.pm = &mt8195_afe_pm_ops,
},
.probe = mt8195_afe_pcm_dev_probe,
- .remove = mt8195_afe_pcm_dev_remove,
+ .remove_new = mt8195_afe_pcm_dev_remove,
};
module_platform_driver(mt8195_afe_pcm_driver);
diff --git a/sound/soc/mediatek/mt8195/mt8195-dai-adda.c b/sound/soc/mediatek/mt8195/mt8195-dai-adda.c
index f04bd1781356..0dd35255066b 100644
--- a/sound/soc/mediatek/mt8195/mt8195-dai-adda.c
+++ b/sound/soc/mediatek/mt8195/mt8195-dai-adda.c
@@ -704,13 +704,18 @@ static int mtk_dai_adda_hw_params(struct snd_pcm_substream *substream,
{
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_adda_priv *adda_priv = afe_priv->dai_priv[dai->id];
+ struct mtk_dai_adda_priv *adda_priv;
unsigned int rate = params_rate(params);
- int id = dai->id;
- int ret = 0;
+ int ret;
+
+ if (dai->id != MT8195_AFE_IO_DL_SRC &&
+ dai->id != MT8195_AFE_IO_UL_SRC1 &&
+ dai->id != MT8195_AFE_IO_UL_SRC2)
+ return -EINVAL;
+ adda_priv = afe_priv->dai_priv[dai->id];
dev_dbg(afe->dev, "%s(), id %d, stream %d, rate %d\n",
- __func__, id, substream->stream, rate);
+ __func__, dai->id, substream->stream, rate);
if (rate > ADDA_HIRES_THRES)
adda_priv->hires_required = 1;
@@ -718,9 +723,9 @@ static int mtk_dai_adda_hw_params(struct snd_pcm_substream *substream,
adda_priv->hires_required = 0;
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
- ret = mtk_dai_da_configure(afe, rate, id);
+ ret = mtk_dai_da_configure(afe, rate, dai->id);
else
- ret = mtk_dai_ad_configure(afe, rate, id);
+ ret = mtk_dai_ad_configure(afe, rate, dai->id);
return ret;
}
diff --git a/sound/soc/mediatek/mt8195/mt8195-dai-etdm.c b/sound/soc/mediatek/mt8195/mt8195-dai-etdm.c
index f2c9a1fdbe0d..eedb9165f911 100644
--- a/sound/soc/mediatek/mt8195/mt8195-dai-etdm.c
+++ b/sound/soc/mediatek/mt8195/mt8195-dai-etdm.c
@@ -137,6 +137,38 @@ static const struct mtk_dai_etdm_rate mt8195_etdm_rates[] = {
{ .rate = 352800, .reg_value = 21, },
};
+static bool mt8195_afe_etdm_is_valid(int id)
+{
+ switch (id) {
+ case MT8195_AFE_IO_ETDM1_IN:
+ fallthrough;
+ case MT8195_AFE_IO_ETDM2_IN:
+ fallthrough;
+ case MT8195_AFE_IO_ETDM1_OUT:
+ fallthrough;
+ case MT8195_AFE_IO_ETDM2_OUT:
+ fallthrough;
+ case MT8195_AFE_IO_DPTX:
+ fallthrough;
+ case MT8195_AFE_IO_ETDM3_OUT:
+ return true;
+ default:
+ return false;
+ }
+}
+
+static bool mt8195_afe_hdmitx_dptx_is_valid(int id)
+{
+ switch (id) {
+ case MT8195_AFE_IO_DPTX:
+ fallthrough;
+ case MT8195_AFE_IO_ETDM3_OUT:
+ return true;
+ default:
+ return false;
+ }
+}
+
static int get_etdm_fs_timing(unsigned int rate)
{
int i;
@@ -236,8 +268,12 @@ static int is_cowork_mode(struct snd_soc_dai *dai)
{
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];
+ struct mtk_dai_etdm_priv *etdm_data;
+ if (!mt8195_afe_etdm_is_valid(dai->id))
+ return -EINVAL;
+
+ etdm_data = afe_priv->dai_priv[dai->id];
return (etdm_data->cowork_slv_count > 0 ||
etdm_data->cowork_source_id != COWORK_ETDM_NONE);
}
@@ -264,8 +300,14 @@ static int get_etdm_cowork_master_id(struct snd_soc_dai *dai)
{
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];
- int dai_id = etdm_data->cowork_source_id;
+ struct mtk_dai_etdm_priv *etdm_data;
+ int dai_id;
+
+ if (!mt8195_afe_etdm_is_valid(dai->id))
+ return -EINVAL;
+
+ etdm_data = afe_priv->dai_priv[dai->id];
+ dai_id = etdm_data->cowork_source_id;
if (dai_id == COWORK_ETDM_NONE)
dai_id = dai->id;
@@ -1276,9 +1318,13 @@ static int mt8195_afe_enable_etdm(struct mtk_base_afe *afe, int dai_id)
int ret = 0;
struct etdm_con_reg etdm_reg;
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];
+ struct mtk_dai_etdm_priv *etdm_data;
unsigned long flags;
+ if (!mt8195_afe_etdm_is_valid(dai_id))
+ return -EINVAL;
+
+ etdm_data = afe_priv->dai_priv[dai_id];
spin_lock_irqsave(&afe_priv->afe_ctrl_lock, flags);
etdm_data->en_ref_cnt++;
if (etdm_data->en_ref_cnt == 1) {
@@ -1299,9 +1345,13 @@ static int mt8195_afe_disable_etdm(struct mtk_base_afe *afe, int dai_id)
int ret = 0;
struct etdm_con_reg etdm_reg;
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];
+ struct mtk_dai_etdm_priv *etdm_data;
unsigned long flags;
+ if (!mt8195_afe_etdm_is_valid(dai_id))
+ return -EINVAL;
+
+ etdm_data = afe_priv->dai_priv[dai_id];
spin_lock_irqsave(&afe_priv->afe_ctrl_lock, flags);
if (etdm_data->en_ref_cnt > 0) {
etdm_data->en_ref_cnt--;
@@ -1357,12 +1407,16 @@ static int etdm_cowork_slv_sel(int id, int slave_mode)
static int mt8195_etdm_sync_mode_configure(struct mtk_base_afe *afe, int dai_id)
{
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];
+ struct mtk_dai_etdm_priv *etdm_data;
unsigned int reg = 0;
unsigned int mask;
unsigned int val;
int cowork_source_sel;
+ if (!mt8195_afe_etdm_is_valid(dai_id))
+ return -EINVAL;
+
+ etdm_data = afe_priv->dai_priv[dai_id];
if (etdm_data->cowork_source_id == COWORK_ETDM_NONE)
return 0;
@@ -1532,8 +1586,10 @@ static int mtk_dai_etdm_startup(struct snd_pcm_substream *substream,
if (is_cowork_mode(dai)) {
mst_dai_id = get_etdm_cowork_master_id(dai);
- mtk_dai_etdm_enable_mclk(afe, mst_dai_id);
+ if (!mt8195_afe_etdm_is_valid(mst_dai_id))
+ return -EINVAL;
+ mtk_dai_etdm_enable_mclk(afe, mst_dai_id);
cg_id = mtk_dai_etdm_get_cg_id_by_dai_id(mst_dai_id);
if (cg_id >= 0)
mt8195_afe_enable_clk(afe, afe_priv->clk[cg_id]);
@@ -1571,6 +1627,9 @@ static void mtk_dai_etdm_shutdown(struct snd_pcm_substream *substream,
if (is_cowork_mode(dai)) {
mst_dai_id = get_etdm_cowork_master_id(dai);
+ if (!mt8195_afe_etdm_is_valid(mst_dai_id))
+ return;
+
cg_id = mtk_dai_etdm_get_cg_id_by_dai_id(mst_dai_id);
if (cg_id >= 0)
mt8195_afe_disable_clk(afe, afe_priv->clk[cg_id]);
@@ -1631,16 +1690,24 @@ static int mtk_dai_etdm_in_configure(struct mtk_base_afe *afe,
int dai_id)
{
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];
+ struct mtk_dai_etdm_priv *etdm_data;
struct etdm_con_reg etdm_reg;
- bool slave_mode = etdm_data->slave_mode;
- unsigned int data_mode = etdm_data->data_mode;
- unsigned int lrck_width = etdm_data->lrck_width;
+ bool slave_mode;
+ unsigned int data_mode;
+ unsigned int lrck_width;
unsigned int val = 0;
unsigned int mask = 0;
int i;
int ret;
+ if (!mt8195_afe_etdm_is_valid(dai_id))
+ return -EINVAL;
+
+ etdm_data = afe_priv->dai_priv[dai_id];
+ slave_mode = etdm_data->slave_mode;
+ data_mode = etdm_data->data_mode;
+ lrck_width = etdm_data->lrck_width;
+
dev_dbg(afe->dev, "%s rate %u channels %u, id %d\n",
__func__, rate, channels, dai_id);
@@ -1748,15 +1815,22 @@ static int mtk_dai_etdm_out_configure(struct mtk_base_afe *afe,
int dai_id)
{
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];
+ struct mtk_dai_etdm_priv *etdm_data;
struct etdm_con_reg etdm_reg;
- bool slave_mode = etdm_data->slave_mode;
- unsigned int lrck_width = etdm_data->lrck_width;
+ bool slave_mode;
+ unsigned int lrck_width;
unsigned int val = 0;
unsigned int mask = 0;
int ret;
int fs = 0;
+ if (!mt8195_afe_etdm_is_valid(dai_id))
+ return -EINVAL;
+
+ etdm_data = afe_priv->dai_priv[dai_id];
+ slave_mode = etdm_data->slave_mode;
+ lrck_width = etdm_data->lrck_width;
+
dev_dbg(afe->dev, "%s rate %u channels %u, id %d\n",
__func__, rate, channels, dai_id);
@@ -1837,7 +1911,7 @@ static int mtk_dai_etdm_out_configure(struct mtk_base_afe *afe,
static int mtk_dai_etdm_mclk_configure(struct mtk_base_afe *afe, int dai_id)
{
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];
+ struct mtk_dai_etdm_priv *etdm_data;
int clk_id = mtk_dai_etdm_get_clk_id_by_dai_id(dai_id);
int clkdiv_id = mtk_dai_etdm_get_clkdiv_id_by_dai_id(dai_id);
int apll;
@@ -1850,6 +1924,10 @@ static int mtk_dai_etdm_mclk_configure(struct mtk_base_afe *afe, int dai_id)
if (clk_id < 0 || clkdiv_id < 0)
return 0;
+ if (!mt8195_afe_etdm_is_valid(dai_id))
+ return -EINVAL;
+
+ etdm_data = afe_priv->dai_priv[dai_id];
ret = get_etdm_reg(dai_id, &etdm_reg);
if (ret < 0)
return ret;
@@ -1888,9 +1966,9 @@ static int mtk_dai_etdm_configure(struct mtk_base_afe *afe,
int dai_id)
{
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];
+ struct mtk_dai_etdm_priv *etdm_data;
struct etdm_con_reg etdm_reg;
- bool slave_mode = etdm_data->slave_mode;
+ bool slave_mode;
unsigned int etdm_channels;
unsigned int val = 0;
unsigned int mask = 0;
@@ -1898,6 +1976,11 @@ static int mtk_dai_etdm_configure(struct mtk_base_afe *afe,
unsigned int wlen = get_etdm_wlen(bit_width);
int ret;
+ if (!mt8195_afe_etdm_is_valid(dai_id))
+ return -EINVAL;
+
+ etdm_data = afe_priv->dai_priv[dai_id];
+ slave_mode = etdm_data->slave_mode;
ret = get_etdm_reg(dai_id, &etdm_reg);
if (ret < 0)
return ret;
@@ -1973,6 +2056,8 @@ static int mtk_dai_etdm_hw_params(struct snd_pcm_substream *substream,
if (is_cowork_mode(dai)) {
mst_dai_id = get_etdm_cowork_master_id(dai);
+ if (!mt8195_afe_etdm_is_valid(mst_dai_id))
+ return -EINVAL;
ret = mtk_dai_etdm_mclk_configure(afe, mst_dai_id);
if (ret)
@@ -2024,6 +2109,9 @@ static int mtk_dai_etdm_trigger(struct snd_pcm_substream *substream, int cmd,
case SNDRV_PCM_TRIGGER_RESUME:
if (is_cowork_mode(dai)) {
mst_dai_id = get_etdm_cowork_master_id(dai);
+ if (!mt8195_afe_etdm_is_valid(mst_dai_id))
+ return -EINVAL;
+
mst_etdm_data = afe_priv->dai_priv[mst_dai_id];
//open master first
@@ -2040,6 +2128,9 @@ static int mtk_dai_etdm_trigger(struct snd_pcm_substream *substream, int cmd,
case SNDRV_PCM_TRIGGER_SUSPEND:
if (is_cowork_mode(dai)) {
mst_dai_id = get_etdm_cowork_master_id(dai);
+ if (!mt8195_afe_etdm_is_valid(mst_dai_id))
+ return -EINVAL;
+
mst_etdm_data = afe_priv->dai_priv[mst_dai_id];
for (i = 0; i < mst_etdm_data->cowork_slv_count; i++) {
@@ -2061,10 +2152,14 @@ static int mtk_dai_etdm_trigger(struct snd_pcm_substream *substream, int cmd,
static int mtk_dai_etdm_cal_mclk(struct mtk_base_afe *afe, int freq, int dai_id)
{
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];
+ struct mtk_dai_etdm_priv *etdm_data;
int apll;
int apll_rate;
+ if (!mt8195_afe_etdm_is_valid(dai_id))
+ return -EINVAL;
+
+ etdm_data = afe_priv->dai_priv[dai_id];
if (freq == 0) {
etdm_data->mclk_freq = freq;
return 0;
@@ -2104,6 +2199,9 @@ static int mtk_dai_etdm_set_sysclk(struct snd_soc_dai *dai,
else
dai_id = dai->id;
+ if (!mt8195_afe_etdm_is_valid(dai_id))
+ return -EINVAL;
+
etdm_data = afe_priv->dai_priv[dai_id];
etdm_data->mclk_dir = dir;
return mtk_dai_etdm_cal_mclk(afe, freq, dai_id);
@@ -2115,8 +2213,12 @@ static int mtk_dai_etdm_set_tdm_slot(struct snd_soc_dai *dai,
{
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];
+ struct mtk_dai_etdm_priv *etdm_data;
+
+ if (!mt8195_afe_etdm_is_valid(dai->id))
+ return -EINVAL;
+ etdm_data = afe_priv->dai_priv[dai->id];
dev_dbg(dai->dev, "%s id %d slot_width %d\n",
__func__, dai->id, slot_width);
@@ -2129,8 +2231,12 @@ static int mtk_dai_etdm_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
{
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];
+ struct mtk_dai_etdm_priv *etdm_data;
+
+ if (!mt8195_afe_etdm_is_valid(dai->id))
+ return -EINVAL;
+ etdm_data = afe_priv->dai_priv[dai->id];
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
case SND_SOC_DAIFMT_I2S:
etdm_data->format = MTK_DAI_ETDM_FORMAT_I2S;
@@ -2248,13 +2354,18 @@ static int mtk_dai_hdmitx_dptx_hw_params(struct snd_pcm_substream *substream,
{
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];
+ struct mtk_dai_etdm_priv *etdm_data;
unsigned int rate = params_rate(params);
unsigned int channels = params_channels(params);
snd_pcm_format_t format = params_format(params);
int width = snd_pcm_format_physical_width(format);
int ret = 0;
+ if (!mt8195_afe_hdmitx_dptx_is_valid(dai->id))
+ return -EINVAL;
+
+ etdm_data = afe_priv->dai_priv[dai->id];
+
/* dptx configure */
if (dai->id == MT8195_AFE_IO_DPTX) {
regmap_update_bits(afe->regmap, AFE_DPTX_CON,
@@ -2331,7 +2442,12 @@ static int mtk_dai_hdmitx_dptx_set_sysclk(struct snd_soc_dai *dai,
{
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];
+ struct mtk_dai_etdm_priv *etdm_data;
+
+ if (!mt8195_afe_hdmitx_dptx_is_valid(dai->id))
+ return -EINVAL;
+
+ etdm_data = afe_priv->dai_priv[dai->id];
dev_dbg(dai->dev, "%s id %d freq %u, dir %d\n",
__func__, dai->id, freq, dir);
@@ -2370,10 +2486,14 @@ static int mtk_dai_etdm_probe(struct snd_soc_dai *dai)
{
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];
+ struct mtk_dai_etdm_priv *etdm_data;
dev_dbg(dai->dev, "%s id %d\n", __func__, dai->id);
+ if (!mt8195_afe_etdm_is_valid(dai->id))
+ return -EINVAL;
+
+ etdm_data = afe_priv->dai_priv[dai->id];
if (etdm_data->mclk_freq) {
dev_dbg(afe->dev, "MCLK always on, rate %d\n",
etdm_data->mclk_freq);
@@ -2477,6 +2597,11 @@ static void mt8195_etdm_update_sync_info(struct mtk_base_afe *afe)
etdm_data = afe_priv->dai_priv[i];
if (etdm_data->cowork_source_id != COWORK_ETDM_NONE) {
mst_dai_id = etdm_data->cowork_source_id;
+ if (!mt8195_afe_etdm_is_valid(mst_dai_id)) {
+ dev_err(afe->dev, "%s invalid dai id %d\n",
+ __func__, mst_dai_id);
+ return;
+ }
mst_data = afe_priv->dai_priv[mst_dai_id];
if (mst_data->cowork_source_id != COWORK_ETDM_NONE)
dev_info(afe->dev, "%s [%d] wrong sync source\n"
@@ -2513,6 +2638,12 @@ static void mt8195_dai_etdm_parse_of(struct mtk_base_afe *afe)
for (i = 0; i < MT8195_AFE_IO_ETDM_NUM; i++) {
dai_id = ETDM_TO_DAI_ID(i);
+ if (!mt8195_afe_etdm_is_valid(dai_id)) {
+ dev_err(afe->dev, "%s invalid dai id %d\n",
+ __func__, dai_id);
+ return;
+ }
+
etdm_data = afe_priv->dai_priv[dai_id];
ret = snprintf(prop, sizeof(prop),
diff --git a/sound/soc/mediatek/mt8195/mt8195-dai-pcm.c b/sound/soc/mediatek/mt8195/mt8195-dai-pcm.c
index 051433689ff5..6d6d79300d51 100644
--- a/sound/soc/mediatek/mt8195/mt8195-dai-pcm.c
+++ b/sound/soc/mediatek/mt8195/mt8195-dai-pcm.c
@@ -122,17 +122,26 @@ static int mtk_dai_pcm_configure(struct snd_pcm_substream *substream,
struct snd_pcm_runtime * const runtime = substream->runtime;
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_pcmif_priv *pcmif_priv = afe_priv->dai_priv[dai->id];
- unsigned int slave_mode = pcmif_priv->slave_mode;
- unsigned int lrck_inv = pcmif_priv->lrck_inv;
- unsigned int bck_inv = pcmif_priv->bck_inv;
- unsigned int fmt = pcmif_priv->format;
+ struct mtk_dai_pcmif_priv *pcmif_priv;
+ unsigned int slave_mode;
+ unsigned int lrck_inv;
+ unsigned int bck_inv;
+ unsigned int fmt;
unsigned int bit_width = dai->sample_bits;
unsigned int val = 0;
unsigned int mask = 0;
int fs = 0;
int mode = 0;
+ if (dai->id != MT8195_AFE_IO_PCM)
+ return -EINVAL;
+
+ pcmif_priv = afe_priv->dai_priv[dai->id];
+ slave_mode = pcmif_priv->slave_mode;
+ lrck_inv = pcmif_priv->lrck_inv;
+ bck_inv = pcmif_priv->bck_inv;
+ fmt = pcmif_priv->format;
+
/* sync freq mode */
fs = mt8195_afe_fs_timing(runtime->rate);
if (fs < 0)
@@ -230,10 +239,15 @@ static int mtk_dai_pcm_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
{
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
struct mt8195_afe_private *afe_priv = afe->platform_priv;
- struct mtk_dai_pcmif_priv *pcmif_priv = afe_priv->dai_priv[dai->id];
+ struct mtk_dai_pcmif_priv *pcmif_priv;
dev_dbg(dai->dev, "%s fmt 0x%x\n", __func__, fmt);
+ if (dai->id != MT8195_AFE_IO_PCM)
+ return -EINVAL;
+
+ pcmif_priv = afe_priv->dai_priv[dai->id];
+
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
case SND_SOC_DAIFMT_I2S:
pcmif_priv->format = MTK_DAI_PCM_FMT_I2S;
diff --git a/sound/soc/mediatek/mt8195/mt8195-mt6359.c b/sound/soc/mediatek/mt8195/mt8195-mt6359.c
index 4682748d82be..ceca882ecff7 100644
--- a/sound/soc/mediatek/mt8195/mt8195-mt6359.c
+++ b/sound/soc/mediatek/mt8195/mt8195-mt6359.c
@@ -158,7 +158,7 @@ static int mt8195_mt6359_mtkaif_calibration(struct snd_soc_pcm_runtime *rtd)
int mtkaif_phase_cycle[MT8195_MTKAIF_MISO_NUM];
int mtkaif_calibration_num_phase;
bool mtkaif_calibration_ok;
- unsigned int monitor;
+ unsigned int monitor = 0;
int counter;
int phase;
int i;