From 808012837292a2dda0f61fb9781e4902317491e1 Mon Sep 17 00:00:00 2001 From: Alan Stern Date: Thu, 28 Apr 2005 14:51:27 -0400 Subject: [PATCH] --- yaml --- r: 3663 b: refs/heads/master c: 02597d2deec2a3de0e2b52c1f83904b65626a0d5 h: refs/heads/master i: 3661: c2a53a1837a25acb911597821bee1e8a12ed0387 3659: 82ecb2c86e37e9e211e11a722640397d3f7997c0 3655: d92cba7c558141096d7fc31168727ca4852fa3ff 3647: e2b820f9cf78a9cbaf32636591d7fbd52d0c22a9 v: v3 --- [refs] | 2 +- trunk/drivers/usb/host/uhci-hcd.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 00b6ca519dcb..fcfe4c5c4230 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c074b416b94c0aa4a371f24bf6cc13d8cf1fab59 +refs/heads/master: 02597d2deec2a3de0e2b52c1f83904b65626a0d5 diff --git a/trunk/drivers/usb/host/uhci-hcd.c b/trunk/drivers/usb/host/uhci-hcd.c index cec070fa8c83..53ba8a56592e 100644 --- a/trunk/drivers/usb/host/uhci-hcd.c +++ b/trunk/drivers/usb/host/uhci-hcd.c @@ -154,6 +154,7 @@ static void reset_hc(struct uhci_hcd *uhci) /* * Last rites for a defunct/nonfunctional controller + * or one we don't want to use any more. */ static void hc_died(struct uhci_hcd *uhci) { @@ -525,6 +526,20 @@ static int uhci_reset(struct usb_hcd *hcd) return 0; } +/* Make sure the controller is quiescent and that we're not using it + * any more. This is mainly for the benefit of programs which, like kexec, + * expect the hardware to be idle: not doing DMA or generating IRQs. + * + * This routine may be called in a damaged or failing kernel. Hence we + * do not acquire the spinlock before shutting down the controller. + */ +static void uhci_shutdown(struct pci_dev *pdev) +{ + struct usb_hcd *hcd = (struct usb_hcd *) pci_get_drvdata(pdev); + + hc_died(hcd_to_uhci(hcd)); +} + /* * Allocate a frame list, and then setup the skeleton * @@ -939,6 +954,7 @@ static struct pci_driver uhci_pci_driver = { .probe = usb_hcd_pci_probe, .remove = usb_hcd_pci_remove, + .shutdown = uhci_shutdown, #ifdef CONFIG_PM .suspend = usb_hcd_pci_suspend,