Przeglądaj źródła

[PATCH] USB: net2280: add a shutdown routine

The net2280 board has an annoying habit of surviving soft reboots with
interrupts enabled.  This patch (as674) adds a shutdown routine to the
driver so that the board can be put in a quiescent state.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Alan Stern 19 lat temu
rodzic
commit
2d61bde7a0
1 zmienionych plików z 17 dodań i 0 usunięć
  1. 17 0
      drivers/usb/gadget/net2280.c

+ 17 - 0
drivers/usb/gadget/net2280.c

@@ -2966,6 +2966,22 @@ done:
 	return retval;
 }
 
+/* make sure the board is quiescent; otherwise it will continue
+ * generating IRQs across the upcoming reboot.
+ */
+
+static void net2280_shutdown (struct pci_dev *pdev)
+{
+	struct net2280		*dev = pci_get_drvdata (pdev);
+
+	/* disable IRQs */
+	writel (0, &dev->regs->pciirqenb0);
+	writel (0, &dev->regs->pciirqenb1);
+
+	/* disable the pullup so the host will think we're gone */
+	writel (0, &dev->usb->usbctl);
+}
+
 
 /*-------------------------------------------------------------------------*/
 
@@ -2995,6 +3011,7 @@ static struct pci_driver net2280_pci_driver = {
 
 	.probe =	net2280_probe,
 	.remove =	net2280_remove,
+	.shutdown =	net2280_shutdown,
 
 	/* FIXME add power management support */
 };