Skip to content

Commit d7bffbe

Browse files
yujiaxinffbroonie
authored andcommitted
ASoC: mediatek: mt8186: remove unnecessary judgments
The afe_priv->dai_priv[] is allocated when platform driver probe(), if it failed, the ASoC platform driver probe() will return fail first. Therefore, this is excessive judgment, and the condition will never be established. Bug report: https://www.spinics.net/lists/alsa-devel/msg145609.html This is a semi-automatic email about new static checker warnings. The patch ae92dcb: "ASoC: mediatek: mt8186: support tdm in platform driver" from May 23, 2022, leads to the following Smatch complaint: sound/soc/mediatek/mt8186/mt8186-dai-tdm.c:424 mtk_dai_tdm_hw_params() warn: variable dereferenced before check 'tdm_priv' (see line 406) sound/soc/mediatek/mt8186/mt8186-dai-tdm.c 405 struct mtk_afe_tdm_priv *tdm_priv = afe_priv->dai_priv[tdm_id]; 406 unsigned int tdm_mode = tdm_priv->tdm_mode; ^^^^^^^^^^^^^^^^^^^ Lot's of dereferences 407 unsigned int data_mode = tdm_priv->data_mode; 408 unsigned int rate = params_rate(params); 409 unsigned int channels = params_channels(params); 410 snd_pcm_format_t format = params_format(params); 411 unsigned int bit_width = 412 snd_pcm_format_physical_width(format); 413 unsigned int tdm_channels = (data_mode == TDM_DATA_ONE_PIN) ? 414 get_tdm_ch_per_sdata(tdm_mode, channels) : 2; 415 unsigned int lrck_width = 416 get_tdm_lrck_width(format, tdm_mode); 417 unsigned int tdm_con = 0; 418 bool slave_mode = tdm_priv->slave_mode; 419 bool lrck_inv = tdm_priv->lck_invert; 420 bool bck_inv = tdm_priv->bck_invert; 421 unsigned int tran_rate; 422 unsigned int tran_relatch_rate; 423 424 if (!tdm_priv) { ^^^^^^^^^ Checked too late 425 dev_err(afe->dev, "%s(), tdm_priv == NULL", __func__); 426 return -EINVAL; Fixes: ae92dcb ("ASoC: mediatek: mt8186: support tdm in platform driver") Signed-off-by: Jiaxin Yu <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent 7df9238 commit d7bffbe

File tree

4 files changed

+1
-127
lines changed

4 files changed

+1
-127
lines changed

