Skip to content

Commit 83ce1c7

Browse files
committed
Merge tag 'sound-7.0-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "This became slightly big partly due to my time off in the last week. But all changes are about device-specific fixes, so it should be safely applicable. ASoC: - Fix double free in sma1307 - Fix uninitialized variables in simple-card-utils/imx-card - Address clock leaks and error propagation in ADAU1372 - Add DMI quirks and ACP/SDW support for ASUS - Fix Intel CATPT DMA mask - Fix SOF topology parsing - Fix DT bindings for RK3576 SPDIF, STM32 SAI and WCD934x HD-audio: - Quirks for Lenovo, ASUS, and various HP models, as well as a speaker pop fix on Star Labs StarFighter - Revert MSI X870E Tomahawk denylist again USB-Audio: - Fix distorted audio on Focusrite Scarlett 2i2/2i4 1st Gen - Add iface reset quirk for AB17X - Update Qualcomm USB audio Kconfig dependencies and license Misc: - Fix minor compile warnings for firewire and asihpi drivers" * tag 'sound-7.0-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (35 commits) Revert "ALSA: hda/intel: Add MSI X870E Tomahawk to denylist" ALSA: usb-audio: Add iface reset and delay quirk for AB17X USB Audio ALSA: hda/realtek: add HP Laptop 15-fd0xxx mute LED quirk ALSA: usb-audio: Exclude Scarlett 2i4 1st Gen from SKIP_IFACE_SETUP ALSA: hda/realtek: Add mute LED quirk for HP Pavilion 15-eg0xxx ALSA: hda/realtek - Fixed Speaker Mute LED for HP EliteBoard G1a platform ASoC: SOF: ipc4-topology: Allow bytes controls without initial payload ASoC: adau1372: Fix clock leak on PLL lock failure ASoC: adau1372: Fix unchecked clk_prepare_enable() return value ASoC: SDCA: fix finding wrong entity ASoC: SDCA: remove the max count of initialization table ASoC: codecs: wcd934x: fix typo in dt parsing ASoC: dt-bindings: stm32: Fix incorrect compatible string in stm32h7-sai match ASoC: Intel: catpt: Fix the device initialization ASoC: amd: acp: add ASUS HN7306EA quirk for legacy SDW machine ASoC: SOF: topology: reject invalid vendor array size in token parser ASoC: tas2781: Add null check for calibration data ALSA: asihpi: avoid write overflow check warning ASoC: fsl: imx-card: initialize playback_only and capture_only ASoC: simple-card-utils: Check value of is_playback_only and is_capture_only ...
2 parents f44c651 + ed4da36 commit 83ce1c7

25 files changed

Lines changed: 226 additions & 44 deletions

File tree

Documentation/devicetree/bindings/sound/rockchip-spdif.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ properties:
3333
- const: rockchip,rk3066-spdif
3434
- items:
3535
- enum:
36+
- rockchip,rk3576-spdif
3637
- rockchip,rk3588-spdif
3738
- const: rockchip,rk3568-spdif
3839

Documentation/devicetree/bindings/sound/st,stm32-sai.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ allOf:
164164
properties:
165165
compatible:
166166
contains:
167-
const: st,stm32mph7-sai
167+
const: st,stm32h7-sai
168168
then:
169169
properties:
170170
clocks:

include/sound/sdca_function.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,6 @@ struct sdca_function_desc;
2626
*/
2727
#define SDCA_MAX_ENTITY_COUNT 128
2828

