diff options
author | John Crispin <blogic@openwrt.org> | 2014-09-12 06:51:46 +0000 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2014-09-12 06:51:46 +0000 |
commit | 0dcf34e7f4c1e31da3aaf4e6b68683034843a18d (patch) | |
tree | fdc4ab07e307101cee9ddd83d787514f2e92398d /target/linux/atheros/patches-3.14 | |
parent | 692156cc12f6eee527703d5531df1692391a3cd8 (diff) | |
download | master-187ad058-0dcf34e7f4c1e31da3aaf4e6b68683034843a18d.tar.gz master-187ad058-0dcf34e7f4c1e31da3aaf4e6b68683034843a18d.tar.bz2 master-187ad058-0dcf34e7f4c1e31da3aaf4e6b68683034843a18d.zip |
atheros: ar2315-spiflash: use devm_* API to simplify the code
Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42489 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/atheros/patches-3.14')
-rw-r--r-- | target/linux/atheros/patches-3.14/120-spiflash.patch | 48 |
1 files changed, 15 insertions, 33 deletions
diff --git a/target/linux/atheros/patches-3.14/120-spiflash.patch b/target/linux/atheros/patches-3.14/120-spiflash.patch index 9a551958ff..d61f368ae5 100644 --- a/target/linux/atheros/patches-3.14/120-spiflash.patch +++ b/target/linux/atheros/patches-3.14/120-spiflash.patch @@ -23,7 +23,7 @@ --- /dev/null +++ b/drivers/mtd/devices/ar2315.c -@@ -0,0 +1,536 @@ +@@ -0,0 +1,518 @@ + +/* + * MTD driver for the SPI Flash Memory support on Atheros AR2315 @@ -452,41 +452,33 @@ + int index; + int result = 0; + -+ priv = kzalloc(sizeof(struct spiflash_priv), GFP_KERNEL); ++ priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); ++ if (!priv) ++ return -ENOMEM; ++ + spin_lock_init(&priv->lock); + init_waitqueue_head(&priv->wq); + priv->state = FL_READY; + mtd = &priv->mtd; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 1); -+ if (!res) { -+ dev_err(&pdev->dev, "No MMR resource found\n"); -+ goto error; -+ } -+ -+ priv->mmraddr = ioremap_nocache(res->start, resource_size(res)); -+ if (!priv->mmraddr) { -+ dev_warn(&pdev->dev, SPIFLASH "Failed to map flash device\n"); -+ goto error; ++ priv->mmraddr = devm_ioremap_resource(&pdev->dev, res); ++ if (IS_ERR(priv->mmraddr)) { ++ dev_warn(&pdev->dev, "failed to map flash MMR\n"); ++ return PTR_ERR(priv->mmraddr); + } + + index = spiflash_probe_chip(priv); + if (!index) { + dev_warn(&pdev->dev, SPIFLASH "Found no flash device\n"); -+ goto error; ++ return -ENODEV; + } + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); -+ if (!res) { -+ dev_err(&pdev->dev, "No flash readmem resource found\n"); -+ goto error; -+ } -+ -+ priv->readaddr = ioremap_nocache(res->start, -+ flashconfig_tbl[index].byte_cnt); -+ if (!priv->readaddr) { -+ dev_warn(&pdev->dev, SPIFLASH "Failed to map flash device\n"); -+ goto error; ++ priv->readaddr = devm_ioremap_resource(&pdev->dev, res); ++ if (IS_ERR(priv->readaddr)) { ++ dev_warn(&pdev->dev, "failed to map flash read mem\n"); ++ return PTR_ERR(priv->readaddr); + } + + platform_set_drvdata(pdev, priv); @@ -513,24 +505,14 @@ +#endif + + return result; -+ -+error: -+ if (priv->mmraddr) -+ iounmap(priv->mmraddr); -+ kfree(priv); -+ return -ENXIO; +} + +static int +spiflash_remove(struct platform_device *pdev) +{ + struct spiflash_priv *priv = platform_get_drvdata(pdev); -+ struct mtd_info *mtd = &priv->mtd; + -+ mtd_device_unregister(mtd); -+ iounmap(priv->mmraddr); -+ iounmap(priv->readaddr); -+ kfree(priv); ++ mtd_device_unregister(&priv->mtd); + + return 0; +} |