|
@@ -90,6 +90,8 @@ enum {
|
|
|
#define NVIDIA_HDA_ENABLE_COHBIT 0x01
|
|
|
|
|
|
/* Defines for Intel SCH HDA snoop control */
|
|
|
+#define INTEL_HDA_CGCTL 0x48
|
|
|
+#define INTEL_HDA_CGCTL_MISCBDCGE (0x1 << 6)
|
|
|
#define INTEL_SCH_HDA_DEVC 0x78
|
|
|
#define INTEL_SCH_HDA_DEVC_NOSNOOP (0x1<<11)
|
|
|
|
|
@@ -534,10 +536,21 @@ static void hda_intel_init_chip(struct azx *chip, bool full_reset)
|
|
|
{
|
|
|
struct hdac_bus *bus = azx_bus(chip);
|
|
|
struct pci_dev *pci = chip->pci;
|
|
|
+ u32 val;
|
|
|
|
|
|
if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL)
|
|
|
snd_hdac_set_codec_wakeup(bus, true);
|
|
|
+ if (IS_BROXTON(pci)) {
|
|
|
+ pci_read_config_dword(pci, INTEL_HDA_CGCTL, &val);
|
|
|
+ val = val & ~INTEL_HDA_CGCTL_MISCBDCGE;
|
|
|
+ pci_write_config_dword(pci, INTEL_HDA_CGCTL, val);
|
|
|
+ }
|
|
|
azx_init_chip(chip, full_reset);
|
|
|
+ if (IS_BROXTON(pci)) {
|
|
|
+ pci_read_config_dword(pci, INTEL_HDA_CGCTL, &val);
|
|
|
+ val = val | INTEL_HDA_CGCTL_MISCBDCGE;
|
|
|
+ pci_write_config_dword(pci, INTEL_HDA_CGCTL, val);
|
|
|
+ }
|
|
|
if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL)
|
|
|
snd_hdac_set_codec_wakeup(bus, false);
|
|
|
|