Loading drivers/hid/intel-ish-hid/ipc/pci-ish.c +11 −5 Original line number Diff line number Diff line Loading @@ -106,6 +106,11 @@ static inline bool ish_should_enter_d0i3(struct pci_dev *pdev) return !pm_suspend_via_firmware() || pdev->device == CHV_DEVICE_ID; } static inline bool ish_should_leave_d0i3(struct pci_dev *pdev) { return !pm_resume_via_firmware() || pdev->device == CHV_DEVICE_ID; } /** * ish_probe() - PCI driver probe callback * @pdev: pci device Loading Loading @@ -215,9 +220,7 @@ static void __maybe_unused ish_resume_handler(struct work_struct *work) struct ishtp_device *dev = pci_get_drvdata(pdev); int ret; /* Check the NO_D3 flag to distinguish the resume paths */ if (pdev->dev_flags & PCI_DEV_FLAGS_NO_D3) { pdev->dev_flags &= ~PCI_DEV_FLAGS_NO_D3; if (ish_should_leave_d0i3(pdev) && !dev->suspend_flag) { disable_irq_wake(pdev->irq); ishtp_send_resume(dev); Loading Loading @@ -281,8 +284,11 @@ static int __maybe_unused ish_suspend(struct device *device) */ ish_disable_dma(dev); } else { /* Set the NO_D3 flag, the ISH would enter D0i3 */ pdev->dev_flags |= PCI_DEV_FLAGS_NO_D3; /* * Save state so PCI core will keep the device at D0, * the ISH would enter D0i3 */ pci_save_state(pdev); enable_irq_wake(pdev->irq); } Loading Loading
drivers/hid/intel-ish-hid/ipc/pci-ish.c +11 −5 Original line number Diff line number Diff line Loading @@ -106,6 +106,11 @@ static inline bool ish_should_enter_d0i3(struct pci_dev *pdev) return !pm_suspend_via_firmware() || pdev->device == CHV_DEVICE_ID; } static inline bool ish_should_leave_d0i3(struct pci_dev *pdev) { return !pm_resume_via_firmware() || pdev->device == CHV_DEVICE_ID; } /** * ish_probe() - PCI driver probe callback * @pdev: pci device Loading Loading @@ -215,9 +220,7 @@ static void __maybe_unused ish_resume_handler(struct work_struct *work) struct ishtp_device *dev = pci_get_drvdata(pdev); int ret; /* Check the NO_D3 flag to distinguish the resume paths */ if (pdev->dev_flags & PCI_DEV_FLAGS_NO_D3) { pdev->dev_flags &= ~PCI_DEV_FLAGS_NO_D3; if (ish_should_leave_d0i3(pdev) && !dev->suspend_flag) { disable_irq_wake(pdev->irq); ishtp_send_resume(dev); Loading Loading @@ -281,8 +284,11 @@ static int __maybe_unused ish_suspend(struct device *device) */ ish_disable_dma(dev); } else { /* Set the NO_D3 flag, the ISH would enter D0i3 */ pdev->dev_flags |= PCI_DEV_FLAGS_NO_D3; /* * Save state so PCI core will keep the device at D0, * the ISH would enter D0i3 */ pci_save_state(pdev); enable_irq_wake(pdev->irq); } Loading