diff options
Diffstat (limited to 'drivers/usb/host/uhci-grlib.c')
| -rw-r--r-- | drivers/usb/host/uhci-grlib.c | 31 | 
1 files changed, 9 insertions, 22 deletions
diff --git a/drivers/usb/host/uhci-grlib.c b/drivers/usb/host/uhci-grlib.c index ab25dc397e8b..05f57ffdf9ab 100644 --- a/drivers/usb/host/uhci-grlib.c +++ b/drivers/usb/host/uhci-grlib.c @@ -17,6 +17,7 @@   * (C) Copyright 2004-2007 Alan Stern, [email protected]   */ +#include <linux/device.h>  #include <linux/of_irq.h>  #include <linux/of_address.h>  #include <linux/of_platform.h> @@ -113,24 +114,17 @@ static int uhci_hcd_grlib_probe(struct platform_device *op)  	hcd->rsrc_start = res.start;  	hcd->rsrc_len = resource_size(&res); -	if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) { -		printk(KERN_ERR "%s: request_mem_region failed\n", __FILE__); -		rv = -EBUSY; -		goto err_rmr; -	} -  	irq = irq_of_parse_and_map(dn, 0);  	if (irq == NO_IRQ) {  		printk(KERN_ERR "%s: irq_of_parse_and_map failed\n", __FILE__);  		rv = -EBUSY; -		goto err_irq; +		goto err_usb;  	} -	hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len); -	if (!hcd->regs) { -		printk(KERN_ERR "%s: ioremap failed\n", __FILE__); -		rv = -ENOMEM; -		goto err_ioremap; +	hcd->regs = devm_ioremap_resource(&op->dev, &res); +	if (IS_ERR(hcd->regs)) { +		rv = PTR_ERR(hcd->regs); +		goto err_irq;  	}  	uhci = hcd_to_uhci(hcd); @@ -139,18 +133,14 @@ static int uhci_hcd_grlib_probe(struct platform_device *op)  	rv = usb_add_hcd(hcd, irq, 0);  	if (rv) -		goto err_uhci; +		goto err_irq;  	device_wakeup_enable(hcd->self.controller);  	return 0; -err_uhci: -	iounmap(hcd->regs); -err_ioremap: -	irq_dispose_mapping(irq);  err_irq: -	release_mem_region(hcd->rsrc_start, hcd->rsrc_len); -err_rmr: +	irq_dispose_mapping(irq); +err_usb:  	usb_put_hcd(hcd);  	return rv; @@ -164,10 +154,7 @@ static int uhci_hcd_grlib_remove(struct platform_device *op)  	usb_remove_hcd(hcd); -	iounmap(hcd->regs);  	irq_dispose_mapping(hcd->irq); -	release_mem_region(hcd->rsrc_start, hcd->rsrc_len); -  	usb_put_hcd(hcd);  	return 0;  |