Skip to content

Commit dead838

Browse files
aaronwuadimarckleinebudde
authored andcommitted
bfin_can: introduce ioremap to comply to archs with MMU
Blackfin was built without MMU, old driver code access the IO space by physical address, introduce the ioremap approach to be compitable with the common style supporting MMU enabled arch. Signed-off-by: Aaron Wu <[email protected]> Signed-off-by: Marc Kleine-Budde <[email protected]>
1 parent e4936e0 commit dead838

File tree

1 file changed

+8
-14
lines changed

1 file changed

+8
-14
lines changed

drivers/net/can/bfin_can.c

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -552,16 +552,10 @@ static int bfin_can_probe(struct platform_device *pdev)
552552
goto exit;
553553
}
554554

555-
if (!request_mem_region(res_mem->start, resource_size(res_mem),
556-
dev_name(&pdev->dev))) {
557-
err = -EBUSY;
558-
goto exit;
559-
}
560-
561555
/* request peripheral pins */
562556
err = peripheral_request_list(pdata, dev_name(&pdev->dev));
563557
if (err)
564-
goto exit_mem_release;
558+
goto exit;
565559

566560
dev = alloc_bfin_candev();
567561
if (!dev) {
@@ -570,7 +564,13 @@ static int bfin_can_probe(struct platform_device *pdev)
570564
}
571565

572566
priv = netdev_priv(dev);
573-
priv->membase = (void __iomem *)res_mem->start;
567+
568+
priv->membase = devm_ioremap_resource(&pdev->dev, res_mem);
569+
if (IS_ERR(priv->membase)) {
570+
err = PTR_ERR(priv->membase);
571+
goto exit_peri_pin_free;
572+
}
573+
574574
priv->rx_irq = rx_irq->start;
575575
priv->tx_irq = tx_irq->start;
576576
priv->err_irq = err_irq->start;
@@ -602,8 +602,6 @@ static int bfin_can_probe(struct platform_device *pdev)
602602
free_candev(dev);
603603
exit_peri_pin_free:
604604
peripheral_free_list(pdata);
605-
exit_mem_release:
606-
release_mem_region(res_mem->start, resource_size(res_mem));
607605
exit:
608606
return err;
609607
}
@@ -612,15 +610,11 @@ static int bfin_can_remove(struct platform_device *pdev)
612610
{
613611
struct net_device *dev = platform_get_drvdata(pdev);
614612
struct bfin_can_priv *priv = netdev_priv(dev);
615-
struct resource *res;
616613

617614
bfin_can_set_reset_mode(dev);
618615

619616
unregister_candev(dev);
620617

621-
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
622-
release_mem_region(res->start, resource_size(res));
623-
624618
peripheral_free_list(priv->pin_list);
625619

626620
free_candev(dev);

0 commit comments

Comments
 (0)