Skip to content

Commit 49951ae

Browse files
committed
Merge tag 'asoc-fix-v5.11-rc5' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v5.11 More fixes for v5.11, almost all driver specific issues including new device IDs - there's one error handling fix for the topology stuff too.
2 parents c5b5ff6 + 5413dfd commit 49951ae

File tree

22 files changed

+184
-61
lines changed

22 files changed

+184
-61
lines changed

Documentation/devicetree/bindings/sound/mt8192-mt6359-rt1015-rt5682.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
77
title: Mediatek MT8192 with MT6359, RT1015 and RT5682 ASoC sound card driver
88

99
maintainers:
10-
- Jiaxin Yu <[email protected]>
11-
- Shane Chien <[email protected]>
10+
- Jiaxin Yu <[email protected]>
11+
- Shane Chien <[email protected]>
1212

1313
description:
1414
This binding describes the MT8192 sound card.

include/dt-bindings/sound/apq8016-lpass.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22
#ifndef __DT_APQ8016_LPASS_H
33
#define __DT_APQ8016_LPASS_H
44

5-
#define MI2S_PRIMARY 0
6-
#define MI2S_SECONDARY 1
7-
#define MI2S_TERTIARY 2
8-
#define MI2S_QUATERNARY 3
5+
#include <dt-bindings/sound/qcom,lpass.h>
6+
7+
/* NOTE: Use qcom,lpass.h to define any AIF ID's for LPASS */
98

109
#endif /* __DT_APQ8016_LPASS_H */
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/* SPDX-License-Identifier: GPL-2.0 */
2+
#ifndef __DT_QCOM_LPASS_H
3+
#define __DT_QCOM_LPASS_H
4+
5+
#define MI2S_PRIMARY 0
6+
#define MI2S_SECONDARY 1
7+
#define MI2S_TERTIARY 2
8+
#define MI2S_QUATERNARY 3
9+
#define MI2S_QUINARY 4
10+
11+
#define LPASS_DP_RX 5
12+
13+
#define LPASS_MCLK0 0
14+
15+
#endif /* __DT_QCOM_LPASS_H */

include/dt-bindings/sound/sc7180-lpass.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22
#ifndef __DT_SC7180_LPASS_H
33
#define __DT_SC7180_LPASS_H
44

5-
#define MI2S_PRIMARY 0
6-
#define MI2S_SECONDARY 1
7-
#define LPASS_DP_RX 2
5+
#include <dt-bindings/sound/qcom,lpass.h>
86

9-
#define LPASS_MCLK0 0
7+
/* NOTE: Use qcom,lpass.h to define any AIF ID's for LPASS */
108

119
#endif /* __DT_APQ8016_LPASS_H */

sound/soc/amd/renoir/rn-pci-acp3x.c

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,10 +165,24 @@ static int rn_acp_deinit(void __iomem *acp_base)
165165

