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-fix-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:

- Support for ASoC AMD ACP 7.2 with new IDs

- ASoC Intel AVS and SOF fixes

- Yet more kconfig adjustments for HD-audio codecs

- TAS2781 codec fixes

- Fixes for longstanding (rather minor) bugs in Intel LPE audio and
USB-audio drivers

* tag 'sound-fix-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: hda/cirrus: Restrict prompt only for CONFIG_EXPERT
ALSA: hda/hdmi: Restrict prompt only for CONFIG_EXPERT
ALSA: hda/realtek: Restrict prompt only for CONFIG_EXPERT
ALSA: hda/ca0132: Fix missing error handling in ca0132_alt_select_out()
ASoC: SOF: Intel: hda-sdw-bpt: fix SND_SOF_SOF_HDA_SDW_BPT dependencies
ALSA: hda/tas2781: Support L"SmartAmpCalibrationData" to save calibrated data
ALSA: intel_hdmi: Fix off-by-one error in __hdmi_lpe_audio_probe()
ALSA: hda/realtek: add LG gram 16Z90R-A to alc269 fixup table
ALSA: usb-audio: Don't use printk_ratelimit for debug prints
ASoC: Intel: sof_sdw: Add quirk for Alienware Area 51 (2025) 0CCC SKU
ASoC: tas2781: Fix the wrong step for TLV on tas2781
ASoC: amd: acp: Add SoundWire SOF machine driver support for acp7.2 platform
ASoC: amd: acp: Add SoundWire legacy machine driver support for acp7.2 platform
ASoC: amd: ps: Add SoundWire pci and dma driver support for acp7.2 platform
ASoC: SOF: amd: Add sof audio support for acp7.2 platform
ASoC: Intel: avs: Fix uninitialized pointer error in probe()
ASoC: wm8962: Clear master mode when enter runtime suspend
ASoC: SOF: amd: acp-loader: Use GFP_KERNEL for DMA allocations in resume context

