Linux Samsung SOC development
 help / color / mirror / Atom feed
* [RFC 00/42] devm improvement series, part #1
@ 2013-05-10  8:16 Wolfram Sang
  2013-05-10  8:16 ` [RFC 09/42] drivers/i2c/busses: don't check resource with devm_ioremap_resource Wolfram Sang
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Wolfram Sang @ 2013-05-10  8:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Wan ZongShun, linux-mips, alsa-devel, linux-usb, Kevin Hilman,
	Wolfram Sang, Alexander Shishkin, Viresh Kumar, Linus Walleij,
	Matt Mackall, Sekhar Nori, linux-fbdev, dri-devel,
	Jaroslav Kysela, linux-ide, Wim Van Sebroeck, netdev, linux-mtd,
	linux-i2c, Evgeniy Polyakov, Jiri Slaby, ac100, devel, Kukjin Kim,
	Russell King, Herbert Xu, Florian

Lately, I have been experimenting how to improve the devm interface to make
writing device drivers easier and less error prone while also getting rid of
its subtle issues. I think it has more potential but still needs work and
definately conistency, especiall in its usage.

The first thing I come up with is a low hanging fruit regarding
devm_ioremap_resouce(). This function already checks if the passed resource is
valid and gives an error message if not. So, we can remove similar checks from
the drivers and get rid of a bit of code and a number of inconsistent error
strings.

If generally accepted, I'd suggest I rerun my scripts again when rc1 is out and
ask Linus to pull this branch [1] directly? This series is merely to show what
I am up to.

Thanks,

   Wolfram

[1] git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git devm_no_resource_check

Wolfram Sang (42):
  drivers/ata: don't check resource with devm_ioremap_resource
  drivers/char/hw_random: don't check resource with
    devm_ioremap_resource
  drivers/cpufreq: don't check resource with devm_ioremap_resource
  drivers/dma: don't check resource with devm_ioremap_resource
  drivers/gpio: don't check resource with devm_ioremap_resource
  drivers/gpu/drm/exynos: don't check resource with
    devm_ioremap_resource
  drivers/gpu/host1x: don't check resource with devm_ioremap_resource
  drivers/gpu/host1x/drm: don't check resource with
    devm_ioremap_resource
  drivers/i2c/busses: don't check resource with devm_ioremap_resource
  drivers/input/keyboard: don't check resource with
    devm_ioremap_resource
  drivers/input/serio: don't check resource with devm_ioremap_resource
  drivers/memory: don't check resource with devm_ioremap_resource
  drivers/mfd: don't check resource with devm_ioremap_resource
  drivers/misc: don't check resource with devm_ioremap_resource
  drivers/mtd/maps: don't check resource with devm_ioremap_resource
  drivers/mtd/nand: don't check resource with devm_ioremap_resource
  drivers/net/ethernet/renesas: don't check resource with
    devm_ioremap_resource
  drivers/pinctrl: don't check resource with devm_ioremap_resource
  drivers/pinctrl/spear: don't check resource with
    devm_ioremap_resource
  drivers/pwm: don't check resource with devm_ioremap_resource
  drivers/remoteproc: don't check resource with devm_ioremap_resource
  drivers/rtc: don't check resource with devm_ioremap_resource
  drivers/spi: don't check resource with devm_ioremap_resource
  drivers/staging/dwc2: don't check resource with devm_ioremap_resource
  drivers/staging/nvec: don't check resource with devm_ioremap_resource
  drivers/thermal: don't check resource with devm_ioremap_resource
  drivers/tty/serial: don't check resource with devm_ioremap_resource
  drivers/usb/chipidea: don't check resource with devm_ioremap_resource
  drivers/usb/gadget: don't check resource with devm_ioremap_resource
  drivers/usb/host: don't check resource with devm_ioremap_resource
  drivers/usb/phy: don't check resource with devm_ioremap_resource
  drivers/video: don't check resource with devm_ioremap_resource
  drivers/video/omap2: don't check resource with devm_ioremap_resource
  drivers/video/omap2/dss: don't check resource with
    devm_ioremap_resource
  drivers/w1/masters: don't check resource with devm_ioremap_resource
  drivers/watchdog: don't check resource with devm_ioremap_resource
  arch/arm/mach-tegra: don't check resource with devm_ioremap_resource
  arch/arm/plat-omap: don't check resource with devm_ioremap_resource
  arch/arm/plat-samsung: don't check resource with
    devm_ioremap_resource
  arch/mips/lantiq/xway: don't check resource with
    devm_ioremap_resource
  sound/soc/fsl: don't check resource with devm_ioremap_resource
  sound/soc/kirkwood: don't check resource with devm_ioremap_resource

 arch/arm/mach-tegra/tegra2_emc.c            |    5 -----
 arch/arm/plat-omap/dmtimer.c                |    7 +------
 arch/arm/plat-samsung/adc.c                 |    5 -----
 arch/mips/lantiq/xway/gptu.c                |    7 +------
 drivers/ata/pata_ep93xx.c                   |    5 -----
 drivers/char/hw_random/mxc-rnga.c           |    6 ------
 drivers/char/hw_random/omap-rng.c           |    5 -----
 drivers/cpufreq/kirkwood-cpufreq.c          |    4 ----
 drivers/dma/tegra20-apb-dma.c               |    5 -----
 drivers/gpio/gpio-mvebu.c                   |   12 +-----------
 drivers/gpio/gpio-spear-spics.c             |    7 +------
 drivers/gpio/gpio-tegra.c                   |    5 -----
 drivers/gpu/drm/exynos/exynos_hdmi.c        |    5 -----
 drivers/gpu/host1x/dev.c                    |    7 +------
 drivers/gpu/host1x/drm/dc.c                 |    5 -----
 drivers/i2c/busses/i2c-davinci.c            |    6 +-----
 drivers/i2c/busses/i2c-designware-platdrv.c |    6 +-----
 drivers/i2c/busses/i2c-imx.c                |    6 +-----
 drivers/i2c/busses/i2c-omap.c               |    6 +-----
 drivers/i2c/busses/i2c-rcar.c               |    7 +------
 drivers/i2c/busses/i2c-s3c2410.c            |    5 -----
 drivers/i2c/busses/i2c-sirf.c               |    6 ------
 drivers/i2c/busses/i2c-tegra.c              |    5 -----
 drivers/input/keyboard/imx_keypad.c         |    7 +------
 drivers/input/keyboard/spear-keyboard.c     |    7 +------
 drivers/input/keyboard/tegra-kbc.c          |    7 +------
 drivers/input/serio/arc_ps2.c               |    7 +------
 drivers/memory/emif.c                       |    6 ------
 drivers/mfd/intel_msic.c                    |    6 +-----
 drivers/misc/atmel-ssc.c                    |    5 -----
 drivers/mtd/maps/autcpu12-nvram.c           |    7 +------
 drivers/mtd/maps/lantiq-flash.c             |    8 +-------
 drivers/mtd/nand/lpc32xx_mlc.c              |    5 -----
 drivers/mtd/nand/lpc32xx_slc.c              |    7 +------
 drivers/net/ethernet/renesas/sh_eth.c       |   14 +-------------
 drivers/pinctrl/pinctrl-at91.c              |    7 +------
 drivers/pinctrl/pinctrl-coh901.c            |    5 -----
 drivers/pinctrl/pinctrl-exynos5440.c        |    5 -----
 drivers/pinctrl/pinctrl-samsung.c           |    5 -----
 drivers/pinctrl/pinctrl-xway.c              |    4 ----
 drivers/pinctrl/spear/pinctrl-plgpio.c      |    7 +------
 drivers/pwm/pwm-imx.c                       |    5 -----
 drivers/pwm/pwm-puv3.c                      |    5 -----
 drivers/pwm/pwm-pxa.c                       |    5 -----
 drivers/pwm/pwm-spear.c                     |    7 +------
 drivers/pwm/pwm-tegra.c                     |    5 -----
 drivers/pwm/pwm-tiecap.c                    |    5 -----
 drivers/pwm/pwm-tiehrpwm.c                  |    5 -----
 drivers/pwm/pwm-tipwmss.c                   |    5 -----
 drivers/pwm/pwm-vt8500.c                    |    5 -----
 drivers/remoteproc/da8xx_remoteproc.c       |   14 +-------------
 drivers/rtc/rtc-nuc900.c                    |    6 +-----
 drivers/rtc/rtc-omap.c                      |    5 -----
 drivers/rtc/rtc-s3c.c                       |    5 -----
 drivers/rtc/rtc-spear.c                     |    7 +------
 drivers/rtc/rtc-tegra.c                     |    6 ------
 drivers/spi/spi-bcm63xx.c                   |    8 +-------
 drivers/spi/spi-ep93xx.c                    |    8 +-------
 drivers/spi/spi-omap2-mcspi.c               |    7 +------
 drivers/spi/spi-s3c64xx.c                   |    7 +------
 drivers/spi/spi-sirf.c                      |    7 +------
 drivers/spi/spi-tegra114.c                  |    7 +------
 drivers/spi/spi-tegra20-sflash.c            |    5 -----
 drivers/spi/spi-tegra20-slink.c             |    7 +------
 drivers/staging/dwc2/platform.c             |    5 -----
 drivers/staging/nvec/nvec.c                 |    5 -----
 drivers/thermal/dove_thermal.c              |   11 +----------
 drivers/thermal/exynos_thermal.c            |    5 -----
 drivers/thermal/kirkwood_thermal.c          |    7 +------
 drivers/thermal/rcar_thermal.c              |    6 +-----
 drivers/tty/serial/serial-tegra.c           |    6 +-----
 drivers/usb/chipidea/core.c                 |    5 -----
 drivers/usb/gadget/bcm63xx_udc.c            |   10 ----------
 drivers/usb/host/ehci-atmel.c               |    9 +--------
 drivers/usb/host/ehci-mxc.c                 |    8 +-------
 drivers/usb/host/ehci-platform.c            |    6 +-----
 drivers/usb/host/ehci-sh.c                  |   10 +---------
 drivers/usb/host/ohci-nxp.c                 |    6 ------
 drivers/usb/host/ohci-platform.c            |    7 +------
 drivers/usb/phy/phy-mv-u3d-usb.c            |    5 -----
 drivers/usb/phy/phy-mxs-usb.c               |    5 -----
 drivers/usb/phy/phy-samsung-usb2.c          |    5 -----
 drivers/usb/phy/phy-samsung-usb3.c          |    5 -----
 drivers/video/mxsfb.c                       |    7 +------
 drivers/video/omap2/dss/hdmi.c              |    7 +------
 drivers/video/omap2/vrfb.c                  |    5 -----
 drivers/w1/masters/omap_hdq.c               |    5 -----
 drivers/watchdog/imx2_wdt.c                 |    5 -----
 sound/soc/fsl/imx-ssi.c                     |    6 ------
 sound/soc/kirkwood/kirkwood-i2s.c           |    5 -----
 90 files changed, 43 insertions(+), 525 deletions(-)

-- 
1.7.10.4


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [RFC 09/42] drivers/i2c/busses: don't check resource with devm_ioremap_resource
  2013-05-10  8:16 [RFC 00/42] devm improvement series, part #1 Wolfram Sang
@ 2013-05-10  8:16 ` Wolfram Sang
  2013-05-11  5:18   ` Jingoo Han
  2013-06-04 18:34   ` Kevin Hilman
  2013-05-10  8:17 ` [RFC 23/42] drivers/spi: " Wolfram Sang
  2013-05-10  8:17 ` [RFC 39/42] arch/arm/plat-samsung: " Wolfram Sang
  2 siblings, 2 replies; 10+ messages in thread
