aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ohci-s3c2410.c
diff options
context:
space:
mode:
authorJingoo Han <jg1.han@samsung.com>2012-10-07 22:28:25 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-10-24 17:40:50 -0400
commit801f00633568ed6d5eebef5ef10d8b5661379f2c (patch)
treeed8eeec018bc3f0d46006e8c1e1e7f8b5a599ec6 /drivers/usb/host/ohci-s3c2410.c
parent30b1e495b81321f572020a2f5266ece3ed1a6ecd (diff)
USB: ohci-s3c2410: use devm_ functions
The devm_ functions allocate memory that is released when a driver detaches. This makes the code smaller and a bit simpler. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Acked-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/host/ohci-s3c2410.c')
-rw-r--r--drivers/usb/host/ohci-s3c2410.c32
1 files changed, 8 insertions, 24 deletions
diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c
index 281d5c658e36..e84190f25c6b 100644
--- a/drivers/usb/host/ohci-s3c2410.c
+++ b/drivers/usb/host/ohci-s3c2410.c
@@ -323,8 +323,6 @@ usb_hcd_s3c2410_remove(struct usb_hcd *hcd, struct platform_device *dev)
323{ 323{
324 usb_remove_hcd(hcd); 324 usb_remove_hcd(hcd);
325 s3c2410_stop_hc(dev); 325 s3c2410_stop_hc(dev);
326 iounmap(hcd->regs);
327 release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
328 usb_put_hcd(hcd); 326 usb_put_hcd(hcd);
329} 327}
330 328
@@ -353,35 +351,29 @@ static int usb_hcd_s3c2410_probe(const struct hc_driver *driver,
353 hcd->rsrc_start = dev->resource[0].start; 351 hcd->rsrc_start = dev->resource[0].start;
354 hcd->rsrc_len = resource_size(&dev->resource[0]); 352 hcd->rsrc_len = resource_size(&dev->resource[0]);
355 353
356 if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) { 354 hcd->regs = devm_request_and_ioremap(&dev->dev, &dev->resource[0]);
357 dev_err(&dev->dev, "request_mem_region failed\n"); 355 if (!hcd->regs) {
358 retval = -EBUSY; 356 dev_err(&dev->dev, "devm_request_and_ioremap failed\n");
357 retval = -ENOMEM;
359 goto err_put; 358 goto err_put;
360 } 359 }
361 360
362 clk = clk_get(&dev->dev, "usb-host"); 361 clk = devm_clk_get(&dev->dev, "usb-host");
363 if (IS_ERR(clk)) { 362 if (IS_ERR(clk)) {
364 dev_err(&dev->dev, "cannot get usb-host clock\n"); 363 dev_err(&dev->dev, "cannot get usb-host clock\n");
365 retval = PTR_ERR(clk); 364 retval = PTR_ERR(clk);
366 goto err_mem; 365 goto err_put;
367 } 366 }
368 367
369 usb_clk = clk_get(&dev->dev, "usb-bus-host"); 368 usb_clk = devm_clk_get(&dev->dev, "usb-bus-host");
370 if (IS_ERR(usb_clk)) { 369 if (IS_ERR(usb_clk)) {
371 dev_err(&dev->dev, "cannot get usb-bus-host clock\n"); 370 dev_err(&dev->dev, "cannot get usb-bus-host clock\n");
372 retval = PTR_ERR(usb_clk); 371 retval = PTR_ERR(usb_clk);
373 goto err_clk; 372 goto err_put;
374 } 373 }
375 374
376 s3c2410_start_hc(dev, hcd); 375 s3c2410_start_hc(dev, hcd);
377 376
378 hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len);
379 if (!hcd->regs) {
380 dev_err(&dev->dev, "ioremap failed\n");
381 retval = -ENOMEM;
382 goto err_ioremap;
383 }
384
385 ohci_hcd_init(hcd_to_ohci(hcd)); 377 ohci_hcd_init(hcd_to_ohci(hcd));
386 378
387 retval = usb_add_hcd(hcd, dev->resource[1].start, 0); 379 retval = usb_add_hcd(hcd, dev->resource[1].start, 0);
@@ -392,14 +384,6 @@ static int usb_hcd_s3c2410_probe(const struct hc_driver *driver,
392 384
393 err_ioremap: 385 err_ioremap:
394 s3c2410_stop_hc(dev); 386 s3c2410_stop_hc(dev);
395 iounmap(hcd->regs);
396 clk_put(usb_clk);
397
398 err_clk:
399 clk_put(clk);
400
401 err_mem:
402 release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
403 387
404 err_put: 388 err_put:
405 usb_put_hcd(hcd); 389 usb_put_hcd(hcd);