hcd->rsrc_start = pdev->resource[0].start;
        hcd->rsrc_len = resource_size(&pdev->resource[0]);
 
-       if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) {
-               pr_debug("request_mem_region failed\n");
-               retval = -EBUSY;
-               goto err1;
-       }
-
-       hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len);
-       if (!hcd->regs) {
-               pr_debug("ioremap failed\n");
-               retval = -EIO;
-               goto err2;
+       hcd->regs = devm_ioremap_resource(dev, res);
+       if (IS_ERR(hcd->regs)) {
+               retval = PTR_ERR(hcd->regs);
+               goto err;
        }
 
        iclk = clk_get(&pdev->dev, "ohci_clk");
        if (IS_ERR(iclk)) {
                dev_err(&pdev->dev, "failed to get ohci_clk\n");
                retval = PTR_ERR(iclk);
-               goto err3;
+               goto err;
        }
        fclk = clk_get(&pdev->dev, "uhpck");
        if (IS_ERR(fclk)) {
  err4:
        clk_put(iclk);
 
- err3:
-       iounmap(hcd->regs);
-
- err2:
-       release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
-
- err1:
+ err:
        usb_put_hcd(hcd);
        return retval;
 }
 {
        usb_remove_hcd(hcd);
        at91_stop_hc(pdev);
-       iounmap(hcd->regs);
-       release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
        usb_put_hcd(hcd);
 
        if (IS_ENABLED(CONFIG_COMMON_CLK))