From: Wolfram Sang @ 2013-05-10  8:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Wolfram Sang, Sekhar Nori, Kevin Hilman, Tony Lindgren, Ben Dooks,
	Kukjin Kim, Barry Song, Stephen Warren, davinci-linux-open-source,
	linux-i2c, linux-omap, linux-arm-kernel, linux-samsung-soc,
	linux-tegra

devm_ioremap_resource does sanity checks on the given resource. No need to
duplicate this in the driver.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
---
 drivers/i2c/busses/i2c-davinci.c            |    6 +-----
 drivers/i2c/busses/i2c-designware-platdrv.c |    6 +-----
 drivers/i2c/busses/i2c-imx.c                |    6 +-----
 drivers/i2c/busses/i2c-omap.c               |    6 +-----
 drivers/i2c/busses/i2c-rcar.c               |    7 +------
 drivers/i2c/busses/i2c-s3c2410.c            |    5 -----
 drivers/i2c/busses/i2c-sirf.c               |    6 ------
 drivers/i2c/busses/i2c-tegra.c              |    5 -----
 8 files changed, 5 insertions(+), 42 deletions(-)

diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c
index cf20e06..2ed3e7b 100644
--- a/drivers/i2c/busses/i2c-davinci.c
+++ b/drivers/i2c/busses/i2c-davinci.c
@@ -647,11 +647,6 @@ static int davinci_i2c_probe(struct platform_device *pdev)
 	int r;
 
 	/* NOTE: driver uses the static register mapping */
