diff options
| -rw-r--r-- | drivers/hid/intel-ish-hid/ipc/ipc.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/hid/intel-ish-hid/ipc/ipc.c b/drivers/hid/intel-ish-hid/ipc/ipc.c index 0e0dfa616fab..0c9ac4d5d850 100644 --- a/drivers/hid/intel-ish-hid/ipc/ipc.c +++ b/drivers/hid/intel-ish-hid/ipc/ipc.c | |||
| @@ -905,6 +905,21 @@ struct ishtp_device *ish_dev_init(struct pci_dev *pdev) | |||
| 905 | */ | 905 | */ |
| 906 | void ish_device_disable(struct ishtp_device *dev) | 906 | void ish_device_disable(struct ishtp_device *dev) |
| 907 | { | 907 | { |
| 908 | struct pci_dev *pdev = dev->pdev; | ||
| 909 | |||
| 910 | if (!pdev) | ||
| 911 | return; | ||
| 912 | |||
| 913 | /* Disable dma communication between FW and host */ | ||
| 914 | if (ish_disable_dma(dev)) { | ||
| 915 | dev_err(&pdev->dev, | ||
| 916 | "Can't reset - stuck with DMA in-progress\n"); | ||
| 917 | return; | ||
| 918 | } | ||
| 919 | |||
| 920 | /* Put ISH to D3hot state for power saving */ | ||
| 921 | pci_set_power_state(pdev, PCI_D3hot); | ||
| 922 | |||
| 908 | dev->dev_state = ISHTP_DEV_DISABLED; | 923 | dev->dev_state = ISHTP_DEV_DISABLED; |
| 909 | ish_clr_host_rdy(dev); | 924 | ish_clr_host_rdy(dev); |
| 910 | } | 925 | } |
