Pull sound fixes from Takashi Iwai: "A few last-minute fixes. All changes are device-specific small fixes that should be pretty safe to apply" * tag 'sound-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: hda/realtek - update set GPIO3 to default for Thinkpad with ALC1318 ALSA: hda/realtek: fix mute/micmute LEDs for a HP EliteBook 645 G10 ALSA: hda/realtek - Fixed Clevo platform headset Mic issue ALSA: usb-audio: Fix Yamaha P-125 Quirk Entry ASoC: max9768: Fix event generation for playback mute ASoC: intel: sof_sdw: add quirk for Dell SKU ASoC: audio-graph-card2: Purge absent supplies for device tree nodes
Unified · Split
| @@ -7450,7 +7450,6 @@ static void alc287_alc1318_playback_pcm_hook(struct hda_pcm_stream *hinfo, · 7449 unmodified lines | ||
| 7450 | 7450 | struct snd_pcm_substream *substream, |
| 7451 | 7451 | int action) |
| 7452 | 7452 | { |
| 7453 | − alc_write_coef_idx(codec, 0x10, 0x8806); /* Change MLK to GPIO3 */ | |
| 7454 | 7453 | switch (action) { |
| 7455 | 7454 | case HDA_GEN_PCM_ACT_OPEN: |
| 7456 | 7455 | alc_write_coefex_idx(codec, 0x5a, 0x00, 0x954f); /* write gpio3 to high */ |
| @@ -7464,7 +7463,6 @@ static void alc287_alc1318_playback_pcm_hook(struct hda_pcm_stream *hinfo, · 7 unmodified lines | ||
| 7464 | 7463 | static void alc287_s4_power_gpio3_default(struct hda_codec *codec) |
| 7465 | 7464 | { |
| 7466 | 7465 | if (is_s4_suspend(codec)) { |
| 7467 | − alc_write_coef_idx(codec, 0x10, 0x8806); /* Change MLK to GPIO3 */ | |
| 7468 | 7466 | alc_write_coefex_idx(codec, 0x5a, 0x00, 0x554f); /* write gpio3 as default value */ |
| 7469 | 7467 | } |
| 7470 | 7468 | } |
| @@ -7473,9 +7471,17 @@ static void alc287_fixup_lenovo_thinkpad_with_alc1318(struct hda_codec *codec, · 2 unmodified lines | ||
| 7473 | 7471 | const struct hda_fixup *fix, int action) |
| 7474 | 7472 | { |
| 7475 | 7473 | struct alc_spec *spec = codec->spec; |
| 7474 | + static const struct coef_fw coefs[] = { | |
| 7475 | + WRITE_COEF(0x24, 0x0013), WRITE_COEF(0x25, 0x0000), WRITE_COEF(0x26, 0xC300), | |
| 7476 | + WRITE_COEF(0x28, 0x0001), WRITE_COEF(0x29, 0xb023), | |
| 7477 | + WRITE_COEF(0x24, 0x0013), WRITE_COEF(0x25, 0x0000), WRITE_COEF(0x26, 0xC301), | |
| 7478 | + WRITE_COEF(0x28, 0x0001), WRITE_COEF(0x29, 0xb023), | |
| 7479 | + }; | |
| 7476 | 7480 | |
| 7477 | 7481 | if (action != HDA_FIXUP_ACT_PRE_PROBE) |
| 7478 | 7482 | return; |
| 7483 | + alc_update_coef_idx(codec, 0x10, 1<<11, 1<<11); | |
| 7484 | + alc_process_coef_fw(codec, coefs); | |
| 7479 | 7485 | spec->power_hook = alc287_s4_power_gpio3_default; |
| 7480 | 7486 | spec->gen.pcm_playback_hook = alc287_alc1318_playback_pcm_hook; |
| 7481 | 7487 | } |
| @@ -10496,6 +10502,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { · 3014 unmodified lines | ||
| 10496 | 10502 | SND_PCI_QUIRK(0x103c, 0x8b59, "HP Elite mt645 G7 Mobile Thin Client U89", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), |
| 10497 | 10503 | SND_PCI_QUIRK(0x103c, 0x8b5d, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), |
| 10498 | 10504 | SND_PCI_QUIRK(0x103c, 0x8b5e, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), |
| 10505 | + SND_PCI_QUIRK(0x103c, 0x8b5f, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), | |
| 10499 | 10506 | SND_PCI_QUIRK(0x103c, 0x8b63, "HP Elite Dragonfly 13.5 inch G4", ALC245_FIXUP_CS35L41_SPI_4_HP_GPIO_LED), |
| 10500 | 10507 | SND_PCI_QUIRK(0x103c, 0x8b65, "HP ProBook 455 15.6 inch G10 Notebook PC", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), |
| 10501 | 10508 | SND_PCI_QUIRK(0x103c, 0x8b66, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), |
| @@ -11673,6 +11680,8 @@ static const struct snd_hda_pin_quirk alc269_fallback_pin_fixup_tbl[] = { · 1171 unmodified lines | ||
| 11673 | 11680 | {0x1a, 0x40000000}), |
| 11674 | 11681 | SND_HDA_PIN_QUIRK(0x10ec0256, 0x1043, "ASUS", ALC2XX_FIXUP_HEADSET_MIC, |
| 11675 | 11682 | {0x19, 0x40000000}), |
| 11683 | + SND_HDA_PIN_QUIRK(0x10ec0255, 0x1558, "Clevo", ALC2XX_FIXUP_HEADSET_MIC, | |
| 11684 | + {0x19, 0x40000000}), | |
| 11676 | 11685 | {} |
| 11677 | 11686 | }; |
| 11678 | 11687 | |
| @@ -54,10 +54,17 @@ static int max9768_set_gpio(struct snd_kcontrol *kcontrol, · 53 unmodified lines | ||
| 54 | 54 | { |
| 55 | 55 | struct snd_soc_component *c = snd_soc_kcontrol_component(kcontrol); |
| 56 | 56 | struct max9768 *max9768 = snd_soc_component_get_drvdata(c); |
| 57 | + bool val = !ucontrol->value.integer.value[0]; | |
| 58 | + int ret; | |
| 57 | 59 | |
| 58 | − gpiod_set_value_cansleep(max9768->mute, !ucontrol->value.integer.value[0]); | |
| 60 | + if (val != gpiod_get_value_cansleep(max9768->mute)) | |
| 61 | + ret = 1; | |
| 62 | + else | |
| 63 | + ret = 0; | |
| 59 | 64 | |
| 60 | − return 0; | |
| 65 | + gpiod_set_value_cansleep(max9768->mute, val); | |
| 66 | + | |
| 67 | + return ret; | |
| 61 | 68 | } |
| 62 | 69 | |
| 63 | 70 | static const DECLARE_TLV_DB_RANGE(volume_tlv, |
| @@ -270,16 +270,19 @@ static enum graph_type __graph_get_type(struct device_node *lnk) · 269 unmodified lines | ||
| 270 | 270 | |
| 271 | 271 | if (of_node_name_eq(np, GRAPH_NODENAME_MULTI)) { |
| 272 | 272 | ret = GRAPH_MULTI; |
| 273 | + fw_devlink_purge_absent_suppliers(&np->fwnode); | |
| 273 | 274 | goto out_put; |
| 274 | 275 | } |
| 275 | 276 | |
| 276 | 277 | if (of_node_name_eq(np, GRAPH_NODENAME_DPCM)) { |
| 277 | 278 | ret = GRAPH_DPCM; |
| 279 | + fw_devlink_purge_absent_suppliers(&np->fwnode); | |
| 278 | 280 | goto out_put; |
| 279 | 281 | } |
| 280 | 282 | |
| 281 | 283 | if (of_node_name_eq(np, GRAPH_NODENAME_C2C)) { |
| 282 | 284 | ret = GRAPH_C2C; |
| 285 | + fw_devlink_purge_absent_suppliers(&np->fwnode); | |
| 283 | 286 | goto out_put; |
| 284 | 287 | } |
| 285 | 288 | |
| @@ -590,6 +590,14 @@ static const struct dmi_system_id sof_sdw_quirk_table[] = { · 589 unmodified lines | ||
| 590 | 590 | }, |
| 591 | 591 | .driver_data = (void *)(SOC_SDW_CODEC_SPKR), |
| 592 | 592 | }, |
| 593 | + { | |
| 594 | + .callback = sof_sdw_quirk_cb, | |
| 595 | + .matches = { | |
| 596 | + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc"), | |
| 597 | + DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "0CF1") | |
| 598 | + }, | |
| 599 | + .driver_data = (void *)(SOC_SDW_CODEC_SPKR), | |
| 600 | + }, | |
| 593 | 601 | { |
| 594 | 602 | .callback = sof_sdw_quirk_cb, |
| 595 | 603 | .matches = { |
| @@ -324,7 +324,6 @@ YAMAHA_DEVICE(0x105a, NULL), · 323 unmodified lines | ||
| 324 | 324 | YAMAHA_DEVICE(0x105b, NULL), |
| 325 | 325 | YAMAHA_DEVICE(0x105c, NULL), |
| 326 | 326 | YAMAHA_DEVICE(0x105d, NULL), |
| 327 | −YAMAHA_DEVICE(0x1718, "P-125"), | |
| 328 | 327 | { |
| 329 | 328 | USB_DEVICE(0x0499, 0x1503), |
| 330 | 329 | QUIRK_DRIVER_INFO { |
| @@ -391,6 +390,19 @@ YAMAHA_DEVICE(0x1718, "P-125"), · 60 unmodified lines | ||
| 391 | 390 | } |
| 392 | 391 | } |
| 393 | 392 | }, |
| 393 | +{ | |
| 394 | + USB_DEVICE(0x0499, 0x1718), | |
| 395 | + QUIRK_DRIVER_INFO { | |
| 396 | + /* .vendor_name = "Yamaha", */ | |
| 397 | + /* .product_name = "P-125", */ | |
| 398 | + QUIRK_DATA_COMPOSITE { | |
| 399 | + { QUIRK_DATA_STANDARD_AUDIO(1) }, | |
| 400 | + { QUIRK_DATA_STANDARD_AUDIO(2) }, | |
| 401 | + { QUIRK_DATA_MIDI_YAMAHA(3) }, | |
| 402 | + QUIRK_COMPOSITE_END | |
| 403 | + } | |
| 404 | + } | |
| 405 | +}, | |
| 394 | 406 | YAMAHA_DEVICE(0x2000, "DGP-7"), |
| 395 | 407 | YAMAHA_DEVICE(0x2001, "DGP-5"), |
| 396 | 408 | YAMAHA_DEVICE(0x2002, NULL), |