29-
/*
30-
* Sanity check on number of initialization writes, can be expanded if needed.
31-
*/
32-
#define SDCA_MAX_INIT_COUNT 2048
33-
3429
/*
3530
* The Cluster IDs are 16-bit, so a maximum of 65535 Clusters per
3631
* function can be represented, however limit this to a slightly

sound/firewire/amdtp-stream.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1164,7 +1164,7 @@ static void process_rx_packets(struct fw_iso_context *context, u32 tstamp, size_
11641164
struct pkt_desc *desc = s->packet_descs_cursor;
11651165
unsigned int pkt_header_length;
11661166
unsigned int packets;
1167-
u32 curr_cycle_time;
1167+
u32 curr_cycle_time = 0;
11681168
bool need_hw_irq;
11691169
int i;
11701170

sound/hda/codecs/realtek/alc269.c

Lines changed: 59 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,12 +1017,30 @@ static int alc269_resume(struct hda_codec *codec)
10171017
return 0;
10181018
}
10191019

1020-
#define STARLABS_STARFIGHTER_SHUTUP_DELAY_MS 30
1020+
#define ALC233_STARFIGHTER_SPK_PIN 0x1b
1021+
#define ALC233_STARFIGHTER_GPIO2 0x04
10211022

1022-
static void starlabs_starfighter_shutup(struct hda_codec *codec)
1023+
static void alc233_starfighter_update_amp(struct hda_codec *codec, bool on)
10231024
{
1024-
if (snd_hda_gen_shutup_speakers(codec))
1025-
msleep(STARLABS_STARFIGHTER_SHUTUP_DELAY_MS);
1025+
snd_hda_codec_write(codec, ALC233_STARFIGHTER_SPK_PIN, 0,
1026+
AC_VERB_SET_EAPD_BTLENABLE,
1027+
on ? AC_EAPDBTL_EAPD : 0);
1028+
alc_update_gpio_data(codec, ALC233_STARFIGHTER_GPIO2, on);
1029+
}
1030+
1031+
static void alc233_starfighter_pcm_hook(struct hda_pcm_stream *hinfo,
1032+
struct hda_codec *codec,
1033+
struct snd_pcm_substream *substream,
1034+
int action)
1035+
{
1036+
switch (action) {
1037+
case HDA_GEN_PCM_ACT_PREPARE:
1038+
alc233_starfighter_update_amp(codec, true);
1039+
break;
1040+
case HDA_GEN_PCM_ACT_CLEANUP:
1041+
alc233_starfighter_update_amp(codec, false);
1042+
break;
1043+
}
10261044
}
10271045

10281046
static void alc233_fixup_starlabs_starfighter(struct hda_codec *codec,
@@ -1031,8 +1049,16 @@ static void alc233_fixup_starlabs_starfighter(struct hda_codec *codec,
10311049
{
10321050
struct alc_spec *spec = codec->spec;
10331051

1034-
if (action == HDA_FIXUP_ACT_PRE_PROBE)
1035-
spec->shutup = starlabs_starfighter_shutup;
1052+
switch (action) {
1053+
case HDA_FIXUP_ACT_PRE_PROBE:
1054+
spec->gpio_mask |= ALC233_STARFIGHTER_GPIO2;
1055+
spec->gpio_dir |= ALC233_STARFIGHTER_GPIO2;
1056+
spec->gpio_data &= ~ALC233_STARFIGHTER_GPIO2;
1057+
break;
1058+
case HDA_FIXUP_ACT_PROBE:
1059+
spec->gen.pcm_playback_hook = alc233_starfighter_pcm_hook;
1060+
break;
1061+
}
10361062
}
10371063

10381064
static void alc269_fixup_pincfg_no_hp_to_lineout(struct hda_codec *codec,
@@ -3699,22 +3725,42 @@ static void alc245_tas2781_spi_hp_fixup_muteled(struct hda_codec *codec,
36993725
alc_fixup_hp_gpio_led(codec, action, 0x04, 0x0);
37003726
alc285_fixup_hp_coef_micmute_led(codec, fix, action);
37013727
}
3728+
3729+
static void alc245_hp_spk_mute_led_update(void *private_data, int enabled)
3730+
{
3731+
struct hda_codec *codec = private_data;
3732+
unsigned int val;
3733+
3734+
val = enabled ? 0x08 : 0x04; /* 0x08 led on, 0x04 led off */
3735+
alc_update_coef_idx(codec, 0x0b, 0x0c, val);
3736+
}
3737+
37023738
/* JD2: mute led GPIO3: micmute led */
37033739
static void alc245_tas2781_i2c_hp_fixup_muteled(struct hda_codec *codec,
37043740
const struct hda_fixup *fix, int action)
37053741
{
37063742
struct alc_spec *spec = codec->spec;
3743+
hda_nid_t hp_pin = alc_get_hp_pin(spec);
37073744
static const hda_nid_t conn[] = { 0x02 };
37083745

37093746
switch (action) {
37103747
case HDA_FIXUP_ACT_PRE_PROBE:
3748+
if (!hp_pin) {
3749+
spec->gen.vmaster_mute.hook = alc245_hp_spk_mute_led_update;
3750+
spec->gen.vmaster_mute_led = 1;
3751+
}
37113752
spec->gen.auto_mute_via_amp = 1;
37123753
snd_hda_override_conn_list(codec, 0x17, ARRAY_SIZE(conn), conn);
37133754
break;
3755+
case HDA_FIXUP_ACT_INIT:
3756+
if (!hp_pin)
3757+
alc245_hp_spk_mute_led_update(codec, !spec->gen.master_mute);
3758+
break;
37143759
}
37153760

37163761
tas2781_fixup_txnw_i2c(codec, fix, action);
3717-
alc245_fixup_hp_mute_led_coefbit(codec, fix, action);
3762+
if (hp_pin)
3763+
alc245_fixup_hp_mute_led_coefbit(codec, fix, action);
37183764
alc285_fixup_hp_coef_micmute_led(codec, fix, action);
37193765
}
37203766
/*
@@ -6854,6 +6900,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
68546900
SND_PCI_QUIRK(0x103c, 0x8730, "HP ProBook 445 G7", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
68556901
SND_PCI_QUIRK(0x103c, 0x8735, "HP ProBook 435 G7", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
68566902
SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_AMP_INIT),
6903+
SND_PCI_QUIRK(0x103c, 0x8756, "HP ENVY Laptop 13-ba0xxx", ALC245_FIXUP_HP_X360_MUTE_LEDS),
68576904
SND_PCI_QUIRK(0x103c, 0x8760, "HP EliteBook 8{4,5}5 G7", ALC285_FIXUP_HP_BEEP_MICMUTE_LED),
68586905
SND_PCI_QUIRK(0x103c, 0x876e, "HP ENVY x360 Convertible 13-ay0xxx", ALC245_FIXUP_HP_X360_MUTE_LEDS),
68596906
SND_PCI_QUIRK(0x103c, 0x877a, "HP", ALC285_FIXUP_HP_MUTE_LED),
@@ -6867,6 +6914,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
68676914
SND_PCI_QUIRK(0x103c, 0x8788, "HP OMEN 15", ALC285_FIXUP_HP_MUTE_LED),
68686915
SND_PCI_QUIRK(0x103c, 0x87b7, "HP Laptop 14-fq0xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2),
68696916
SND_PCI_QUIRK(0x103c, 0x87c8, "HP", ALC287_FIXUP_HP_GPIO_LED),
6917+
SND_PCI_QUIRK(0x103c, 0x87cb, "HP Pavilion 15-eg0xxx", ALC287_FIXUP_HP_GPIO_LED),
68706918
SND_PCI_QUIRK(0x103c, 0x87cc, "HP Pavilion 15-eg0xxx", ALC287_FIXUP_HP_GPIO_LED),
68716919
SND_PCI_QUIRK(0x103c, 0x87d3, "HP Laptop 15-gw0xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2),
68726920
SND_PCI_QUIRK(0x103c, 0x87df, "HP ProBook 430 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
@@ -7098,6 +7146,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
70987146
SND_PCI_QUIRK(0x103c, 0x8da7, "HP 14 Enstrom OmniBook X", ALC287_FIXUP_CS35L41_I2C_2),
70997147
SND_PCI_QUIRK(0x103c, 0x8da8, "HP 16 Piston OmniBook X", ALC287_FIXUP_CS35L41_I2C_2),
71007148
SND_PCI_QUIRK(0x103c, 0x8dd4, "HP EliteStudio 8 AIO", ALC274_FIXUP_HP_AIO_BIND_DACS),
7149+
SND_PCI_QUIRK(0x103c, 0x8dd7, "HP Laptop 15-fd0xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2),
71017150
SND_PCI_QUIRK(0x103c, 0x8de8, "HP Gemtree", ALC245_FIXUP_TAS2781_SPI_2),
71027151
SND_PCI_QUIRK(0x103c, 0x8de9, "HP Gemtree", ALC245_FIXUP_TAS2781_SPI_2),
71037152
SND_PCI_QUIRK(0x103c, 0x8dec, "HP EliteBook 640 G12", ALC236_FIXUP_HP_GPIO_LED),
@@ -7177,6 +7226,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
71777226
SND_PCI_QUIRK(0x1043, 0x115d, "Asus 1015E", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
71787227
SND_PCI_QUIRK(0x1043, 0x1194, "ASUS UM3406KA", ALC287_FIXUP_CS35L41_I2C_2),
71797228
SND_PCI_QUIRK(0x1043, 0x11c0, "ASUS X556UR", ALC255_FIXUP_ASUS_MIC_NO_PRESENCE),
7229+
HDA_CODEC_QUIRK(0x1043, 0x1204, "ASUS Strix G16 G615JMR", ALC287_FIXUP_TXNW2781_I2C_ASUS),
71807230
SND_PCI_QUIRK(0x1043, 0x1204, "ASUS Strix G615JHR_JMR_JPR", ALC287_FIXUP_TAS2781_I2C),
71817231
SND_PCI_QUIRK(0x1043, 0x1214, "ASUS Strix G615LH_LM_LP", ALC287_FIXUP_TAS2781_I2C),
71827232
SND_PCI_QUIRK(0x1043, 0x125e, "ASUS Q524UQK", ALC255_FIXUP_ASUS_MIC_NO_PRESENCE),
@@ -7206,6 +7256,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
72067256
SND_PCI_QUIRK(0x1043, 0x14e3, "ASUS G513PI/PU/PV", ALC287_FIXUP_CS35L41_I2C_2),
72077257
SND_PCI_QUIRK(0x1043, 0x14f2, "ASUS VivoBook X515JA", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE),
72087258
SND_PCI_QUIRK(0x1043, 0x1503, "ASUS G733PY/PZ/PZV/PYV", ALC287_FIXUP_CS35L41_I2C_2),
7259+
SND_PCI_QUIRK(0x1043, 0x1514, "ASUS ROG Flow Z13 GZ302EAC", ALC287_FIXUP_CS35L41_I2C_2),
72097260
SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A),
72107261
SND_PCI_QUIRK(0x1043, 0x1533, "ASUS GV302XA/XJ/XQ/XU/XV/XI", ALC287_FIXUP_CS35L41_I2C_2),
72117262
SND_PCI_QUIRK(0x1043, 0x1573, "ASUS GZ301VV/VQ/VU/VJ/VA/VC/VE/VVC/VQC/VUC/VJC/VEC/VCC", ALC285_FIXUP_ASUS_HEADSET_MIC),
@@ -7575,6 +7626,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
75757626
SND_PCI_QUIRK(0x17aa, 0x38ab, "Thinkbook 16P", ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD),
75767627
SND_PCI_QUIRK(0x17aa, 0x38b4, "Legion Slim 7 16IRH8", ALC287_FIXUP_CS35L41_I2C_2),
75777628
HDA_CODEC_QUIRK(0x17aa, 0x391c, "Lenovo Yoga 7 2-in-1 14AKP10", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN),
7629+
HDA_CODEC_QUIRK(0x17aa, 0x391d, "Lenovo Yoga 7 2-in-1 16AKP10", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN),
75787630
SND_PCI_QUIRK(0x17aa, 0x38b5, "Legion Slim 7 16IRH8", ALC287_FIXUP_CS35L41_I2C_2),
75797631
SND_PCI_QUIRK(0x17aa, 0x38b6, "Legion Slim 7 16APH8", ALC287_FIXUP_CS35L41_I2C_2),
75807632
SND_PCI_QUIRK(0x17aa, 0x38b7, "Legion Slim 7 16APH8", ALC287_FIXUP_CS35L41_I2C_2),

sound/hda/controllers/intel.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2077,7 +2077,6 @@ static const struct pci_device_id driver_denylist[] = {
20772077
{ PCI_DEVICE_SUB(0x1022, 0x1487, 0x1043, 0x874f) }, /* ASUS ROG Zenith II / Strix */
20782078
{ PCI_DEVICE_SUB(0x1022, 0x1487, 0x1462, 0xcb59) }, /* MSI TRX40 Creator */
20792079
{ PCI_DEVICE_SUB(0x1022, 0x1487, 0x1462, 0xcb60) }, /* MSI TRX40 */
2080-
{ PCI_DEVICE_SUB(0x1022, 0x15e3, 0x1462, 0xee59) }, /* MSI X870E Tomahawk WiFi */
20812080
{}
20822081
};
20832082

