···429429 struct mt6358_priv *priv = snd_soc_component_get_drvdata(component);430430 struct soc_mixer_control *mc =431431 (struct soc_mixer_control *)kcontrol->private_value;432432- unsigned int reg;432432+ unsigned int reg = 0;433433 int ret;434434435435 ret = snd_soc_put_volsw(kcontrol, ucontrol);
+1-1
sound/soc/codecs/mt6359.c
···358358 struct mt6359_priv *priv = snd_soc_component_get_drvdata(component);359359 struct soc_mixer_control *mc =360360 (struct soc_mixer_control *)kcontrol->private_value;361361- unsigned int reg;361361+ unsigned int reg = 0;362362 int index = ucontrol->value.integer.value[0];363363 int ret;364364
+11-6
sound/soc/mediatek/mt8195/mt8195-dai-adda.c
···704704{705705 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);706706 struct mt8195_afe_private *afe_priv = afe->platform_priv;707707- struct mtk_dai_adda_priv *adda_priv = afe_priv->dai_priv[dai->id];707707+ struct mtk_dai_adda_priv *adda_priv;708708 unsigned int rate = params_rate(params);709709- int id = dai->id;710710- int ret = 0;709709+ int ret;710710+711711+ if (dai->id != MT8195_AFE_IO_DL_SRC &&712712+ dai->id != MT8195_AFE_IO_UL_SRC1 &&713713+ dai->id != MT8195_AFE_IO_UL_SRC2)714714+ return -EINVAL;715715+ adda_priv = afe_priv->dai_priv[dai->id];711716712717 dev_dbg(afe->dev, "%s(), id %d, stream %d, rate %d\n",713713- __func__, id, substream->stream, rate);718718+ __func__, dai->id, substream->stream, rate);714719715720 if (rate > ADDA_HIRES_THRES)716721 adda_priv->hires_required = 1;···723718 adda_priv->hires_required = 0;724719725720 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)726726- ret = mtk_dai_da_configure(afe, rate, id);721721+ ret = mtk_dai_da_configure(afe, rate, dai->id);727722 else728728- ret = mtk_dai_ad_configure(afe, rate, id);723723+ ret = mtk_dai_ad_configure(afe, rate, dai->id);729724730725 return ret;731726}
+154-23
sound/soc/mediatek/mt8195/mt8195-dai-etdm.c
···137137 { .rate = 352800, .reg_value = 21, },138138};139139140140+static bool mt8195_afe_etdm_is_valid(int id)141141+{142142+ switch (id) {143143+ case MT8195_AFE_IO_ETDM1_IN:144144+ fallthrough;145145+ case MT8195_AFE_IO_ETDM2_IN:146146+ fallthrough;147147+ case MT8195_AFE_IO_ETDM1_OUT:148148+ fallthrough;149149+ case MT8195_AFE_IO_ETDM2_OUT:150150+ fallthrough;151151+ case MT8195_AFE_IO_DPTX:152152+ fallthrough;153153+ case MT8195_AFE_IO_ETDM3_OUT:154154+ return true;155155+ default:156156+ return false;157157+ }158158+}159159+160160+static bool mt8195_afe_hdmitx_dptx_is_valid(int id)161161+{162162+ switch (id) {163163+ case MT8195_AFE_IO_DPTX:164164+ fallthrough;165165+ case MT8195_AFE_IO_ETDM3_OUT:166166+ return true;167167+ default:168168+ return false;169169+ }170170+}171171+140172static int get_etdm_fs_timing(unsigned int rate)141173{142174 int i;···268236{269237 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);270238 struct mt8195_afe_private *afe_priv = afe->platform_priv;271271- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];239239+ struct mtk_dai_etdm_priv *etdm_data;272240241241+ if (!mt8195_afe_etdm_is_valid(dai->id))242242+ return -EINVAL;243243+244244+ etdm_data = afe_priv->dai_priv[dai->id];273245 return (etdm_data->cowork_slv_count > 0 ||274246 etdm_data->cowork_source_id != COWORK_ETDM_NONE);275247}···300264{301265 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);302266 struct mt8195_afe_private *afe_priv = afe->platform_priv;303303- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];304304- int dai_id = etdm_data->cowork_source_id;267267+ struct mtk_dai_etdm_priv *etdm_data;268268+ int dai_id;269269+270270+ if (!mt8195_afe_etdm_is_valid(dai->id))271271+ return -EINVAL;272272+273273+ etdm_data = afe_priv->dai_priv[dai->id];274274+ dai_id = etdm_data->cowork_source_id;305275306276 if (dai_id == COWORK_ETDM_NONE)307277 dai_id = dai->id;···13181276 int ret = 0;13191277 struct etdm_con_reg etdm_reg;13201278 struct mt8195_afe_private *afe_priv = afe->platform_priv;13211321- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];12791279+ struct mtk_dai_etdm_priv *etdm_data;13221280 unsigned long flags;1323128112821282+ if (!mt8195_afe_etdm_is_valid(dai_id))12831283+ return -EINVAL;12841284+12851285+ etdm_data = afe_priv->dai_priv[dai_id];13241286 spin_lock_irqsave(&afe_priv->afe_ctrl_lock, flags);13251287 etdm_data->en_ref_cnt++;13261288 if (etdm_data->en_ref_cnt == 1) {···13451299 int ret = 0;13461300 struct etdm_con_reg etdm_reg;13471301 struct mt8195_afe_private *afe_priv = afe->platform_priv;13481348- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];13021302+ struct mtk_dai_etdm_priv *etdm_data;13491303 unsigned long flags;1350130413051305+ if (!mt8195_afe_etdm_is_valid(dai_id))13061306+ return -EINVAL;13071307+13081308+ etdm_data = afe_priv->dai_priv[dai_id];13511309 spin_lock_irqsave(&afe_priv->afe_ctrl_lock, flags);13521310 if (etdm_data->en_ref_cnt > 0) {13531311 etdm_data->en_ref_cnt--;···14071357static int mt8195_etdm_sync_mode_configure(struct mtk_base_afe *afe, int dai_id)14081358{14091359 struct mt8195_afe_private *afe_priv = afe->platform_priv;14101410- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];13601360+ struct mtk_dai_etdm_priv *etdm_data;14111361 unsigned int reg = 0;14121362 unsigned int mask;14131363 unsigned int val;14141364 int cowork_source_sel;1415136513661366+ if (!mt8195_afe_etdm_is_valid(dai_id))13671367+ return -EINVAL;13681368+13691369+ etdm_data = afe_priv->dai_priv[dai_id];14161370 if (etdm_data->cowork_source_id == COWORK_ETDM_NONE)14171371 return 0;14181372···1586153215871533 if (is_cowork_mode(dai)) {15881534 mst_dai_id = get_etdm_cowork_master_id(dai);15891589- mtk_dai_etdm_enable_mclk(afe, mst_dai_id);15351535+ if (!mt8195_afe_etdm_is_valid(mst_dai_id))15361536+ return -EINVAL;1590153715381538+ mtk_dai_etdm_enable_mclk(afe, mst_dai_id);15911539 cg_id = mtk_dai_etdm_get_cg_id_by_dai_id(mst_dai_id);15921540 if (cg_id >= 0)15931541 mt8195_afe_enable_clk(afe, afe_priv->clk[cg_id]);···1627157116281572 if (is_cowork_mode(dai)) {16291573 mst_dai_id = get_etdm_cowork_master_id(dai);15741574+ if (!mt8195_afe_etdm_is_valid(mst_dai_id))15751575+ return;15761576+16301577 cg_id = mtk_dai_etdm_get_cg_id_by_dai_id(mst_dai_id);16311578 if (cg_id >= 0)16321579 mt8195_afe_disable_clk(afe, afe_priv->clk[cg_id]);···16901631 int dai_id)16911632{16921633 struct mt8195_afe_private *afe_priv = afe->platform_priv;16931693- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];16341634+ struct mtk_dai_etdm_priv *etdm_data;16941635 struct etdm_con_reg etdm_reg;16951695- bool slave_mode = etdm_data->slave_mode;16961696- unsigned int data_mode = etdm_data->data_mode;16971697- unsigned int lrck_width = etdm_data->lrck_width;16361636+ bool slave_mode;16371637+ unsigned int data_mode;16381638+ unsigned int lrck_width;16981639 unsigned int val = 0;16991640 unsigned int mask = 0;17001641 int i;17011642 int ret;16431643+16441644+ if (!mt8195_afe_etdm_is_valid(dai_id))16451645+ return -EINVAL;16461646+16471647+ etdm_data = afe_priv->dai_priv[dai_id];16481648+ slave_mode = etdm_data->slave_mode;16491649+ data_mode = etdm_data->data_mode;16501650+ lrck_width = etdm_data->lrck_width;1702165117031652 dev_dbg(afe->dev, "%s rate %u channels %u, id %d\n",17041653 __func__, rate, channels, dai_id);···18151748 int dai_id)18161749{18171750 struct mt8195_afe_private *afe_priv = afe->platform_priv;18181818- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];17511751+ struct mtk_dai_etdm_priv *etdm_data;18191752 struct etdm_con_reg etdm_reg;18201820- bool slave_mode = etdm_data->slave_mode;18211821- unsigned int lrck_width = etdm_data->lrck_width;17531753+ bool slave_mode;17541754+ unsigned int lrck_width;18221755 unsigned int val = 0;18231756 unsigned int mask = 0;18241757 int ret;18251758 int fs = 0;17591759+17601760+ if (!mt8195_afe_etdm_is_valid(dai_id))17611761+ return -EINVAL;17621762+17631763+ etdm_data = afe_priv->dai_priv[dai_id];17641764+ slave_mode = etdm_data->slave_mode;17651765+ lrck_width = etdm_data->lrck_width;1826176618271767 dev_dbg(afe->dev, "%s rate %u channels %u, id %d\n",18281768 __func__, rate, channels, dai_id);···19111837static int mtk_dai_etdm_mclk_configure(struct mtk_base_afe *afe, int dai_id)19121838{19131839 struct mt8195_afe_private *afe_priv = afe->platform_priv;19141914- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];18401840+ struct mtk_dai_etdm_priv *etdm_data;19151841 int clk_id = mtk_dai_etdm_get_clk_id_by_dai_id(dai_id);19161842 int clkdiv_id = mtk_dai_etdm_get_clkdiv_id_by_dai_id(dai_id);19171843 int apll;···19241850 if (clk_id < 0 || clkdiv_id < 0)19251851 return 0;1926185218531853+ if (!mt8195_afe_etdm_is_valid(dai_id))18541854+ return -EINVAL;18551855+18561856+ etdm_data = afe_priv->dai_priv[dai_id];19271857 ret = get_etdm_reg(dai_id, &etdm_reg);19281858 if (ret < 0)19291859 return ret;···19661888 int dai_id)19671889{19681890 struct mt8195_afe_private *afe_priv = afe->platform_priv;19691969- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];18911891+ struct mtk_dai_etdm_priv *etdm_data;19701892 struct etdm_con_reg etdm_reg;19711971- bool slave_mode = etdm_data->slave_mode;18931893+ bool slave_mode;19721894 unsigned int etdm_channels;19731895 unsigned int val = 0;19741896 unsigned int mask = 0;···19761898 unsigned int wlen = get_etdm_wlen(bit_width);19771899 int ret;1978190019011901+ if (!mt8195_afe_etdm_is_valid(dai_id))19021902+ return -EINVAL;19031903+19041904+ etdm_data = afe_priv->dai_priv[dai_id];19051905+ slave_mode = etdm_data->slave_mode;19791906 ret = get_etdm_reg(dai_id, &etdm_reg);19801907 if (ret < 0)19811908 return ret;···2056197320571974 if (is_cowork_mode(dai)) {20581975 mst_dai_id = get_etdm_cowork_master_id(dai);19761976+ if (!mt8195_afe_etdm_is_valid(mst_dai_id))19771977+ return -EINVAL;2059197820601979 ret = mtk_dai_etdm_mclk_configure(afe, mst_dai_id);20611980 if (ret)···21092024 case SNDRV_PCM_TRIGGER_RESUME:21102025 if (is_cowork_mode(dai)) {21112026 mst_dai_id = get_etdm_cowork_master_id(dai);20272027+ if (!mt8195_afe_etdm_is_valid(mst_dai_id))20282028+ return -EINVAL;20292029+21122030 mst_etdm_data = afe_priv->dai_priv[mst_dai_id];2113203121142032 //open master first···21282040 case SNDRV_PCM_TRIGGER_SUSPEND:21292041 if (is_cowork_mode(dai)) {21302042 mst_dai_id = get_etdm_cowork_master_id(dai);20432043+ if (!mt8195_afe_etdm_is_valid(mst_dai_id))20442044+ return -EINVAL;20452045+21312046 mst_etdm_data = afe_priv->dai_priv[mst_dai_id];2132204721332048 for (i = 0; i < mst_etdm_data->cowork_slv_count; i++) {···21522061static int mtk_dai_etdm_cal_mclk(struct mtk_base_afe *afe, int freq, int dai_id)21532062{21542063 struct mt8195_afe_private *afe_priv = afe->platform_priv;21552155- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai_id];20642064+ struct mtk_dai_etdm_priv *etdm_data;21562065 int apll;21572066 int apll_rate;2158206720682068+ if (!mt8195_afe_etdm_is_valid(dai_id))20692069+ return -EINVAL;20702070+20712071+ etdm_data = afe_priv->dai_priv[dai_id];21592072 if (freq == 0) {21602073 etdm_data->mclk_freq = freq;21612074 return 0;···21992104 else22002105 dai_id = dai->id;2201210621072107+ if (!mt8195_afe_etdm_is_valid(dai_id))21082108+ return -EINVAL;21092109+22022110 etdm_data = afe_priv->dai_priv[dai_id];22032111 etdm_data->mclk_dir = dir;22042112 return mtk_dai_etdm_cal_mclk(afe, freq, dai_id);···22132115{22142116 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);22152117 struct mt8195_afe_private *afe_priv = afe->platform_priv;22162216- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];21182118+ struct mtk_dai_etdm_priv *etdm_data;2217211921202120+ if (!mt8195_afe_etdm_is_valid(dai->id))21212121+ return -EINVAL;21222122+21232123+ etdm_data = afe_priv->dai_priv[dai->id];22182124 dev_dbg(dai->dev, "%s id %d slot_width %d\n",22192125 __func__, dai->id, slot_width);22202126···22312129{22322130 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);22332131 struct mt8195_afe_private *afe_priv = afe->platform_priv;22342234- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];21322132+ struct mtk_dai_etdm_priv *etdm_data;2235213321342134+ if (!mt8195_afe_etdm_is_valid(dai->id))21352135+ return -EINVAL;21362136+21372137+ etdm_data = afe_priv->dai_priv[dai->id];22362138 switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {22372139 case SND_SOC_DAIFMT_I2S:22382140 etdm_data->format = MTK_DAI_ETDM_FORMAT_I2S;···23542248{23552249 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);23562250 struct mt8195_afe_private *afe_priv = afe->platform_priv;23572357- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];22512251+ struct mtk_dai_etdm_priv *etdm_data;23582252 unsigned int rate = params_rate(params);23592253 unsigned int channels = params_channels(params);23602254 snd_pcm_format_t format = params_format(params);23612255 int width = snd_pcm_format_physical_width(format);23622256 int ret = 0;22572257+22582258+ if (!mt8195_afe_hdmitx_dptx_is_valid(dai->id))22592259+ return -EINVAL;22602260+22612261+ etdm_data = afe_priv->dai_priv[dai->id];2363226223642263 /* dptx configure */23652264 if (dai->id == MT8195_AFE_IO_DPTX) {···24422331{24432332 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);24442333 struct mt8195_afe_private *afe_priv = afe->platform_priv;24452445- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];23342334+ struct mtk_dai_etdm_priv *etdm_data;23352335+23362336+ if (!mt8195_afe_hdmitx_dptx_is_valid(dai->id))23372337+ return -EINVAL;23382338+23392339+ etdm_data = afe_priv->dai_priv[dai->id];2446234024472341 dev_dbg(dai->dev, "%s id %d freq %u, dir %d\n",24482342 __func__, dai->id, freq, dir);···24862370{24872371 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);24882372 struct mt8195_afe_private *afe_priv = afe->platform_priv;24892489- struct mtk_dai_etdm_priv *etdm_data = afe_priv->dai_priv[dai->id];23732373+ struct mtk_dai_etdm_priv *etdm_data;2490237424912375 dev_dbg(dai->dev, "%s id %d\n", __func__, dai->id);2492237623772377+ if (!mt8195_afe_etdm_is_valid(dai->id))23782378+ return -EINVAL;23792379+23802380+ etdm_data = afe_priv->dai_priv[dai->id];24932381 if (etdm_data->mclk_freq) {24942382 dev_dbg(afe->dev, "MCLK always on, rate %d\n",24952383 etdm_data->mclk_freq);···25972477 etdm_data = afe_priv->dai_priv[i];25982478 if (etdm_data->cowork_source_id != COWORK_ETDM_NONE) {25992479 mst_dai_id = etdm_data->cowork_source_id;24802480+ if (!mt8195_afe_etdm_is_valid(mst_dai_id)) {24812481+ dev_err(afe->dev, "%s invalid dai id %d\n",24822482+ __func__, mst_dai_id);24832483+ return;24842484+ }26002485 mst_data = afe_priv->dai_priv[mst_dai_id];26012486 if (mst_data->cowork_source_id != COWORK_ETDM_NONE)26022487 dev_info(afe->dev, "%s [%d] wrong sync source\n"···2638251326392514 for (i = 0; i < MT8195_AFE_IO_ETDM_NUM; i++) {26402515 dai_id = ETDM_TO_DAI_ID(i);25162516+ if (!mt8195_afe_etdm_is_valid(dai_id)) {25172517+ dev_err(afe->dev, "%s invalid dai id %d\n",25182518+ __func__, dai_id);25192519+ return;25202520+ }25212521+26412522 etdm_data = afe_priv->dai_priv[dai_id];2642252326432524 ret = snprintf(prop, sizeof(prop),
+20-6
sound/soc/mediatek/mt8195/mt8195-dai-pcm.c
···122122 struct snd_pcm_runtime * const runtime = substream->runtime;123123 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);124124 struct mt8195_afe_private *afe_priv = afe->platform_priv;125125- struct mtk_dai_pcmif_priv *pcmif_priv = afe_priv->dai_priv[dai->id];126126- unsigned int slave_mode = pcmif_priv->slave_mode;127127- unsigned int lrck_inv = pcmif_priv->lrck_inv;128128- unsigned int bck_inv = pcmif_priv->bck_inv;129129- unsigned int fmt = pcmif_priv->format;125125+ struct mtk_dai_pcmif_priv *pcmif_priv;126126+ unsigned int slave_mode;127127+ unsigned int lrck_inv;128128+ unsigned int bck_inv;129129+ unsigned int fmt;130130 unsigned int bit_width = dai->sample_bits;131131 unsigned int val = 0;132132 unsigned int mask = 0;133133 int fs = 0;134134 int mode = 0;135135+136136+ if (dai->id != MT8195_AFE_IO_PCM)137137+ return -EINVAL;138138+139139+ pcmif_priv = afe_priv->dai_priv[dai->id];140140+ slave_mode = pcmif_priv->slave_mode;141141+ lrck_inv = pcmif_priv->lrck_inv;142142+ bck_inv = pcmif_priv->bck_inv;143143+ fmt = pcmif_priv->format;135144136145 /* sync freq mode */137146 fs = mt8195_afe_fs_timing(runtime->rate);···239230{240231 struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);241232 struct mt8195_afe_private *afe_priv = afe->platform_priv;242242- struct mtk_dai_pcmif_priv *pcmif_priv = afe_priv->dai_priv[dai->id];233233+ struct mtk_dai_pcmif_priv *pcmif_priv;243234244235 dev_dbg(dai->dev, "%s fmt 0x%x\n", __func__, fmt);236236+237237+ if (dai->id != MT8195_AFE_IO_PCM)238238+ return -EINVAL;239239+240240+ pcmif_priv = afe_priv->dai_priv[dai->id];245241246242 switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {247243 case SND_SOC_DAIFMT_I2S:
+1-1
sound/soc/mediatek/mt8195/mt8195-mt6359.c
···158158 int mtkaif_phase_cycle[MT8195_MTKAIF_MISO_NUM];159159 int mtkaif_calibration_num_phase;160160 bool mtkaif_calibration_ok;161161- unsigned int monitor;161161+ unsigned int monitor = 0;162162 int counter;163163 int phase;164164 int i;