+137 -56
+1 -1
include/sound/tas2781-tlv.h
··· 15 15 #ifndef __TAS2781_TLV_H__ 16 16 #define __TAS2781_TLV_H__ 17 17 18 - static const __maybe_unused DECLARE_TLV_DB_SCALE(dvc_tlv, -10000, 100, 0); 18 + static const __maybe_unused DECLARE_TLV_DB_SCALE(dvc_tlv, -10000, 50, 0); 19 19 static const __maybe_unused DECLARE_TLV_DB_SCALE(amp_vol_tlv, 1100, 50, 0); 20 20 21 21 #endif
+4 -1
sound/hda/codecs/ca0132.c
··· 4802 4802 if (err < 0) 4803 4803 goto exit; 4804 4804 4805 - if (ca0132_alt_select_out_quirk_set(codec) < 0) 4805 + err = ca0132_alt_select_out_quirk_set(codec); 4806 + if (err < 0) 4806 4807 goto exit; 4807 4808 4808 4809 switch (spec->cur_out_type) { ··· 4893 4892 spec->bass_redirection_val); 4894 4893 else 4895 4894 err = ca0132_alt_surround_set_bass_redirection(codec, 0); 4895 + if (err < 0) 4896 + goto exit; 4896 4897 4897 4898 /* Unmute DSP now that we're done with output selection. */ 4898 4899 err = dspio_set_uint_param(codec, 0x96,
+12 -8
sound/hda/codecs/cirrus/Kconfig
··· 2 2 3 3 menuconfig SND_HDA_CODEC_CIRRUS 4 4 tristate "Cirrus Logic HD-audio codec support" 5 + help 6 + Say Y or M here to include Cirrus Logic HD-audio codec support. 7 + 8 + This will enable both CS420x and CS421x HD-audio codec drivers 9 + as default, but you can enable/disable each codec driver 10 + individually, too (only when CONFIG_EXPERT is set). 5 11 6 12 if SND_HDA_CODEC_CIRRUS 7 13 8 14 config SND_HDA_CODEC_CS420X 9 - tristate "Build Cirrus Logic CS420x codec support" 15 + tristate "Build Cirrus Logic CS420x codec support" if EXPERT 10 16 select SND_HDA_GENERIC 11 17 default y 12 18 help 13 - Say Y or M here to include Cirrus Logic CS420x codec support in 14 - snd-hda-intel driver 19 + Say Y or M here to include Cirrus Logic CS420x codec support 15 20 16 21 comment "Set to Y if you want auto-loading the codec driver" 17 22 depends on SND_HDA=y && SND_HDA_CODEC_CS420X=m 18 23 19 24 config SND_HDA_CODEC_CS421X 20 - tristate "Build Cirrus Logic CS421x codec support" 25 + tristate "Build Cirrus Logic CS421x codec support" if EXPERT 21 26 select SND_HDA_GENERIC 22 27 default y 23 28 help 24 - Say Y or M here to include Cirrus Logic CS421x codec support in 25 - snd-hda-intel driver 29 + Say Y or M here to include Cirrus Logic CS421x codec support 26 30 27 31 comment "Set to Y if you want auto-loading the codec driver" 28 32 depends on SND_HDA=y && SND_HDA_CODEC_CS421X=m ··· 35 31 tristate "Build Cirrus Logic HDA bridge support" 36 32 select SND_HDA_GENERIC 37 33 help 38 - Say Y or M here to include Cirrus Logic HDA bridge support in 39 - snd-hda-intel driver, such as CS8409. 34 + Say Y or M here to include Cirrus Logic HDA bridge support 35 + such as CS8409. 40 36 41 37 comment "Set to Y if you want auto-loading the codec driver" 42 38 depends on SND_HDA=y && SND_HDA_CODEC_CS8409=m
+13 -7
sound/hda/codecs/hdmi/Kconfig
··· 2 2 3 3 menuconfig SND_HDA_CODEC_HDMI 4 4 tristate "HD-audio HDMI codec support" 5 + help 6 + Say Y or M here to include HD-audio HDMI/DislayPort codec support. 7 + 8 + This will enable all HDMI/DP codec drivers as default, but you can 9 + enable/disable each codec driver individually, too (only when 10 + CONFIG_EXPERT is set). 5 11 6 12 if SND_HDA_CODEC_HDMI 7 13 8 14 config SND_HDA_CODEC_HDMI_GENERIC 9 - tristate "Generic HDMI/DisplayPort HD-audio codec support" 15 + tristate "Generic HDMI/DisplayPort HD-audio codec support" if EXPERT 10 16 select SND_DYNAMIC_MINORS 11 17 select SND_PCM_ELD 12 18 default y ··· 24 18 to assure the multiple streams for DP-MST support. 25 19 26 20 config SND_HDA_CODEC_HDMI_SIMPLE 27 - tristate "Simple HDMI/DisplayPort HD-audio codec support" 21 + tristate "Simple HDMI/DisplayPort HD-audio codec support" if EXPERT 28 22 default y 29 23 help 30 24 Say Y or M here to include Simple HDMI and DisplayPort HD-audio 31 25 codec support for VIA and other codecs. 32 26 33 27 config SND_HDA_CODEC_HDMI_INTEL 34 - tristate "Intel HDMI/DisplayPort HD-audio codec support" 28 + tristate "Intel HDMI/DisplayPort HD-audio codec support" if EXPERT 35 29 select SND_HDA_CODEC_HDMI_GENERIC 36 30 default y 37 31 help ··· 54 48 are kept reserved both at transmitter and receiver. 55 49 56 50 config SND_HDA_CODEC_HDMI_ATI 57 - tristate "AMD/ATI HDMI/DisplayPort HD-audio codec support" 51 + tristate "AMD/ATI HDMI/DisplayPort HD-audio codec support" if EXPERT 58 52 select SND_HDA_CODEC_HDMI_GENERIC 59 53 default y 60 54 help ··· 62 56 HD-audio codec support. 63 57 64 58 config SND_HDA_CODEC_HDMI_NVIDIA 65 - tristate "Nvidia HDMI/DisplayPort HD-audio codec support" 59 + tristate "Nvidia HDMI/DisplayPort HD-audio codec support" if EXPERT 66 60 select SND_HDA_CODEC_HDMI_GENERIC 67 61 default y 68 62 help ··· 70 64 support for the recent Nvidia graphics cards. 71 65 72 66 config SND_HDA_CODEC_HDMI_NVIDIA_MCP 73 - tristate "Legacy Nvidia HDMI/DisplayPort HD-audio codec support" 67 + tristate "Legacy Nvidia HDMI/DisplayPort HD-audio codec support" if EXPERT 74 68 select SND_HDA_CODEC_HDMI_SIMPLE 75 69 default y 76 70 help ··· 78 72 support for the legacy Nvidia graphics like MCP73, MCP67, MCP77/78. 79 73 80 74 config SND_HDA_CODEC_HDMI_TEGRA 81 - tristate "Nvidia Tegra HDMI/DisplayPort HD-audio codec support" 75 + tristate "Nvidia Tegra HDMI/DisplayPort HD-audio codec support" if EXPERT 82 76 select SND_HDA_CODEC_HDMI_GENERIC 83 77 default y 84 78 help
+16 -12
sound/hda/codecs/realtek/Kconfig
··· 2 2 3 3 menuconfig SND_HDA_CODEC_REALTEK 4 4 tristate "Realtek HD-audio codec support" 5 + help 6 + Say Y or M here to include Realtek HD-audio codec support. 7 + 8 + This will enable all Realtek HD-audio codec drivers as default, 9 + but you can enable/disable each codec driver individually, too 10 + (only when CONFIG_EXPERT is set). 5 11 6 12 if SND_HDA_CODEC_REALTEK 7 13 ··· 18 12 select SND_HDA_SCODEC_COMPONENT 19 13 20 14 config SND_HDA_CODEC_ALC260 21 - tristate "Build Realtek ALC260 HD-audio codec support" 15 + tristate "Build Realtek ALC260 HD-audio codec support" if EXPERT 22 16 depends on INPUT 23 17 select SND_HDA_CODEC_REALTEK_LIB 24 18 default y ··· 26 20 Say Y or M here to include Realtek ALC260 HD-audio codec support 27 21 28 22 config SND_HDA_CODEC_ALC262 29 - tristate "Build Realtek ALC262 HD-audio codec support" 23 + tristate "Build Realtek ALC262 HD-audio codec support" if EXPERT 30 24 depends on INPUT 31 25 select SND_HDA_CODEC_REALTEK_LIB 32 26 default y ··· 34 28 Say Y or M here to include Realtek ALC262 HD-audio codec support 35 29 36 30 config SND_HDA_CODEC_ALC268 37 - tristate "Build Realtek ALC268 HD-audio codec support" 31 + tristate "Build Realtek ALC268 HD-audio codec support" if EXPERT 38 32 depends on INPUT 39 33 select SND_HDA_CODEC_REALTEK_LIB 40 34 default y ··· 43 37 codec support 44 38 45 39 config SND_HDA_CODEC_ALC269 46 - tristate "Build Realtek ALC269 HD-audio codecs support" 40 + tristate "Build Realtek ALC269 HD-audio codecs support" if EXPERT 47 41 depends on INPUT 48 42 select SND_HDA_CODEC_REALTEK_LIB 49 43 default y ··· 52 46 codec support 53 47 54 48 config SND_HDA_CODEC_ALC662 55 - tristate "Build Realtek ALC662 HD-audio codecs support" 49 + tristate "Build Realtek ALC662 HD-audio codecs support" if EXPERT 56 50 depends on INPUT 57 51 select SND_HDA_CODEC_REALTEK_LIB 58 52 default y ··· 61 55 codec support 62 56 63 57 config SND_HDA_CODEC_ALC680 64 - tristate "Build Realtek ALC680 HD-audio codecs support" 58 + tristate "Build Realtek ALC680 HD-audio codecs support" if EXPERT 65 59 depends on INPUT 66 60 select SND_HDA_CODEC_REALTEK_LIB 67 61 default y ··· 69 63 Say Y or M here to include Realtek ALC680 HD-audio codec support 70 64 71 65 config SND_HDA_CODEC_ALC861 72 - tristate "Build Realtek ALC861 HD-audio codecs support" 66 + tristate "Build Realtek ALC861 HD-audio codecs support" if EXPERT 73 67 depends on INPUT 74 68 select SND_HDA_CODEC_REALTEK_LIB 75 69 default y ··· 77 71 Say Y or M here to include Realtek ALC861 HD-audio codec support 78 72 79 73 config SND_HDA_CODEC_ALC861VD 80 - tristate "Build Realtek ALC861-VD HD-audio codecs support" 74 + tristate "Build Realtek ALC861-VD HD-audio codecs support" if EXPERT 81 75 depends on INPUT 82 76 select SND_HDA_CODEC_REALTEK_LIB 83 77 default y ··· 85 79 Say Y or M here to include Realtek ALC861-VD HD-audio codec support 86 80 87 81 config SND_HDA_CODEC_ALC880 88 - tristate "Build Realtek ALC880 HD-audio codecs support" 82 + tristate "Build Realtek ALC880 HD-audio codecs support" if EXPERT 89 83 depends on INPUT 90 84 select SND_HDA_CODEC_REALTEK_LIB 91 85 default y ··· 93 87 Say Y or M here to include Realtek ALC880 HD-audio codec support 94 88 95 89 config SND_HDA_CODEC_ALC882 96 - tristate "Build Realtek ALC882 HD-audio codecs support" 90 + tristate "Build Realtek ALC882 HD-audio codecs support" if EXPERT 97 91 depends on INPUT 98 92 select SND_HDA_CODEC_REALTEK_LIB 99 93 default y ··· 102 96 codec support 103 97 104 98 endif 105 - 106 -
+1
sound/hda/codecs/realtek/alc269.c
··· 7110 7110 SND_PCI_QUIRK(0x1854, 0x0440, "LG CQ6", ALC256_FIXUP_HEADPHONE_AMP_VOL), 7111 7111 SND_PCI_QUIRK(0x1854, 0x0441, "LG CQ6 AIO", ALC256_FIXUP_HEADPHONE_AMP_VOL), 7112 7112 SND_PCI_QUIRK(0x1854, 0x0488, "LG gram 16 (16Z90R)", ALC298_FIXUP_SAMSUNG_AMP_V2_4_AMPS), 7113 + SND_PCI_QUIRK(0x1854, 0x0489, "LG gram 16 (16Z90R-A)", ALC298_FIXUP_SAMSUNG_AMP_V2_4_AMPS), 7113 7114 SND_PCI_QUIRK(0x1854, 0x048a, "LG gram 17 (17ZD90R)", ALC298_FIXUP_SAMSUNG_AMP_V2_4_AMPS), 7114 7115 SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS), 7115 7116 SND_PCI_QUIRK(0x19e5, 0x320f, "Huawei WRT-WX9 ", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE),
+32 -15
sound/hda/codecs/side-codecs/tas2781_hda.c
··· 18 18 19 19 #include "tas2781_hda.h" 20 20 21 + #define CALIBRATION_DATA_AREA_NUM 2 22 + 21 23 const efi_guid_t tasdev_fct_efi_guid[] = { 22 24 /* DELL */ 23 25 EFI_GUID(0xcc92382d, 0x6337, 0x41cb, 0xa8, 0x8b, 0x8e, 0xce, 0x74, ··· 162 160 * manufactory. 163 161 */ 164 162 efi_guid_t efi_guid = tasdev_fct_efi_guid[LENOVO]; 165 - static efi_char16_t efi_name[] = TASDEVICE_CALIBRATION_DATA_NAME; 163 + /* 164 + * Some devices save the calibrated data into L"CALI_DATA", 165 + * and others into L"SmartAmpCalibrationData". 166 + */ 167 + static efi_char16_t *efi_name[CALIBRATION_DATA_AREA_NUM] = { 168 + L"CALI_DATA", 169 + L"SmartAmpCalibrationData", 170 + }; 166 171 struct tasdevice_priv *p = hda->priv; 167 172 struct calidata *cali_data = &p->cali_data; 168 173 unsigned long total_sz = 0; 169 174 unsigned int attr, size; 170 175 unsigned char *data; 171 176 efi_status_t status; 177 + int i; 172 178 173 179 if (hda->catlog_id < LENOVO) 174 180 efi_guid = tasdev_fct_efi_guid[hda->catlog_id]; 175 181 176 182 cali_data->cali_dat_sz_per_dev = 20; 177 183 size = p->ndev * (cali_data->cali_dat_sz_per_dev + 1); 178 - /* Get real size of UEFI variable */ 179 - status = efi.get_variable(efi_name, &efi_guid, &attr, &total_sz, NULL); 180 - cali_data->total_sz = total_sz > size ? total_sz : size; 181 - if (status == EFI_BUFFER_TOO_SMALL) { 182 - /* Allocate data buffer of data_size bytes */ 183 - data = p->cali_data.data = devm_kzalloc(p->dev, 184 - p->cali_data.total_sz, GFP_KERNEL); 185 - if (!data) { 186 - p->cali_data.total_sz = 0; 187 - return -ENOMEM; 184 + for (i = 0; i < CALIBRATION_DATA_AREA_NUM; i++) { 185 + /* Get real size of UEFI variable */ 186 + status = efi.get_variable(efi_name[i], &efi_guid, &attr, 187 + &total_sz, NULL); 188 + cali_data->total_sz = total_sz > size ? total_sz : size; 189 + if (status == EFI_BUFFER_TOO_SMALL) { 190 + /* Allocate data buffer of data_size bytes */ 191 + data = cali_data->data = devm_kzalloc(p->dev, 192 + cali_data->total_sz, GFP_KERNEL); 193 + if (!data) { 194 + status = -ENOMEM; 195 + continue; 196 + } 197 + /* Get variable contents into buffer */ 198 + status = efi.get_variable(efi_name[i], &efi_guid, 199 + &attr, &cali_data->total_sz, data); 188 200 } 189 - /* Get variable contents into buffer */ 190 - status = efi.get_variable(efi_name, &efi_guid, &attr, 191 - &p->cali_data.total_sz, data); 201 + /* Check whether get the calibrated data */ 202 + if (status == EFI_SUCCESS) 203 + break; 192 204 } 205 + 193 206 if (status != EFI_SUCCESS) { 194 - p->cali_data.total_sz = 0; 207 + cali_data->total_sz = 0; 195 208 return status; 196 209 } 197 210
+1 -1
sound/hda/codecs/side-codecs/tas2781_hda.h
··· 11 11 12 12 /* Flag of calibration registers address. */ 13 13 #define TASDEV_UEFI_CALI_REG_ADDR_FLG BIT(7) 14 - #define TASDEVICE_CALIBRATION_DATA_NAME L"CALI_DATA" 14 + 15 15 #define TASDEV_CALIB_N 5 16 16 17 17 /*
+3
sound/soc/amd/acp/acp-sdw-legacy-mach.c
··· 158 158 break; 159 159 case ACP70_PCI_REV: 160 160 case ACP71_PCI_REV: 161 + case ACP72_PCI_REV: 161 162 ret = get_acp70_cpu_pin_id(ffs(soc_end->link_mask - 1), 162 163 *be_id, &cpu_pin_id, dev); 163 164 if (ret) ··· 265 264 case ACP63_PCI_REV: 266 265 case ACP70_PCI_REV: 267 266 case ACP71_PCI_REV: 267 + case ACP72_PCI_REV: 268 268 sdw_platform_component->name = "amd_ps_sdw_dma.0"; 269 269 break; 270 270 default: ··· 313 311 case ACP63_PCI_REV: 314 312 case ACP70_PCI_REV: 315 313 case ACP71_PCI_REV: 314 + case ACP72_PCI_REV: 316 315 pdm_cpu->name = "acp_ps_pdm_dma.0"; 317 316 pdm_platform->name = "acp_ps_pdm_dma.0"; 318 317 break;
+1
sound/soc/amd/acp/acp-sdw-sof-mach.c
··· 130 130 break; 131 131 case ACP70_PCI_REV: 132 132 case ACP71_PCI_REV: 133 + case ACP72_PCI_REV: 133 134 ret = get_acp70_cpu_pin_id(ffs(sof_end->link_mask - 1), 134 135 *be_id, &cpu_pin_id, dev); 135 136 if (ret)
+2
sound/soc/amd/acp/soc_amd_sdw_common.h
··· 21 21 #define ACP63_PCI_REV 0x63 22 22 #define ACP70_PCI_REV 0x70 23 23 #define ACP71_PCI_REV 0x71 24 + #define ACP72_PCI_REV 0x72 25 + 24 26 #define SOC_JACK_JDSRC(quirk) ((quirk) & GENMASK(3, 0)) 25 27 #define ASOC_SDW_FOUR_SPK BIT(4) 26 28 #define ASOC_SDW_ACP_DMIC BIT(5)
+1
sound/soc/amd/ps/acp63.h
··· 14 14 #define ACP63_PCI_REV 0x63 15 15 #define ACP70_PCI_REV 0x70 16 16 #define ACP71_PCI_REV 0x71 17 + #define ACP72_PCI_REV 0x72 17 18 18 19 #define ACP_SOFT_RESET_SOFTRESET_AUDDONE_MASK 0x00010001 19 20 #define ACP63_PGFSM_CNTL_POWER_ON_MASK 1
+4
sound/soc/amd/ps/pci-ps.c
··· 117 117 break; 118 118 case ACP70_PCI_REV: 119 119 case ACP71_PCI_REV: 120 + case ACP72_PCI_REV: 120 121 adata->acp70_sdw0_dma_intr_stat[stream_id] = 1; 121 122 break; 122 123 } ··· 142 141 break; 143 142 case ACP70_PCI_REV: 144 143 case ACP71_PCI_REV: 144 + case ACP72_PCI_REV: 145 145 if (ext_intr_stat1 & ACP70_P1_SDW_DMA_IRQ_MASK) { 146 146 for (index = ACP70_P1_AUDIO2_RX_THRESHOLD; 147 147 index <= ACP70_P1_AUDIO0_TX_THRESHOLD; index++) { ··· 554 552 break; 555 553 case ACP70_PCI_REV: 556 554 case ACP71_PCI_REV: 555 + case ACP72_PCI_REV: 557 556 acp70_hw_init_ops(adata->hw_ops); 558 557 break; 559 558 default: ··· 584 581 case ACP63_PCI_REV: 585 582 case ACP70_PCI_REV: 586 583 case ACP71_PCI_REV: 584 + case ACP72_PCI_REV: 587 585 break; 588 586 default: 589 587 dev_dbg(&pci->dev, "acp63/acp70/acp71 pci device not found\n");
+5
sound/soc/amd/ps/ps-sdw-dma.c
··· 269 269 break; 270 270 case ACP70_PCI_REV: 271 271 case ACP71_PCI_REV: 272 + case ACP72_PCI_REV: 272 273 switch (manager_instance) { 273 274 case ACP_SDW0: 274 275 reg_dma_size = acp70_sdw0_dma_reg[stream_id].reg_dma_size; ··· 383 382 break; 384 383 case ACP70_PCI_REV: 385 384 case ACP71_PCI_REV: 385 + case ACP72_PCI_REV: 386 386 switch (stream->instance) { 387 387 case ACP_SDW0: 388 388 sdw_data->acp70_sdw0_dma_stream[stream_id] = substream; ··· 453 451 break; 454 452 case ACP70_PCI_REV: 455 453 case ACP71_PCI_REV: 454 + case ACP72_PCI_REV: 456 455 switch (stream->instance) { 457 456 case ACP_SDW0: 458 457 pos_low_reg = acp70_sdw0_dma_reg[stream->stream_id].pos_low_reg; ··· 532 529 break; 533 530 case ACP70_PCI_REV: 534 531 case ACP71_PCI_REV: 532 + case ACP72_PCI_REV: 535 533 switch (stream->instance) { 536 534 case ACP_SDW0: 537 535 sdw_data->acp70_sdw0_dma_stream[stream->stream_id] = NULL; ··· 578 574 break; 579 575 case ACP70_PCI_REV: 580 576 case ACP71_PCI_REV: 577 + case ACP72_PCI_REV: 581 578 switch (stream->instance) { 582 579 case ACP_SDW0: 583 580 sdw_dma_en_reg = acp70_sdw0_dma_enable_reg[stream_id];
+11
sound/soc/codecs/wm8962.c
··· 82 82 #endif 83 83 84 84 int irq; 85 + bool master_flag; 85 86 }; 86 87 87 88 /* We can't use the same notifier block for more than one supply and ··· 2716 2715 static int wm8962_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt) 2717 2716 { 2718 2717 struct snd_soc_component *component = dai->component; 2718 + struct wm8962_priv *wm8962 = snd_soc_component_get_drvdata(component); 2719 2719 int aif0 = 0; 2720 2720 2721 2721 switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { ··· 2763 2761 return -EINVAL; 2764 2762 } 2765 2763 2764 + wm8962->master_flag = false; 2766 2765 switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { 2767 2766 case SND_SOC_DAIFMT_CBP_CFP: 2768 2767 aif0 |= WM8962_MSTR; 2768 + wm8962->master_flag = true; 2769 2769 break; 2770 2770 case SND_SOC_DAIFMT_CBC_CFC: 2771 2771 break; ··· 3907 3903 WM8962_BIAS_ENA | WM8962_VMID_SEL_MASK, 3908 3904 WM8962_BIAS_ENA | 0x180); 3909 3905 3906 + if (wm8962->master_flag) 3907 + regmap_update_bits(wm8962->regmap, WM8962_AUDIO_INTERFACE_0, 3908 + WM8962_MSTR, WM8962_MSTR); 3910 3909 msleep(5); 3911 3910 3912 3911 return 0; ··· 3922 3915 static int wm8962_runtime_suspend(struct device *dev) 3923 3916 { 3924 3917 struct wm8962_priv *wm8962 = dev_get_drvdata(dev); 3918 + 3919 + if (wm8962->master_flag) 3920 + regmap_update_bits(wm8962->regmap, WM8962_AUDIO_INTERFACE_0, 3921 + WM8962_MSTR, 0); 3925 3922 3926 3923 regmap_update_bits(wm8962->regmap, WM8962_PWR_MGMT_1, 3927 3924 WM8962_VMID_SEL_MASK | WM8962_BIAS_ENA, 0);
+2 -1
sound/soc/intel/avs/core.c
··· 445 445 adev = devm_kzalloc(dev, sizeof(*adev), GFP_KERNEL); 446 446 if (!adev) 447 447 return -ENOMEM; 448 + bus = &adev->base.core; 449 + 448 450 ret = avs_bus_init(adev, pci, id); 449 451 if (ret < 0) { 450 452 dev_err(dev, "failed to init avs bus: %d\n", ret); ··· 457 455 if (ret < 0) 458 456 return ret; 459 457 460 - bus = &adev->base.core; 461 458 bus->addr = pci_resource_start(pci, 0); 462 459 bus->remap_addr = pci_ioremap_bar(pci, 0); 463 460 if (!bus->remap_addr) {
+8
sound/soc/intel/boards/sof_sdw.c
··· 741 741 }, 742 742 .driver_data = (void *)(SOC_SDW_CODEC_SPKR), 743 743 }, 744 + { 745 + .callback = sof_sdw_quirk_cb, 746 + .matches = { 747 + DMI_MATCH(DMI_SYS_VENDOR, "Alienware"), 748 + DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "0CCC") 749 + }, 750 + .driver_data = (void *)(SOC_SDW_CODEC_SPKR), 751 + }, 744 752 /* Pantherlake devices*/ 745 753 { 746 754 .callback = sof_sdw_quirk_cb,
+3 -3
sound/soc/sof/amd/acp-loader.c
··· 65 65 dma_size = page_count * ACP_PAGE_SIZE; 66 66 adata->bin_buf = dma_alloc_coherent(&pci->dev, dma_size, 67 67 &adata->sha_dma_addr, 68 - GFP_ATOMIC); 68 + GFP_KERNEL); 69 69 if (!adata->bin_buf) 70 70 return -ENOMEM; 71 71 } ··· 77 77 adata->data_buf = dma_alloc_coherent(&pci->dev, 78 78 ACP_DEFAULT_DRAM_LENGTH, 79 79 &adata->dma_addr, 80 - GFP_ATOMIC); 80 + GFP_KERNEL); 81 81 if (!adata->data_buf) 82 82 return -ENOMEM; 83 83 } ··· 90 90 adata->sram_data_buf = dma_alloc_coherent(&pci->dev, 91 91 ACP_DEFAULT_SRAM_LENGTH, 92 92 &adata->sram_dma_addr, 93 - GFP_ATOMIC); 93 + GFP_KERNEL); 94 94 if (!adata->sram_data_buf) 95 95 return -ENOMEM; 96 96 }
+8
sound/soc/sof/amd/acp.c
··· 59 59 switch (acp_data->pci_rev) { 60 60 case ACP70_PCI_ID: 61 61 case ACP71_PCI_ID: 62 + case ACP72_PCI_ID: 62 63 acp_dma_desc_base_addr = ACP70_DMA_DESC_BASE_ADDR; 63 64 acp_dma_desc_max_num_dscr = ACP70_DMA_DESC_MAX_NUM_DSCR; 64 65 break; ··· 100 99 switch (acp_data->pci_rev) { 101 100 case ACP70_PCI_ID: 102 101 case ACP71_PCI_ID: 102 + case ACP72_PCI_ID: 103 103 acp_dma_cntl_0 = ACP70_DMA_CNTL_0; 104 104 acp_dma_ch_rst_sts = ACP70_DMA_CH_RST_STS; 105 105 acp_dma_dscr_err_sts_0 = ACP70_DMA_ERR_STS_0; ··· 341 339 switch (adata->pci_rev) { 342 340 case ACP70_PCI_ID: 343 341 case ACP71_PCI_ID: 342 + case ACP72_PCI_ID: 344 343 acp_dma_ch_sts = ACP70_DMA_CH_STS; 345 344 break; 346 345 default: ··· 525 522 switch (adata->pci_rev) { 526 523 case ACP70_PCI_ID: 527 524 case ACP71_PCI_ID: 525 + case ACP72_PCI_ID: 528 526 wake_irq_flag = amd_sof_check_and_handle_acp70_sdw_wake_irq(sdev); 529 527 break; 530 528 } ··· 563 559 break; 564 560 case ACP70_PCI_ID: 565 561 case ACP71_PCI_ID: 562 + case ACP72_PCI_ID: 566 563 acp_pgfsm_status_mask = ACP70_PGFSM_STATUS_MASK; 567 564 acp_pgfsm_cntl_mask = ACP70_PGFSM_CNTL_POWER_ON_MASK; 568 565 break; ··· 666 661 switch (acp_data->pci_rev) { 667 662 case ACP70_PCI_ID: 668 663 case ACP71_PCI_ID: 664 + case ACP72_PCI_ID: 669 665 sdw0_wake_en = snd_sof_dsp_read(sdev, ACP_DSP_BAR, ACP70_SW0_WAKE_EN); 670 666 sdw1_wake_en = snd_sof_dsp_read(sdev, ACP_DSP_BAR, ACP70_SW1_WAKE_EN); 671 667 if (sdw0_wake_en || sdw1_wake_en) ··· 718 712 switch (acp_data->pci_rev) { 719 713 case ACP70_PCI_ID: 720 714 case ACP71_PCI_ID: 715 + case ACP72_PCI_ID: 721 716 enable = true; 722 717 break; 723 718 } ··· 745 738 switch (acp_data->pci_rev) { 746 739 case ACP70_PCI_ID: 747 740 case ACP71_PCI_ID: 741 + case ACP72_PCI_ID: 748 742 snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP70_PME_EN, 1); 749 743 break; 750 744 }
+1
sound/soc/sof/amd/acp.h
··· 75 75 #define ACP63_PCI_ID 0x63 76 76 #define ACP70_PCI_ID 0x70 77 77 #define ACP71_PCI_ID 0x71 78 + #define ACP72_PCI_ID 0x72 78 79 79 80 #define HOST_BRIDGE_CZN 0x1630 80 81 #define HOST_BRIDGE_VGH 0x1645
+1
sound/soc/sof/amd/pci-acp70.c
··· 77 77 switch (pci->revision) { 78 78 case ACP70_PCI_ID: 79 79 case ACP71_PCI_ID: 80 + case ACP72_PCI_ID: 80 81 break; 81 82 default: 82 83 return -ENODEV;
+2 -1
sound/soc/sof/intel/Kconfig
··· 266 266 267 267 config SND_SOC_SOF_INTEL_LNL 268 268 tristate 269 + select SOUNDWIRE_INTEL if SND_SOC_SOF_INTEL_SOUNDWIRE != n 269 270 select SND_SOC_SOF_HDA_GENERIC 270 271 select SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE 271 - select SND_SOF_SOF_HDA_SDW_BPT if SND_SOC_SOF_INTEL_SOUNDWIRE 272 + select SND_SOF_SOF_HDA_SDW_BPT if SND_SOC_SOF_INTEL_SOUNDWIRE != n 272 273 select SND_SOC_SOF_IPC4 273 274 select SND_SOC_SOF_INTEL_MTL 274 275
+4 -5
sound/usb/pcm.c
··· 1336 1336 1337 1337 for (i = 0; i < urb->number_of_packets; i++) { 1338 1338 cp = (unsigned char *)urb->transfer_buffer + urb->iso_frame_desc[i].offset + subs->pkt_offset_adj; 1339 - if (urb->iso_frame_desc[i].status && printk_ratelimit()) { 1340 - dev_dbg(&subs->dev->dev, "frame %d active: %d\n", 1341 - i, urb->iso_frame_desc[i].status); 1342 - // continue; 1343 - } 1339 + if (urb->iso_frame_desc[i].status) 1340 + dev_dbg_ratelimited(&subs->dev->dev, 1341 + "frame %d active: %d\n", i, 1342 + urb->iso_frame_desc[i].status); 1344 1343 bytes = urb->iso_frame_desc[i].actual_length; 1345 1344 if (subs->stream_offset_adj > 0) { 1346 1345 unsigned int adj = min(subs->stream_offset_adj, bytes);
+1 -1
sound/x86/intel_hdmi_audio.c
··· 1765 1765 /* setup private data which can be retrieved when required */ 1766 1766 pcm->private_data = ctx; 1767 1767 pcm->info_flags = 0; 1768 - strscpy(pcm->name, card->shortname, strlen(card->shortname)); 1768 + strscpy(pcm->name, card->shortname, sizeof(pcm->name)); 1769 1769 /* setup the ops for playback */ 1770 1770 snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &had_pcm_ops); 1771 1771