Skip to content

Commit

Permalink
bfin_can: introduce ioremap to comply to archs with MMU
Browse files Browse the repository at this point in the history
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 <Aaron.wu@analog.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
  • Loading branch information
Aaron Wu authored and Marc Kleine-Budde committed Mar 4, 2015
1 parent e4936e0 commit dead838
Showing 1 changed file with 8 additions and 14 deletions.
22 changes: 8 additions & 14 deletions drivers/net/can/bfin_can.c
Original file line number Diff line number Diff line change
Expand Up @@ -552,16 +552,10 @@ static int bfin_can_probe(struct platform_device *pdev)
goto exit;
}

if (!request_mem_region(res_mem->start, resource_size(res_mem),
dev_name(&pdev->dev))) {
err = -EBUSY;
goto exit;
}

/* request peripheral pins */
err = peripheral_request_list(pdata, dev_name(&pdev->dev));
if (err)
goto exit_mem_release;
goto exit;

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

priv = netdev_priv(dev);
priv->membase = (void __iomem *)res_mem->start;

priv->membase = devm_ioremap_resource(&pdev->dev, res_mem);
if (IS_ERR(priv->membase)) {
err = PTR_ERR(priv->membase);
goto exit_peri_pin_free;
}

priv->rx_irq = rx_irq->start;
priv->tx_irq = tx_irq->start;
priv->err_irq = err_irq->start;
Expand Down Expand Up @@ -602,8 +602,6 @@ static int bfin_can_probe(struct platform_device *pdev)
free_candev(dev);
exit_peri_pin_free:
peripheral_free_list(pdata);
exit_mem_release:
release_mem_region(res_mem->start, resource_size(res_mem));
exit:
return err;
}
Expand All @@ -612,15 +610,11 @@ static int bfin_can_remove(struct platform_device *pdev)
{
struct net_device *dev = platform_get_drvdata(pdev);
struct bfin_can_priv *priv = netdev_priv(dev);
struct resource *res;

bfin_can_set_reset_mode(dev);

unregister_candev(dev);

res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
release_mem_region(res->start, resource_size(res));

peripheral_free_list(priv->pin_list);

free_candev(dev);
Expand Down

0 comments on commit dead838

Please sign in to comment.