ALSA: hda – Force polling mode on CNL for fixing codec communication [Linux 4.14.129]

ALSA: hda – Force polling mode on CNL for fixing codec communication [Linux 4.14.129]

This Linux kernel change "ALSA: hda – Force polling mode on CNL for fixing codec communication" is included in the Linux 4.14.129 release. This change is authored by Bard Liao <yung-chuan.liao [at] linux.intel.com> on Mon May 27 00:58:32 2019 +0800. The commit for this change in Linux stable tree is 08c34c3 (patch) which is from upstream commit fa763f1. The same Linux upstream change may have been applied to various maintained Linux releases and you can find all Linux releases containing changes from upstream fa763f1.

ALSA: hda - Force polling mode on CNL for fixing codec communication

[ Upstream commit fa763f1b2858752e6150ffff46886a1b7faffc82 ]

We observed the same issue as reported by commit a8d7bde23e7130686b7662
("ALSA: hda - Force polling mode on CFL for fixing codec communication")
We don't have a better solution. So apply the same workaround to CNL.

Signed-off-by: Bard Liao <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>

There are 5 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 sound/pci/hda/hda_intel.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 65fb1e7..d349f69 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -376,6 +376,7 @@ enum {

 #define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98)
 #define IS_CFL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa348)
+#define IS_CNL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9dc8)

 static char *driver_short_names[] = {
    [AZX_DRIVER_ICH] = "HDA Intel",
@@ -1751,8 +1752,8 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci,
    else
        chip->bdl_pos_adj = bdl_pos_adj[dev];

-   /* Workaround for a communication error on CFL (bko#199007) */
-   if (IS_CFL(pci))
+   /* Workaround for a communication error on CFL (bko#199007) and CNL */
+   if (IS_CFL(pci) || IS_CNL(pci))
        chip->polling_mode = 1;

    err = azx_bus_init(chip, model[dev], &pci_hda_io_ops);

Leave a Reply

Your email address will not be published. Required fields are marked *