mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 14:41:39 +00:00
USB: ohci-at91 refcount fix for irq wake enables
The attached patch fixes the unbalanced calls to enable_irq_wake() and disable_irq_wake() in the AT91 USB Host driver. It should resolve these kernel messages: Unbalanced IRQ x wake disable BUG: warning at kernel/irq/manage.c:167/set_irq_wake() (The original code was debugged before a bug in the genirq wakeup irq logic was fixed by adding the IRQ wake enable/disable refcounting. Not all code yet uses the bugfixed model.) Signed-off-by: Andrew Victor <andrew@sanpeople.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
f3f4906516
commit
6dde896e4e
@ -170,7 +170,6 @@ static int usb_hcd_at91_remove(struct usb_hcd *hcd,
|
||||
at91_stop_hc(pdev);
|
||||
iounmap(hcd->regs);
|
||||
release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
|
||||
disable_irq_wake(hcd->irq);
|
||||
|
||||
clk_put(fclk);
|
||||
clk_put(iclk);
|
||||
@ -271,8 +270,6 @@ ohci_hcd_at91_drv_suspend(struct platform_device *pdev, pm_message_t mesg)
|
||||
|
||||
if (device_may_wakeup(&pdev->dev))
|
||||
enable_irq_wake(hcd->irq);
|
||||
else
|
||||
disable_irq_wake(hcd->irq);
|
||||
|
||||
/*
|
||||
* The integrated transceivers seem unable to notice disconnect,
|
||||
@ -293,6 +290,11 @@ ohci_hcd_at91_drv_suspend(struct platform_device *pdev, pm_message_t mesg)
|
||||
|
||||
static int ohci_hcd_at91_drv_resume(struct platform_device *pdev)
|
||||
{
|
||||
struct usb_hcd *hcd = platform_get_drvdata(pdev);
|
||||
|
||||
if (device_may_wakeup(&pdev->dev))
|
||||
disable_irq_wake(hcd->irq);
|
||||
|
||||
if (!clocked) {
|
||||
clk_enable(iclk);
|
||||
clk_enable(fclk);
|
||||
|
Loading…
Reference in New Issue
Block a user