--- /dev/null
+From 5d542b850d40cb08a38ad4bb2a944dbf1b7b0683 Mon Sep 17 00:00:00 2001
+From: Stefan Binding <sbinding@opensource.cirrus.com>
+Date: Tue, 3 Oct 2023 15:21:38 +0100
+Subject: ALSA: hda: cs35l41: Cleanup and fix double free in firmware request
+
+From: Stefan Binding <sbinding@opensource.cirrus.com>
+
+commit 5d542b850d40cb08a38ad4bb2a944dbf1b7b0683 upstream.
+
+There is an unlikely but possible double free when loading firmware,
+and a missing free calls if a firmware is successfully requested but
+the coefficient file request fails, leading to the fallback firmware
+request occurring without clearing the previously loaded firmware.
+
+Fixes: cd40dad2ca91 ("ALSA: hda: cs35l41: Ensure firmware/tuning pairs are always loaded")
+Reported-by: kernel test robot <lkp@intel.com>
+Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
+Closes: https://lore.kernel.org/r/202309291331.0JUUQnPT-lkp@intel.com/
+Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
+Link: https://lore.kernel.org/r/20231003142138.180108-1-sbinding@opensource.cirrus.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/pci/hda/cs35l41_hda.c | 115 ++++++++++++++++++++++++++++++--------------
+ 1 file changed, 79 insertions(+), 36 deletions(-)
+
+--- a/sound/pci/hda/cs35l41_hda.c
++++ b/sound/pci/hda/cs35l41_hda.c
+@@ -178,10 +178,14 @@ static int cs35l41_request_firmware_file
+ cs35l41->speaker_id, "wmfw");
+ if (!ret) {
+ /* try cirrus/part-dspN-fwtype-sub<-spkidN><-ampname>.bin */
+- return cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename,
+- CS35L41_FIRMWARE_ROOT,
+- cs35l41->acpi_subsystem_id, cs35l41->amp_name,
+- cs35l41->speaker_id, "bin");
++ ret = cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename,
++ CS35L41_FIRMWARE_ROOT,
++ cs35l41->acpi_subsystem_id, cs35l41->amp_name,
++ cs35l41->speaker_id, "bin");
++ if (ret)
++ goto coeff_err;
++
++ return 0;
+ }
+
+ /* try cirrus/part-dspN-fwtype-sub<-ampname>.wmfw */
+@@ -190,10 +194,14 @@ static int cs35l41_request_firmware_file
+ cs35l41->amp_name, -1, "wmfw");
+ if (!ret) {
+ /* try cirrus/part-dspN-fwtype-sub<-spkidN><-ampname>.bin */
+- return cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename,
+- CS35L41_FIRMWARE_ROOT,
+- cs35l41->acpi_subsystem_id, cs35l41->amp_name,
+- cs35l41->speaker_id, "bin");
++ ret = cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename,
++ CS35L41_FIRMWARE_ROOT,
++ cs35l41->acpi_subsystem_id, cs35l41->amp_name,
++ cs35l41->speaker_id, "bin");
++ if (ret)
++ goto coeff_err;
++
++ return 0;
+ }
+
+ /* try cirrus/part-dspN-fwtype-sub<-spkidN>.wmfw */
+@@ -208,10 +216,14 @@ static int cs35l41_request_firmware_file
+ cs35l41->amp_name, cs35l41->speaker_id, "bin");
+ if (ret)
+ /* try cirrus/part-dspN-fwtype-sub<-spkidN>.bin */
+- return cs35l41_request_firmware_file(cs35l41, coeff_firmware,
+- coeff_filename, CS35L41_FIRMWARE_ROOT,
+- cs35l41->acpi_subsystem_id, NULL,
+- cs35l41->speaker_id, "bin");
++ ret = cs35l41_request_firmware_file(cs35l41, coeff_firmware,
++ coeff_filename, CS35L41_FIRMWARE_ROOT,
++ cs35l41->acpi_subsystem_id, NULL,
++ cs35l41->speaker_id, "bin");
++ if (ret)
++ goto coeff_err;
++
++ return 0;
+ }
+
+ /* try cirrus/part-dspN-fwtype-sub.wmfw */
+@@ -226,13 +238,51 @@ static int cs35l41_request_firmware_file
+ cs35l41->speaker_id, "bin");
+ if (ret)
+ /* try cirrus/part-dspN-fwtype-sub<-spkidN>.bin */
+- return cs35l41_request_firmware_file(cs35l41, coeff_firmware,
+- coeff_filename, CS35L41_FIRMWARE_ROOT,
+- cs35l41->acpi_subsystem_id, NULL,
+- cs35l41->speaker_id, "bin");
++ ret = cs35l41_request_firmware_file(cs35l41, coeff_firmware,
++ coeff_filename, CS35L41_FIRMWARE_ROOT,
++ cs35l41->acpi_subsystem_id, NULL,
++ cs35l41->speaker_id, "bin");
++ if (ret)
++ goto coeff_err;
+ }
+
+ return ret;
++coeff_err:
++ release_firmware(*wmfw_firmware);
++ kfree(*wmfw_filename);
++ return ret;
++}
++
++static int cs35l41_fallback_firmware_file(struct cs35l41_hda *cs35l41,
++ const struct firmware **wmfw_firmware,
++ char **wmfw_filename,
++ const struct firmware **coeff_firmware,
++ char **coeff_filename)
++{
++ int ret;
++
++ /* Handle fallback */
++ dev_warn(cs35l41->dev, "Falling back to default firmware.\n");
++
++ /* fallback try cirrus/part-dspN-fwtype.wmfw */
++ ret = cs35l41_request_firmware_file(cs35l41, wmfw_firmware, wmfw_filename,
++ CS35L41_FIRMWARE_ROOT, NULL, NULL, -1, "wmfw");
++ if (ret)
++ goto err;
++
++ /* fallback try cirrus/part-dspN-fwtype.bin */
++ ret = cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename,
++ CS35L41_FIRMWARE_ROOT, NULL, NULL, -1, "bin");
++ if (ret) {
++ release_firmware(*wmfw_firmware);
++ kfree(*wmfw_filename);
++ goto err;
++ }
++ return 0;
++
++err:
++ dev_warn(cs35l41->dev, "Unable to find firmware and tuning\n");
++ return ret;
+ }
+
+ static int cs35l41_request_firmware_files(struct cs35l41_hda *cs35l41,
+@@ -247,7 +297,6 @@ static int cs35l41_request_firmware_file
+ ret = cs35l41_request_firmware_files_spkid(cs35l41, wmfw_firmware, wmfw_filename,
+ coeff_firmware, coeff_filename);
+ goto out;
+-
+ }
+
+ /* try cirrus/part-dspN-fwtype-sub<-ampname>.wmfw */
+@@ -260,6 +309,9 @@ static int cs35l41_request_firmware_file
+ CS35L41_FIRMWARE_ROOT,
+ cs35l41->acpi_subsystem_id, cs35l41->amp_name,
+ -1, "bin");
++ if (ret)
++ goto coeff_err;
++
+ goto out;
+ }
+
+@@ -279,32 +331,23 @@ static int cs35l41_request_firmware_file
+ CS35L41_FIRMWARE_ROOT,
+ cs35l41->acpi_subsystem_id, NULL, -1,
+ "bin");
++ if (ret)
++ goto coeff_err;
+ }
+
+ out:
+- if (!ret)
+- return 0;
++ if (ret)
++ /* if all attempts at finding firmware fail, try fallback */
++ goto fallback;
+
+- /* Handle fallback */
+- dev_warn(cs35l41->dev, "Falling back to default firmware.\n");
++ return 0;
+
++coeff_err:
+ release_firmware(*wmfw_firmware);
+ kfree(*wmfw_filename);
+-
+- /* fallback try cirrus/part-dspN-fwtype.wmfw */
+- ret = cs35l41_request_firmware_file(cs35l41, wmfw_firmware, wmfw_filename,
+- CS35L41_FIRMWARE_ROOT, NULL, NULL, -1, "wmfw");
+- if (!ret)
+- /* fallback try cirrus/part-dspN-fwtype.bin */
+- ret = cs35l41_request_firmware_file(cs35l41, coeff_firmware, coeff_filename,
+- CS35L41_FIRMWARE_ROOT, NULL, NULL, -1, "bin");
+-
+- if (ret) {
+- release_firmware(*wmfw_firmware);
+- kfree(*wmfw_filename);
+- dev_warn(cs35l41->dev, "Unable to find firmware and tuning\n");
+- }
+- return ret;
++fallback:
++ return cs35l41_fallback_firmware_file(cs35l41, wmfw_firmware, wmfw_filename,
++ coeff_firmware, coeff_filename);
+ }
+
+ #if IS_ENABLED(CONFIG_EFI)
--- /dev/null
+From ccbd88be057a38531f835e8a04948ebf80cb0c5d Mon Sep 17 00:00:00 2001
+From: Kailang Yang <kailang@realtek.com>
+Date: Fri, 6 Oct 2023 14:47:37 +0800
+Subject: ALSA: hda/realtek: Change model for Intel RVP board
+
+From: Kailang Yang <kailang@realtek.com>
+
+commit ccbd88be057a38531f835e8a04948ebf80cb0c5d upstream.
+
+Intel RVP board (0x12cc) has Headset Mic issue for reboot.
+If system plugged headset when system reboot the headset Mic was gone.
+
+Fixes: 1a93f10c5b12 ("ALSA: hda/realtek: Add "Intel Reference board" and "NUC 13" SSID in the ALC256")
+Signed-off-by: Kailang Yang <kailang@realtek.com>
+Link: https://lore.kernel.org/r/28112f54c0c6496f97ac845645bc0256@realtek.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/pci/hda/patch_realtek.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -9720,7 +9720,7 @@ static const struct snd_pci_quirk alc269
+ SND_PCI_QUIRK(0x10ec, 0x124c, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK),
+ SND_PCI_QUIRK(0x10ec, 0x1252, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK),
+ SND_PCI_QUIRK(0x10ec, 0x1254, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK),
+- SND_PCI_QUIRK(0x10ec, 0x12cc, "Intel Reference board", ALC225_FIXUP_HEADSET_JACK),
++ SND_PCI_QUIRK(0x10ec, 0x12cc, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK),
+ SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-SZ6", ALC269_FIXUP_HEADSET_MODE),
+ SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC),
+ SND_PCI_QUIRK(0x144d, 0xc169, "Samsung Notebook 9 Pen (NP930SBE-K01US)", ALC298_FIXUP_SAMSUNG_AMP),
+@@ -9943,7 +9943,7 @@ static const struct snd_pci_quirk alc269
+ SND_PCI_QUIRK(0x8086, 0x2074, "Intel NUC 8", ALC233_FIXUP_INTEL_NUC8_DMIC),
+ SND_PCI_QUIRK(0x8086, 0x2080, "Intel NUC 8 Rugged", ALC256_FIXUP_INTEL_NUC8_RUGGED),
+ SND_PCI_QUIRK(0x8086, 0x2081, "Intel NUC 10", ALC256_FIXUP_INTEL_NUC10),
+- SND_PCI_QUIRK(0x8086, 0x3038, "Intel NUC 13", ALC225_FIXUP_HEADSET_JACK),
++ SND_PCI_QUIRK(0x8086, 0x3038, "Intel NUC 13", ALC295_FIXUP_CHROME_BOOK),
+ SND_PCI_QUIRK(0xf111, 0x0001, "Framework Laptop", ALC295_FIXUP_FRAMEWORK_LAPTOP_MIC_NO_PRESENCE),
+
+ #if 0
--- /dev/null
+From 4a63e68a295187ae3c1cb3fa0c583c96a959714f Mon Sep 17 00:00:00 2001
+From: Christos Skevis <xristos.thes@gmail.com>
+Date: Fri, 6 Oct 2023 17:53:30 +0200
+Subject: ALSA: usb-audio: Fix microphone sound on Nexigo webcam.
+
+From: Christos Skevis <xristos.thes@gmail.com>
+
+commit 4a63e68a295187ae3c1cb3fa0c583c96a959714f upstream.
+
+I own an external usb Webcam, model NexiGo N930AF, which had low mic volume and
+inconsistent sound quality. Video works as expected.
+
+(snip)
+[ +0.047857] usb 5-1: new high-speed USB device number 2 using xhci_hcd
+[ +0.003406] usb 5-1: New USB device found, idVendor=1bcf, idProduct=2283, bcdDevice=12.17
+[ +0.000007] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
+[ +0.000004] usb 5-1: Product: NexiGo N930AF FHD Webcam
+[ +0.000003] usb 5-1: Manufacturer: SHENZHEN AONI ELECTRONIC CO., LTD
+[ +0.000004] usb 5-1: SerialNumber: 20201217011
+[ +0.003900] usb 5-1: Found UVC 1.00 device NexiGo N930AF FHD Webcam (1bcf:2283)
+[ +0.025726] usb 5-1: 3:1: cannot get usb sound sample rate freq at ep 0x86
+[ +0.071482] usb 5-1: 3:2: cannot get usb sound sample rate freq at ep 0x86
+[ +0.004679] usb 5-1: 3:3: cannot get usb sound sample rate freq at ep 0x86
+[ +0.051607] usb 5-1: Warning! Unlikely big volume range (=4096), cval->res is probably wrong.
+[ +0.000005] usb 5-1: [7] FU [Mic Capture Volume] ch = 1, val = 0/4096/1
+
+Set up quirk cval->res to 16 for 256 levels,
+Set GET_SAMPLE_RATE quirk flag to stop trying to get the sample rate.
+Confirmed that happened anyway later due to the backoff mechanism, after 3 failures
+
+All audio stream on device interfaces share the same values,
+apart from wMaxPacketSize and tSamFreq :
+
+(snip)
+Interface Descriptor:
+ bLength 9
+ bDescriptorType 4
+ bInterfaceNumber 3
+ bAlternateSetting 3
+ bNumEndpoints 1
+ bInterfaceClass 1 Audio
+ bInterfaceSubClass 2 Streaming
+ bInterfaceProtocol 0
+ iInterface 0
+ AudioStreaming Interface Descriptor:
+ bLength 7
+ bDescriptorType 36
+ bDescriptorSubtype 1 (AS_GENERAL)
+ bTerminalLink 8
+ bDelay 1 frames
+ wFormatTag 0x0001 PCM
+ AudioStreaming Interface Descriptor:
+ bLength 11
+ bDescriptorType 36
+ bDescriptorSubtype 2 (FORMAT_TYPE)
+ bFormatType 1 (FORMAT_TYPE_I)
+ bNrChannels 1
+ bSubframeSize 2
+ bBitResolution 16
+ bSamFreqType 1 Discrete
+ tSamFreq[ 0] 44100
+ Endpoint Descriptor:
+ bLength 9
+ bDescriptorType 5
+ bEndpointAddress 0x86 EP 6 IN
+ bmAttributes 5
+ Transfer Type Isochronous
+ Synch Type Asynchronous
+ Usage Type Data
+ wMaxPacketSize 0x005c 1x 92 bytes
+ bInterval 4
+ bRefresh 0
+ bSynchAddress 0
+ AudioStreaming Endpoint Descriptor:
+ bLength 7
+ bDescriptorType 37
+ bDescriptorSubtype 1 (EP_GENERAL)
+ bmAttributes 0x01
+ Sampling Frequency
+ bLockDelayUnits 0 Undefined
+ wLockDelay 0x0000
+(snip)
+
+Based on the usb data about manufacturer, SPCA2281B3 is the most likely controller IC
+Manufacturer does not provide link for datasheet nor detailed specs.
+No way to confirm if the firmware supports any other way of getting the sample rate.
+
+Testing patch provides consistent good sound recording quality and volume range.
+
+(snip)
+[ +0.045764] usb 5-1: new high-speed USB device number 2 using xhci_hcd
+[ +0.106290] usb 5-1: New USB device found, idVendor=1bcf, idProduct=2283, bcdDevice=12.17
+[ +0.000006] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
+[ +0.000004] usb 5-1: Product: NexiGo N930AF FHD Webcam
+[ +0.000003] usb 5-1: Manufacturer: SHENZHEN AONI ELECTRONIC CO., LTD
+[ +0.000004] usb 5-1: SerialNumber: 20201217011
+[ +0.043700] usb 5-1: set resolution quirk: cval->res = 16
+[ +0.002585] usb 5-1: Found UVC 1.00 device NexiGo N930AF FHD Webcam (1bcf:2283)
+
+Signed-off-by: Christos Skevis <xristos.thes@gmail.com>
+Link: https://lore.kernel.org/r/20231006155330.399393-1-xristos.thes@gmail.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/usb/mixer.c | 7 +++++++
+ sound/usb/quirks.c | 2 ++
+ 2 files changed, 9 insertions(+)
+
+--- a/sound/usb/mixer.c
++++ b/sound/usb/mixer.c
+@@ -1204,6 +1204,13 @@ static void volume_control_quirks(struct
+ cval->res = 16;
+ }
+ break;
++ case USB_ID(0x1bcf, 0x2283): /* NexiGo N930AF FHD Webcam */
++ if (!strcmp(kctl->id.name, "Mic Capture Volume")) {
++ usb_audio_info(chip,
++ "set resolution quirk: cval->res = 16\n");
++ cval->res = 16;
++ }
++ break;
+ }
+ }
+
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -2177,6 +2177,8 @@ static const struct usb_audio_quirk_flag
+ QUIRK_FLAG_FIXED_RATE),
+ DEVICE_FLG(0x0ecb, 0x2069, /* JBL Quantum810 Wireless */
+ QUIRK_FLAG_FIXED_RATE),
++ DEVICE_FLG(0x1bcf, 0x2283, /* NexiGo N930AF FHD Webcam */
++ QUIRK_FLAG_GET_SAMPLE_RATE),
+
+ /* Vendor matches */
+ VENDOR_FLG(0x045e, /* MS Lifecam */
--- /dev/null
+From 6a83d6f3bb3c329a73e3483651fb77b78bac1878 Mon Sep 17 00:00:00 2001
+From: WhaleChang <whalechang@google.com>
+Date: Fri, 6 Oct 2023 12:48:49 +0800
+Subject: ALSA: usb-audio: Fix microphone sound on Opencomm2 Headset
+
+From: WhaleChang <whalechang@google.com>
+
+commit 6a83d6f3bb3c329a73e3483651fb77b78bac1878 upstream.
+
+When a Opencomm2 Headset is connected to a Bluetooth USB dongle,
+the audio playback functions properly, but the microphone does not work.
+
+In the dmesg logs, there are messages indicating that the init_pitch
+function fails when the capture process begins.
+
+The microphone only functions when the ep pitch control is not set.
+
+Toggling the pitch control off bypasses the init_piatch function
+and allows the microphone to work.
+
+Signed-off-by: WhaleChang <whalechang@google.com>
+Link: https://lore.kernel.org/r/20231006044852.4181022-1-whalechang@google.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/usb/quirks.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -1994,7 +1994,11 @@ void snd_usb_audioformat_attributes_quir
+ /* mic works only when ep packet size is set to wMaxPacketSize */
+ fp->attributes |= UAC_EP_CS_ATTR_FILL_MAX;
+ break;
+-
++ case USB_ID(0x3511, 0x2b1e): /* Opencomm2 UC USB Bluetooth dongle */
++ /* mic works only when ep pitch control is not set */
++ if (stream == SNDRV_PCM_STREAM_CAPTURE)
++ fp->attributes &= ~UAC_EP_CS_ATTR_PITCH_CONTROL;
++ break;
+ }
+ }
+
--- /dev/null
+From cf5716acbfc6190b3f97f4614affdf5991aed7b2 Mon Sep 17 00:00:00 2001
+From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+Date: Tue, 5 Sep 2023 15:19:26 +0200
+Subject: arm64: dts: qcom: sm8150: extend the size of the PDC resource
+
+From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+
+commit cf5716acbfc6190b3f97f4614affdf5991aed7b2 upstream.
+
+Follow the example of other platforms and extend the PDC resource region
+to 0x30000, so that the PDC driver can read the PDC_VERSION register.
+
+Fixes: 397ad94668c1 ("arm64: dts: qcom: sm8150: Add pdc interrupt controller node")
+Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
+Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
+Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
+Signed-off-by: Marc Zyngier <maz@kernel.org>
+Link: https://lore.kernel.org/r/20230905-topic-sm8x50-upstream-pdc-ver-v4-2-fc633c7df84b@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/arm64/boot/dts/qcom/sm8150.dtsi | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
++++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
+@@ -3958,7 +3958,7 @@
+
+ pdc: interrupt-controller@b220000 {
+ compatible = "qcom,sm8150-pdc", "qcom,pdc";
+- reg = <0 0x0b220000 0 0x400>;
++ reg = <0 0x0b220000 0 0x30000>;
+ qcom,pdc-ranges = <0 480 94>, <94 609 31>,
+ <125 63 1>;
+ #interrupt-cells = <2>;
--- /dev/null
+From 197c53c8ecb34f2cd5922f4bdcffa8f701a134eb Mon Sep 17 00:00:00 2001
+From: Shengjiu Wang <shengjiu.wang@nxp.com>
+Date: Tue, 19 Sep 2023 17:42:13 +0800
+Subject: ASoC: fsl_sai: Don't disable bitclock for i.MX8MP
+
+From: Shengjiu Wang <shengjiu.wang@nxp.com>
+
+commit 197c53c8ecb34f2cd5922f4bdcffa8f701a134eb upstream.
+
+On i.MX8MP, the BCE and TERE bit are binding with mclk
+enablement, if BCE and TERE are cleared the MCLK also be
+disabled on output pin, that cause the external codec (wm8960)
+in wrong state.
+
+Codec (wm8960) is using the mclk to generate PLL clock,
+if mclk is disabled before disabling PLL, the codec (wm8960)
+won't generate bclk and frameclk when sysclk switch to
+MCLK source in next test case.
+
+The test case:
+$aplay -r44100 test1.wav (PLL source)
+$aplay -r48000 test2.wav (MCLK source)
+aplay: pcm_write:2127: write error: Input/output error
+
+Fixes: 269f399dc19f ("ASoC: fsl_sai: Disable bit clock with transmitter")
+Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
+Link: https://lore.kernel.org/r/1695116533-23287-1-git-send-email-shengjiu.wang@nxp.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/soc/fsl/fsl_sai.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+--- a/sound/soc/fsl/fsl_sai.c
++++ b/sound/soc/fsl/fsl_sai.c
+@@ -710,10 +710,15 @@ static void fsl_sai_config_disable(struc
+ {
+ unsigned int ofs = sai->soc_data->reg_offset;
+ bool tx = dir == TX;
+- u32 xcsr, count = 100;
++ u32 xcsr, count = 100, mask;
++
++ if (sai->soc_data->mclk_with_tere && sai->mclk_direction_output)
++ mask = FSL_SAI_CSR_TERE;
++ else
++ mask = FSL_SAI_CSR_TERE | FSL_SAI_CSR_BCE;
+
+ regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx, ofs),
+- FSL_SAI_CSR_TERE | FSL_SAI_CSR_BCE, 0);
++ mask, 0);
+
+ /* TERE will remain set till the end of current frame */
+ do {
--- /dev/null
+From d1f67278d4b2de3bf544ea9bcd9f64d03584df87 Mon Sep 17 00:00:00 2001
+From: Balamurugan C <balamurugan.c@intel.com>
+Date: Tue, 19 Sep 2023 17:11:36 +0800
+Subject: ASoC: Intel: soc-acpi: Add entry for HDMI_In capture support in MTL match table
+
+From: Balamurugan C <balamurugan.c@intel.com>
+
+commit d1f67278d4b2de3bf544ea9bcd9f64d03584df87 upstream.
+
+Adding HDMI-In capture via I2S feature support in MTL platform.
+
+Signed-off-by: Balamurugan C <balamurugan.c@intel.com>
+Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
+Link: https://lore.kernel.org/r/20230919091136.1922253-3-yung-chuan.liao@linux.intel.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/soc/intel/boards/sof_es8336.c | 10 ++++++++++
+ sound/soc/intel/common/soc-acpi-intel-mtl-match.c | 12 ++++++++++++
+ 2 files changed, 22 insertions(+)
+
+--- a/sound/soc/intel/boards/sof_es8336.c
++++ b/sound/soc/intel/boards/sof_es8336.c
+@@ -798,6 +798,16 @@ static const struct platform_device_id b
+ SOF_ES8336_SPEAKERS_EN_GPIO1_QUIRK |
+ SOF_ES8336_JD_INVERTED),
+ },
++ {
++ .name = "mtl_es83x6_c1_h02",
++ .driver_data = (kernel_ulong_t)(SOF_ES8336_SSP_CODEC(1) |
++ SOF_NO_OF_HDMI_CAPTURE_SSP(2) |
++ SOF_HDMI_CAPTURE_1_SSP(0) |
++ SOF_HDMI_CAPTURE_2_SSP(2) |
++ SOF_SSP_HDMI_CAPTURE_PRESENT |
++ SOF_ES8336_SPEAKERS_EN_GPIO1_QUIRK |
++ SOF_ES8336_JD_INVERTED),
++ },
+ { }
+ };
+ MODULE_DEVICE_TABLE(platform, board_ids);
+--- a/sound/soc/intel/common/soc-acpi-intel-mtl-match.c
++++ b/sound/soc/intel/common/soc-acpi-intel-mtl-match.c
+@@ -30,6 +30,11 @@ static const struct snd_soc_acpi_codecs
+ .codecs = {"10EC5682", "RTL5682"},
+ };
+
++static const struct snd_soc_acpi_codecs mtl_lt6911_hdmi = {
++ .num_codecs = 1,
++ .codecs = {"INTC10B0"}
++};
++
+ struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_machines[] = {
+ {
+ .comp_ids = &mtl_rt5682_rt5682s_hp,
+@@ -46,6 +51,13 @@ struct snd_soc_acpi_mach snd_soc_acpi_in
+ .sof_tplg_filename = "sof-mtl-max98360a-rt5682.tplg",
+ },
+ {
++ .comp_ids = &mtl_essx_83x6,
++ .drv_name = "mtl_es83x6_c1_h02",
++ .machine_quirk = snd_soc_acpi_codec_list,
++ .quirk_data = &mtl_lt6911_hdmi,
++ .sof_tplg_filename = "sof-mtl-es83x6-ssp1-hdmi-ssp02.tplg",
++ },
++ {
+ .comp_ids = &mtl_rt5682_rt5682s_hp,
+ .drv_name = "mtl_rt1019_rt5682",
+ .machine_quirk = snd_soc_acpi_codec_list,
--- /dev/null
+From 381ddcd5875e496f2eae06bb65853271b7150fee Mon Sep 17 00:00:00 2001
+From: Balamurugan C <balamurugan.c@intel.com>
+Date: Tue, 19 Sep 2023 17:11:35 +0800
+Subject: ASoC: Intel: soc-acpi: Add entry for sof_es8336 in MTL match table.
+
+From: Balamurugan C <balamurugan.c@intel.com>
+
+commit 381ddcd5875e496f2eae06bb65853271b7150fee upstream.
+
+Adding support for ES83x6 codec in MTL match table.
+
+Signed-off-by: Balamurugan C <balamurugan.c@intel.com>
+Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
+Link: https://lore.kernel.org/r/20230919091136.1922253-2-yung-chuan.liao@linux.intel.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/soc/intel/common/soc-acpi-intel-mtl-match.c | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+--- a/sound/soc/intel/common/soc-acpi-intel-mtl-match.c
++++ b/sound/soc/intel/common/soc-acpi-intel-mtl-match.c
+@@ -35,6 +35,11 @@ static const struct snd_soc_acpi_codecs
+ .codecs = {"INTC10B0"}
+ };
+
++static const struct snd_soc_acpi_codecs mtl_essx_83x6 = {
++ .num_codecs = 3,
++ .codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},
++};
++
+ struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_machines[] = {
+ {
+ .comp_ids = &mtl_rt5682_rt5682s_hp,
+@@ -64,6 +69,14 @@ struct snd_soc_acpi_mach snd_soc_acpi_in
+ .quirk_data = &mtl_rt1019p_amp,
+ .sof_tplg_filename = "sof-mtl-rt1019-rt5682.tplg",
+ },
++ {
++ .comp_ids = &mtl_essx_83x6,
++ .drv_name = "sof-essx8336",
++ .sof_tplg_filename = "sof-mtl-es8336", /* the tplg suffix is added at run time */
++ .tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |
++ SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |
++ SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,
++ },
+ {},
+ };
+ EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_machines);
--- /dev/null
+From b399f9706a1cbae42731cc420a46cfb9c3c6b10f Mon Sep 17 00:00:00 2001
+From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+Date: Tue, 19 Sep 2023 16:36:06 +0800
+Subject: ASoC: Intel: soc-acpi: fix Dell SKU 0B34
+
+From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+
+commit b399f9706a1cbae42731cc420a46cfb9c3c6b10f upstream.
+
+The rule for the SoundWire tables is that the platforms with more
+devices need to be added first. We broke that rule with the Dell SKU
+0B34, and caused the second amplifier for SKU 0AF3 to be ignored.
+
+The fix is simple, we need to move the single-amplifier entry after
+the two-amplifier one.
+
+Fixes: b62a1a839b48 ("ASoC: Intel: soc-acpi: add tables for Dell SKU 0B34")
+Closes: https://github.com/thesofproject/linux/issues/4559
+Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+Reviewed-by: Chao Song <chao.song@linux.intel.com>
+Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
+Link: https://lore.kernel.org/r/20230919083606.1920202-1-yung-chuan.liao@linux.intel.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/soc/intel/common/soc-acpi-intel-adl-match.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/sound/soc/intel/common/soc-acpi-intel-adl-match.c
++++ b/sound/soc/intel/common/soc-acpi-intel-adl-match.c
+@@ -649,18 +649,18 @@ struct snd_soc_acpi_mach snd_soc_acpi_in
+ .sof_tplg_filename = "sof-adl-rt1316-l2-mono-rt714-l3.tplg",
+ },
+ {
+- .link_mask = 0x3, /* rt1316 on link1 & rt714 on link0 */
+- .links = adl_sdw_rt1316_link1_rt714_link0,
+- .drv_name = "sof_sdw",
+- .sof_tplg_filename = "sof-adl-rt1316-l1-mono-rt714-l0.tplg",
+- },
+- {
+ .link_mask = 0x7, /* rt714 on link0 & two rt1316s on link1 and link2 */
+ .links = adl_sdw_rt1316_link12_rt714_link0,
+ .drv_name = "sof_sdw",
+ .sof_tplg_filename = "sof-adl-rt1316-l12-rt714-l0.tplg",
+ },
+ {
++ .link_mask = 0x3, /* rt1316 on link1 & rt714 on link0 */
++ .links = adl_sdw_rt1316_link1_rt714_link0,
++ .drv_name = "sof_sdw",
++ .sof_tplg_filename = "sof-adl-rt1316-l1-mono-rt714-l0.tplg",
++ },
++ {
+ .link_mask = 0x5, /* 2 active links required */
+ .links = adl_sdw_rt1316_link2_rt714_link0,
+ .drv_name = "sof_sdw",
--- /dev/null
+From fb0b8d299781be8d46b3612aa96cef28da0d93f4 Mon Sep 17 00:00:00 2001
+From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+Date: Tue, 19 Sep 2023 17:21:25 +0800
+Subject: ASoC: Intel: sof_sdw: add support for SKU 0B14
+
+From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+
+commit fb0b8d299781be8d46b3612aa96cef28da0d93f4 upstream.
+
+One more missing SKU in the list.
+
+Closes: https://github.com/thesofproject/linux/issues/4543
+Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+Reviewed-by: Chao Song <chao.song@linux.intel.com>
+Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
+Link: https://lore.kernel.org/r/20230919092125.1922468-1-yung-chuan.liao@linux.intel.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/soc/intel/boards/sof_sdw.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/sound/soc/intel/boards/sof_sdw.c
++++ b/sound/soc/intel/boards/sof_sdw.c
+@@ -388,6 +388,16 @@ static const struct dmi_system_id sof_sd
+ {
+ .callback = sof_sdw_quirk_cb,
+ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc"),
++ DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "0B14"),
++ },
++ /* No Jack */
++ .driver_data = (void *)SOF_SDW_TGL_HDMI,
++ },
++
++ {
++ .callback = sof_sdw_quirk_cb,
++ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "HP"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "OMEN by HP Gaming Laptop 16-k0xxx"),
+ },
--- /dev/null
+From 69cf63b6560205a390a736b88d112374655adb28 Mon Sep 17 00:00:00 2001
+From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+Date: Tue, 19 Sep 2023 01:22:57 +0000
+Subject: ASoC: simple-card-utils: fixup simple_util_startup() error handling
+
+From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+
+commit 69cf63b6560205a390a736b88d112374655adb28 upstream.
+
+It should use "goto" instead of "return"
+
+Fixes: 5ca2ab459817 ("ASoC: simple-card-utils: Add new system-clock-fixed flag")
+Reported-by: kernel test robot <lkp@intel.com>
+Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
+Closes: https://lore.kernel.org/all/202309141205.ITZeDJxV-lkp@intel.com/
+Closes: https://lore.kernel.org/all/202309151840.au9Aa2W4-lkp@intel.com/
+Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+Link: https://lore.kernel.org/r/87v8c76jnz.wl-kuninori.morimoto.gx@renesas.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/soc/generic/simple-card-utils.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/sound/soc/generic/simple-card-utils.c
++++ b/sound/soc/generic/simple-card-utils.c
+@@ -310,7 +310,8 @@ int asoc_simple_startup(struct snd_pcm_s
+ if (fixed_sysclk % props->mclk_fs) {
+ dev_err(rtd->dev, "fixed sysclk %u not divisible by mclk_fs %u\n",
+ fixed_sysclk, props->mclk_fs);
+- return -EINVAL;
++ ret = -EINVAL;
++ goto codec_err;
+ }
+ ret = snd_pcm_hw_constraint_minmax(substream->runtime, SNDRV_PCM_HW_PARAM_RATE,
+ fixed_rate, fixed_rate);
--- /dev/null
+From 7e1fe5d9e7eae67e218f878195d1d348d01f9af7 Mon Sep 17 00:00:00 2001
+From: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
+Date: Wed, 27 Sep 2023 12:44:10 +0530
+Subject: ASoC: SOF: amd: fix for firmware reload failure after playback
+
+From: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
+
+commit 7e1fe5d9e7eae67e218f878195d1d348d01f9af7 upstream.
+
+Setting ACP ACLK as clock source when ACP enters D0 state causing
+firmware load failure as mentioned in below scenario.
+
+- Load snd_sof_amd_rembrandt
+- Play or Record audio
+- Stop audio
+- Unload snd_sof_amd_rembrandt
+- Reload snd_sof_amd_rembrandt
+
+If acp_clkmux_sel register field is set, then clock source will be
+set to ACP ACLK when ACP enters D0 state.
+
+During stream stop, if there is no active stream is running then
+acp firmware will set the ACP ACLK value to zero.
+
+When driver is reloaded and clock source is selected as ACP ACLK,
+as ACP ACLK is programmed to zero, firmware loading will fail.
+
+For RMB platform, remove the clock mux selection field so that
+ACP will use internal clock source when ACP enters D0 state.
+
+Fixes: 41cb85bc4b52 ("ASoC: SOF: amd: Add support for Rembrandt plaform.")
+Reported-by: coolstar <coolstarorganization@gmail.com>
+Closes: https://github.com/thesofproject/sof/issues/8137
+Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
+Link: https://lore.kernel.org/r/20230927071412.2416250-1-Vijendar.Mukunda@amd.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/soc/sof/amd/pci-rmb.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/sound/soc/sof/amd/pci-rmb.c
++++ b/sound/soc/sof/amd/pci-rmb.c
+@@ -34,7 +34,6 @@ static const struct sof_amd_acp_desc rem
+ .dsp_intr_base = ACP6X_DSP_SW_INTR_BASE,
+ .sram_pte_offset = ACP6X_SRAM_PTE_OFFSET,
+ .hw_semaphore_offset = ACP6X_AXI2DAGB_SEM_0,
+- .acp_clkmux_sel = ACP6X_CLKMUX_SEL,
+ .fusion_dsp_offset = ACP6X_DSP_FUSION_RUNSTALL,
+ };
+
--- /dev/null
+From cfa1f9db6d6088118ef311c0927c66072665b47e Mon Sep 17 00:00:00 2001
+From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
+Date: Fri, 22 Jul 2022 16:11:54 +0100
+Subject: dt-bindings: interrupt-controller: renesas,rzg2l-irqc: Update description for '#interrupt-cells' property
+
+From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
+
+commit cfa1f9db6d6088118ef311c0927c66072665b47e upstream.
+
+Update description for '#interrupt-cells' property to utilize the
+RZG2L_{NMI,IRQX} for the first cell defined in the
+include/dt-bindings/interrupt-controller/irqc-rzg2l.h file.
+
+Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
+Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
+Fixes: 96fed779d3d4cb3c ("dt-bindings: interrupt-controller: Add Renesas RZ/G2L Interrupt Controller")
+Signed-off-by: Marc Zyngier <maz@kernel.org>
+Link: https://lore.kernel.org/r/20220722151155.21100-3-prabhakar.mahadev-lad.rj@bp.renesas.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ Documentation/devicetree/bindings/interrupt-controller/renesas,rzg2l-irqc.yaml | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/Documentation/devicetree/bindings/interrupt-controller/renesas,rzg2l-irqc.yaml
++++ b/Documentation/devicetree/bindings/interrupt-controller/renesas,rzg2l-irqc.yaml
+@@ -31,8 +31,9 @@ properties:
+ - const: renesas,rzg2l-irqc
+
+ '#interrupt-cells':
+- description: The first cell should contain external interrupt number (IRQ0-7) and the
+- second cell is used to specify the flag.
++ description: The first cell should contain a macro RZG2L_{NMI,IRQX} included in the
++ include/dt-bindings/interrupt-controller/irqc-rzg2l.h and the second
++ cell is used to specify the flag.
+ const: 2
+
+ '#address-cells':
--- /dev/null
+From 9b8df572ba3f4e544366196820a719a40774433e Mon Sep 17 00:00:00 2001
+From: Biju Das <biju.das.jz@bp.renesas.com>
+Date: Mon, 18 Sep 2023 13:24:09 +0100
+Subject: irqchip: renesas-rzg2l: Fix logic to clear TINT interrupt source
+
+From: Biju Das <biju.das.jz@bp.renesas.com>
+
+commit 9b8df572ba3f4e544366196820a719a40774433e upstream.
+
+The logic to clear the TINT interrupt source in rzg2l_irqc_irq_disable()
+is wrong as the mask is correct only for LSB on the TSSR register.
+This issue is found when testing with two TINT interrupt sources. So fix
+the logic for all TINTs by using the macro TSSEL_SHIFT() to multiply
+tssr_offset with 8.
+
+Fixes: 3fed09559cd8 ("irqchip: Add RZ/G2L IA55 Interrupt Controller driver")
+Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
+Tested-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
+Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
+Reviewed-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
+Signed-off-by: Marc Zyngier <maz@kernel.org>
+Link: https://lore.kernel.org/r/20230918122411.237635-2-biju.das.jz@bp.renesas.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/irqchip/irq-renesas-rzg2l.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/irqchip/irq-renesas-rzg2l.c
++++ b/drivers/irqchip/irq-renesas-rzg2l.c
+@@ -118,7 +118,7 @@ static void rzg2l_irqc_irq_disable(struc
+
+ raw_spin_lock(&priv->lock);
+ reg = readl_relaxed(priv->base + TSSR(tssr_index));
+- reg &= ~(TSSEL_MASK << tssr_offset);
++ reg &= ~(TSSEL_MASK << TSSEL_SHIFT(tssr_offset));
+ writel_relaxed(reg, priv->base + TSSR(tssr_index));
+ raw_spin_unlock(&priv->lock);
+ }
--- /dev/null
+From 01bbafc63b65689cb179ca537971286bc27f3b74 Mon Sep 17 00:00:00 2001
+From: Sumit Garg <sumit.garg@linaro.org>
+Date: Fri, 6 Oct 2023 10:48:01 +0530
+Subject: KEYS: trusted: Remove redundant static calls usage
+
+From: Sumit Garg <sumit.garg@linaro.org>
+
+commit 01bbafc63b65689cb179ca537971286bc27f3b74 upstream.
+
+Static calls invocations aren't well supported from module __init and
+__exit functions. Especially the static call from cleanup_trusted() led
+to a crash on x86 kernel with CONFIG_DEBUG_VIRTUAL=y.
+
+However, the usage of static call invocations for trusted_key_init()
+and trusted_key_exit() don't add any value from either a performance or
+security perspective. Hence switch to use indirect function calls instead.
+
+Note here that although it will fix the current crash report, ultimately
+the static call infrastructure should be fixed to either support its
+future usage from module __init and __exit functions or not.
+
+Reported-and-tested-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
+Link: https://lore.kernel.org/lkml/ZRhKq6e5nF%2F4ZIV1@fedora/#t
+Fixes: 5d0682be3189 ("KEYS: trusted: Add generic trusted keys framework")
+Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ security/keys/trusted-keys/trusted_core.c | 13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
+
+--- a/security/keys/trusted-keys/trusted_core.c
++++ b/security/keys/trusted-keys/trusted_core.c
+@@ -44,13 +44,12 @@ static const struct trusted_key_source t
+ #endif
+ };
+
+-DEFINE_STATIC_CALL_NULL(trusted_key_init, *trusted_key_sources[0].ops->init);
+ DEFINE_STATIC_CALL_NULL(trusted_key_seal, *trusted_key_sources[0].ops->seal);
+ DEFINE_STATIC_CALL_NULL(trusted_key_unseal,
+ *trusted_key_sources[0].ops->unseal);
+ DEFINE_STATIC_CALL_NULL(trusted_key_get_random,
+ *trusted_key_sources[0].ops->get_random);
+-DEFINE_STATIC_CALL_NULL(trusted_key_exit, *trusted_key_sources[0].ops->exit);
++static void (*trusted_key_exit)(void);
+ static unsigned char migratable;
+
+ enum {
+@@ -359,19 +358,16 @@ static int __init init_trusted(void)
+ if (!get_random)
+ get_random = kernel_get_random;
+
+- static_call_update(trusted_key_init,
+- trusted_key_sources[i].ops->init);
+ static_call_update(trusted_key_seal,
+ trusted_key_sources[i].ops->seal);
+ static_call_update(trusted_key_unseal,
+ trusted_key_sources[i].ops->unseal);
+ static_call_update(trusted_key_get_random,
+ get_random);
+- static_call_update(trusted_key_exit,
+- trusted_key_sources[i].ops->exit);
++ trusted_key_exit = trusted_key_sources[i].ops->exit;
+ migratable = trusted_key_sources[i].ops->migratable;
+
+- ret = static_call(trusted_key_init)();
++ ret = trusted_key_sources[i].ops->init();
+ if (!ret)
+ break;
+ }
+@@ -388,7 +384,8 @@ static int __init init_trusted(void)
+
+ static void __exit cleanup_trusted(void)
+ {
+- static_call_cond(trusted_key_exit)();
++ if (trusted_key_exit)
++ (*trusted_key_exit)();
+ }
+
+ late_initcall(init_trusted);
asoc-hdmi-codec-fix-broken-channel-map-reporting.patch
ata-libata-scsi-disable-scsi-device-manage_system_start_stop.patch
net-prevent-address-rewrite-in-kernel_bind.patch
+arm64-dts-qcom-sm8150-extend-the-size-of-the-pdc-resource.patch
+dt-bindings-interrupt-controller-renesas-rzg2l-irqc-update-description-for-interrupt-cells-property.patch
+irqchip-renesas-rzg2l-fix-logic-to-clear-tint-interrupt-source.patch
+keys-trusted-remove-redundant-static-calls-usage.patch
+alsa-usb-audio-fix-microphone-sound-on-opencomm2-headset.patch
+alsa-usb-audio-fix-microphone-sound-on-nexigo-webcam.patch
+alsa-hda-cs35l41-cleanup-and-fix-double-free-in-firmware-request.patch
+alsa-hda-realtek-change-model-for-intel-rvp-board.patch
+asoc-sof-amd-fix-for-firmware-reload-failure-after-playback.patch
+asoc-simple-card-utils-fixup-simple_util_startup-error-handling.patch
+asoc-intel-soc-acpi-fix-dell-sku-0b34.patch
+asoc-intel-soc-acpi-add-entry-for-hdmi_in-capture-support-in-mtl-match-table.patch
+asoc-fsl_sai-don-t-disable-bitclock-for-i.mx8mp.patch
+asoc-intel-sof_sdw-add-support-for-sku-0b14.patch
+asoc-intel-soc-acpi-add-entry-for-sof_es8336-in-mtl-match-table.patch