Skip to content

Commit 676fc8d

Browse files
committed
Merge tag 'sound-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "The regular "bump-in-the-middle" updates, containing mostly ASoC- related fixes at this time. All changes are reasonably small. A few entries are for ASoC and ALSA core parts (DAPM, PCM, topology) for followups of the recent changes and potential buffer overflow by snprintf(), while the rest are (both new and old) device-specific fixes for Intel, meson, tas2562, rt1015, as well as the usual HD-audio quirks" * tag 'sound-5.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (25 commits) ALSA: sgio2audio: Remove usage of dropped hw_params/hw_free functions ALSA: hda/realtek - Enable the headset of ASUS B9450FA with ALC294 ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Master ALSA: hda/realtek - Add Headset Button supported for ThinkPad X1 ALSA: hda/realtek - Add Headset Mic supported ASoC: wm8741: Fix typo in Kconfig prompt ASoC: stm32: sai: manage rebind issue ASoC: SOF: Fix snd_sof_ipc_stream_posn() ASoC: rt1015: modify pre-divider for sysclk ASoC: rt1015: add operation callback function for rt1015_dai[] ASoC: soc-component: tidyup snd_soc_pcm_component_sync_stop() ASoC: dapm: Correct DAPM handling of active widgets during shutdown ASoC: tas2562: Fix sample rate error message ASoC: Intel: Skylake: Fix available clock counter incrementation ASoC: soc-pcm/soc-compress: don't use snd_soc_dapm_stream_stop() ASoC: meson: g12a: add tohdmitx reset ASoC: pcm512x: Fix unbalanced regulator enable call in probe error path ASoC: soc-core: fix for_rtd_codec_dai_rollback() macro ASoC: topology: Fix memleak in soc_tplg_manifest_load() ASoC: topology: Fix memleak in soc_tplg_link_elems_load() ...
2 parents 63849c8 + 5a56996 commit 676fc8d

File tree

17 files changed

+98
-62
lines changed

17 files changed

+98
-62
lines changed

include/sound/soc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1157,7 +1157,7 @@ struct snd_soc_pcm_runtime {
11571157
((i) < rtd->num_codecs) && ((dai) = rtd->codec_dais[i]); \
11581158
(i)++)
11591159
#define for_each_rtd_codec_dai_rollback(rtd, i, dai) \
1160-
for (; ((--i) >= 0) && ((dai) = rtd->codec_dais[i]);)
1160+
for (; (--(i) >= 0) && ((dai) = rtd->codec_dais[i]);)
11611161

11621162
void snd_soc_close_delayed_work(struct snd_soc_pcm_runtime *rtd);
11631163