sound/pci/asihpi/hpimsgx.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -581,8 +581,10 @@ static u16 adapter_prepare(u16 adapter)
581581
HPI_ADAPTER_OPEN);
582582
hm.adapter_index = adapter;
583583
hw_entry_point(&hm, &hr);
584-
memcpy(&rESP_HPI_ADAPTER_OPEN[adapter], &hr,
585-
sizeof(rESP_HPI_ADAPTER_OPEN[0]));
584+
memcpy(&rESP_HPI_ADAPTER_OPEN[adapter].h, &hr,
585+
sizeof(rESP_HPI_ADAPTER_OPEN[adapter].h));
586+
memcpy(&rESP_HPI_ADAPTER_OPEN[adapter].a, &hr.u.ax.info,
587+
sizeof(rESP_HPI_ADAPTER_OPEN[adapter].a));
586588
if (hr.error)
587589
return hr.error;
588590

sound/soc/amd/acp-config.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,16 @@
2323

2424
static int acp_quirk_data;
2525

26+
static const struct dmi_system_id acp70_acpi_flag_override_table[] = {
27+
{
28+
.matches = {
29+
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."),
30+
DMI_MATCH(DMI_PRODUCT_NAME, "HN7306EA"),
31+
},
32+
},
33+
{}
34+
};
35+
2636
static const struct config_entry config_table[] = {
2737
{
2838
.flags = FLAG_AMD_SOF,
@@ -186,8 +196,11 @@ int snd_amd_acp_find_config(struct pci_dev *pci)
186196
*/
187197
if (!pci->revision)
188198
return 0;
189-
else if (pci->revision >= ACP_7_0_REV)
199+
else if (pci->revision >= ACP_7_0_REV) {
200+
if (dmi_check_system(acp70_acpi_flag_override_table))
201+
return 0;
190202
return snd_amd_acp_acpi_find_config(pci);
203+
}
191204

192205
for (i = 0; i < ARRAY_SIZE(config_table); i++, table++) {
193206
if (table->device != device)

sound/soc/amd/acp/acp-sdw-legacy-mach.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,14 @@ static const struct dmi_system_id soc_sdw_quirk_table[] = {
111111
},
112112
.driver_data = (void *)(ASOC_SDW_CODEC_SPKR),
113113
},
114+
{
115+
.callback = soc_sdw_quirk_cb,
116+
.matches = {
117+
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."),
118+
DMI_MATCH(DMI_PRODUCT_NAME, "HN7306EA"),
119+
},
120+
.driver_data = (void *)(ASOC_SDW_ACP_DMIC),
121+
},
114122
{}
115123
};
116124

sound/soc/amd/acp/amd-acp70-acpi-match.c

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,28 @@ static const struct snd_soc_acpi_endpoint jack_amp_g1_dmic_endpoints[] = {
6969
},
7070
};
7171

