ASoC: Intel: Skylake: enable interrupt as wake source in active suspend
authorJeeja KP <jeeja.kp@intel.com>
Fri, 18 Dec 2015 09:42:06 +0000 (15:12 +0530)
committerMark Brown <broonie@kernel.org>
Sun, 10 Jan 2016 12:19:03 +0000 (12:19 +0000)
In active suspend, any HDA interrupt should wake the system. When device
enters active suspend, we need to enable HDA controller interrupt as wake
source. Similarly disable HDA controller interrupt as wake source when
exiting active suspend.

Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/skylake/skl.c

index 80a5f6456acaecad4ea6e1e4c2f1f08eac25b99d..443a15de94b5fbc3813f126da74e4bb3781f6e15 100644 (file)
@@ -218,6 +218,7 @@ static int skl_suspend(struct device *dev)
        struct pci_dev *pci = to_pci_dev(dev);
        struct hdac_ext_bus *ebus = pci_get_drvdata(pci);
        struct skl *skl  = ebus_to_skl(ebus);
+       struct hdac_bus *bus = ebus_to_hbus(ebus);
 
        /*
         * Do not suspend if streams which are marked ignore suspend are
@@ -225,6 +226,7 @@ static int skl_suspend(struct device *dev)
         */
        if (skl->supend_active) {
                snd_hdac_ext_bus_link_power_down_all(ebus);
+               enable_irq_wake(bus->irq);
                pci_save_state(pci);
                pci_disable_device(pci);
                return 0;
@@ -238,6 +240,7 @@ static int skl_resume(struct device *dev)
        struct pci_dev *pci = to_pci_dev(dev);
        struct hdac_ext_bus *ebus = pci_get_drvdata(pci);
        struct skl *skl  = ebus_to_skl(ebus);
+       struct hdac_bus *bus = ebus_to_hbus(ebus);
        int ret;
 
        /*
@@ -248,6 +251,7 @@ static int skl_resume(struct device *dev)
                pci_restore_state(pci);
                ret = pci_enable_device(pci);
                snd_hdac_ext_bus_link_power_up_all(ebus);
+               disable_irq_wake(bus->irq);
        } else {
                ret = _skl_resume(ebus);
        }