diff options
author | Vinod Koul <vkoul@kernel.org> | 2023-06-08 13:38:33 +0200 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2023-06-08 13:38:33 +0200 |
commit | c05bfbd0c62baa052a04a566525611ab932b50a2 (patch) | |
tree | 9b5918514d249761bdd429b217c31d4e07e04994 /drivers/soundwire | |
parent | soundwire: cadence: revisit parity injection (diff) | |
parent | soundwire: stream: Add missing clear of alloc_slave_rt (diff) | |
download | linux-c05bfbd0c62baa052a04a566525611ab932b50a2.tar.xz linux-c05bfbd0c62baa052a04a566525611ab932b50a2.zip |
Merge branch 'fixes' into next
This resolves dependecy for the series
20230602101140.2040141-1-ckeepax@opensource.cirrus.com
Diffstat (limited to 'drivers/soundwire')
-rw-r--r-- | drivers/soundwire/dmi-quirks.c | 7 | ||||
-rw-r--r-- | drivers/soundwire/qcom.c | 17 | ||||
-rw-r--r-- | drivers/soundwire/stream.c | 4 |
3 files changed, 23 insertions, 5 deletions
diff --git a/drivers/soundwire/dmi-quirks.c b/drivers/soundwire/dmi-quirks.c index 58ea013fa918..2a1096dab63d 100644 --- a/drivers/soundwire/dmi-quirks.c +++ b/drivers/soundwire/dmi-quirks.c @@ -100,6 +100,13 @@ static const struct dmi_system_id adr_remap_quirk_table[] = { .driver_data = (void *)intel_tgl_bios, }, { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "HP"), + DMI_MATCH(DMI_BOARD_NAME, "8709"), + }, + .driver_data = (void *)intel_tgl_bios, + }, + { /* quirk used for NUC15 'Bishop County' LAPBC510 and LAPBC710 skews */ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Intel(R) Client Systems"), diff --git a/drivers/soundwire/qcom.c b/drivers/soundwire/qcom.c index 68d013f376dc..f6adf2c6c1ac 100644 --- a/drivers/soundwire/qcom.c +++ b/drivers/soundwire/qcom.c @@ -1268,8 +1268,10 @@ static int qcom_swrm_startup(struct snd_pcm_substream *substream, } sruntime = sdw_alloc_stream(dai->name); - if (!sruntime) - return -ENOMEM; + if (!sruntime) { + ret = -ENOMEM; + goto err_alloc; + } ctrl->sruntime[dai->id] = sruntime; @@ -1279,12 +1281,19 @@ static int qcom_swrm_startup(struct snd_pcm_substream *substream, if (ret < 0 && ret != -ENOTSUPP) { dev_err(dai->dev, "Failed to set sdw stream on %s\n", codec_dai->name); - sdw_release_stream(sruntime); - return ret; + goto err_set_stream; } } return 0; + +err_set_stream: + sdw_release_stream(sruntime); +err_alloc: + pm_runtime_mark_last_busy(ctrl->dev); + pm_runtime_put_autosuspend(ctrl->dev); + + return ret; } static void qcom_swrm_shutdown(struct snd_pcm_substream *substream, diff --git a/drivers/soundwire/stream.c b/drivers/soundwire/stream.c index c2191c07442b..379228f22186 100644 --- a/drivers/soundwire/stream.c +++ b/drivers/soundwire/stream.c @@ -2021,8 +2021,10 @@ int sdw_stream_add_slave(struct sdw_slave *slave, skip_alloc_master_rt: s_rt = sdw_slave_rt_find(slave, stream); - if (s_rt) + if (s_rt) { + alloc_slave_rt = false; goto skip_alloc_slave_rt; + } s_rt = sdw_slave_rt_alloc(slave, m_rt); if (!s_rt) { |