提交 2a1e3b93 编写于 作者: E Even Xu 提交者: Jiri Kosina

HID: intel-ish-hid: Fix driver reinit failure

When built as a module, modprobe followed by rmmod can fail because
DMA was still active. So to fix this, DMA needs to be disabled during
module exit.

This change disables DMA during modules exit and change the ISH PCI
device status to D3.
Signed-off-by: NEven Xu <even.xu@intel.com>
Acked-by: NSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: NJiri Kosina <jkosina@suse.cz>
上级 8b2979fe
......@@ -905,6 +905,21 @@ struct ishtp_device *ish_dev_init(struct pci_dev *pdev)
*/
void ish_device_disable(struct ishtp_device *dev)
{
struct pci_dev *pdev = dev->pdev;
if (!pdev)
return;
/* Disable dma communication between FW and host */
if (ish_disable_dma(dev)) {
dev_err(&pdev->dev,
"Can't reset - stuck with DMA in-progress\n");
return;
}
/* Put ISH to D3hot state for power saving */
pci_set_power_state(pdev, PCI_D3hot);
dev->dev_state = ISHTP_DEV_DISABLED;
ish_clr_host_rdy(dev);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册