diff options
Diffstat (limited to 'drivers/net/can/grcan.c')
| -rw-r--r-- | drivers/net/can/grcan.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/drivers/net/can/grcan.c b/drivers/net/can/grcan.c index 391f484fccb..3fd9fd942c6 100644 --- a/drivers/net/can/grcan.c +++ b/drivers/net/can/grcan.c @@ -34,10 +34,7 @@ #include <linux/io.h> #include <linux/can/dev.h> #include <linux/spinlock.h> - #include <linux/of_platform.h> -#include <asm/prom.h> - #include <linux/of_irq.h> #include <linux/dma-mapping.h> @@ -1581,6 +1578,7 @@ static const struct net_device_ops grcan_netdev_ops = { .ndo_open = grcan_open, .ndo_stop = grcan_close, .ndo_start_xmit = grcan_start_xmit, + .ndo_change_mtu = can_change_mtu, }; static int grcan_setup_netdev(struct platform_device *ofdev, @@ -1646,7 +1644,7 @@ static int grcan_setup_netdev(struct platform_device *ofdev, if (err) goto exit_free_candev; - dev_set_drvdata(&ofdev->dev, dev); + platform_set_drvdata(ofdev, dev); /* Reset device to allow bit-timing to be set. No need to call * grcan_reset at this stage. That is done in grcan_open. @@ -1659,7 +1657,7 @@ exit_free_candev: return err; } -static int __devinit grcan_probe(struct platform_device *ofdev) +static int grcan_probe(struct platform_device *ofdev) { struct device_node *np = ofdev->dev.of_node; struct resource *res; @@ -1683,10 +1681,9 @@ static int __devinit grcan_probe(struct platform_device *ofdev) } res = platform_get_resource(ofdev, IORESOURCE_MEM, 0); - base = devm_request_and_ioremap(&ofdev->dev, res); - if (!base) { - dev_err(&ofdev->dev, "couldn't map IO resource\n"); - err = -EADDRNOTAVAIL; + base = devm_ioremap_resource(&ofdev->dev, res); + if (IS_ERR(base)) { + err = PTR_ERR(base); goto exit_error; } @@ -1714,22 +1711,21 @@ exit_error: return err; } -static int __devexit grcan_remove(struct platform_device *ofdev) +static int grcan_remove(struct platform_device *ofdev) { - struct net_device *dev = dev_get_drvdata(&ofdev->dev); + struct net_device *dev = platform_get_drvdata(ofdev); struct grcan_priv *priv = netdev_priv(dev); unregister_candev(dev); /* Will in turn call grcan_close */ irq_dispose_mapping(dev->irq); - dev_set_drvdata(&ofdev->dev, NULL); netif_napi_del(&priv->napi); free_candev(dev); return 0; } -static struct of_device_id grcan_match[] __devinitconst = { +static struct of_device_id grcan_match[] = { {.name = "GAISLER_GRCAN"}, {.name = "01_03d"}, {.name = "GAISLER_GRHCAN"}, @@ -1746,7 +1742,7 @@ static struct platform_driver grcan_driver = { .of_match_table = grcan_match, }, .probe = grcan_probe, - .remove = __devexit_p(grcan_remove), + .remove = grcan_remove, }; module_platform_driver(grcan_driver); |