166166
static const struct dmi_system_id rn_acp_quirk_table[] = {
167167
{
168-
/* Lenovo IdeaPad Flex 5 14ARE05, IdeaPad 5 15ARE05 */
168+
/* Lenovo IdeaPad S340-14API */
169169
.matches = {
170170
DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
171-
DMI_EXACT_MATCH(DMI_BOARD_NAME, "LNVNB161216"),
171+
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "81NB"),
172+
}
173+
},
174+
{
175+
/* Lenovo IdeaPad Flex 5 14ARE05 */
176+
.matches = {
177+
DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
178+
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "81X2"),
179+
}
180+
},
181+
{
182+
/* Lenovo IdeaPad 5 15ARE05 */
183+
.matches = {
184+
DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
185+
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "81YQ"),
172186
}
173187
},
174188
{

sound/soc/codecs/ak4458.c

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -595,18 +595,10 @@ static struct snd_soc_dai_driver ak4497_dai = {
595595
.ops = &ak4458_dai_ops,
596596
};
597597

598-
static void ak4458_power_off(struct ak4458_priv *ak4458)
598+
static void ak4458_reset(struct ak4458_priv *ak4458, bool active)
599599
{
600600
if (ak4458->reset_gpiod) {
601-
gpiod_set_value_cansleep(ak4458->reset_gpiod, 0);
602-
usleep_range(1000, 2000);
603-
}
604-
}
605-
606-
static void ak4458_power_on(struct ak4458_priv *ak4458)
607-
{
608-
if (ak4458->reset_gpiod) {
609-
gpiod_set_value_cansleep(ak4458->reset_gpiod, 1);
601+
gpiod_set_value_cansleep(ak4458->reset_gpiod, active);
610602
usleep_range(1000, 2000);
611603
}
612604
}
@@ -620,7 +612,7 @@ static int ak4458_init(struct snd_soc_component *component)
620612
if (ak4458->mute_gpiod)
621613
gpiod_set_value_cansleep(ak4458->mute_gpiod, 1);
622614

623-
ak4458_power_on(ak4458);
615+
ak4458_reset(ak4458, false);
624616

625617
ret = snd_soc_component_update_bits(component, AK4458_00_CONTROL1,
626618
0x80, 0x80); /* ACKS bit = 1; 10000000 */
@@ -650,7 +642,7 @@ static void ak4458_remove(struct snd_soc_component *component)
650642
{
651643
struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
652644

653-
ak4458_power_off(ak4458);
645+
ak4458_reset(ak4458, true);
654646
}
655647

656648
#ifdef CONFIG_PM
@@ -660,7 +652,7 @@ static int __maybe_unused ak4458_runtime_suspend(struct device *dev)
660652

661653
regcache_cache_only(ak4458->regmap, true);
662654

663-
ak4458_power_off(ak4458);
655+
ak4458_reset(ak4458, true);
664656

665657
if (ak4458->mute_gpiod)
666658
gpiod_set_value_cansleep(ak4458->mute_gpiod, 0);
@@ -685,8 +677,8 @@ static int __maybe_unused ak4458_runtime_resume(struct device *dev)
685677
if (ak4458->mute_gpiod)
686678
gpiod_set_value_cansleep(ak4458->mute_gpiod, 1);
687679

688-
ak4458_power_off(ak4458);
689-
ak4458_power_on(ak4458);
680+
ak4458_reset(ak4458, true);
681+
ak4458_reset(ak4458, false);
690682

691683
regcache_cache_only(ak4458->regmap, false);
692684
regcache_mark_dirty(ak4458->regmap);

sound/soc/codecs/wm_adsp.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2031,11 +2031,14 @@ static struct wm_coeff_ctl *wm_adsp_get_ctl(struct wm_adsp *dsp,
20312031
unsigned int alg)
20322032
{
20332033
struct wm_coeff_ctl *pos, *rslt = NULL;
2034+
const char *fw_txt = wm_adsp_fw_text[dsp->fw];
20342035

20352036
list_for_each_entry(pos, &dsp->ctl_list, list) {
20362037
if (!pos->subname)
20372038
continue;
20382039
if (strncmp(pos->subname, name, pos->subname_len) == 0 &&
2040+
strncmp(pos->fw_name, fw_txt,
2041+
SNDRV_CTL_ELEM_ID_NAME_MAXLEN) == 0 &&
20392042
pos->alg_region.alg == alg &&
20402043
pos->alg_region.type == type) {
20412044
rslt = pos;

sound/soc/intel/boards/sof_sdw.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,16 @@ static const struct dmi_system_id sof_sdw_quirk_table[] = {
6767
.driver_data = (void *)(SOF_RT711_JD_SRC_JD2 |
6868
SOF_RT715_DAI_ID_FIX),
6969
},
70+
{
71+
.callback = sof_sdw_quirk_cb,
72+
.matches = {
73+
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc"),
74+
DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "0A5E")
75+
},
76+
.driver_data = (void *)(SOF_RT711_JD_SRC_JD2 |
77+
SOF_RT715_DAI_ID_FIX |
78+
SOF_SDW_FOUR_SPK),
79+
},
7080
{
7181
.callback = sof_sdw_quirk_cb,
7282
.matches = {

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3619,19 +3619,20 @@ static void skl_tplg_complete(struct snd_soc_component *component)
36193619

36203620
list_for_each_entry(dobj, &component->dobj_list, list) {
36213621
struct snd_kcontrol *kcontrol = dobj->control.kcontrol;
3622-
struct soc_enum *se =
3623-
(struct soc_enum *)kcontrol->private_value;
3624-
char **texts = dobj->control.dtexts;
3622+
struct soc_enum *se;
3623+
char **texts;
36253624
char chan_text[4];
36263625

3627-
if (dobj->type != SND_SOC_DOBJ_ENUM ||
3628-
dobj->control.kcontrol->put !=
3629-
skl_tplg_multi_config_set_dmic)
3626+
if (dobj->type != SND_SOC_DOBJ_ENUM || !kcontrol ||
3627+
kcontrol->put != skl_tplg_multi_config_set_dmic)
36303628
continue;
3629+
3630+
se = (struct soc_enum *)kcontrol->private_value;
3631+
texts = dobj->control.dtexts;
36313632
sprintf(chan_text, "c%d", mach->mach_params.dmic_num);
36323633

36333634
for (i = 0; i < se->items; i++) {
3634-
struct snd_ctl_elem_value val;
3635+
struct snd_ctl_elem_value val = {};
36353636

36363637
if (strstr(texts[i], chan_text)) {
36373638
val.value.enumerated.item[0] = i;

sound/soc/mediatek/mt8183/mt8183-da7219-max98357.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,7 @@ static struct snd_soc_dai_link mt8183_da7219_dai_links[] = {
532532
.dpcm_playback = 1,
533533
.ignore_suspend = 1,
534534
.be_hw_params_fixup = mt8183_i2s_hw_params_fixup,
535+
.ignore = 1,
535536
.init = mt8183_da7219_max98357_hdmi_init,
536537
SND_SOC_DAILINK_REG(tdm),
537538
},
@@ -754,8 +755,10 @@ static int mt8183_da7219_max98357_dev_probe(struct platform_device *pdev)
754755
}
755756
}
756757

757-
if (hdmi_codec && strcmp(dai_link->name, "TDM") == 0)
758+
if (hdmi_codec && strcmp(dai_link->name, "TDM") == 0) {
758759
dai_link->codecs->of_node = hdmi_codec;
760+
dai_link->ignore = 0;
761+
}
759762

760763
if (!dai_link->platforms->name)
761764
dai_link->platforms->of_node = platform_node;

0 commit comments

Comments
 (0)