diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/usb/host/isp116x-hcd.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/usb/host/isp116x-hcd.c b/drivers/usb/host/isp116x-hcd.c index 69e7433d9ce8..1183988fdf54 100644 --- a/drivers/usb/host/isp116x-hcd.c +++ b/drivers/usb/host/isp116x-hcd.c | |||
@@ -1501,6 +1501,12 @@ static int isp116x_reset(struct usb_hcd *hcd) | |||
1501 | } | 1501 | } |
1502 | if (!clkrdy) { | 1502 | if (!clkrdy) { |
1503 | ERR("Clock not ready after 20ms\n"); | 1503 | ERR("Clock not ready after 20ms\n"); |
1504 | /* After sw_reset the clock won't report to be ready, if | ||
1505 | H_WAKEUP pin is high. */ | ||
1506 | if (!isp116x->board || !isp116x->board->reset) | ||
1507 | ERR("The driver does not support hardware wakeup.\n"); | ||
1508 | ERR("Please make sure that the H_WAKEUP pin " | ||
1509 | "is pulled low!\n"); | ||
1504 | ret = -ENODEV; | 1510 | ret = -ENODEV; |
1505 | } | 1511 | } |
1506 | return ret; | 1512 | return ret; |
@@ -1678,10 +1684,13 @@ static struct hc_driver isp116x_hc_driver = { | |||
1678 | static int __init_or_module isp116x_remove(struct device *dev) | 1684 | static int __init_or_module isp116x_remove(struct device *dev) |
1679 | { | 1685 | { |
1680 | struct usb_hcd *hcd = dev_get_drvdata(dev); | 1686 | struct usb_hcd *hcd = dev_get_drvdata(dev); |
1681 | struct isp116x *isp116x = hcd_to_isp116x(hcd); | 1687 | struct isp116x *isp116x; |
1682 | struct platform_device *pdev; | 1688 | struct platform_device *pdev; |
1683 | struct resource *res; | 1689 | struct resource *res; |
1684 | 1690 | ||
1691 | if(!hcd) | ||
1692 | return 0; | ||
1693 | isp116x = hcd_to_isp116x(hcd); | ||
1685 | pdev = container_of(dev, struct platform_device, dev); | 1694 | pdev = container_of(dev, struct platform_device, dev); |
1686 | remove_debug_file(isp116x); | 1695 | remove_debug_file(isp116x); |
1687 | usb_remove_hcd(hcd); | 1696 | usb_remove_hcd(hcd); |