Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'sound-5.13-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"A couple of small fixes are found in the ALSA core side at this time;
a fix in the new LED handling code and a long-standing (and likely no
one would notice) ioctl bug.

The rest are usual HD-audio fixes, mostly device-specific quirks but
also one major regression fix that was introduced in 5.13"

* tag 'sound-5.13-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: hda: update the power_state during the direct-complete
ALSA: timer: Fix master timer notification
ALSA: control led: fix memory leak in snd_ctl_led_register
ALSA: hda: Fix for mute key LED for HP Pavilion 15-CK0xx
ALSA: hda/cirrus: Set Initial DMIC volume to -26 dB
ALSA: hda: Fix a regression in Capture Switch mixer read
ALSA: hda: Add AlderLake-M PCI ID

+45 -12
+26 -7
sound/core/control_led.c
··· 17 17 #define MAX_LED (((SNDRV_CTL_ELEM_ACCESS_MIC_LED - SNDRV_CTL_ELEM_ACCESS_SPK_LED) \ 18 18 >> SNDRV_CTL_ELEM_ACCESS_LED_SHIFT) + 1) 19 19 20 + #define to_led_card_dev(_dev) \ 21 + container_of(_dev, struct snd_ctl_led_card, dev) 22 + 20 23 enum snd_ctl_led_mode { 21 24 MODE_FOLLOW_MUTE = 0, 22 25 MODE_FOLLOW_ROUTE, ··· 374 371 snd_ctl_led_refresh(); 375 372 } 376 373 374 + static void snd_ctl_led_card_release(struct device *dev) 375 + { 376 + struct snd_ctl_led_card *led_card = to_led_card_dev(dev); 377 + 378 + kfree(led_card); 379 + } 380 + 381 + static void snd_ctl_led_release(struct device *dev) 382 + { 383 + } 384 + 385 + static void snd_ctl_led_dev_release(struct device *dev) 386 + { 387 + } 388 + 377 389 /* 378 390 * sysfs 379 391 */ ··· 681 663 led_card->number = card->number; 682 664 led_card->led = led; 683 665 device_initialize(&led_card->dev); 666 + led_card->dev.release = snd_ctl_led_card_release; 684 667 if (dev_set_name(&led_card->dev, "card%d", card->number) < 0) 685 668 goto cerr; 686 669 led_card->dev.parent = &led->dev; ··· 700 681 put_device(&led_card->dev); 701 682 cerr2: 702 683 printk(KERN_ERR "snd_ctl_led: unable to add card%d", card->number); 703 - kfree(led_card); 704 684 } 705 685 } 706 686 ··· 718 700 snprintf(link_name, sizeof(link_name), "led-%s", led->name); 719 701 sysfs_remove_link(&card->ctl_dev.kobj, link_name); 720 702 sysfs_remove_link(&led_card->dev.kobj, "card"); 721 - device_del(&led_card->dev); 722 - kfree(led_card); 703 + device_unregister(&led_card->dev); 723 704 led->cards[card->number] = NULL; 724 705 } 725 706 } ··· 740 723 741 724 device_initialize(&snd_ctl_led_dev); 742 725 snd_ctl_led_dev.class = sound_class; 726 + snd_ctl_led_dev.release = snd_ctl_led_dev_release; 743 727 dev_set_name(&snd_ctl_led_dev, "ctl-led"); 744 728 if (device_add(&snd_ctl_led_dev)) { 745 729 put_device(&snd_ctl_led_dev); ··· 751 733 INIT_LIST_HEAD(&led->controls); 752 734 device_initialize(&led->dev); 753 735 led->dev.parent = &snd_ctl_led_dev; 736 + led->dev.release = snd_ctl_led_release; 754 737 led->dev.groups = snd_ctl_led_dev_attr_groups; 755 738 dev_set_name(&led->dev, led->name); 756 739 if (device_add(&led->dev)) { 757 740 put_device(&led->dev); 758 741 for (; group > 0; group--) { 759 742 led = &snd_ctl_leds[group - 1]; 760 - device_del(&led->dev); 743 + device_unregister(&led->dev); 761 744 } 762 - device_del(&snd_ctl_led_dev); 745 + device_unregister(&snd_ctl_led_dev); 763 746 return -ENOMEM; 764 747 } 765 748 } ··· 786 767 } 787 768 for (group = 0; group < MAX_LED; group++) { 788 769 led = &snd_ctl_leds[group]; 789 - device_del(&led->dev); 770 + device_unregister(&led->dev); 790 771 } 791 - device_del(&snd_ctl_led_dev); 772 + device_unregister(&snd_ctl_led_dev); 792 773 snd_ctl_led_clean(NULL); 793 774 } 794 775
+2 -1
sound/core/timer.c
··· 520 520 return; 521 521 if (timer->hw.flags & SNDRV_TIMER_HW_SLAVE) 522 522 return; 523 + event += 10; /* convert to SNDRV_TIMER_EVENT_MXXX */ 523 524 list_for_each_entry(ts, &ti->slave_active_head, active_list) 524 525 if (ts->ccallback) 525 - ts->ccallback(ts, event + 100, &tstamp, resolution); 526 + ts->ccallback(ts, event, &tstamp, resolution); 526 527 } 527 528 528 529 /* start/continue a master timer */
+4
sound/hda/intel-dsp-config.c
··· 331 331 .flags = FLAG_SOF | FLAG_SOF_ONLY_IF_DMIC_OR_SOUNDWIRE, 332 332 .device = 0x51c8, 333 333 }, 334 + { 335 + .flags = FLAG_SOF | FLAG_SOF_ONLY_IF_DMIC_OR_SOUNDWIRE, 336 + .device = 0x51cc, 337 + }, 334 338 #endif 335 339 336 340 };
+5
sound/pci/hda/hda_codec.c
··· 2917 2917 #ifdef CONFIG_PM_SLEEP 2918 2918 static int hda_codec_pm_prepare(struct device *dev) 2919 2919 { 2920 + dev->power.power_state = PMSG_SUSPEND; 2920 2921 return pm_runtime_suspended(dev); 2921 2922 } 2922 2923 2923 2924 static void hda_codec_pm_complete(struct device *dev) 2924 2925 { 2925 2926 struct hda_codec *codec = dev_to_hda_codec(dev); 2927 + 2928 + /* If no other pm-functions are called between prepare() and complete() */ 2929 + if (dev->power.power_state.event == PM_EVENT_SUSPEND) 2930 + dev->power.power_state = PMSG_RESUME; 2926 2931 2927 2932 if (pm_runtime_suspended(dev) && (codec->jackpoll_interval || 2928 2933 hda_codec_need_resume(codec) || codec->forced_resume))
+1
sound/pci/hda/hda_generic.c
··· 3520 3520 static const struct snd_kcontrol_new cap_sw_temp = { 3521 3521 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 3522 3522 .name = "Capture Switch", 3523 + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, 3523 3524 .info = cap_sw_info, 3524 3525 .get = cap_sw_get, 3525 3526 .put = cap_sw_put,
+3
sound/pci/hda/hda_intel.c
··· 2485 2485 /* Alderlake-P */ 2486 2486 { PCI_DEVICE(0x8086, 0x51c8), 2487 2487 .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, 2488 + /* Alderlake-M */ 2489 + { PCI_DEVICE(0x8086, 0x51cc), 2490 + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, 2488 2491 /* Elkhart Lake */ 2489 2492 { PCI_DEVICE(0x8086, 0x4b55), 2490 2493 .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE},
+3 -4
sound/pci/hda/patch_cirrus.c
··· 2206 2206 break; 2207 2207 case HDA_FIXUP_ACT_PROBE: 2208 2208 2209 - /* Set initial volume on Bullseye to -26 dB */ 2210 - if (codec->fixup_id == CS8409_BULLSEYE) 2211 - snd_hda_codec_amp_init_stereo(codec, CS8409_CS42L42_DMIC_ADC_PIN_NID, 2212 - HDA_INPUT, 0, 0xff, 0x19); 2209 + /* Set initial DMIC volume to -26 dB */ 2210 + snd_hda_codec_amp_init_stereo(codec, CS8409_CS42L42_DMIC_ADC_PIN_NID, 2211 + HDA_INPUT, 0, 0xff, 0x19); 2213 2212 snd_hda_gen_add_kctl(&spec->gen, 2214 2213 NULL, &cs8409_cs42l42_hp_volume_mixer); 2215 2214 snd_hda_gen_add_kctl(&spec->gen,
+1
sound/pci/hda/patch_realtek.c
··· 8303 8303 SND_PCI_QUIRK(0x103c, 0x82bf, "HP G3 mini", ALC221_FIXUP_HP_MIC_NO_PRESENCE), 8304 8304 SND_PCI_QUIRK(0x103c, 0x82c0, "HP G3 mini premium", ALC221_FIXUP_HP_MIC_NO_PRESENCE), 8305 8305 SND_PCI_QUIRK(0x103c, 0x83b9, "HP Spectre x360", ALC269_FIXUP_HP_MUTE_LED_MIC3), 8306 + SND_PCI_QUIRK(0x103c, 0x841c, "HP Pavilion 15-CK0xx", ALC269_FIXUP_HP_MUTE_LED_MIC3), 8306 8307 SND_PCI_QUIRK(0x103c, 0x8497, "HP Envy x360", ALC269_FIXUP_HP_MUTE_LED_MIC3), 8307 8308 SND_PCI_QUIRK(0x103c, 0x84da, "HP OMEN dc0019-ur", ALC295_FIXUP_HP_OMEN), 8308 8309 SND_PCI_QUIRK(0x103c, 0x84e7, "HP Pavilion 15", ALC269_FIXUP_HP_MUTE_LED_MIC3),