72+
static const struct snd_soc_acpi_endpoint jack_dmic_endpoints[] = {
73+
/* Jack Endpoint */
74+
{
75+
.num = 0,
76+
.aggregated = 0,
77+
.group_position = 0,
78+
.group_id = 0,
79+
},
80+
/* DMIC Endpoint */
81+
{
82+
/*
83+
* rt721 endpoint #2 maps to AIF3 (internal DMIC capture).
84+
* Endpoint #1 is AIF2 amp path and is handled by external amps
85+
* on this platform.
86+
*/
87+
.num = 2,
88+
.aggregated = 0,
89+
.group_position = 0,
90+
.group_id = 0,
91+
},
92+
};
93+
7294
static const struct snd_soc_acpi_adr_device rt712_vb_1_group1_adr[] = {
7395
{
7496
.adr = 0x000130025D071201ull,
@@ -563,6 +585,40 @@ static const struct snd_soc_acpi_link_adr acp70_rt1320_l0_rt722_l1[] = {
563585
{}
564586
};
565587

588+
static const struct snd_soc_acpi_adr_device rt721_l1u0_tas2783x2_l1u8b_adr[] = {
589+
{
590+
.adr = 0x000130025D072101ull,
591+
/*
592+
* On this platform speakers are provided by two TAS2783 amps.
593+
* Keep rt721 as UAJ + DMIC only.
594+
*/
595+
.num_endpoints = ARRAY_SIZE(jack_dmic_endpoints),
596+
.endpoints = jack_dmic_endpoints,
597+
.name_prefix = "rt721",
598+
},
599+
{
600+
.adr = 0x0001380102000001ull,
601+
.num_endpoints = 1,
602+
.endpoints = &spk_l_endpoint,
603+
.name_prefix = "tas2783-1",
604+
},
605+
{
606+
.adr = 0x00013B0102000001ull,
607+
.num_endpoints = 1,
608+
.endpoints = &spk_r_endpoint,
609+
.name_prefix = "tas2783-2",
610+
},
611+
};
612+
613+
static const struct snd_soc_acpi_link_adr acp70_rt721_l1u0_tas2783x2_l1u8b[] = {
614+
{
615+
.mask = BIT(1),
616+
.num_adr = ARRAY_SIZE(rt721_l1u0_tas2783x2_l1u8b_adr),
617+
.adr_d = rt721_l1u0_tas2783x2_l1u8b_adr,
618+
},
619+
{}
620+
};
621+
566622
struct snd_soc_acpi_mach snd_soc_acpi_amd_acp70_sdw_machines[] = {
567623
{
568624
.link_mask = BIT(0) | BIT(1),
@@ -650,6 +706,11 @@ struct snd_soc_acpi_mach snd_soc_acpi_amd_acp70_sdw_machines[] = {
650706
.machine_check = snd_soc_acpi_amd_sdca_is_device_rt712_vb,
651707
.drv_name = "amd_sdw",
652708
},
709+
{
710+
.link_mask = BIT(1),
711+
.links = acp70_rt721_l1u0_tas2783x2_l1u8b,
712+
.drv_name = "amd_sdw",
713+
},
653714
{},
654715
};
655716
EXPORT_SYMBOL(snd_soc_acpi_amd_acp70_sdw_machines);

0 commit comments

Comments
 (0)