-	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!mem) {
-		dev_err(&pdev->dev, "no mem resource?\n");
-		return -ENODEV;
-	}
 
 	irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
 	if (!irq) {
@@ -697,6 +692,7 @@ static int davinci_i2c_probe(struct platform_device *pdev)
 		return -ENODEV;
 	clk_prepare_enable(dev->clk);
 
+	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	dev->base = devm_ioremap_resource(&pdev->dev, mem);
 	if (IS_ERR(dev->base)) {
 		r = PTR_ERR(dev->base);
diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
index 8ec9133..6f3c612 100644
--- a/drivers/i2c/busses/i2c-designware-platdrv.c
+++ b/drivers/i2c/busses/i2c-designware-platdrv.c
@@ -87,11 +87,6 @@ static int dw_i2c_probe(struct platform_device *pdev)
 	int irq, r;
 
 	/* NOTE: driver uses the static register mapping */
-	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!mem) {
-		dev_err(&pdev->dev, "no mem resource?\n");
-		return -EINVAL;
-	}
 
 	irq = platform_get_irq(pdev, 0);
 	if (irq < 0) {
@@ -103,6 +98,7 @@ static int dw_i2c_probe(struct platform_device *pdev)
 	if (!dev)
 		return -ENOMEM;
 
+	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	dev->base = devm_ioremap_resource(&pdev->dev, mem);
 	if (IS_ERR(dev->base))
 		return PTR_ERR(dev->base);
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index 82f20c6..b274ca1 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -500,17 +500,13 @@ static int __init i2c_imx_probe(struct platform_device *pdev)
 
 	dev_dbg(&pdev->dev, "<%s>\n", __func__);
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "can't get device resources\n");
-		return -ENOENT;
-	}
 	irq = platform_get_irq(pdev, 0);
 	if (irq < 0) {
 		dev_err(&pdev->dev, "can't get irq number\n");
 		return -ENOENT;
 	}
 
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	base = devm_ioremap_resource(&pdev->dev, res);
 	if (IS_ERR(base))
 		return PTR_ERR(base);
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index e02f9e3..8498ab7 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -1085,11 +1085,6 @@ omap_i2c_probe(struct platform_device *pdev)
 	u16 minor, major, scheme;
 
 	/* NOTE: driver uses the static register mapping */
-	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!mem) {
-		dev_err(&pdev->dev, "no mem resource?\n");
-		return -ENODEV;
-	}
 
 	irq = platform_get_irq(pdev, 0);
 	if (irq < 0) {
@@ -1103,6 +1098,7 @@ omap_i2c_probe(struct platform_device *pdev)
 		return -ENOMEM;
 	}
 
+	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	dev->base = devm_ioremap_resource(&pdev->dev, mem);
 	if (IS_ERR(dev->base))
 		return PTR_ERR(dev->base);
diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c
index 4ba4a95..0fc5858 100644
--- a/drivers/i2c/busses/i2c-rcar.c
+++ b/drivers/i2c/busses/i2c-rcar.c
@@ -623,12 +623,6 @@ static int rcar_i2c_probe(struct platform_device *pdev)
 	u32 bus_speed;
 	int ret;
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!res) {
-		dev_err(dev, "no mmio resources\n");
-		return -ENODEV;
-	}
-
 	priv = devm_kzalloc(dev, sizeof(struct rcar_i2c_priv), GFP_KERNEL);
 	if (!priv) {
 		dev_err(dev, "no mem for private data\n");
@@ -642,6 +636,7 @@ static int rcar_i2c_probe(struct platform_device *pdev)
 	if (ret < 0)
 		return ret;
 
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	priv->io = devm_ioremap_resource(dev, res);
 	if (IS_ERR(priv->io))
 		return PTR_ERR(priv->io);
diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
index 6e8ee92..cab1c91 100644
--- a/drivers/i2c/busses/i2c-s3c2410.c
+++ b/drivers/i2c/busses/i2c-s3c2410.c
@@ -1082,11 +1082,6 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
 	/* map the registers */
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (res == NULL) {
-		dev_err(&pdev->dev, "cannot find IO resource\n");
-		return -ENOENT;
-	}
-
 	i2c->regs = devm_ioremap_resource(&pdev->dev, res);
 
 	if (IS_ERR(i2c->regs))
diff --git a/drivers/i2c/busses/i2c-sirf.c b/drivers/i2c/busses/i2c-sirf.c
index 5a7ad24..a63c7d5 100644
--- a/drivers/i2c/busses/i2c-sirf.c
+++ b/drivers/i2c/busses/i2c-sirf.c
@@ -303,12 +303,6 @@ static int i2c_sirfsoc_probe(struct platform_device *pdev)
 	adap->class = I2C_CLASS_HWMON;
 
 	mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (mem_res == NULL) {
-		dev_err(&pdev->dev, "Unable to get MEM resource\n");
-		err = -EINVAL;
-		goto out;
-	}
-
 	siic->base = devm_ioremap_resource(&pdev->dev, mem_res);
 	if (IS_ERR(siic->base)) {
 		err = PTR_ERR(siic->base);
diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
index b60ff90..9aa1b60 100644
--- a/drivers/i2c/busses/i2c-tegra.c
+++ b/drivers/i2c/busses/i2c-tegra.c
@@ -714,11 +714,6 @@ static int tegra_i2c_probe(struct platform_device *pdev)
 	int ret = 0;
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "no mem resource\n");
-		return -EINVAL;
-	}
-
 	base = devm_ioremap_resource(&pdev->dev, res);
 	if (IS_ERR(base))
 		return PTR_ERR(base);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [RFC 23/42] drivers/spi: don't check resource with devm_ioremap_resource
  2013-05-10  8:16 [RFC 00/42] devm improvement series, part #1 Wolfram Sang
  2013-05-10  8:16 ` [RFC 09/42] drivers/i2c/busses: don't check resource with devm_ioremap_resource Wolfram Sang
@ 2013-05-10  8:17 ` Wolfram Sang
       [not found]   ` <1368173847-5661-24-git-send-email-wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>
                     ` (2 more replies)
  2013-05-10  8:17 ` [RFC 39/42] arch/arm/plat-samsung: " Wolfram Sang
  2 siblings, 3 replies; 10+ messages in thread
From: Wolfram Sang @ 2013-05-10  8:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Wolfram Sang, Mark Brown, Grant Likely, Ben Dooks, Kukjin Kim,
	Barry Song, Stephen Warren, spi-devel-general, linux-arm-kernel,
	linux-samsung-soc, linux-tegra

devm_ioremap_resource does sanity checks on the given resource. No need to
duplicate this in the driver.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
---
 drivers/spi/spi-bcm63xx.c        |    8 +-------
 drivers/spi/spi-ep93xx.c         |    8 +-------
 drivers/spi/spi-omap2-mcspi.c    |    7 +------
 drivers/spi/spi-s3c64xx.c        |    7 +------
 drivers/spi/spi-sirf.c           |    7 +------
 drivers/spi/spi-tegra114.c       |    7 +------
 drivers/spi/spi-tegra20-sflash.c |    5 -----
 drivers/spi/spi-tegra20-slink.c  |    7 +------
 8 files changed, 7 insertions(+), 49 deletions(-)

diff --git a/drivers/spi/spi-bcm63xx.c b/drivers/spi/spi-bcm63xx.c
index a4ec5f4..9804ee0 100644
--- a/drivers/spi/spi-bcm63xx.c
+++ b/drivers/spi/spi-bcm63xx.c
@@ -378,13 +378,6 @@ static int bcm63xx_spi_probe(struct platform_device *pdev)
 	struct bcm63xx_spi *bs;
 	int ret;
 
-	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!r) {
-		dev_err(dev, "no iomem\n");
-		ret = -ENXIO;
-		goto out;
-	}
-
 	irq = platform_get_irq(pdev, 0);
 	if (irq < 0) {
 		dev_err(dev, "no irq\n");
@@ -411,6 +404,7 @@ static int bcm63xx_spi_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, master);
 	bs->pdev = pdev;
 
+	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	bs->regs = devm_ioremap_resource(&pdev->dev, r);
 	if (IS_ERR(bs->regs)) {
 		ret = PTR_ERR(bs->regs);
diff --git a/drivers/spi/spi-ep93xx.c b/drivers/spi/spi-ep93xx.c
index d7bac60..213cb7a3 100644
--- a/drivers/spi/spi-ep93xx.c
+++ b/drivers/spi/spi-ep93xx.c
@@ -1076,15 +1076,9 @@ static int ep93xx_spi_probe(struct platform_device *pdev)
 		goto fail_put_clock;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "unable to get iomem resource\n");
-		error = -ENODEV;
-		goto fail_put_clock;
-	}
-
 	espi->sspdr_phys = res->start + SSPDR;
 
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	espi->regs_base = devm_ioremap_resource(&pdev->dev, res);
 	if (IS_ERR(espi->regs_base)) {
 		error = PTR_ERR(espi->regs_base);
diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c
index 86d2158..31c054e 100644
--- a/drivers/spi/spi-omap2-mcspi.c
+++ b/drivers/spi/spi-omap2-mcspi.c
@@ -1228,16 +1228,11 @@ static int omap2_mcspi_probe(struct platform_device *pdev)
 	}
 	regs_offset = pdata->regs_offset;
 
-	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (r == NULL) {
-		status = -ENODEV;
-		goto free_master;
-	}
-
 	r->start += regs_offset;
 	r->end += regs_offset;
 	mcspi->phys = r->start;
 
+	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	mcspi->base = devm_ioremap_resource(&pdev->dev, r);
 	if (IS_ERR(mcspi->base)) {
 		status = PTR_ERR(mcspi->base);
diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
index 5000586..fd763cc 100644
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -1243,12 +1243,6 @@ static int s3c64xx_spi_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (mem_res == NULL) {
-		dev_err(&pdev->dev, "Unable to get SPI MEM resource\n");
-		return -ENXIO;
-	}
-
 	irq = platform_get_irq(pdev, 0);
 	if (irq < 0) {
 		dev_warn(&pdev->dev, "Failed to get IRQ: %d\n", irq);
@@ -1318,6 +1312,7 @@ static int s3c64xx_spi_probe(struct platform_device *pdev)
 	/* the spi->mode bits understood by this driver: */
 	master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH;
 
+	mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	sdd->regs = devm_ioremap_resource(&pdev->dev, mem_res);
 	if (IS_ERR(sdd->regs)) {
 		ret = PTR_ERR(sdd->regs);
diff --git a/drivers/spi/spi-sirf.c b/drivers/spi/spi-sirf.c
index 0808cd5..318ca5b 100644
--- a/drivers/spi/spi-sirf.c
+++ b/drivers/spi/spi-sirf.c
@@ -502,12 +502,6 @@ static int spi_sirfsoc_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, master);
 	sspi = spi_master_get_devdata(master);
 
-	mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!mem_res) {
-		dev_err(&pdev->dev, "Unable to get IO resource\n");
-		ret = -ENODEV;
-		goto free_master;
-	}
 	master->num_chipselect = num_cs;
 
 	for (i = 0; i < master->num_chipselect; i++) {
@@ -534,6 +528,7 @@ static int spi_sirfsoc_probe(struct platform_device *pdev)
 		}
 	}
 
+	mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	sspi->base = devm_ioremap_resource(&pdev->dev, mem_res);
 	if (IS_ERR(sspi->base)) {
 		ret = PTR_ERR(sspi->base);
diff --git a/drivers/spi/spi-tegra114.c b/drivers/spi/spi-tegra114.c
index 598eb45..fc39365 100644
--- a/drivers/spi/spi-tegra114.c
+++ b/drivers/spi/spi-tegra114.c
@@ -1058,13 +1058,8 @@ static int tegra_spi_probe(struct platform_device *pdev)
 	tspi->dev = &pdev->dev;
 	spin_lock_init(&tspi->lock);
 
-	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!r) {
-		dev_err(&pdev->dev, "No IO memory resource\n");
-		ret = -ENODEV;
-		goto exit_free_master;
-	}
 	tspi->phys = r->start;
+	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	tspi->base = devm_ioremap_resource(&pdev->dev, r);
 	if (IS_ERR(tspi->base)) {
 		ret = PTR_ERR(tspi->base);
diff --git a/drivers/spi/spi-tegra20-sflash.c b/drivers/spi/spi-tegra20-sflash.c
index d65c000..09df8e2 100644
--- a/drivers/spi/spi-tegra20-sflash.c
+++ b/drivers/spi/spi-tegra20-sflash.c
@@ -489,11 +489,6 @@ static int tegra_sflash_probe(struct platform_device *pdev)
 	tegra_sflash_parse_dt(tsd);
 
 	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!r) {
-		dev_err(&pdev->dev, "No IO memory resource\n");
-		ret = -ENODEV;
-		goto exit_free_master;
-	}
 	tsd->base = devm_ioremap_resource(&pdev->dev, r);
 	if (IS_ERR(tsd->base)) {
 		ret = PTR_ERR(tsd->base);
diff --git a/drivers/spi/spi-tegra20-slink.c b/drivers/spi/spi-tegra20-slink.c
index 3faf88d..46392f0 100644
--- a/drivers/spi/spi-tegra20-slink.c
+++ b/drivers/spi/spi-tegra20-slink.c
@@ -1098,13 +1098,8 @@ static int tegra_slink_probe(struct platform_device *pdev)
 
 	tegra_slink_parse_dt(tspi);
 
-	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!r) {
-		dev_err(&pdev->dev, "No IO memory resource\n");
-		ret = -ENODEV;
-		goto exit_free_master;
-	}
 	tspi->phys = r->start;
+	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	tspi->base = devm_ioremap_resource(&pdev->dev, r);
 	if (IS_ERR(tspi->base)) {
 		ret = PTR_ERR(tspi->base);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [RFC 39/42] arch/arm/plat-samsung: don't check resource with devm_ioremap_resource
  2013-05-10  8:16 [RFC 00/42] devm improvement series, part #1 Wolfram Sang
  2013-05-10  8:16 ` [RFC 09/42] drivers/i2c/busses: don't check resource with devm_ioremap_resource Wolfram Sang
  2013-05-10  8:17 ` [RFC 23/42] drivers/spi: " Wolfram Sang
@ 2013-05-10  8:17 ` Wolfram Sang
  2013-05-11  5:15   ` Jingoo Han
  2 siblings, 1 reply; 10+ messages in thread
From: Wolfram Sang @ 2013-05-10  8:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Wolfram Sang, Ben Dooks, Kukjin Kim, Russell King,
	linux-arm-kernel, linux-samsung-soc

devm_ioremap_resource does sanity checks on the given resource. No need to
duplicate this in the driver.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
---
 arch/arm/plat-samsung/adc.c |    5 -----
 1 file changed, 5 deletions(-)

diff --git a/arch/arm/plat-samsung/adc.c b/arch/arm/plat-samsung/adc.c
index ca07cb1..79690f2 100644
--- a/arch/arm/plat-samsung/adc.c
+++ b/arch/arm/plat-samsung/adc.c
@@ -381,11 +381,6 @@ static int s3c_adc_probe(struct platform_device *pdev)
 	}
 
 	regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!regs) {
-		dev_err(dev, "failed to find registers\n");
-		return -ENXIO;
-	}
-
 	adc->regs = devm_ioremap_resource(dev, regs);
 	if (IS_ERR(adc->regs))
 		return PTR_ERR(adc->regs);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [RFC 23/42] drivers/spi: don't check resource with devm_ioremap_resource
       [not found]   ` <1368173847-5661-24-git-send-email-wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>
