diff options
author | Chuansheng Liu <chuansheng.liu@intel.com> | 2012-09-11 04:00:30 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-09-10 23:22:35 -0400 |
commit | 73d4066055e0e2830533041f4b91df8e6e5976ff (patch) | |
tree | ac6d996069c1c0afc65abe0404427d6ffbfa5fb5 /drivers/usb | |
parent | ca3c1539adfe9c1b86f16faf314b3bf54c3b5389 (diff) |
USB/host: Cleanup unneccessary irq disable code
Because the IRQF_DISABLED as the flag is now a NOOP and has been
deprecated and in hardirq context the interrupt is disabled.
so in usb/host code:
Removing the usage of flag IRQF_DISABLED;
Removing the calling local_irq save/restore actions in irq
handler usb_hcd_irq();
Signed-off-by: liu chuansheng <chuansheng.liu@intel.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/core/hcd.c | 16 | ||||
-rw-r--r-- | drivers/usb/host/ehci-ls1x.c | 2 | ||||
-rw-r--r-- | drivers/usb/host/ohci-xls.c | 2 |
3 files changed, 2 insertions, 18 deletions
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index 6e4fd28bc242..35b52f6e1c5e 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c | |||
@@ -2153,15 +2153,8 @@ EXPORT_SYMBOL_GPL(usb_bus_start_enum); | |||
2153 | irqreturn_t usb_hcd_irq (int irq, void *__hcd) | 2153 | irqreturn_t usb_hcd_irq (int irq, void *__hcd) |
2154 | { | 2154 | { |
2155 | struct usb_hcd *hcd = __hcd; | 2155 | struct usb_hcd *hcd = __hcd; |
2156 | unsigned long flags; | ||
2157 | irqreturn_t rc; | 2156 | irqreturn_t rc; |
2158 | 2157 | ||
2159 | /* IRQF_DISABLED doesn't work correctly with shared IRQs | ||
2160 | * when the first handler doesn't use it. So let's just | ||
2161 | * assume it's never used. | ||
2162 | */ | ||
2163 | local_irq_save(flags); | ||
2164 | |||
2165 | if (unlikely(HCD_DEAD(hcd) || !HCD_HW_ACCESSIBLE(hcd))) | 2158 | if (unlikely(HCD_DEAD(hcd) || !HCD_HW_ACCESSIBLE(hcd))) |
2166 | rc = IRQ_NONE; | 2159 | rc = IRQ_NONE; |
2167 | else if (hcd->driver->irq(hcd) == IRQ_NONE) | 2160 | else if (hcd->driver->irq(hcd) == IRQ_NONE) |
@@ -2169,7 +2162,6 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd) | |||
2169 | else | 2162 | else |
2170 | rc = IRQ_HANDLED; | 2163 | rc = IRQ_HANDLED; |
2171 | 2164 | ||
2172 | local_irq_restore(flags); | ||
2173 | return rc; | 2165 | return rc; |
2174 | } | 2166 | } |
2175 | EXPORT_SYMBOL_GPL(usb_hcd_irq); | 2167 | EXPORT_SYMBOL_GPL(usb_hcd_irq); |
@@ -2357,14 +2349,6 @@ static int usb_hcd_request_irqs(struct usb_hcd *hcd, | |||
2357 | int retval; | 2349 | int retval; |
2358 | 2350 | ||
2359 | if (hcd->driver->irq) { | 2351 | if (hcd->driver->irq) { |
2360 | |||
2361 | /* IRQF_DISABLED doesn't work as advertised when used together | ||
2362 | * with IRQF_SHARED. As usb_hcd_irq() will always disable | ||
2363 | * interrupts we can remove it here. | ||
2364 | */ | ||
2365 | if (irqflags & IRQF_SHARED) | ||
2366 | irqflags &= ~IRQF_DISABLED; | ||
2367 | |||
2368 | snprintf(hcd->irq_descr, sizeof(hcd->irq_descr), "%s:usb%d", | 2352 | snprintf(hcd->irq_descr, sizeof(hcd->irq_descr), "%s:usb%d", |
2369 | hcd->driver->description, hcd->self.busnum); | 2353 | hcd->driver->description, hcd->self.busnum); |
2370 | retval = request_irq(irqnum, &usb_hcd_irq, irqflags, | 2354 | retval = request_irq(irqnum, &usb_hcd_irq, irqflags, |
diff --git a/drivers/usb/host/ehci-ls1x.c b/drivers/usb/host/ehci-ls1x.c index aa0f328922df..ca759652626b 100644 --- a/drivers/usb/host/ehci-ls1x.c +++ b/drivers/usb/host/ehci-ls1x.c | |||
@@ -113,7 +113,7 @@ static int ehci_hcd_ls1x_probe(struct platform_device *pdev) | |||
113 | goto err_put_hcd; | 113 | goto err_put_hcd; |
114 | } | 114 | } |
115 | 115 | ||
116 | ret = usb_add_hcd(hcd, irq, IRQF_DISABLED | IRQF_SHARED); | 116 | ret = usb_add_hcd(hcd, irq, IRQF_SHARED); |
117 | if (ret) | 117 | if (ret) |
118 | goto err_put_hcd; | 118 | goto err_put_hcd; |
119 | 119 | ||
diff --git a/drivers/usb/host/ohci-xls.c b/drivers/usb/host/ohci-xls.c index 41e378f17c66..84201cd1a472 100644 --- a/drivers/usb/host/ohci-xls.c +++ b/drivers/usb/host/ohci-xls.c | |||
@@ -56,7 +56,7 @@ static int ohci_xls_probe_internal(const struct hc_driver *driver, | |||
56 | goto err3; | 56 | goto err3; |
57 | } | 57 | } |
58 | 58 | ||
59 | retval = usb_add_hcd(hcd, irq, IRQF_DISABLED | IRQF_SHARED); | 59 | retval = usb_add_hcd(hcd, irq, IRQF_SHARED); |
60 | if (retval != 0) | 60 | if (retval != 0) |
61 | goto err4; | 61 | goto err4; |
62 | return retval; | 62 | return retval; |