Skip to content

Commit 6be5e47

Browse files
committed
Merge tag 'soundwire-6.4-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire
Pull soundwire fixes from Vinod Koul: "Core fix for missing flag clear, error patch handling in qcom driver and BIOS quirk for HP Spectre x360: - HP Spectre x360 soundwire DMI quirk - Error path handling for qcom driver - Core fix for missing clear of alloc_slave_rt" * tag 'soundwire-6.4-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire: soundwire: stream: Add missing clear of alloc_slave_rt soundwire: qcom: add proper error paths in qcom_swrm_startup() soundwire: dmi-quirks: add new mapping for HP Spectre x360
2 parents 859c745 + 58d9588 commit 6be5e47

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed

drivers/soundwire/dmi-quirks.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,13 @@ static const struct dmi_system_id adr_remap_quirk_table[] = {
9999
},
100100
.driver_data = (void *)intel_tgl_bios,
101101
},
102+
{
103+
.matches = {
104+
DMI_MATCH(DMI_SYS_VENDOR, "HP"),
105+
DMI_MATCH(DMI_BOARD_NAME, "8709"),
106+
},
107+
.driver_data = (void *)intel_tgl_bios,
108+
},
102109
{
103110
/* quirk used for NUC15 'Bishop County' LAPBC510 and LAPBC710 skews */
104111
.matches = {

drivers/soundwire/qcom.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,8 +1099,10 @@ static int qcom_swrm_startup(struct snd_pcm_substream *substream,
10991099
}
11001100

11011101
sruntime = sdw_alloc_stream(dai->name);
1102-
if (!sruntime)
1103-
return -ENOMEM;
1102+
if (!sruntime) {
1103+
ret = -ENOMEM;
1104+
goto err_alloc;
1105+
}
11041106

11051107
ctrl->sruntime[dai->id] = sruntime;
11061108

@@ -1110,12 +1112,19 @@ static int qcom_swrm_startup(struct snd_pcm_substream *substream,
11101112
if (ret < 0 && ret != -ENOTSUPP) {
11111113
dev_err(dai->dev, "Failed to set sdw stream on %s\n",
11121114
codec_dai->name);
1113-
sdw_release_stream(sruntime);
1114-
return ret;
1115+
goto err_set_stream;
11151116
}
11161117
}
11171118

11181119
return 0;
1120+
1121+
err_set_stream:
1122+
sdw_release_stream(sruntime);
1123+
err_alloc:
1124+
pm_runtime_mark_last_busy(ctrl->dev);
1125+
pm_runtime_put_autosuspend(ctrl->dev);
1126+
1127+
return ret;
11191128
}
11201129

11211130
static void qcom_swrm_shutdown(struct snd_pcm_substream *substream,

drivers/soundwire/stream.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2021,8 +2021,10 @@ int sdw_stream_add_slave(struct sdw_slave *slave,
20212021

20222022
skip_alloc_master_rt:
20232023
s_rt = sdw_slave_rt_find(slave, stream);
2024-
if (s_rt)
2024+
if (s_rt) {
2025+
alloc_slave_rt = false;
20252026
goto skip_alloc_slave_rt;
2027+
}
20262028

20272029
s_rt = sdw_slave_rt_alloc(slave, m_rt);
20282030
if (!s_rt) {

0 commit comments

Comments
 (0)