@ 2013-05-10 10:55     ` Mark Brown
  0 siblings, 0 replies; 10+ messages in thread
From: Mark Brown @ 2013-05-10 10:55 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA, Grant Likely, Ben Dooks,
	Kukjin Kim, Barry Song, Stephen Warren,
	spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA

[-- Attachment #1: Type: text/plain, Size: 264 bytes --]

On Fri, May 10, 2013 at 10:17:08AM +0200, Wolfram Sang wrote:
> devm_ioremap_resource does sanity checks on the given resource. No need to
> duplicate this in the driver.

Acked-by: Mark Brown <broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC 23/42] drivers/spi: don't check resource with devm_ioremap_resource
  2013-05-10  8:17 ` [RFC 23/42] drivers/spi: " Wolfram Sang
       [not found]   ` <1368173847-5661-24-git-send-email-wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>
@ 2013-05-10 16:37   ` Stephen Warren
  2013-05-11  5:24   ` Jingoo Han
  2 siblings, 0 replies; 10+ messages in thread
From: Stephen Warren @ 2013-05-10 16:37 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: linux-kernel, Mark Brown, Grant Likely, Ben Dooks, Kukjin Kim,
	Barry Song, spi-devel-general, linux-arm-kernel,
	linux-samsung-soc, linux-tegra

On 05/10/2013 02:17 AM, Wolfram Sang wrote:
> devm_ioremap_resource does sanity checks on the given resource. No need to
> duplicate this in the driver.

> diff --git a/drivers/spi/spi-tegra114.c b/drivers/spi/spi-tegra114.c

> -	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!r) {
> -		dev_err(&pdev->dev, "No IO memory resource\n");
> -		ret = -ENODEV;
> -		goto exit_free_master;
> -	}
>  	tspi->phys = r->start;
> +	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);

The tspi->phy assignment is broken there now.

> diff --git a/drivers/spi/spi-tegra20-slink.c b/drivers/spi/spi-tegra20-slink.c

> -	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!r) {
> -		dev_err(&pdev->dev, "No IO memory resource\n");
> -		ret = -ENODEV;
> -		goto exit_free_master;
> -	}
>  	tspi->phys = r->start;
> +	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);

Same here.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC 39/42] arch/arm/plat-samsung: don't check resource with devm_ioremap_resource
  2013-05-10  8:17 ` [RFC 39/42] arch/arm/plat-samsung: " Wolfram Sang
