aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBard Liao <[email protected]>2019-05-27 00:58:36 +0800
committerTakashi Iwai <[email protected]>2019-05-28 07:52:02 +0200
commit64ca9d9fcb3e3c86b1417e3d17a90b43dd660f81 (patch)
treebc5021411d0fa2138815acf67d4f9ff84064495b
parent5e13cf6cd64c6a4c15a4426e6f1683093a495d9a (diff)
ASoC: SOF: Force polling mode on CFL and CNL
There is a workaround in legacy HDA codec for too long time respone with CFL machine. We need the same workaround on SOF driver. The same issue is also seen on CNL machine. Signed-off-by: Bard Liao <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
-rw-r--r--sound/soc/sof/intel/hda.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sound/soc/sof/intel/hda.c b/sound/soc/sof/intel/hda.c
index 7e3980a2f7ba..ff973e8d054b 100644
--- a/sound/soc/sof/intel/hda.c
+++ b/sound/soc/sof/intel/hda.c
@@ -32,6 +32,9 @@
/* platform specific devices */
#include "shim.h"
+#define IS_CFL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa348)
+#define IS_CNL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9dc8)
+
/*
* Debug
*/
@@ -213,6 +216,11 @@ static int hda_init(struct snd_sof_dev *sdev)
ext_ops = snd_soc_hdac_hda_get_ops();
#endif
sof_hda_bus_init(bus, &pci->dev, ext_ops);
+
+ /* Workaround for a communication error on CFL (bko#199007) and CNL */
+ if (IS_CFL(pci) || IS_CNL(pci))
+ bus->polling_mode = 1;
+
bus->use_posbuf = 1;
bus->bdl_pos_adj = 0;