aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host
diff options
context:
space:
mode:
authorJingoo Han <jg1.han@samsung.com>2013-12-11 02:23:39 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-12-18 19:35:11 -0500
commit644db16636555b30611b612d5059914147e07042 (patch)
tree3cfeb04e470de3c9efa6f32df6e031da1be14405 /drivers/usb/host
parentc81c3b0115d7d1bd83137eb800ed6c16c86182e2 (diff)
USB: ohci-da8xx: Use devm_*() functions
Use devm_*() functions to make cleanup paths simpler. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/host')
-rw-r--r--drivers/usb/host/ohci-da8xx.c55
1 files changed, 15 insertions, 40 deletions
diff --git a/drivers/usb/host/ohci-da8xx.c b/drivers/usb/host/ohci-da8xx.c
index f0fe0d26314d..df06be6b47f5 100644
--- a/drivers/usb/host/ohci-da8xx.c
+++ b/drivers/usb/host/ohci-da8xx.c
@@ -300,41 +300,28 @@ static int usb_hcd_da8xx_probe(const struct hc_driver *driver,
300 if (hub == NULL) 300 if (hub == NULL)
301 return -ENODEV; 301 return -ENODEV;
302 302
303 usb11_clk = clk_get(&pdev->dev, "usb11"); 303 usb11_clk = devm_clk_get(&pdev->dev, "usb11");
304 if (IS_ERR(usb11_clk)) 304 if (IS_ERR(usb11_clk))
305 return PTR_ERR(usb11_clk); 305 return PTR_ERR(usb11_clk);
306 306
307 usb20_clk = clk_get(&pdev->dev, "usb20"); 307 usb20_clk = devm_clk_get(&pdev->dev, "usb20");
308 if (IS_ERR(usb20_clk)) { 308 if (IS_ERR(usb20_clk))
309 error = PTR_ERR(usb20_clk); 309 return PTR_ERR(usb20_clk);
310 goto err0;
311 }
312 310
313 hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev)); 311 hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev));
314 if (!hcd) { 312 if (!hcd)
315 error = -ENOMEM; 313 return -ENOMEM;
316 goto err1;
317 }
318 314
319 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 315 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
320 if (!mem) { 316 if (!mem)
321 error = -ENODEV; 317 return -ENODEV;
322 goto err2;
323 }
324 hcd->rsrc_start = mem->start; 318 hcd->rsrc_start = mem->start;
325 hcd->rsrc_len = resource_size(mem); 319 hcd->rsrc_len = resource_size(mem);
326 320
327 if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) { 321 hcd->regs = devm_ioremap_resource(&pdev->dev, mem);
328 dev_dbg(&pdev->dev, "request_mem_region failed\n"); 322 if (IS_ERR(hcd->regs)) {
329 error = -EBUSY; 323 error = PTR_ERR(hcd->regs);
330 goto err2; 324 goto err;
331 }
332
333 hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len);
334 if (!hcd->regs) {
335 dev_err(&pdev->dev, "ioremap failed\n");
336 error = -ENOMEM;
337 goto err3;
338 } 325 }
339 326
340 ohci_hcd_init(hcd_to_ohci(hcd)); 327 ohci_hcd_init(hcd_to_ohci(hcd));
@@ -342,11 +329,11 @@ static int usb_hcd_da8xx_probe(const struct hc_driver *driver,
342 irq = platform_get_irq(pdev, 0); 329 irq = platform_get_irq(pdev, 0);
343 if (irq < 0) { 330 if (irq < 0) {
344 error = -ENODEV; 331 error = -ENODEV;
345 goto err4; 332 goto err;
346 } 333 }
347 error = usb_add_hcd(hcd, irq, 0); 334 error = usb_add_hcd(hcd, irq, 0);
348 if (error) 335 if (error)
349 goto err4; 336 goto err;
350 337
351 device_wakeup_enable(hcd->self.controller); 338 device_wakeup_enable(hcd->self.controller);
352 339
@@ -357,16 +344,8 @@ static int usb_hcd_da8xx_probe(const struct hc_driver *driver,
357 } 344 }
358 345
359 usb_remove_hcd(hcd); 346 usb_remove_hcd(hcd);
360err4: 347err:
361 iounmap(hcd->regs);
362err3:
363 release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
364err2:
365 usb_put_hcd(hcd); 348 usb_put_hcd(hcd);
366err1:
367 clk_put(usb20_clk);
368err0:
369 clk_put(usb11_clk);
370 return error; 349 return error;
371} 350}
372 351
@@ -386,11 +365,7 @@ usb_hcd_da8xx_remove(struct usb_hcd *hcd, struct platform_device *pdev)
386 365
387 hub->ocic_notify(NULL); 366 hub->ocic_notify(NULL);
388 usb_remove_hcd(hcd); 367 usb_remove_hcd(hcd);
389 iounmap(hcd->regs);
390 release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
391 usb_put_hcd(hcd); 368 usb_put_hcd(hcd);
392 clk_put(usb20_clk);
393 clk_put(usb11_clk);
394} 369}
395 370
396static int ohci_hcd_da8xx_drv_probe(struct platform_device *dev) 371static int ohci_hcd_da8xx_drv_probe(struct platform_device *dev)