@ 2013-05-11  5:15   ` Jingoo Han
  0 siblings, 0 replies; 10+ messages in thread
From: Jingoo Han @ 2013-05-11  5:15 UTC (permalink / raw)
  To: 'Wolfram Sang', linux-kernel
  Cc: 'Ben Dooks', 'Kukjin Kim', 'Russell King',
	linux-arm-kernel, linux-samsung-soc, Jingoo Han

On Friday, May 10, 2013 5:17 PM, Wolfram Sang wrote:
> 
> devm_ioremap_resource does sanity checks on the given resource. No need to
> duplicate this in the driver.
> 
> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>

Reviewed-by: Jingoo Han <jg1.han@samsung.com>

Best regards,
Jingoo Han

> ---
>  arch/arm/plat-samsung/adc.c |    5 -----
>  1 file changed, 5 deletions(-)
> 
> diff --git a/arch/arm/plat-samsung/adc.c b/arch/arm/plat-samsung/adc.c
> index ca07cb1..79690f2 100644
> --- a/arch/arm/plat-samsung/adc.c
> +++ b/arch/arm/plat-samsung/adc.c
> @@ -381,11 +381,6 @@ static int s3c_adc_probe(struct platform_device *pdev)
>  	}
> 
>  	regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!regs) {
> -		dev_err(dev, "failed to find registers\n");
> -		return -ENXIO;
> -	}
> -
>  	adc->regs = devm_ioremap_resource(dev, regs);
>  	if (IS_ERR(adc->regs))
>  		return PTR_ERR(adc->regs);
> --
> 1.7.10.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC 09/42] drivers/i2c/busses: don't check resource with devm_ioremap_resource
  2013-05-10  8:16 ` [RFC 09/42] drivers/i2c/busses: don't check resource with devm_ioremap_resource Wolfram Sang
@ 2013-05-11  5:18   ` Jingoo Han
  2013-06-04 18:34   ` Kevin Hilman
  1 sibling, 0 replies; 10+ messages in thread
From: Jingoo Han @ 2013-05-11  5:18 UTC (permalink / raw)
  To: 'Wolfram Sang', linux-kernel
  Cc: 'Sekhar Nori', 'Kevin Hilman',
	'Tony Lindgren', 'Ben Dooks',
	'Kukjin Kim', 'Barry Song',
	'Stephen Warren', davinci-linux-open-source, linux-i2c,
	linux-omap, linux-arm-kernel, linux-samsung-soc, linux-tegra,
	Jingoo Han

On Friday, May 10, 2013 5:17 PM, Wolfram Sang wrote:
> 
> devm_ioremap_resource does sanity checks on the given resource. No need to
> duplicate this in the driver.
> 
> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
> ---
>  drivers/i2c/busses/i2c-davinci.c            |    6 +-----
>  drivers/i2c/busses/i2c-designware-platdrv.c |    6 +-----
>  drivers/i2c/busses/i2c-imx.c                |    6 +-----
>  drivers/i2c/busses/i2c-omap.c               |    6 +-----
>  drivers/i2c/busses/i2c-rcar.c               |    7 +------
>  drivers/i2c/busses/i2c-s3c2410.c            |    5 -----

For drivers/i2c/busses/i2c-s3c2410.c

Reviewed-by: Jingoo Han <jg1.han@samsung.com>

Best regards,
Jingoo Han


