Skip to content

Commit e48ef67

Browse files
committed
ASoC: rt-sdw: fix locking and improve error logs
Merge series from Pierre-Louis Bossart <[email protected]>: Fix a set of problematic locking sequences and update error messages, tested on SOF/SoundWire platforms.
2 parents fc563aa + f892e66 commit e48ef67

17 files changed

+126
-122
lines changed

sound/soc/codecs/rt1316-sdw.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ static int rt1316_sdw_hw_params(struct snd_pcm_substream *substream,
537537
retval = sdw_stream_add_slave(rt1316->sdw_slave, &stream_config,
538538
&port_config, 1, sdw_stream);
539539
if (retval) {
540-
dev_err(dai->dev, "Unable to configure port\n");
540+
dev_err(dai->dev, "%s: Unable to configure port\n", __func__);
541541
return retval;
542542
}
543543

@@ -577,12 +577,12 @@ static int rt1316_sdw_parse_dt(struct rt1316_sdw_priv *rt1316, struct device *de
577577
if (rt1316->bq_params_cnt) {
578578
rt1316->bq_params = devm_kzalloc(dev, rt1316->bq_params_cnt, GFP_KERNEL);
579579
if (!rt1316->bq_params) {
580-
dev_err(dev, "Could not allocate bq_params memory\n");
580+
dev_err(dev, "%s: Could not allocate bq_params memory\n", __func__);
581581
ret = -ENOMEM;
582582
} else {
583583
ret = device_property_read_u8_array(dev, "realtek,bq-params", rt1316->bq_params, rt1316->bq_params_cnt);
584584
if (ret < 0)
585-
dev_err(dev, "Could not read list of realtek,bq-params\n");
585+
dev_err(dev, "%s: Could not read list of realtek,bq-params\n", __func__);
586586
}
587587
}
588588

@@ -759,7 +759,7 @@ static int __maybe_unused rt1316_dev_resume(struct device *dev)
759759
time = wait_for_completion_timeout(&slave->initialization_complete,
760760
msecs_to_jiffies(RT1316_PROBE_TIMEOUT));
761761
if (!time) {
762-
dev_err(&slave->dev, "Initialization not complete, timed out\n");
762+
dev_err(&slave->dev, "%s: Initialization not complete, timed out\n", __func__);
763763
sdw_show_ping_status(slave->bus, true);
764764

765765
return -ETIMEDOUT;

sound/soc/codecs/rt1318-sdw.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,7 @@ static int rt1318_sdw_hw_params(struct snd_pcm_substream *substream,
606606
retval = sdw_stream_add_slave(rt1318->sdw_slave, &stream_config,
607607
&port_config, 1, sdw_stream);
608608
if (retval) {
609-
dev_err(dai->dev, "Unable to configure port\n");
609+
dev_err(dai->dev, "%s: Unable to configure port\n", __func__);
610610
return retval;
611611
}
612612

@@ -631,8 +631,8 @@ static int rt1318_sdw_hw_params(struct snd_pcm_substream *substream,
631631
sampling_rate = RT1318_SDCA_RATE_192000HZ;
632632
break;
633633
default:
634-
dev_err(component->dev, "Rate %d is not supported\n",
635-
params_rate(params));
634+
dev_err(component->dev, "%s: Rate %d is not supported\n",
635+
__func__, params_rate(params));
636636
return -EINVAL;
637637
}
638638

@@ -835,7 +835,7 @@ static int __maybe_unused rt1318_dev_resume(struct device *dev)
835835
time = wait_for_completion_timeout(&slave->initialization_complete,
836836
msecs_to_jiffies(RT1318_PROBE_TIMEOUT));
837837
if (!time) {
838-
dev_err(&slave->dev, "Initialization not complete, timed out\n");
838+
dev_err(&slave->dev, "%s: Initialization not complete, timed out\n", __func__);
839839
return -ETIMEDOUT;
840840
}
841841

sound/soc/codecs/rt5682-sdw.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ static int rt5682_sdw_hw_params(struct snd_pcm_substream *substream,
132132
retval = sdw_stream_add_slave(rt5682->slave, &stream_config,
133133
&port_config, 1, sdw_stream);
134134
if (retval) {
135-
dev_err(dai->dev, "Unable to configure port\n");
135+
dev_err(dai->dev, "%s: Unable to configure port\n", __func__);
136136
return retval;
137137
}
138138

@@ -315,8 +315,8 @@ static int rt5682_sdw_init(struct device *dev, struct regmap *regmap,
315315
&rt5682_sdw_indirect_regmap);
316316
if (IS_ERR(rt5682->regmap)) {
317317
ret = PTR_ERR(rt5682->regmap);
318-
dev_err(dev, "Failed to allocate register map: %d\n",
319-
ret);
318+
dev_err(dev, "%s: Failed to allocate register map: %d\n",
319+
__func__, ret);
320320
return ret;
321321
}
322322

@@ -400,7 +400,7 @@ static int rt5682_io_init(struct device *dev, struct sdw_slave *slave)
400400
}
401401

402402
if (val != DEVICE_ID) {
403-
dev_err(dev, "Device with ID register %x is not rt5682\n", val);
403+
dev_err(dev, "%s: Device with ID register %x is not rt5682\n", __func__, val);
404404
ret = -ENODEV;
405405
goto err_nodev;
406406
}
@@ -648,7 +648,7 @@ static int rt5682_bus_config(struct sdw_slave *slave,
648648

649649
ret = rt5682_clock_config(&slave->dev);
650650
if (ret < 0)
651-
dev_err(&slave->dev, "Invalid clk config");
651+
dev_err(&slave->dev, "%s: Invalid clk config", __func__);
652652

653653
return ret;
654654
}
@@ -763,19 +763,19 @@ static int __maybe_unused rt5682_dev_resume(struct device *dev)
763763
return 0;
764764

765765
if (!slave->unattach_request) {
766+
mutex_lock(&rt5682->disable_irq_lock);
766767
if (rt5682->disable_irq == true) {
767-
mutex_lock(&rt5682->disable_irq_lock);
768768
sdw_write_no_pm(slave, SDW_SCP_INTMASK1, SDW_SCP_INT1_IMPL_DEF);
769769
rt5682->disable_irq = false;
770-
mutex_unlock(&rt5682->disable_irq_lock);
771770
}
771+
mutex_unlock(&rt5682->disable_irq_lock);
772772
goto regmap_sync;
773773
}
774774

775775
time = wait_for_completion_timeout(&slave->initialization_complete,
776776
msecs_to_jiffies(RT5682_PROBE_TIMEOUT));
777777
if (!time) {
778-
dev_err(&slave->dev, "Initialization not complete, timed out\n");
778+
dev_err(&slave->dev, "%s: Initialization not complete, timed out\n", __func__);
779779
sdw_show_ping_status(slave->bus, true);
780780

781781
return -ETIMEDOUT;

sound/soc/codecs/rt700.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ static int rt700_index_write(struct regmap *regmap,
3737

3838
ret = regmap_write(regmap, addr, value);
3939
if (ret < 0)
40-
pr_err("Failed to set private value: %06x <= %04x ret=%d\n",
41-
addr, value, ret);
40+
pr_err("%s: Failed to set private value: %06x <= %04x ret=%d\n",
41+
__func__, addr, value, ret);
4242

4343
return ret;
4444
}
@@ -52,8 +52,8 @@ static int rt700_index_read(struct regmap *regmap,
5252
*value = 0;
5353
ret = regmap_read(regmap, addr, value);
5454
if (ret < 0)
55-
pr_err("Failed to get private value: %06x => %04x ret=%d\n",
56-
addr, *value, ret);
55+
pr_err("%s: Failed to get private value: %06x => %04x ret=%d\n",
56+
__func__, addr, *value, ret);
5757

5858
return ret;
5959
}
@@ -930,23 +930,23 @@ static int rt700_pcm_hw_params(struct snd_pcm_substream *substream,
930930
port_config.num += 2;
931931
break;
932932
default:
933-
dev_err(component->dev, "Invalid DAI id %d\n", dai->id);
933+
dev_err(component->dev, "%s: Invalid DAI id %d\n", __func__, dai->id);
934934
return -EINVAL;
935935
}
936936

937937
retval = sdw_stream_add_slave(rt700->slave, &stream_config,
938938
&port_config, 1, sdw_stream);
939939
if (retval) {
940-
dev_err(dai->dev, "Unable to configure port\n");
940+
dev_err(dai->dev, "%s: Unable to configure port\n", __func__);
941941
return retval;
942942
}
943943

944944
if (params_channels(params) <= 16) {
945945
/* bit 3:0 Number of Channel */
946946
val |= (params_channels(params) - 1);
947947
} else {
948-
dev_err(component->dev, "Unsupported channels %d\n",
949-
params_channels(params));
948+
dev_err(component->dev, "%s: Unsupported channels %d\n",
949+
__func__, params_channels(params));
950950
return -EINVAL;
951951
}
952952

sound/soc/codecs/rt711-sdca-sdw.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -438,20 +438,20 @@ static int __maybe_unused rt711_sdca_dev_resume(struct device *dev)
438438
return 0;
439439

440440
if (!slave->unattach_request) {
441+
mutex_lock(&rt711->disable_irq_lock);
441442
if (rt711->disable_irq == true) {
442-
mutex_lock(&rt711->disable_irq_lock);
443443
sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK1, SDW_SCP_SDCA_INTMASK_SDCA_0);
444444
sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK2, SDW_SCP_SDCA_INTMASK_SDCA_8);
445445
rt711->disable_irq = false;
446-
mutex_unlock(&rt711->disable_irq_lock);
447446
}
447+
mutex_unlock(&rt711->disable_irq_lock);
448448
goto regmap_sync;
449449
}
450450

451451
time = wait_for_completion_timeout(&slave->initialization_complete,
452452
msecs_to_jiffies(RT711_PROBE_TIMEOUT));
453453
if (!time) {
454-
dev_err(&slave->dev, "Initialization not complete, timed out\n");
454+
dev_err(&slave->dev, "%s: Initialization not complete, timed out\n", __func__);
455455
sdw_show_ping_status(slave->bus, true);
456456

457457
return -ETIMEDOUT;

sound/soc/codecs/rt711-sdca.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ static int rt711_sdca_index_write(struct rt711_sdca_priv *rt711,
3636
ret = regmap_write(regmap, addr, value);
3737
if (ret < 0)
3838
dev_err(&rt711->slave->dev,
39-
"Failed to set private value: %06x <= %04x ret=%d\n",
40-
addr, value, ret);
39+
"%s: Failed to set private value: %06x <= %04x ret=%d\n",
40+
__func__, addr, value, ret);
4141

4242
return ret;
4343
}
@@ -52,8 +52,8 @@ static int rt711_sdca_index_read(struct rt711_sdca_priv *rt711,
5252
ret = regmap_read(regmap, addr, value);
5353
if (ret < 0)
5454
dev_err(&rt711->slave->dev,
55-
"Failed to get private value: %06x => %04x ret=%d\n",
56-
addr, *value, ret);
55+
"%s: Failed to get private value: %06x => %04x ret=%d\n",
56+
__func__, addr, *value, ret);
5757

5858
return ret;
5959
}
@@ -1293,13 +1293,13 @@ static int rt711_sdca_pcm_hw_params(struct snd_pcm_substream *substream,
12931293
retval = sdw_stream_add_slave(rt711->slave, &stream_config,
12941294
&port_config, 1, sdw_stream);
12951295
if (retval) {
1296-
dev_err(dai->dev, "Unable to configure port\n");
1296+
dev_err(dai->dev, "%s: Unable to configure port\n", __func__);
12971297
return retval;
12981298
}
12991299

13001300
if (params_channels(params) > 16) {
1301-
dev_err(component->dev, "Unsupported channels %d\n",
1302-
params_channels(params));
1301+
dev_err(component->dev, "%s: Unsupported channels %d\n",
1302+
__func__, params_channels(params));
13031303
return -EINVAL;
13041304
}
13051305

@@ -1318,8 +1318,8 @@ static int rt711_sdca_pcm_hw_params(struct snd_pcm_substream *substream,
13181318
sampling_rate = RT711_SDCA_RATE_192000HZ;
13191319
break;
13201320
default:
1321-
dev_err(component->dev, "Rate %d is not supported\n",
1322-
params_rate(params));
1321+
dev_err(component->dev, "%s: Rate %d is not supported\n",
1322+
__func__, params_rate(params));
13231323
return -EINVAL;
13241324
}
13251325

sound/soc/codecs/rt711-sdw.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ static int rt711_bus_config(struct sdw_slave *slave,
408408

409409
ret = rt711_clock_config(&slave->dev);
410410
if (ret < 0)
411-
dev_err(&slave->dev, "Invalid clk config");
411+
dev_err(&slave->dev, "%s: Invalid clk config", __func__);
412412

413413
return ret;
414414
}
@@ -536,19 +536,19 @@ static int __maybe_unused rt711_dev_resume(struct device *dev)
536536
return 0;
537537

538538
if (!slave->unattach_request) {
539+
mutex_lock(&rt711->disable_irq_lock);
539540
if (rt711->disable_irq == true) {
540-
mutex_lock(&rt711->disable_irq_lock);
541541
sdw_write_no_pm(slave, SDW_SCP_INTMASK1, SDW_SCP_INT1_IMPL_DEF);
542542
rt711->disable_irq = false;
543-
mutex_unlock(&rt711->disable_irq_lock);
544543
}
544+
mutex_unlock(&rt711->disable_irq_lock);
545545
goto regmap_sync;
546546
}
547547

548548
time = wait_for_completion_timeout(&slave->initialization_complete,
549549
msecs_to_jiffies(RT711_PROBE_TIMEOUT));
550550
if (!time) {
551-
dev_err(&slave->dev, "Initialization not complete, timed out\n");
551+
dev_err(&slave->dev, "%s: Initialization not complete, timed out\n", __func__);
552552
return -ETIMEDOUT;
553553
}
554554

sound/soc/codecs/rt711.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ static int rt711_index_write(struct regmap *regmap,
3737

3838
ret = regmap_write(regmap, addr, value);
3939
if (ret < 0)
40-
pr_err("Failed to set private value: %06x <= %04x ret=%d\n",
41-
addr, value, ret);
40+
pr_err("%s: Failed to set private value: %06x <= %04x ret=%d\n",
41+
__func__, addr, value, ret);
4242

4343
return ret;
4444
}
@@ -52,8 +52,8 @@ static int rt711_index_read(struct regmap *regmap,
5252
*value = 0;
5353
ret = regmap_read(regmap, addr, value);
5454
if (ret < 0)
55-
pr_err("Failed to get private value: %06x => %04x ret=%d\n",
56-
addr, *value, ret);
55+
pr_err("%s: Failed to get private value: %06x => %04x ret=%d\n",
56+
__func__, addr, *value, ret);
5757

5858
return ret;
5959
}
@@ -428,7 +428,7 @@ static void rt711_jack_init(struct rt711_priv *rt711)
428428
RT711_HP_JD_FINAL_RESULT_CTL_JD12);
429429
break;
430430
default:
431-
dev_warn(rt711->component->dev, "Wrong JD source\n");
431+
dev_warn(rt711->component->dev, "%s: Wrong JD source\n", __func__);
432432
break;
433433
}
434434

@@ -1020,16 +1020,16 @@ static int rt711_pcm_hw_params(struct snd_pcm_substream *substream,
10201020
retval = sdw_stream_add_slave(rt711->slave, &stream_config,
10211021
&port_config, 1, sdw_stream);
10221022
if (retval) {
1023-
dev_err(dai->dev, "Unable to configure port\n");
1023+
dev_err(dai->dev, "%s: Unable to configure port\n", __func__);
10241024
return retval;
10251025
}
10261026

10271027
if (params_channels(params) <= 16) {
10281028
/* bit 3:0 Number of Channel */
10291029
val |= (params_channels(params) - 1);
10301030
} else {
1031-
dev_err(component->dev, "Unsupported channels %d\n",
1032-
params_channels(params));
1031+
dev_err(component->dev, "%s: Unsupported channels %d\n",
1032+
__func__, params_channels(params));
10331033
return -EINVAL;
10341034
}
10351035

sound/soc/codecs/rt712-sdca-dmic.c

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ static int rt712_sdca_dmic_index_write(struct rt712_sdca_dmic_priv *rt712,
139139
ret = regmap_write(regmap, addr, value);
140140
if (ret < 0)
141141
dev_err(&rt712->slave->dev,
142-
"Failed to set private value: %06x <= %04x ret=%d\n",
143-
addr, value, ret);
142+
"%s: Failed to set private value: %06x <= %04x ret=%d\n",
143+
__func__, addr, value, ret);
144144

145145
return ret;
146146
}
@@ -155,8 +155,8 @@ static int rt712_sdca_dmic_index_read(struct rt712_sdca_dmic_priv *rt712,
155155
ret = regmap_read(regmap, addr, value);
156156
if (ret < 0)
157157
dev_err(&rt712->slave->dev,
158-
"Failed to get private value: %06x => %04x ret=%d\n",
159-
addr, *value, ret);
158+
"%s: Failed to get private value: %06x => %04x ret=%d\n",
159+
__func__, addr, *value, ret);
160160

161161
return ret;
162162
}
@@ -317,7 +317,8 @@ static int rt712_sdca_dmic_set_gain_put(struct snd_kcontrol *kcontrol,
317317
for (i = 0; i < p->count; i++) {
318318
err = regmap_write(rt712->mbq_regmap, p->reg_base + i, gain_val[i]);
319319
if (err < 0)
320-
dev_err(&rt712->slave->dev, "0x%08x can't be set\n", p->reg_base + i);
320+
dev_err(&rt712->slave->dev, "%s: 0x%08x can't be set\n",
321+
__func__, p->reg_base + i);
321322
}
322323

323324
return changed;
@@ -667,13 +668,13 @@ static int rt712_sdca_dmic_hw_params(struct snd_pcm_substream *substream,
667668
retval = sdw_stream_add_slave(rt712->slave, &stream_config,
668669
&port_config, 1, sdw_stream);
669670
if (retval) {
670-
dev_err(dai->dev, "Unable to configure port\n");
671+
dev_err(dai->dev, "%s: Unable to configure port\n", __func__);
671672
return retval;
672673
}
673674

674675
if (params_channels(params) > 4) {
675-
dev_err(component->dev, "Unsupported channels %d\n",
676-
params_channels(params));
676+
dev_err(component->dev, "%s: Unsupported channels %d\n",
677+
__func__, params_channels(params));
677678
return -EINVAL;
678679
}
679680

@@ -698,8 +699,8 @@ static int rt712_sdca_dmic_hw_params(struct snd_pcm_substream *substream,
698699
sampling_rate = RT712_SDCA_RATE_192000HZ;
699700
break;
700701
default:
701-
dev_err(component->dev, "Rate %d is not supported\n",
702-
params_rate(params));
702+
dev_err(component->dev, "%s: Rate %d is not supported\n",
703+
__func__, params_rate(params));
703704
return -EINVAL;
704705
}
705706

@@ -923,7 +924,8 @@ static int __maybe_unused rt712_sdca_dmic_dev_resume(struct device *dev)
923924
time = wait_for_completion_timeout(&slave->initialization_complete,
924925
msecs_to_jiffies(RT712_PROBE_TIMEOUT));
925926
if (!time) {
926-
dev_err(&slave->dev, "Initialization not complete, timed out\n");
927+
dev_err(&slave->dev, "%s: Initialization not complete, timed out\n",
928+
__func__);
927929
sdw_show_ping_status(slave->bus, true);
928930

929931
return -ETIMEDOUT;

0 commit comments

Comments
 (0)