Patch "ALSA: hda: Keep the controller initialization even if no codecs found" has been added to the 4.19-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ALSA: hda: Keep the controller initialization even if no codecs found

to the 4.19-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     alsa-hda-keep-the-controller-initialization-even-if-.patch
and it can be found in the queue-4.19 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit fa780ca5102a73df3dfdc7e4e67b9c6f67c2753f
Author: Takashi Iwai <tiwai@xxxxxxx>
Date:   Mon Apr 13 10:20:32 2020 +0200

    ALSA: hda: Keep the controller initialization even if no codecs found
    
    [ Upstream commit 9479e75fca370a5220784f7596bf598c4dad0b9b ]
    
    Currently, when the HD-audio controller driver doesn't detect any
    codecs, it tries to abort the probe.  But this abort happens at the
    delayed probe, i.e. the primary probe call already returned success,
    hence the driver is never unbound until user does so explicitly.
    As a result, it may leave the HD-audio device in the running state
    without the runtime PM.  More badly, if the device is a HD-audio bus
    that is tied with a GPU, GPU cannot reach to the full power down and
    consumes unnecessarily much power.
    
    This patch changes the logic after no-codec situation; it continues
    probing without the further codec initialization but keep the
    controller driver running normally.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=207043
    Tested-by: Roy Spliet <nouveau@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20200413082034.25166-5-tiwai@xxxxxxx
    Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 0502042c16163..72c268e887e55 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -2054,7 +2054,7 @@ static int azx_first_init(struct azx *chip)
 	/* codec detection */
 	if (!azx_bus(chip)->codec_mask) {
 		dev_err(card->dev, "no codecs found!\n");
-		return -ENODEV;
+		/* keep running the rest for the runtime PM */
 	}
 
 	if (azx_acquire_irq(chip, 0) < 0)
@@ -2440,9 +2440,11 @@ static int azx_probe_continue(struct azx *chip)
 #endif
 
 	/* create codec instances */
-	err = azx_probe_codecs(chip, azx_max_codecs[chip->driver_type]);
-	if (err < 0)
-		goto out_free;
+	if (bus->codec_mask) {
+		err = azx_probe_codecs(chip, azx_max_codecs[chip->driver_type]);
+		if (err < 0)
+			goto out_free;
+	}
 
 #ifdef CONFIG_SND_HDA_PATCH_LOADER
 	if (chip->fw) {
@@ -2456,7 +2458,7 @@ static int azx_probe_continue(struct azx *chip)
 #endif
 	}
 #endif
-	if ((probe_only[dev] & 1) == 0) {
+	if (bus->codec_mask && !(probe_only[dev] & 1)) {
 		err = azx_codec_configure(chip);
 		if (err < 0)
 			goto out_free;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux