Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 267387
b: refs/heads/master
c: 4f61a7a
h: refs/heads/master
i:
  267385: ffa31de
  267383: 31b2eb0
v: v3
  • Loading branch information
Tomas Winkler authored and Greg Kroah-Hartman committed Aug 23, 2011
1 parent 75ec1c2 commit 7accef1
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b4f6209d733b6570947507a18f76def6e16393cb
refs/heads/master: 4f61a7ad939861d540cab6749ba3b84861c34573
6 changes: 6 additions & 0 deletions trunk/drivers/staging/mei/interrupt.c
Original file line number Diff line number Diff line change
Expand Up @@ -1540,6 +1540,12 @@ irqreturn_t mei_interrupt_thread_handler(int irq, void *dev_id)
mutex_lock(&dev->device_lock);
mei_io_list_init(&complete_list);
dev->host_hw_state = mei_hcsr_read(dev);

/* Ack the interrupt here
* In case of MSI we don't go throuhg the quick handler */
if (pci_dev_msi_enabled(dev->pdev))
mei_reg_write(dev, H_CSR, dev->host_hw_state);

dev->me_hw_state = mei_mecsr_read(dev);

/* check if ME wants a reset */
Expand Down
30 changes: 25 additions & 5 deletions trunk/drivers/staging/mei/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -151,11 +151,20 @@ static int __devinit mei_probe(struct pci_dev *pdev,
err = -ENOMEM;
goto free_device;
}
/* request and enable interrupt */
err = request_threaded_irq(pdev->irq,
pci_enable_msi(pdev);

/* request and enable interrupt */
if (pci_dev_msi_enabled(pdev))
err = request_threaded_irq(pdev->irq,
NULL,
mei_interrupt_thread_handler,
0, mei_driver_name, dev);
else
err = request_threaded_irq(pdev->irq,
mei_interrupt_quick_handler,
mei_interrupt_thread_handler,
IRQF_SHARED, mei_driver_name, dev);

if (err) {
printk(KERN_ERR "mei: request_threaded_irq failure. irq = %d\n",
pdev->irq);
Expand Down Expand Up @@ -183,6 +192,7 @@ static int __devinit mei_probe(struct pci_dev *pdev,
mei_disable_interrupts(dev);
flush_scheduled_work();
free_irq(pdev->irq, dev);
pci_disable_msi(pdev);
unmap_memory:
pci_iounmap(pdev, dev->mem_addr);
free_device:
Expand Down Expand Up @@ -247,6 +257,7 @@ static void __devexit mei_remove(struct pci_dev *pdev)
mei_disable_interrupts(dev);

free_irq(pdev->irq, dev);
pci_disable_msi(pdev);
pci_set_drvdata(pdev, NULL);

if (dev->mem_addr)
Expand Down Expand Up @@ -1096,7 +1107,7 @@ static int mei_pci_suspend(struct device *device)
mutex_unlock(&dev->device_lock);

free_irq(pdev->irq, dev);

pci_disable_msi(pdev);

return err;
}
Expand All @@ -1111,11 +1122,20 @@ static int mei_pci_resume(struct device *device)
if (!dev)
return -ENODEV;

/* request and enable interrupt */
err = request_threaded_irq(pdev->irq,
pci_enable_msi(pdev);

/* request and enable interrupt */
if (pci_dev_msi_enabled(pdev))
err = request_threaded_irq(pdev->irq,
NULL,
mei_interrupt_thread_handler,
0, mei_driver_name, dev);
else
err = request_threaded_irq(pdev->irq,
mei_interrupt_quick_handler,
mei_interrupt_thread_handler,
IRQF_SHARED, mei_driver_name, dev);

if (err) {
printk(KERN_ERR "mei: Request_irq failure. irq = %d\n",
pdev->irq);
Expand Down

0 comments on commit 7accef1

Please sign in to comment.