]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 Jul 2025 08:00:27 +0000 (10:00 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 Jul 2025 08:34:43 +0000 (10:34 +0200)
added patches:
alsa-hda-add-missing-nvidia-hda-codec-ids.patch
alsa-hda-tegra-add-tegra264-support.patch

queue-6.15/alsa-hda-add-missing-nvidia-hda-codec-ids.patch [new file with mode: 0644]
queue-6.15/alsa-hda-tegra-add-tegra264-support.patch [new file with mode: 0644]
queue-6.15/series

diff --git a/queue-6.15/alsa-hda-add-missing-nvidia-hda-codec-ids.patch b/queue-6.15/alsa-hda-add-missing-nvidia-hda-codec-ids.patch
new file mode 100644 (file)
index 0000000..ab17ef1
--- /dev/null
@@ -0,0 +1,67 @@
+From e0a911ac86857a73182edde9e50d9b4b949b7f01 Mon Sep 17 00:00:00 2001
+From: Daniel Dadap <ddadap@nvidia.com>
+Date: Thu, 26 Jun 2025 16:16:30 -0500
+Subject: ALSA: hda: Add missing NVIDIA HDA codec IDs
+
+From: Daniel Dadap <ddadap@nvidia.com>
+
+commit e0a911ac86857a73182edde9e50d9b4b949b7f01 upstream.
+
+Add codec IDs for several NVIDIA products with HDA controllers to the
+snd_hda_id_hdmi[] patch table.
+
+Signed-off-by: Daniel Dadap <ddadap@nvidia.com>
+Cc: <stable@vger.kernel.org>
+Link: https://patch.msgid.link/aF24rqwMKFWoHu12@ddadap-lakeline.nvidia.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/pci/hda/patch_hdmi.c |   19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -4551,7 +4551,9 @@ HDA_CODEC_ENTRY(0x10de002e, "Tegra186 HD
+ HDA_CODEC_ENTRY(0x10de002f, "Tegra194 HDMI/DP2", patch_tegra_hdmi),
+ HDA_CODEC_ENTRY(0x10de0030, "Tegra194 HDMI/DP3", patch_tegra_hdmi),
+ HDA_CODEC_ENTRY(0x10de0031, "Tegra234 HDMI/DP", patch_tegra234_hdmi),
++HDA_CODEC_ENTRY(0x10de0033, "SoC 33 HDMI/DP", patch_tegra234_hdmi),
+ HDA_CODEC_ENTRY(0x10de0034, "Tegra264 HDMI/DP",       patch_tegra234_hdmi),
++HDA_CODEC_ENTRY(0x10de0035, "SoC 35 HDMI/DP", patch_tegra234_hdmi),
+ HDA_CODEC_ENTRY(0x10de0040, "GPU 40 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0041, "GPU 41 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0042, "GPU 42 HDMI/DP", patch_nvhdmi),
+@@ -4590,15 +4592,32 @@ HDA_CODEC_ENTRY(0x10de0097, "GPU 97 HDMI
+ HDA_CODEC_ENTRY(0x10de0098, "GPU 98 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0099, "GPU 99 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de009a, "GPU 9a HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de009b, "GPU 9b HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de009c, "GPU 9c HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de009d, "GPU 9d HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de009e, "GPU 9e HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de009f, "GPU 9f HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de00a0, "GPU a0 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00a1, "GPU a1 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de00a3, "GPU a3 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de00a4, "GPU a4 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de00a5, "GPU a5 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de00a6, "GPU a6 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de00a7, "GPU a7 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00a8, "GPU a8 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00a9, "GPU a9 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00aa, "GPU aa HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00ab, "GPU ab HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00ad, "GPU ad HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00ae, "GPU ae HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00af, "GPU af HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00b0, "GPU b0 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00b1, "GPU b1 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00c0, "GPU c0 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00c1, "GPU c1 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00c3, "GPU c3 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00c4, "GPU c4 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de00c5, "GPU c5 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de8001, "MCP73 HDMI",     patch_nvhdmi_2ch),
+ HDA_CODEC_ENTRY(0x10de8067, "MCP67/68 HDMI",  patch_nvhdmi_2ch),
+ HDA_CODEC_ENTRY(0x67663d82, "Arise 82 HDMI/DP",       patch_gf_hdmi),
diff --git a/queue-6.15/alsa-hda-tegra-add-tegra264-support.patch b/queue-6.15/alsa-hda-tegra-add-tegra264-support.patch
new file mode 100644 (file)
index 0000000..b7ce3d2
--- /dev/null
@@ -0,0 +1,161 @@
+From 1c4193917eb3279788968639f24d72ffeebdec6b Mon Sep 17 00:00:00 2001
+From: Mohan Kumar D <mkumard@nvidia.com>
+Date: Mon, 12 May 2025 06:42:58 +0000
+Subject: ALSA: hda/tegra: Add Tegra264 support
+
+From: Mohan Kumar D <mkumard@nvidia.com>
+
+commit 1c4193917eb3279788968639f24d72ffeebdec6b upstream.
+
+Update HDA driver to support Tegra264 differences from legacy HDA,
+which includes: clocks/resets, always power on, and hardware-managed
+FPCI/IPFS initialization. The driver retrieves this chip-specific
+information from soc_data.
+
+Signed-off-by: Mohan Kumar D <mkumard@nvidia.com>
+Signed-off-by: Sheetal <sheetal@nvidia.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Link: https://patch.msgid.link/20250512064258.1028331-4-sheetal@nvidia.com
+Stable-dep-of: e0a911ac8685 ("ALSA: hda: Add missing NVIDIA HDA codec IDs")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/pci/hda/hda_tegra.c  |   51 +++++++++++++++++++++++++++++++++++++++------
+ sound/pci/hda/patch_hdmi.c |    1 
+ 2 files changed, 46 insertions(+), 6 deletions(-)
+
+--- a/sound/pci/hda/hda_tegra.c
++++ b/sound/pci/hda/hda_tegra.c
+@@ -72,6 +72,10 @@
+ struct hda_tegra_soc {
+       bool has_hda2codec_2x_reset;
+       bool has_hda2hdmi;
++      bool has_hda2codec_2x;
++      bool input_stream;
++      bool always_on;
++      bool requires_init;
+ };
+ struct hda_tegra {
+@@ -187,7 +191,9 @@ static int hda_tegra_runtime_resume(stru
+       if (rc != 0)
+               return rc;
+       if (chip->running) {
+-              hda_tegra_init(hda);
++              if (hda->soc->requires_init)
++                      hda_tegra_init(hda);
++
+               azx_init_chip(chip, 1);
+               /* disable controller wake up event*/
+               azx_writew(chip, WAKEEN, azx_readw(chip, WAKEEN) &
+@@ -250,7 +256,8 @@ static int hda_tegra_init_chip(struct az
+       bus->remap_addr = hda->regs + HDA_BAR0;
+       bus->addr = res->start + HDA_BAR0;
+-      hda_tegra_init(hda);
++      if (hda->soc->requires_init)
++              hda_tegra_init(hda);
+       return 0;
+ }
+@@ -323,7 +330,7 @@ static int hda_tegra_first_init(struct a
+        * starts with offset 0 which is wrong as HW register for output stream
+        * offset starts with 4.
+        */
+-      if (of_device_is_compatible(np, "nvidia,tegra234-hda"))
++      if (!hda->soc->input_stream)
+               chip->capture_streams = 4;
+       chip->playback_streams = (gcap >> 12) & 0x0f;
+@@ -419,7 +426,6 @@ static int hda_tegra_create(struct snd_c
+       chip->driver_caps = driver_caps;
+       chip->driver_type = driver_caps & 0xff;
+       chip->dev_index = 0;
+-      chip->jackpoll_interval = msecs_to_jiffies(5000);
+       INIT_LIST_HEAD(&chip->pcm_list);
+       chip->codec_probe_mask = -1;
+@@ -436,7 +442,16 @@ static int hda_tegra_create(struct snd_c
+       chip->bus.core.sync_write = 0;
+       chip->bus.core.needs_damn_long_delay = 1;
+       chip->bus.core.aligned_mmio = 1;
+-      chip->bus.jackpoll_in_suspend = 1;
++
++      /*
++       * HDA power domain and clocks are always on for Tegra264 and
++       * the jack detection logic would work always, so no need of
++       * jack polling mechanism running.
++       */
++      if (!hda->soc->always_on) {
++              chip->jackpoll_interval = msecs_to_jiffies(5000);
++              chip->bus.jackpoll_in_suspend = 1;
++      }
+       err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
+       if (err < 0) {
+@@ -450,22 +465,44 @@ static int hda_tegra_create(struct snd_c
+ static const struct hda_tegra_soc tegra30_data = {
+       .has_hda2codec_2x_reset = true,
+       .has_hda2hdmi = true,
++      .has_hda2codec_2x = true,
++      .input_stream = true,
++      .always_on = false,
++      .requires_init = true,
+ };
+ static const struct hda_tegra_soc tegra194_data = {
+       .has_hda2codec_2x_reset = false,
+       .has_hda2hdmi = true,
++      .has_hda2codec_2x = true,
++      .input_stream = true,
++      .always_on = false,
++      .requires_init = true,
+ };
+ static const struct hda_tegra_soc tegra234_data = {
+       .has_hda2codec_2x_reset = true,
+       .has_hda2hdmi = false,
++      .has_hda2codec_2x = true,
++      .input_stream = false,
++      .always_on = false,
++      .requires_init = true,
++};
++
++static const struct hda_tegra_soc tegra264_data = {
++      .has_hda2codec_2x_reset = true,
++      .has_hda2hdmi = false,
++      .has_hda2codec_2x = false,
++      .input_stream = false,
++      .always_on = true,
++      .requires_init = false,
+ };
+ static const struct of_device_id hda_tegra_match[] = {
+       { .compatible = "nvidia,tegra30-hda", .data = &tegra30_data },
+       { .compatible = "nvidia,tegra194-hda", .data = &tegra194_data },
+       { .compatible = "nvidia,tegra234-hda", .data = &tegra234_data },
++      { .compatible = "nvidia,tegra264-hda", .data = &tegra264_data },
+       {},
+ };
+ MODULE_DEVICE_TABLE(of, hda_tegra_match);
+@@ -520,7 +557,9 @@ static int hda_tegra_probe(struct platfo
+       hda->clocks[hda->nclocks++].id = "hda";
+       if (hda->soc->has_hda2hdmi)
+               hda->clocks[hda->nclocks++].id = "hda2hdmi";
+-      hda->clocks[hda->nclocks++].id = "hda2codec_2x";
++
++      if (hda->soc->has_hda2codec_2x)
++              hda->clocks[hda->nclocks++].id = "hda2codec_2x";
+       err = devm_clk_bulk_get(&pdev->dev, hda->nclocks, hda->clocks);
+       if (err < 0)
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -4551,6 +4551,7 @@ HDA_CODEC_ENTRY(0x10de002e, "Tegra186 HD
+ HDA_CODEC_ENTRY(0x10de002f, "Tegra194 HDMI/DP2", patch_tegra_hdmi),
+ HDA_CODEC_ENTRY(0x10de0030, "Tegra194 HDMI/DP3", patch_tegra_hdmi),
+ HDA_CODEC_ENTRY(0x10de0031, "Tegra234 HDMI/DP", patch_tegra234_hdmi),
++HDA_CODEC_ENTRY(0x10de0034, "Tegra264 HDMI/DP",       patch_tegra234_hdmi),
+ HDA_CODEC_ENTRY(0x10de0040, "GPU 40 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0041, "GPU 41 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0042, "GPU 42 HDMI/DP", patch_nvhdmi),
index 96c012842b5eecd3ba61770b8dbf879fcaf62637..d841b5236071588c9fb4a1a55d607cc8046e411f 100644 (file)
@@ -88,3 +88,5 @@ usb-typec-tcpm-allow-to-use-sink-in-accessory-mode.patch
 usb-typec-tcpm-allow-switching-to-mode-accessory-to-mux-properly.patch
 usb-typec-tcpm-apply-vbus-before-data-bringup-in-tcpm_src_attach.patch
 spi-cadence-quadspi-fix-cleanup-of-rx_chan-on-failure-paths.patch
+alsa-hda-tegra-add-tegra264-support.patch
+alsa-hda-add-missing-nvidia-hda-codec-ids.patch