>  drivers/i2c/busses/i2c-sirf.c               |    6 ------
>  drivers/i2c/busses/i2c-tegra.c              |    5 -----
>  8 files changed, 5 insertions(+), 42 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c
> index cf20e06..2ed3e7b 100644
> --- a/drivers/i2c/busses/i2c-davinci.c
> +++ b/drivers/i2c/busses/i2c-davinci.c
> @@ -647,11 +647,6 @@ static int davinci_i2c_probe(struct platform_device *pdev)
>  	int r;
> 
>  	/* NOTE: driver uses the static register mapping */
> -	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!mem) {
> -		dev_err(&pdev->dev, "no mem resource?\n");
> -		return -ENODEV;
> -	}
> 
>  	irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
>  	if (!irq) {
> @@ -697,6 +692,7 @@ static int davinci_i2c_probe(struct platform_device *pdev)
>  		return -ENODEV;
>  	clk_prepare_enable(dev->clk);
> 
> +	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	dev->base = devm_ioremap_resource(&pdev->dev, mem);
>  	if (IS_ERR(dev->base)) {
>  		r = PTR_ERR(dev->base);
> diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
> index 8ec9133..6f3c612 100644
> --- a/drivers/i2c/busses/i2c-designware-platdrv.c
> +++ b/drivers/i2c/busses/i2c-designware-platdrv.c
> @@ -87,11 +87,6 @@ static int dw_i2c_probe(struct platform_device *pdev)
>  	int irq, r;
> 
>  	/* NOTE: driver uses the static register mapping */
> -	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!mem) {
> -		dev_err(&pdev->dev, "no mem resource?\n");
> -		return -EINVAL;
> -	}
> 
>  	irq = platform_get_irq(pdev, 0);
>  	if (irq < 0) {
> @@ -103,6 +98,7 @@ static int dw_i2c_probe(struct platform_device *pdev)
>  	if (!dev)
>  		return -ENOMEM;
> 
> +	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	dev->base = devm_ioremap_resource(&pdev->dev, mem);
>  	if (IS_ERR(dev->base))
>  		return PTR_ERR(dev->base);
> diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
> index 82f20c6..b274ca1 100644
> --- a/drivers/i2c/busses/i2c-imx.c
> +++ b/drivers/i2c/busses/i2c-imx.c
> @@ -500,17 +500,13 @@ static int __init i2c_imx_probe(struct platform_device *pdev)
> 
>  	dev_dbg(&pdev->dev, "<%s>\n", __func__);
> 
> -	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!res) {
> -		dev_err(&pdev->dev, "can't get device resources\n");
> -		return -ENOENT;
> -	}
>  	irq = platform_get_irq(pdev, 0);
>  	if (irq < 0) {
>  		dev_err(&pdev->dev, "can't get irq number\n");
>  		return -ENOENT;
>  	}
> 
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	base = devm_ioremap_resource(&pdev->dev, res);
>  	if (IS_ERR(base))
>  		return PTR_ERR(base);
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> index e02f9e3..8498ab7 100644
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -1085,11 +1085,6 @@ omap_i2c_probe(struct platform_device *pdev)
>  	u16 minor, major, scheme;
> 
>  	/* NOTE: driver uses the static register mapping */
> -	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!mem) {
> -		dev_err(&pdev->dev, "no mem resource?\n");
> -		return -ENODEV;
> -	}
> 
>  	irq = platform_get_irq(pdev, 0);
>  	if (irq < 0) {
> @@ -1103,6 +1098,7 @@ omap_i2c_probe(struct platform_device *pdev)
>  		return -ENOMEM;
>  	}
> 
> +	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	dev->base = devm_ioremap_resource(&pdev->dev, mem);
>  	if (IS_ERR(dev->base))
>  		return PTR_ERR(dev->base);
> diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c
> index 4ba4a95..0fc5858 100644
> --- a/drivers/i2c/busses/i2c-rcar.c
> +++ b/drivers/i2c/busses/i2c-rcar.c
> @@ -623,12 +623,6 @@ static int rcar_i2c_probe(struct platform_device *pdev)
>  	u32 bus_speed;
>  	int ret;
> 
> -	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!res) {
> -		dev_err(dev, "no mmio resources\n");
> -		return -ENODEV;
> -	}
> -
>  	priv = devm_kzalloc(dev, sizeof(struct rcar_i2c_priv), GFP_KERNEL);
>  	if (!priv) {
>  		dev_err(dev, "no mem for private data\n");
> @@ -642,6 +636,7 @@ static int rcar_i2c_probe(struct platform_device *pdev)
>  	if (ret < 0)
>  		return ret;
> 
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	priv->io = devm_ioremap_resource(dev, res);
>  	if (IS_ERR(priv->io))
>  		return PTR_ERR(priv->io);
> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
> index 6e8ee92..cab1c91 100644
> --- a/drivers/i2c/busses/i2c-s3c2410.c
> +++ b/drivers/i2c/busses/i2c-s3c2410.c
> @@ -1082,11 +1082,6 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  	/* map the registers */
> 
>  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (res == NULL) {
> -		dev_err(&pdev->dev, "cannot find IO resource\n");
> -		return -ENOENT;
> -	}
> -
>  	i2c->regs = devm_ioremap_resource(&pdev->dev, res);
> 
>  	if (IS_ERR(i2c->regs))
> diff --git a/drivers/i2c/busses/i2c-sirf.c b/drivers/i2c/busses/i2c-sirf.c
> index 5a7ad24..a63c7d5 100644
> --- a/drivers/i2c/busses/i2c-sirf.c
> +++ b/drivers/i2c/busses/i2c-sirf.c
> @@ -303,12 +303,6 @@ static int i2c_sirfsoc_probe(struct platform_device *pdev)
>  	adap->class = I2C_CLASS_HWMON;
> 
>  	mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (mem_res == NULL) {
> -		dev_err(&pdev->dev, "Unable to get MEM resource\n");
> -		err = -EINVAL;
> -		goto out;
> -	}
> -
>  	siic->base = devm_ioremap_resource(&pdev->dev, mem_res);
>  	if (IS_ERR(siic->base)) {
>  		err = PTR_ERR(siic->base);
> diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
> index b60ff90..9aa1b60 100644
> --- a/drivers/i2c/busses/i2c-tegra.c
> +++ b/drivers/i2c/busses/i2c-tegra.c
> @@ -714,11 +714,6 @@ static int tegra_i2c_probe(struct platform_device *pdev)
>  	int ret = 0;
> 
>  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!res) {
> -		dev_err(&pdev->dev, "no mem resource\n");
> -		return -EINVAL;
> -	}
> -
>  	base = devm_ioremap_resource(&pdev->dev, res);
>  	if (IS_ERR(base))
>  		return PTR_ERR(base);
> --
> 1.7.10.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC 23/42] drivers/spi: don't check resource with devm_ioremap_resource
  2013-05-10  8:17 ` [RFC 23/42] drivers/spi: " Wolfram Sang
       [not found]   ` <1368173847-5661-24-git-send-email-wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>
  2013-05-10 16:37   ` Stephen Warren
@ 2013-05-11  5:24   ` Jingoo Han
  2 siblings, 0 replies; 10+ messages in thread