sound/soc/mediatek/mt8186/mt8186-dai-adda.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -654,11 +654,6 @@ static int mtk_dai_adda_hw_params(struct snd_pcm_substream *substream,
654654
dev_dbg(afe->dev, "%s(), id %d, stream %d, rate %d\n",
655655
__func__, id, substream->stream, rate);
656656

657-
if (!adda_priv) {
658-
dev_err(afe->dev, "%s(), adda_priv == NULL", __func__);
659-
return -EINVAL;
660-
}
661-
662657
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
663658
unsigned int dl_src2_con0;
664659
unsigned int dl_src2_con1;

sound/soc/mediatek/mt8186/mt8186-dai-i2s.c

Lines changed: 0 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,6 @@ static int mt8186_i2s_hd_get(struct snd_kcontrol *kcontrol,
119119
struct mtk_afe_i2s_priv *i2s_priv;
120120

121121
i2s_priv = get_i2s_priv_by_name(afe, kcontrol->id.name);
122-
123-
if (!i2s_priv) {
124-
dev_err(afe->dev, "%s(), i2s_priv == NULL", __func__);
125-
return -EINVAL;
126-
}
127-
128122
ucontrol->value.integer.value[0] = i2s_priv->low_jitter_en;
129123

130124
return 0;
@@ -148,12 +142,6 @@ static int mt8186_i2s_hd_set(struct snd_kcontrol *kcontrol,
148142
__func__, kcontrol->id.name, hd_en);
149143

150144
i2s_priv = get_i2s_priv_by_name(afe, kcontrol->id.name);
151-
152-
if (!i2s_priv) {
153-
dev_err(afe->dev, "%s(), i2s_priv == NULL", __func__);
154-
return -EINVAL;
155-
}
156-
157145
if (i2s_priv->low_jitter_en == hd_en)
158146
return 0;
159147

@@ -377,11 +365,6 @@ static int mtk_i2s_en_event(struct snd_soc_dapm_widget *w,
377365

378366
i2s_priv = get_i2s_priv_by_name(afe, w->name);
379367

380-
if (!i2s_priv) {
381-
dev_err(afe->dev, "%s(), i2s_priv == NULL", __func__);
382-
return -EINVAL;
383-
}
384-
385368
dev_dbg(cmpnt->dev, "%s(), name %s, event 0x%x\n",
386369
__func__, w->name, event);
387370

@@ -442,11 +425,6 @@ static int mtk_mclk_en_event(struct snd_soc_dapm_widget *w,
442425

443426
i2s_priv = get_i2s_priv_by_name(afe, w->name);
444427

445-
if (!i2s_priv) {
446-
dev_err(afe->dev, "%s(), i2s_priv == NULL", __func__);
447-
return -EINVAL;
448-
}
449-
450428
switch (event) {
451429
case SND_SOC_DAPM_PRE_PMU:
452430
mt8186_mck_enable(afe, i2s_priv->mclk_id, i2s_priv->mclk_rate);
@@ -566,12 +544,6 @@ static int mtk_afe_i2s_share_connect(struct snd_soc_dapm_widget *source,
566544
struct mtk_afe_i2s_priv *i2s_priv;
567545

568546
i2s_priv = get_i2s_priv_by_name(afe, sink->name);
569-
570-
if (!i2s_priv) {
571-
dev_err(afe->dev, "%s(), i2s_priv == NULL", __func__);
572-
return 0;
573-
}
574-
575547
if (i2s_priv->share_i2s_id < 0)
576548
return 0;
577549

@@ -587,12 +559,6 @@ static int mtk_afe_i2s_hd_connect(struct snd_soc_dapm_widget *source,
587559
struct mtk_afe_i2s_priv *i2s_priv;
588560

589561
i2s_priv = get_i2s_priv_by_name(afe, sink->name);
590-
591-
if (!i2s_priv) {
592-
dev_err(afe->dev, "%s(), i2s_priv == NULL", __func__);
593-
return 0;
594-
}
595-
596562
if (get_i2s_id_by_name(afe, sink->name) ==
597563
get_i2s_id_by_name(afe, source->name))
598564
return i2s_priv->low_jitter_en;
@@ -618,15 +584,8 @@ static int mtk_afe_i2s_apll_connect(struct snd_soc_dapm_widget *source,
618584
int i2s_need_apll;
619585

620586
i2s_priv = get_i2s_priv_by_name(afe, w->name);
621-
622-
if (!i2s_priv) {
623-
dev_err(afe->dev, "%s(), i2s_priv == NULL", __func__);
624-
return 0;
625-
}
626-
627587
/* which apll */
628588
cur_apll = mt8186_get_apll_by_name(afe, source->name);
629-
630589
/* choose APLL from i2s rate */
631590
i2s_need_apll = mt8186_get_apll_by_rate(afe, i2s_priv->rate);
632591

@@ -642,12 +601,6 @@ static int mtk_afe_i2s_mclk_connect(struct snd_soc_dapm_widget *source,
642601
struct mtk_afe_i2s_priv *i2s_priv;
643602

644603
i2s_priv = get_i2s_priv_by_name(afe, sink->name);
645-
646-
if (!i2s_priv) {
647-
dev_err(afe->dev, "%s(), i2s_priv == NULL", __func__);
648-
return 0;
649-
}
650-
651604
if (get_i2s_id_by_name(afe, sink->name) ==
652605
get_i2s_id_by_name(afe, source->name))
653606
return (i2s_priv->mclk_rate > 0) ? 1 : 0;
@@ -672,12 +625,6 @@ static int mtk_afe_mclk_apll_connect(struct snd_soc_dapm_widget *source,
672625
int cur_apll;
673626

674627
i2s_priv = get_i2s_priv_by_name(afe, w->name);
675-
676-
if (!i2s_priv) {
677-
dev_err(afe->dev, "%s(), i2s_priv == NULL", __func__);
678-
return 0;
679-
}
680-
681628
/* which apll */
682629
cur_apll = mt8186_get_apll_by_name(afe, source->name);
683630

@@ -980,11 +927,6 @@ static int mtk_dai_i2s_config(struct mtk_base_afe *afe,
980927
dev_dbg(afe->dev, "%s(), id %d, rate %d, format %d\n",
981928
__func__, i2s_id, rate, format);
982929

983-
if (!i2s_priv) {
984-
dev_err(afe->dev, "%s(), i2s_priv == NULL", __func__);
985-
return -EINVAL;
986-
}
987-
988930
i2s_priv->rate = rate;
989931

990932
switch (i2s_id) {
@@ -1053,11 +995,6 @@ static int mtk_dai_i2s_set_sysclk(struct snd_soc_dai *dai,
1053995
int apll;
1054996
int apll_rate;
1055997

1056-
if (!i2s_priv) {
1057-
dev_err(afe->dev, "%s(), i2s_priv == NULL", __func__);
1058-
return -EINVAL;
1059-
}
1060-
1061998
if (dir != SND_SOC_CLOCK_OUT) {
1062999
dev_err(afe->dev, "%s(), dir != SND_SOC_CLOCK_OUT", __func__);
10631000
return -EINVAL;

sound/soc/mediatek/mt8186/mt8186-dai-pcm.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -287,11 +287,6 @@ static int mtk_dai_pcm_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
287287
struct mt8186_afe_private *afe_priv = afe->platform_priv;
288288
struct mtk_afe_pcm_priv *pcm_priv = afe_priv->dai_priv[dai->id];
289289

290-
if (!pcm_priv) {
291-
dev_err(afe->dev, "%s(), tdm_priv == NULL", __func__);
292-
return -EINVAL;
293-
}
294-
295290
/* DAI mode*/
296291
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
297292
case SND_SOC_DAIFMT_I2S:

sound/soc/mediatek/mt8186/mt8186-dai-tdm.c

Lines changed: 1 addition & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,6 @@ static int mtk_tdm_en_event(struct snd_soc_dapm_widget *w,
106106
int dai_id = get_tdm_id_by_name(w->name);
107107
struct mtk_afe_tdm_priv *tdm_priv = afe_priv->dai_priv[dai_id];
108108

109-
if (!tdm_priv) {
110-
dev_err(afe->dev, "%s(), tdm_priv == NULL", __func__);
111-
return -EINVAL;
112-
}
113-
114109
dev_dbg(cmpnt->dev, "%s(), name %s, event 0x%x\n",
115110
__func__, w->name, event);
116111

@@ -138,11 +133,6 @@ static int mtk_tdm_mck_en_event(struct snd_soc_dapm_widget *w,
138133
int dai_id = get_tdm_id_by_name(w->name);
139134
struct mtk_afe_tdm_priv *tdm_priv = afe_priv->dai_priv[dai_id];
140135

141-
if (!tdm_priv) {
142-
dev_err(afe->dev, "%s(), tdm_priv == NULL", __func__);
143-
return -EINVAL;
144-
}
145-
146136
dev_dbg(cmpnt->dev, "%s(), name %s, event 0x%x, dai_id %d\n",
147137
__func__, w->name, event, dai_id);
148138

@@ -215,11 +205,6 @@ static int mtk_afe_tdm_mclk_connect(struct snd_soc_dapm_widget *source,
215205
int dai_id = get_tdm_id_by_name(w->name);
216206
struct mtk_afe_tdm_priv *tdm_priv = afe_priv->dai_priv[dai_id];
217207

218-
if (!tdm_priv) {
219-
dev_err(afe->dev, "%s(), tdm_priv == NULL", __func__);
220-
return 0;
221-
}
222-
223208
return (tdm_priv->mclk_rate > 0) ? 1 : 0;
224209
}
225210

@@ -250,11 +235,6 @@ static int mtk_afe_tdm_hd_connect(struct snd_soc_dapm_widget *source,
250235
int dai_id = get_tdm_id_by_name(w->name);
251236
struct mtk_afe_tdm_priv *tdm_priv = afe_priv->dai_priv[dai_id];
252237

253-
if (!tdm_priv) {
254-
dev_err(afe->dev, "%s(), tdm_priv == NULL", __func__);
255-
return 0;
256-
}
257-
258238
return tdm_priv->low_jitter_en;
259239
}
260240

@@ -270,11 +250,6 @@ static int mtk_afe_tdm_apll_connect(struct snd_soc_dapm_widget *source,
270250
int cur_apll;
271251
int tdm_need_apll;
272252

273-
if (!tdm_priv) {
274-
dev_err(afe->dev, "%s(), tdm_priv == NULL", __func__);
275-
return 0;
276-
}
277-
278253
/* which apll */
279254
cur_apll = mt8186_get_apll_by_name(afe, source->name);
280255

@@ -303,11 +278,6 @@ static int mt8186_tdm_hd_get(struct snd_kcontrol *kcontrol,
303278
int dai_id = get_tdm_id_by_name(kcontrol->id.name);
304279
struct mtk_afe_tdm_priv *tdm_priv = afe_priv->dai_priv[dai_id];
305280

306-
if (!tdm_priv) {
307-
dev_err(afe->dev, "%s(), tdm_priv == NULL", __func__);
308-
return -EINVAL;
309-
}
310-
311281
ucontrol->value.integer.value[0] = tdm_priv->low_jitter_en;
312282

313283
return 0;
@@ -332,11 +302,6 @@ static int mt8186_tdm_hd_set(struct snd_kcontrol *kcontrol,
332302
dev_dbg(afe->dev, "%s(), kcontrol name %s, hd_en %d\n",
333303
__func__, kcontrol->id.name, hd_en);
334304

335-
if (!tdm_priv) {
336-
dev_err(afe->dev, "%s(), tdm_priv == NULL", __func__);
337-
return -EINVAL;
338-
}
339-
340305
if (tdm_priv->low_jitter_en == hd_en)
341306
return 0;
342307

@@ -421,22 +386,14 @@ static int mtk_dai_tdm_hw_params(struct snd_pcm_substream *substream,
421386
unsigned int tran_rate;
422387
unsigned int tran_relatch_rate;
423388

424-
if (!tdm_priv) {
425-
dev_err(afe->dev, "%s(), tdm_priv == NULL", __func__);
426-
return -EINVAL;
427-
}
428-
429389
tdm_priv->rate = rate;
430-
431390
tran_rate = mt8186_rate_transform(afe->dev, rate, dai->id);
432391
tran_relatch_rate = mt8186_tdm_relatch_rate_transform(afe->dev, rate);
433392

434393
/* calculate mclk_rate, if not set explicitly */
435394
if (!tdm_priv->mclk_rate) {
436395
tdm_priv->mclk_rate = rate * tdm_priv->mclk_multiple;
437-
mtk_dai_tdm_cal_mclk(afe,
438-
tdm_priv,
439-
tdm_priv->mclk_rate);
396+
mtk_dai_tdm_cal_mclk(afe, tdm_priv, tdm_priv->mclk_rate);
440397
}
441398

442399
/* ETDM_IN1_CON0 */
@@ -508,11 +465,6 @@ static int mtk_dai_tdm_set_sysclk(struct snd_soc_dai *dai,
508465
struct mt8186_afe_private *afe_priv = afe->platform_priv;
509466
struct mtk_afe_tdm_priv *tdm_priv = afe_priv->dai_priv[dai->id];
510467

511-
if (!tdm_priv) {
512-
dev_err(afe->dev, "%s(), tdm_priv == NULL", __func__);
513-
return -EINVAL;
514-
}
515-
516468
if (dir != SND_SOC_CLOCK_IN) {
517469
dev_err(afe->dev, "%s(), dir != SND_SOC_CLOCK_OUT", __func__);
518470
return -EINVAL;
@@ -529,11 +481,6 @@ static int mtk_dai_tdm_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
529481
struct mt8186_afe_private *afe_priv = afe->platform_priv;
530482
struct mtk_afe_tdm_priv *tdm_priv = afe_priv->dai_priv[dai->id];
531483

532-
if (!tdm_priv) {
533-
dev_err(afe->dev, "%s(), tdm_priv == NULL", __func__);
534-
return -EINVAL;
535-
}
536-
537484
/* DAI mode*/
538485
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
539486
case SND_SOC_DAIFMT_I2S:

0 commit comments

Comments
 (0)