sound/mips/sgio2audio.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -649,8 +649,6 @@ snd_sgio2audio_pcm_pointer(struct snd_pcm_substream *substream)
649649
static const struct snd_pcm_ops snd_sgio2audio_playback1_ops = {
650650
.open = snd_sgio2audio_playback1_open,
651651
.close = snd_sgio2audio_pcm_close,
652-
.hw_params = snd_sgio2audio_pcm_hw_params,
653-
.hw_free = snd_sgio2audio_pcm_hw_free,
654652
.prepare = snd_sgio2audio_pcm_prepare,
655653
.trigger = snd_sgio2audio_pcm_trigger,
656654
.pointer = snd_sgio2audio_pcm_pointer,
@@ -659,8 +657,6 @@ static const struct snd_pcm_ops snd_sgio2audio_playback1_ops = {
659657
static const struct snd_pcm_ops snd_sgio2audio_playback2_ops = {
660658
.open = snd_sgio2audio_playback2_open,
661659
.close = snd_sgio2audio_pcm_close,
662-
.hw_params = snd_sgio2audio_pcm_hw_params,
663-
.hw_free = snd_sgio2audio_pcm_hw_free,
664660
.prepare = snd_sgio2audio_pcm_prepare,
665661
.trigger = snd_sgio2audio_pcm_trigger,
666662
.pointer = snd_sgio2audio_pcm_pointer,
@@ -669,8 +665,6 @@ static const struct snd_pcm_ops snd_sgio2audio_playback2_ops = {
669665
static const struct snd_pcm_ops snd_sgio2audio_capture_ops = {
670666
.open = snd_sgio2audio_capture_open,
671667
.close = snd_sgio2audio_pcm_close,
672-
.hw_params = snd_sgio2audio_pcm_hw_params,
673-
.hw_free = snd_sgio2audio_pcm_hw_free,
674668
.prepare = snd_sgio2audio_pcm_prepare,
675669
.trigger = snd_sgio2audio_pcm_trigger,
676670
.pointer = snd_sgio2audio_pcm_pointer,

sound/pci/hda/patch_realtek.c

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2447,6 +2447,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
24472447
SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC882_FIXUP_EAPD),
24482448
SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte EP45-DS3/Z87X-UD3H", ALC889_FIXUP_FRONT_HP_NO_PRESENCE),
24492449
SND_PCI_QUIRK(0x1458, 0xa0b8, "Gigabyte AZ370-Gaming", ALC1220_FIXUP_GB_DUAL_CODECS),
2450+
SND_PCI_QUIRK(0x1458, 0xa0cd, "Gigabyte X570 Aorus Master", ALC1220_FIXUP_CLEVO_P950),
24502451
SND_PCI_QUIRK(0x1462, 0x1228, "MSI-GP63", ALC1220_FIXUP_CLEVO_P950),
24512452
SND_PCI_QUIRK(0x1462, 0x1276, "MSI-GL73", ALC1220_FIXUP_CLEVO_P950),
24522453
SND_PCI_QUIRK(0x1462, 0x1293, "MSI-GP65", ALC1220_FIXUP_CLEVO_P950),
@@ -5920,7 +5921,8 @@ enum {
59205921
ALC289_FIXUP_DUAL_SPK,
59215922
ALC294_FIXUP_SPK2_TO_DAC1,
59225923
ALC294_FIXUP_ASUS_DUAL_SPK,
5923-
5924+
ALC285_FIXUP_THINKPAD_HEADSET_JACK,
5925+
ALC294_FIXUP_ASUS_HPE,
59245926
};
59255927

59265928
static const struct hda_fixup alc269_fixups[] = {
@@ -6684,6 +6686,8 @@ static const struct hda_fixup alc269_fixups[] = {
66846686
[ALC285_FIXUP_SPEAKER2_TO_DAC1] = {
66856687
.type = HDA_FIXUP_FUNC,
66866688
.v.func = alc285_fixup_speaker2_to_dac1,
6689+
.chained = true,
6690+
.chain_id = ALC269_FIXUP_THINKPAD_ACPI
66876691
},
66886692
[ALC256_FIXUP_DELL_INSPIRON_7559_SUBWOOFER] = {
66896693
.type = HDA_FIXUP_PINS,
@@ -7040,7 +7044,23 @@ static const struct hda_fixup alc269_fixups[] = {
70407044
.chained = true,
70417045
.chain_id = ALC294_FIXUP_SPK2_TO_DAC1
70427046
},
7043-
7047+
[ALC285_FIXUP_THINKPAD_HEADSET_JACK] = {
7048+
.type = HDA_FIXUP_FUNC,
7049+
.v.func = alc_fixup_headset_jack,
7050+
.chained = true,
7051+
.chain_id = ALC285_FIXUP_SPEAKER2_TO_DAC1
7052+
},
7053+
[ALC294_FIXUP_ASUS_HPE] = {
7054+
.type = HDA_FIXUP_VERBS,
7055+
.v.verbs = (const struct hda_verb[]) {
7056+
/* Set EAPD high */
7057+
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x0f },
7058+
{ 0x20, AC_VERB_SET_PROC_COEF, 0x7774 },
7059+
{ }
7060+
},
7061+
.chained = true,
7062+
.chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC
7063+
},
70447064
};
70457065

70467066
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -7115,6 +7135,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
71157135
SND_PCI_QUIRK(0x1028, 0x0935, "Dell", ALC274_FIXUP_DELL_AIO_LINEOUT_VERB),
71167136
SND_PCI_QUIRK(0x1028, 0x097e, "Dell Precision", ALC289_FIXUP_DUAL_SPK),
71177137
SND_PCI_QUIRK(0x1028, 0x097d, "Dell Precision", ALC289_FIXUP_DUAL_SPK),
7138+
SND_PCI_QUIRK(0x1028, 0x098d, "Dell Precision", ALC233_FIXUP_ASUS_MIC_NO_PRESENCE),
7139+
SND_PCI_QUIRK(0x1028, 0x09bf, "Dell Precision", ALC233_FIXUP_ASUS_MIC_NO_PRESENCE),
71187140
SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
71197141
SND_PCI_QUIRK(0x1028, 0x164b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
71207142
SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2),
@@ -7204,6 +7226,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
72047226
SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC),
72057227
SND_PCI_QUIRK(0x1043, 0x17d1, "ASUS UX431FL", ALC294_FIXUP_ASUS_DUAL_SPK),
72067228
SND_PCI_QUIRK(0x1043, 0x18b1, "Asus MJ401TA", ALC256_FIXUP_ASUS_HEADSET_MIC),
7229+
SND_PCI_QUIRK(0x1043, 0x19ce, "ASUS B9450FA", ALC294_FIXUP_ASUS_HPE),
72077230
SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
72087231
SND_PCI_QUIRK(0x1043, 0x1a30, "ASUS X705UD", ALC256_FIXUP_ASUS_MIC),
72097232
SND_PCI_QUIRK(0x1043, 0x1b13, "Asus U41SV", ALC269_FIXUP_INV_DMIC),
@@ -7274,8 +7297,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
72747297
SND_PCI_QUIRK(0x17aa, 0x224c, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
72757298
SND_PCI_QUIRK(0x17aa, 0x224d, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
72767299
SND_PCI_QUIRK(0x17aa, 0x225d, "Thinkpad T480", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
7277-
SND_PCI_QUIRK(0x17aa, 0x2292, "Thinkpad X1 Yoga 7th", ALC285_FIXUP_SPEAKER2_TO_DAC1),
7278-
SND_PCI_QUIRK(0x17aa, 0x2293, "Thinkpad X1 Carbon 7th", ALC285_FIXUP_SPEAKER2_TO_DAC1),
7300+
SND_PCI_QUIRK(0x17aa, 0x2292, "Thinkpad X1 Yoga 7th", ALC285_FIXUP_THINKPAD_HEADSET_JACK),
7301+
SND_PCI_QUIRK(0x17aa, 0x2293, "Thinkpad X1 Carbon 7th", ALC285_FIXUP_THINKPAD_HEADSET_JACK),
72797302
SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
72807303
SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
72817304
SND_PCI_QUIRK(0x17aa, 0x310c, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION),

sound/soc/codecs/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1406,7 +1406,7 @@ config SND_SOC_WM8737
14061406
depends on SND_SOC_I2C_AND_SPI
14071407

14081408
config SND_SOC_WM8741
1409-
tristate "Wolfson Microelectronics WM8737 DAC"
1409+
tristate "Wolfson Microelectronics WM8741 DAC"
14101410
depends on SND_SOC_I2C_AND_SPI
14111411

14121412
config SND_SOC_WM8750

sound/soc/codecs/pcm512x.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1564,13 +1564,15 @@ int pcm512x_probe(struct device *dev, struct regmap *regmap)
15641564
}
15651565

15661566
pcm512x->sclk = devm_clk_get(dev, NULL);
1567-
if (PTR_ERR(pcm512x->sclk) == -EPROBE_DEFER)
1568-
return -EPROBE_DEFER;
1567+
if (PTR_ERR(pcm512x->sclk) == -EPROBE_DEFER) {
1568+
ret = -EPROBE_DEFER;
1569+
goto err;
1570+
}
15691571
if (!IS_ERR(pcm512x->sclk)) {
15701572
ret = clk_prepare_enable(pcm512x->sclk);
15711573
if (ret != 0) {
15721574
dev_err(dev, "Failed to enable SCLK: %d\n", ret);
1573-
return ret;
1575+
goto err;
15741576
}
15751577
}
15761578

sound/soc/codecs/rt1015.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,7 @@ static int rt1015_hw_params(struct snd_pcm_substream *substream,
664664
snd_soc_component_update_bits(component, RT1015_TDM_MASTER,
665665
RT1015_I2S_DL_MASK, val_len);
666666
snd_soc_component_update_bits(component, RT1015_CLK2,
667-
RT1015_FS_PD_MASK, pre_div);
667+
RT1015_FS_PD_MASK, pre_div << RT1015_FS_PD_SFT);
668668

669669
return 0;
670670
}
@@ -857,6 +857,7 @@ struct snd_soc_dai_driver rt1015_dai[] = {
857857
.rates = RT1015_STEREO_RATES,
858858
.formats = RT1015_FORMATS,
859859
},
860+
.ops = &rt1015_aif_dai_ops,
860861
}
861862
};
862863

sound/soc/codecs/tas2562.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,8 @@ static int tas2562_set_bitwidth(struct tas2562_data *tas2562, int bitwidth)
215215
break;
216216

217217
default:
218-
dev_info(tas2562->dev, "Not supported params format\n");
218+
dev_info(tas2562->dev, "Unsupported bitwidth format\n");
219+
return -EINVAL;
219220
}
220221

221222
ret = snd_soc_component_update_bits(tas2562->component,
@@ -251,7 +252,7 @@ static int tas2562_hw_params(struct snd_pcm_substream *substream,
251252

252253
ret = tas2562_set_samplerate(tas2562, params_rate(params));
253254
if (ret)
254-
dev_err(tas2562->dev, "set bitwidth failed, %d\n", ret);
255+
dev_err(tas2562->dev, "set sample rate failed, %d\n", ret);
255256

256257
return ret;
257258
}

sound/soc/intel/skylake/skl-debug.c

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ static ssize_t skl_print_pins(struct skl_module_pin *m_pin, char *buf,
3434
int i;
3535
ssize_t ret = 0;
3636

37-
for (i = 0; i < max_pin; i++)
38-
ret += snprintf(buf + size, MOD_BUF - size,
37+
for (i = 0; i < max_pin; i++) {
38+
ret += scnprintf(buf + size, MOD_BUF - size,
3939
"%s %d\n\tModule %d\n\tInstance %d\n\t"
4040
"In-used %s\n\tType %s\n"
4141
"\tState %d\n\tIndex %d\n",
@@ -45,13 +45,15 @@ static ssize_t skl_print_pins(struct skl_module_pin *m_pin, char *buf,
4545
m_pin[i].in_use ? "Used" : "Unused",
4646
m_pin[i].is_dynamic ? "Dynamic" : "Static",
4747
m_pin[i].pin_state, i);
48+
size += ret;
49+
}
4850
return ret;
4951
}
5052

5153
static ssize_t skl_print_fmt(struct skl_module_fmt *fmt, char *buf,
5254
ssize_t size, bool direction)
5355
{
54-
return snprintf(buf + size, MOD_BUF - size,
56+
return scnprintf(buf + size, MOD_BUF - size,
5557
"%s\n\tCh %d\n\tFreq %d\n\tBit depth %d\n\t"
5658
"Valid bit depth %d\n\tCh config %#x\n\tInterleaving %d\n\t"
5759
"Sample Type %d\n\tCh Map %#x\n",
@@ -75,16 +77,16 @@ static ssize_t module_read(struct file *file, char __user *user_buf,
7577
if (!buf)
7678
return -ENOMEM;
7779

78-
ret = snprintf(buf, MOD_BUF, "Module:\n\tUUID %pUL\n\tModule id %d\n"
80+
ret = scnprintf(buf, MOD_BUF, "Module:\n\tUUID %pUL\n\tModule id %d\n"
7981
"\tInstance id %d\n\tPvt_id %d\n", mconfig->guid,
8082
mconfig->id.module_id, mconfig->id.instance_id,
8183
mconfig->id.pvt_id);
8284

83-
ret += snprintf(buf + ret, MOD_BUF - ret,
85+
ret += scnprintf(buf + ret, MOD_BUF - ret,
8486
"Resources:\n\tCPC %#x\n\tIBS %#x\n\tOBS %#x\t\n",
8587
res->cpc, res->ibs, res->obs);
8688

87-
ret += snprintf(buf + ret, MOD_BUF - ret,
89+
ret += scnprintf(buf + ret, MOD_BUF - ret,
8890
"Module data:\n\tCore %d\n\tIn queue %d\n\t"
8991
"Out queue %d\n\tType %s\n",
9092
mconfig->core_id, mconfig->max_in_queue,
@@ -94,38 +96,38 @@ static ssize_t module_read(struct file *file, char __user *user_buf,
9496
ret += skl_print_fmt(mconfig->in_fmt, buf, ret, true);
9597
ret += skl_print_fmt(mconfig->out_fmt, buf, ret, false);
9698

97-
ret += snprintf(buf + ret, MOD_BUF - ret,
99+
ret += scnprintf(buf + ret, MOD_BUF - ret,
98100
"Fixup:\n\tParams %#x\n\tConverter %#x\n",
99101
mconfig->params_fixup, mconfig->converter);
100102

101-
ret += snprintf(buf + ret, MOD_BUF - ret,
103+
ret += scnprintf(buf + ret, MOD_BUF - ret,
102104
"Module Gateway:\n\tType %#x\n\tVbus %#x\n\tHW conn %#x\n\tSlot %#x\n",
103105
mconfig->dev_type, mconfig->vbus_id,
104106
mconfig->hw_conn_type, mconfig->time_slot);
105107

106-
ret += snprintf(buf + ret, MOD_BUF - ret,
108+
ret += scnprintf(buf + ret, MOD_BUF - ret,
107109
"Pipeline:\n\tID %d\n\tPriority %d\n\tConn Type %d\n\t"
108110
"Pages %#x\n", mconfig->pipe->ppl_id,
109111
mconfig->pipe->pipe_priority, mconfig->pipe->conn_type,
110112
mconfig->pipe->memory_pages);
111113

112-
ret += snprintf(buf + ret, MOD_BUF - ret,
114+
ret += scnprintf(buf + ret, MOD_BUF - ret,
113115
"\tParams:\n\t\tHost DMA %d\n\t\tLink DMA %d\n",
114116
mconfig->pipe->p_params->host_dma_id,
115117
mconfig->pipe->p_params->link_dma_id);
116118

117-
ret += snprintf(buf + ret, MOD_BUF - ret,
119+
ret += scnprintf(buf + ret, MOD_BUF - ret,
118120
"\tPCM params:\n\t\tCh %d\n\t\tFreq %d\n\t\tFormat %d\n",
119121
mconfig->pipe->p_params->ch,
120122
mconfig->pipe->p_params->s_freq,
121123
mconfig->pipe->p_params->s_fmt);
122124

123-
ret += snprintf(buf + ret, MOD_BUF - ret,
125+
ret += scnprintf(buf + ret, MOD_BUF - ret,
124126
"\tLink %#x\n\tStream %#x\n",
125127
mconfig->pipe->p_params->linktype,
126128
mconfig->pipe->p_params->stream);
127129

128-
ret += snprintf(buf + ret, MOD_BUF - ret,
130+
ret += scnprintf(buf + ret, MOD_BUF - ret,
129131
"\tState %d\n\tPassthru %s\n",
130132
mconfig->pipe->state,
131133
mconfig->pipe->passthru ? "true" : "false");
@@ -135,7 +137,7 @@ static ssize_t module_read(struct file *file, char __user *user_buf,
135137
ret += skl_print_pins(mconfig->m_out_pin, buf,
136138
mconfig->max_out_queue, ret, false);
137139

138-
ret += snprintf(buf + ret, MOD_BUF - ret,
140+
ret += scnprintf(buf + ret, MOD_BUF - ret,
139141
"Other:\n\tDomain %d\n\tHomogeneous Input %s\n\t"
140142
"Homogeneous Output %s\n\tIn Queue Mask %d\n\t"
141143
"Out Queue Mask %d\n\tDMA ID %d\n\tMem Pages %d\n\t"
@@ -191,7 +193,7 @@ static ssize_t fw_softreg_read(struct file *file, char __user *user_buf,
191193
__ioread32_copy(d->fw_read_buff, fw_reg_addr, w0_stat_sz >> 2);
192194

193195
for (offset = 0; offset < FW_REG_SIZE; offset += 16) {
194-
ret += snprintf(tmp + ret, FW_REG_BUF - ret, "%#.4x: ", offset);
196+
ret += scnprintf(tmp + ret, FW_REG_BUF - ret, "%#.4x: ", offset);
195197
hex_dump_to_buffer(d->fw_read_buff + offset, 16, 16, 4,
196198
tmp + ret, FW_REG_BUF - ret, 0);
197199
ret += strlen(tmp + ret);

sound/soc/intel/skylake/skl-ssp-clk.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,9 +384,11 @@ static int skl_clk_dev_probe(struct platform_device *pdev)
384384
&clks[i], clk_pdata, i);
385385

386386
if (IS_ERR(data->clk[data->avail_clk_cnt])) {
387-
ret = PTR_ERR(data->clk[data->avail_clk_cnt++]);
387+
ret = PTR_ERR(data->clk[data->avail_clk_cnt]);
388388
goto err_unreg_skl_clk;
389389
}
390+
391+
data->avail_clk_cnt++;
390392
}
391393

392394
platform_set_drvdata(pdev, data);

sound/soc/meson/g12a-tohdmitx.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <linux/module.h>
99
#include <sound/pcm_params.h>
1010
#include <linux/regmap.h>
11+
#include <linux/reset.h>
1112
#include <sound/soc.h>
1213
#include <sound/soc-dai.h>
1314

@@ -378,6 +379,11 @@ static int g12a_tohdmitx_probe(struct platform_device *pdev)
378379
struct device *dev = &pdev->dev;
379380
void __iomem *regs;
380381
struct regmap *map;
382+
int ret;
383+
384+
ret = device_reset(dev);
385+
if (ret)
386+
return ret;
381387

382388
regs = devm_platform_ioremap_resource(pdev, 0);
383389
if (IS_ERR(regs))

0 commit comments

Comments
 (0)