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

Merge branch 'for-linus' into for-next

Sync with the pending 6.15 fixes.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

+100 -19
+2 -2
include/sound/hdaudio.h
··· 223 223 struct device_driver driver; 224 224 int type; 225 225 const struct hda_device_id *id_table; 226 - int (*match)(struct hdac_device *dev, struct hdac_driver *drv); 226 + int (*match)(struct hdac_device *dev, const struct hdac_driver *drv); 227 227 void (*unsol_event)(struct hdac_device *dev, unsigned int event); 228 228 229 229 /* fields used by ext bus APIs */ ··· 235 235 #define drv_to_hdac_driver(_drv) container_of(_drv, struct hdac_driver, driver) 236 236 237 237 const struct hda_device_id * 238 - hdac_get_device_id(struct hdac_device *hdev, struct hdac_driver *drv); 238 + hdac_get_device_id(struct hdac_device *hdev, const struct hdac_driver *drv); 239 239 240 240 /* 241 241 * Bus verb operators
+2
include/sound/pcm.h
··· 1402 1402 #define snd_pcm_lib_mmap_iomem NULL 1403 1403 #endif 1404 1404 1405 + void snd_pcm_runtime_buffer_set_silence(struct snd_pcm_runtime *runtime); 1406 + 1405 1407 /** 1406 1408 * snd_pcm_limit_isa_dma_size - Get the max size fitting with ISA DMA transfer 1407 1409 * @dma: DMA number
+1 -2
sound/core/oss/pcm_oss.c
··· 1074 1074 runtime->oss.params = 0; 1075 1075 runtime->oss.prepare = 1; 1076 1076 runtime->oss.buffer_used = 0; 1077 - if (runtime->dma_area) 1078 - snd_pcm_format_set_silence(runtime->format, runtime->dma_area, bytes_to_samples(runtime, runtime->dma_bytes)); 1077 + snd_pcm_runtime_buffer_set_silence(runtime); 1079 1078 1080 1079 runtime->oss.period_frames = snd_pcm_alsa_frames(substream, oss_period_size); 1081 1080
+11
sound/core/pcm_native.c
··· 723 723 atomic_inc(&runtime->buffer_accessing); 724 724 } 725 725 726 + /* fill the PCM buffer with the current silence format; called from pcm_oss.c */ 727 + void snd_pcm_runtime_buffer_set_silence(struct snd_pcm_runtime *runtime) 728 + { 729 + snd_pcm_buffer_access_lock(runtime); 730 + if (runtime->dma_area) 731 + snd_pcm_format_set_silence(runtime->format, runtime->dma_area, 732 + bytes_to_samples(runtime, runtime->dma_bytes)); 733 + snd_pcm_buffer_access_unlock(runtime); 734 + } 735 + EXPORT_SYMBOL_GPL(snd_pcm_runtime_buffer_set_silence); 736 + 726 737 #if IS_ENABLED(CONFIG_SND_PCM_OSS) 727 738 #define is_oss_stream(substream) ((substream)->oss.oss) 728 739 #else
+1 -1
sound/core/seq_device.c
··· 43 43 static int snd_seq_bus_match(struct device *dev, const struct device_driver *drv) 44 44 { 45 45 struct snd_seq_device *sdev = to_seq_dev(dev); 46 - struct snd_seq_driver *sdrv = to_seq_drv(drv); 46 + const struct snd_seq_driver *sdrv = to_seq_drv(drv); 47 47 48 48 return strcmp(sdrv->id, sdev->id) == 0 && 49 49 sdrv->argsize == sdev->argsize;
+3 -3
sound/hda/hda_bus_type.c
··· 21 21 * driver id_table and returns the matching device id entry. 22 22 */ 23 23 const struct hda_device_id * 24 - hdac_get_device_id(struct hdac_device *hdev, struct hdac_driver *drv) 24 + hdac_get_device_id(struct hdac_device *hdev, const struct hdac_driver *drv) 25 25 { 26 26 if (drv->id_table) { 27 27 const struct hda_device_id *id = drv->id_table; ··· 38 38 } 39 39 EXPORT_SYMBOL_GPL(hdac_get_device_id); 40 40 41 - static int hdac_codec_match(struct hdac_device *dev, struct hdac_driver *drv) 41 + static int hdac_codec_match(struct hdac_device *dev, const struct hdac_driver *drv) 42 42 { 43 43 if (hdac_get_device_id(dev, drv)) 44 44 return 1; ··· 49 49 static int hda_bus_match(struct device *dev, const struct device_driver *drv) 50 50 { 51 51 struct hdac_device *hdev = dev_to_hdac_dev(dev); 52 - struct hdac_driver *hdrv = drv_to_hdac_driver(drv); 52 + const struct hdac_driver *hdrv = drv_to_hdac_driver(drv); 53 53 54 54 if (hdev->type != hdrv->type) 55 55 return 0;
+2 -2
sound/pci/hda/hda_bind.c
··· 18 18 /* 19 19 * find a matching codec id 20 20 */ 21 - static int hda_codec_match(struct hdac_device *dev, struct hdac_driver *drv) 21 + static int hda_codec_match(struct hdac_device *dev, const struct hdac_driver *drv) 22 22 { 23 23 struct hda_codec *codec = container_of(dev, struct hda_codec, core); 24 - struct hda_codec_driver *driver = 24 + const struct hda_codec_driver *driver = 25 25 container_of(drv, struct hda_codec_driver, core); 26 26 const struct hda_device_id *list; 27 27 /* check probe_id instead of vendor_id if set */
+8 -1
sound/pci/hda/patch_realtek.c
··· 6830 6830 6831 6831 switch (action) { 6832 6832 case HDA_FIXUP_ACT_PRE_PROBE: 6833 - spec->gen.suppress_auto_mute = 1; 6833 + if (codec->core.subsystem_id == 0x10280d76) 6834 + spec->gen.suppress_auto_mute = 0; 6835 + else 6836 + spec->gen.suppress_auto_mute = 1; 6834 6837 spec->gen.suppress_auto_mic = 1; 6835 6838 spec->en_3kpull_low = false; 6836 6839 break; ··· 10895 10892 SND_PCI_QUIRK(0x103c, 0x8e1a, "HP ZBook Firefly 14 G12A", ALC245_FIXUP_HP_ZBOOK_FIREFLY_G12A), 10896 10893 SND_PCI_QUIRK(0x103c, 0x8e1b, "HP EliteBook G12", ALC245_FIXUP_HP_ZBOOK_FIREFLY_G12A), 10897 10894 SND_PCI_QUIRK(0x103c, 0x8e1c, "HP EliteBook G12", ALC245_FIXUP_HP_ZBOOK_FIREFLY_G12A), 10895 + SND_PCI_QUIRK(0x103c, 0x8e1d, "HP ZBook X Gli 16 G12", ALC236_FIXUP_HP_GPIO_LED), 10898 10896 SND_PCI_QUIRK(0x103c, 0x8e2c, "HP EliteBook 16 G12", ALC285_FIXUP_HP_GPIO_LED), 10899 10897 SND_PCI_QUIRK(0x103c, 0x8e36, "HP 14 Enstrom OmniBook X", ALC287_FIXUP_CS35L41_I2C_2), 10900 10898 SND_PCI_QUIRK(0x103c, 0x8e37, "HP 16 Piston OmniBook X", ALC287_FIXUP_CS35L41_I2C_2), 10899 + SND_PCI_QUIRK(0x103c, 0x8e3a, "HP Agusta", ALC287_FIXUP_CS35L41_I2C_2), 10900 + SND_PCI_QUIRK(0x103c, 0x8e3b, "HP Agusta", ALC287_FIXUP_CS35L41_I2C_2), 10901 10901 SND_PCI_QUIRK(0x103c, 0x8e60, "HP Trekker ", ALC287_FIXUP_CS35L41_I2C_2), 10902 10902 SND_PCI_QUIRK(0x103c, 0x8e61, "HP Trekker ", ALC287_FIXUP_CS35L41_I2C_2), 10903 10903 SND_PCI_QUIRK(0x103c, 0x8e62, "HP Trekker ", ALC287_FIXUP_CS35L41_I2C_2), ··· 11316 11310 SND_PCI_QUIRK(0x17aa, 0x38fa, "Thinkbook 16P Gen5", ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD), 11317 11311 SND_PCI_QUIRK(0x17aa, 0x38fd, "ThinkBook plus Gen5 Hybrid", ALC287_FIXUP_TAS2781_I2C), 11318 11312 SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI), 11313 + SND_PCI_QUIRK(0x17aa, 0x390d, "Lenovo Yoga Pro 7 14ASP10", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN), 11319 11314 SND_PCI_QUIRK(0x17aa, 0x3913, "Lenovo 145", ALC236_FIXUP_LENOVO_INV_DMIC), 11320 11315 SND_PCI_QUIRK(0x17aa, 0x391f, "Yoga S990-16 pro Quad YC Quad", ALC287_FIXUP_TAS2781_I2C), 11321 11316 SND_PCI_QUIRK(0x17aa, 0x3920, "Yoga S990-16 pro Quad VECO Quad", ALC287_FIXUP_TAS2781_I2C),
+23
sound/soc/apple/mca.c
··· 464 464 return -EINVAL; 465 465 } 466 466 467 + static int mca_fe_startup(struct snd_pcm_substream *substream, 468 + struct snd_soc_dai *dai) 469 + { 470 + struct mca_cluster *cl = mca_dai_to_cluster(dai); 471 + unsigned int mask, nchannels; 472 + 473 + if (cl->tdm_slots) { 474 + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) 475 + mask = cl->tdm_tx_mask; 476 + else 477 + mask = cl->tdm_rx_mask; 478 + 479 + nchannels = hweight32(mask); 480 + } else { 481 + nchannels = 2; 482 + } 483 + 484 + return snd_pcm_hw_constraint_minmax(substream->runtime, 485 + SNDRV_PCM_HW_PARAM_CHANNELS, 486 + 1, nchannels); 487 + } 488 + 467 489 static int mca_fe_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, 468 490 unsigned int rx_mask, int slots, int slot_width) 469 491 { ··· 702 680 } 703 681 704 682 static const struct snd_soc_dai_ops mca_fe_ops = { 683 + .startup = mca_fe_startup, 705 684 .set_fmt = mca_fe_set_fmt, 706 685 .set_bclk_ratio = mca_set_bclk_ratio, 707 686 .set_tdm_slot = mca_fe_set_tdm_slot,
+1
sound/soc/mediatek/Kconfig
··· 228 228 config SND_SOC_MT8188_MT6359 229 229 tristate "ASoC Audio driver for MT8188 with MT6359 and I2S codecs" 230 230 depends on SND_SOC_MT8188 && MTK_PMIC_WRAP 231 + depends on SND_SOC_MT6359_ACCDET || !SND_SOC_MT6359_ACCDET 231 232 depends on I2C 232 233 select SND_SOC_MT6359 233 234 select SND_SOC_HDMI_CODEC
+4
sound/soc/qcom/sdm845.c
··· 91 91 else 92 92 ret = snd_soc_dai_set_channel_map(cpu_dai, tx_ch_cnt, 93 93 tx_ch, 0, NULL); 94 + if (ret != 0 && ret != -ENOTSUPP) { 95 + dev_err(rtd->dev, "failed to set cpu chan map, err:%d\n", ret); 96 + return ret; 97 + } 94 98 } 95 99 96 100 return 0;
+1 -1
sound/soc/sof/intel/hda-bus.c
··· 76 76 77 77 snd_hdac_ext_bus_init(bus, dev, &bus_core_ops, sof_hda_ext_ops); 78 78 79 - if (chip && chip->hw_ip_version == SOF_INTEL_ACE_2_0) 79 + if (chip && chip->hw_ip_version >= SOF_INTEL_ACE_2_0) 80 80 bus->use_pio_for_commands = true; 81 81 #else 82 82 snd_hdac_ext_bus_init(bus, dev, NULL, NULL);
+15 -1
sound/soc/sof/intel/hda.c
··· 1049 1049 if (!*mach && codec_num <= 2) { 1050 1050 bool tplg_fixup = false; 1051 1051 1052 - hda_mach = snd_soc_acpi_intel_hda_machines; 1052 + /* 1053 + * make a local copy of the match array since we might 1054 + * be modifying it 1055 + */ 1056 + hda_mach = devm_kmemdup_array(sdev->dev, 1057 + snd_soc_acpi_intel_hda_machines, 1058 + 2, /* we have one entry + sentinel in the array */ 1059 + sizeof(snd_soc_acpi_intel_hda_machines[0]), 1060 + GFP_KERNEL); 1061 + if (!hda_mach) { 1062 + dev_err(bus->dev, 1063 + "%s: failed to duplicate the HDA match table\n", 1064 + __func__); 1065 + return; 1066 + } 1053 1067 1054 1068 dev_info(bus->dev, "using HDA machine driver %s now\n", 1055 1069 hda_mach->drv_name);
+10 -1
sound/soc/sof/ipc4-control.c
··· 531 531 return -EINVAL; 532 532 } 533 533 534 + /* Check header id */ 535 + if (header.numid != SOF_CTRL_CMD_BINARY) { 536 + dev_err_ratelimited(scomp->dev, 537 + "Incorrect numid for bytes put %d\n", 538 + header.numid); 539 + return -EINVAL; 540 + } 541 + 534 542 /* Verify the ABI header first */ 535 543 if (copy_from_user(&abi_hdr, tlvd->tlv, sizeof(abi_hdr))) 536 544 return -EFAULT; ··· 621 613 if (data_size > size) 622 614 return -ENOSPC; 623 615 624 - header.numid = scontrol->comp_id; 616 + /* Set header id and length */ 617 + header.numid = SOF_CTRL_CMD_BINARY; 625 618 header.length = data_size; 626 619 627 620 if (copy_to_user(tlvd, &header, sizeof(struct snd_ctl_tlv)))
+2 -1
sound/soc/sof/ipc4-pcm.c
··· 799 799 800 800 spcm->stream[stream].private = stream_priv; 801 801 802 - if (!support_info) 802 + /* Delay reporting is only supported on playback */ 803 + if (!support_info || stream == SNDRV_PCM_STREAM_CAPTURE) 803 804 continue; 804 805 805 806 time_info = kzalloc(sizeof(*time_info), GFP_KERNEL);
+14 -4
sound/soc/sof/topology.c
··· 1071 1071 struct snd_sof_dai *dai) 1072 1072 { 1073 1073 struct snd_soc_card *card = scomp->card; 1074 - struct snd_soc_pcm_runtime *rtd; 1074 + struct snd_soc_pcm_runtime *rtd, *full, *partial; 1075 1075 struct snd_soc_dai *cpu_dai; 1076 1076 int stream; 1077 1077 int i; ··· 1088 1088 else 1089 1089 goto end; 1090 1090 1091 + full = NULL; 1092 + partial = NULL; 1091 1093 list_for_each_entry(rtd, &card->rtd_list, list) { 1092 1094 /* does stream match DAI link ? */ 1093 - if (!rtd->dai_link->stream_name || 1094 - !strstr(rtd->dai_link->stream_name, w->sname)) 1095 - continue; 1095 + if (rtd->dai_link->stream_name) { 1096 + if (!strcmp(rtd->dai_link->stream_name, w->sname)) { 1097 + full = rtd; 1098 + break; 1099 + } else if (strstr(rtd->dai_link->stream_name, w->sname)) { 1100 + partial = rtd; 1101 + } 1102 + } 1103 + } 1096 1104 1105 + rtd = full ? full : partial; 1106 + if (rtd) { 1097 1107 for_each_rtd_cpu_dais(rtd, i, cpu_dai) { 1098 1108 /* 1099 1109 * Please create DAI widget in the right order