From: Jingoo Han @ 2013-05-11  5:24 UTC (permalink / raw)
  To: 'Wolfram Sang', linux-kernel
  Cc: 'Mark Brown', 'Grant Likely', 'Ben Dooks',
	'Kukjin Kim', 'Barry Song',
	'Stephen Warren', spi-devel-general, linux-arm-kernel,
	linux-samsung-soc, linux-tegra, Jingoo Han

On Friday, May 10, 2013 5:17 PM, Wolfram Sang wrote:
> 
> devm_ioremap_resource does sanity checks on the given resource. No need to
> duplicate this in the driver.
> 
> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
> ---
>  drivers/spi/spi-bcm63xx.c        |    8 +-------
>  drivers/spi/spi-ep93xx.c         |    8 +-------
>  drivers/spi/spi-omap2-mcspi.c    |    7 +------
>  drivers/spi/spi-s3c64xx.c        |    7 +------
>  drivers/spi/spi-sirf.c           |    7 +------
>  drivers/spi/spi-tegra114.c       |    7 +------
>  drivers/spi/spi-tegra20-sflash.c |    5 -----
>  drivers/spi/spi-tegra20-slink.c  |    7 +------
>  8 files changed, 7 insertions(+), 49 deletions(-)
> 

[.....]

> diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
> index 5000586..fd763cc 100644
> --- a/drivers/spi/spi-s3c64xx.c
> +++ b/drivers/spi/spi-s3c64xx.c
> @@ -1243,12 +1243,6 @@ static int s3c64xx_spi_probe(struct platform_device *pdev)
>  		return -ENODEV;
>  	}
> 
> -	mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (mem_res == NULL) {
> -		dev_err(&pdev->dev, "Unable to get SPI MEM resource\n");
> -		return -ENXIO;
> -	}
> -

It breaks 'sdd->sfr_start' assignment as below:

1272         sdd->sfr_start = mem_res->start;


Best regards,
Jingoo Han

>  	irq = platform_get_irq(pdev, 0);
>  	if (irq < 0) {
>  		dev_warn(&pdev->dev, "Failed to get IRQ: %d\n", irq);
> @@ -1318,6 +1312,7 @@ static int s3c64xx_spi_probe(struct platform_device *pdev)
>  	/* the spi->mode bits understood by this driver: */
>  	master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH;
> 
> +	mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	sdd->regs = devm_ioremap_resource(&pdev->dev, mem_res);
>  	if (IS_ERR(sdd->regs)) {
>  		ret = PTR_ERR(sdd->regs);

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC 09/42] drivers/i2c/busses: don't check resource with devm_ioremap_resource
  2013-05-10  8:16 ` [RFC 09/42] drivers/i2c/busses: don't check resource with devm_ioremap_resource Wolfram Sang
  2013-05-11  5:18   ` Jingoo Han
@ 2013-06-04 18:34   ` Kevin Hilman
  1 sibling, 0 replies; 10+ messages in thread
From: Kevin Hilman @ 2013-06-04 18:34 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: linux-kernel, Sekhar Nori, Tony Lindgren, Ben Dooks, Kukjin Kim,
	Barry Song, Stephen Warren, davinci-linux-open-source, linux-i2c,
	linux-omap, linux-arm-kernel, linux-samsung-soc, linux-tegra

Wolfram Sang <wsa@the-dreams.de> writes:

> devm_ioremap_resource does sanity checks on the given resource. No need to
> duplicate this in the driver.
>
> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>

Acked-by: Kevin Hilman <khilman@linaro.org>  # for i2c-omap.c

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2013-06-04 18:34 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-10  8:16 [RFC 00/42] devm improvement series, part #1 Wolfram Sang
2013-05-10  8:16 ` [RFC 09/42] drivers/i2c/busses: don't check resource with devm_ioremap_resource Wolfram Sang
2013-05-11  5:18   ` Jingoo Han
2013-06-04 18:34   ` Kevin Hilman
2013-05-10  8:17 ` [RFC 23/42] drivers/spi: " Wolfram Sang
     [not found]   ` <1368173847-5661-24-git-send-email-wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>
2013-05-10 10:55     ` Mark Brown
2013-05-10 16:37   ` Stephen Warren
2013-05-11  5:24   ` Jingoo Han
2013-05-10  8:17 ` [RFC 39/42] arch/arm/plat-samsung: " Wolfram Sang
2013-05-11  5:15   ` Jingoo Han

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox