Skip to content
Snippets Groups Projects
Commit 2a1e3b93 authored by Even Xu's avatar Even Xu Committed by Jiri Kosina
Browse files

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: default avatarEven Xu <even.xu@intel.com>
Acked-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 8b2979fe
No related branches found
No related tags found
No related merge requests found
......@@ -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);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment