|
@@ -5838,41 +5838,17 @@ static int fotg210_hcd_probe(struct platform_device *pdev)
|
|
goto fail_create_hcd;
|
|
goto fail_create_hcd;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ hcd->has_tt = 1;
|
|
|
|
+
|
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
- if (!res) {
|
|
|
|
- dev_err(dev,
|
|
|
|
- "Found HC with no register addr. Check %s setup!\n",
|
|
|
|
- dev_name(dev));
|
|
|
|
- retval = -ENODEV;
|
|
|
|
- goto fail_request_resource;
|
|
|
|
|
|
+ hcd->regs = devm_ioremap_resource(&pdev->dev, res);
|
|
|
|
+ if (IS_ERR(hcd->regs)) {
|
|
|
|
+ retval = PTR_ERR(hcd->regs);
|
|
|
|
+ goto failed;
|
|
}
|
|
}
|
|
|
|
|
|
hcd->rsrc_start = res->start;
|
|
hcd->rsrc_start = res->start;
|
|
hcd->rsrc_len = resource_size(res);
|
|
hcd->rsrc_len = resource_size(res);
|
|
- hcd->has_tt = 1;
|
|
|
|
-
|
|
|
|
- if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len,
|
|
|
|
- fotg210_fotg210_hc_driver.description)) {
|
|
|
|
- dev_dbg(dev, "controller already in use\n");
|
|
|
|
- retval = -EBUSY;
|
|
|
|
- goto fail_request_resource;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- res = platform_get_resource(pdev, IORESOURCE_IO, 0);
|
|
|
|
- if (!res) {
|
|
|
|
- dev_err(dev,
|
|
|
|
- "Found HC with no register addr. Check %s setup!\n",
|
|
|
|
- dev_name(dev));
|
|
|
|
- retval = -ENODEV;
|
|
|
|
- goto fail_request_resource;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- hcd->regs = ioremap_nocache(res->start, resource_size(res));
|
|
|
|
- if (hcd->regs == NULL) {
|
|
|
|
- dev_dbg(dev, "error mapping memory\n");
|
|
|
|
- retval = -EFAULT;
|
|
|
|
- goto fail_ioremap;
|
|
|
|
- }
|
|
|
|
|
|
|
|
fotg210 = hcd_to_fotg210(hcd);
|
|
fotg210 = hcd_to_fotg210(hcd);
|
|
|
|
|
|
@@ -5880,24 +5856,20 @@ static int fotg210_hcd_probe(struct platform_device *pdev)
|
|
|
|
|
|
retval = fotg210_setup(hcd);
|
|
retval = fotg210_setup(hcd);
|
|
if (retval)
|
|
if (retval)
|
|
- goto fail_add_hcd;
|
|
|
|
|
|
+ goto failed;
|
|
|
|
|
|
fotg210_init(fotg210);
|
|
fotg210_init(fotg210);
|
|
|
|
|
|
retval = usb_add_hcd(hcd, irq, IRQF_SHARED);
|
|
retval = usb_add_hcd(hcd, irq, IRQF_SHARED);
|
|
if (retval) {
|
|
if (retval) {
|
|
dev_err(dev, "failed to add hcd with err %d\n", retval);
|
|
dev_err(dev, "failed to add hcd with err %d\n", retval);
|
|
- goto fail_add_hcd;
|
|
|
|
|
|
+ goto failed;
|
|
}
|
|
}
|
|
device_wakeup_enable(hcd->self.controller);
|
|
device_wakeup_enable(hcd->self.controller);
|
|
|
|
|
|
return retval;
|
|
return retval;
|
|
|
|
|
|
-fail_add_hcd:
|
|
|
|
- iounmap(hcd->regs);
|
|
|
|
-fail_ioremap:
|
|
|
|
- release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
|
|
|
|
-fail_request_resource:
|
|
|
|
|
|
+failed:
|
|
usb_put_hcd(hcd);
|
|
usb_put_hcd(hcd);
|
|
fail_create_hcd:
|
|
fail_create_hcd:
|
|
dev_err(dev, "init %s fail, %d\n", dev_name(dev), retval);
|
|
dev_err(dev, "init %s fail, %d\n", dev_name(dev), retval);
|
|
@@ -5918,8 +5890,6 @@ static int fotg210_hcd_remove(struct platform_device *pdev)
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
usb_remove_hcd(hcd);
|
|
usb_remove_hcd(hcd);
|
|
- iounmap(hcd->regs);
|
|
|
|
- release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
|
|
|
|
usb_put_hcd(hcd);
|
|
usb_put_hcd(hcd);
|
|
|
|
|
|
return 0;
|
|
return 0;
|