linux-pm.vger.kernel.org archive mirror
 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 03/42] drivers/cpufreq: don't check resource with devm_ioremap_resource Wolfram Sang
  2013-05-10  8:17 ` [RFC 26/42] drivers/thermal: " Wolfram Sang
  0 siblings, 2 replies; 6+ 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] 6+ messages in thread

* [RFC 03/42] drivers/cpufreq: 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-10 11:09   ` Rafael J. Wysocki
  2013-05-10  8:17 ` [RFC 26/42] drivers/thermal: " Wolfram Sang
  1 sibling, 1 reply; 6+ messages in thread
From: Wolfram Sang @ 2013-05-10  8:16 UTC (permalink / raw)
  To: linux-kernel
  Cc: Wolfram Sang, Rafael J. Wysocki, Viresh Kumar, cpufreq, linux-pm

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/cpufreq/kirkwood-cpufreq.c |    4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/cpufreq/kirkwood-cpufreq.c b/drivers/cpufreq/kirkwood-cpufreq.c
index d36ea8d..b2644af 100644
--- a/drivers/cpufreq/kirkwood-cpufreq.c
+++ b/drivers/cpufreq/kirkwood-cpufreq.c
@@ -171,10 +171,6 @@ static int kirkwood_cpufreq_probe(struct platform_device *pdev)
 	priv.dev = &pdev->dev;
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "Cannot get memory resource\n");
-		return -ENODEV;
-	}
 	priv.base = devm_ioremap_resource(&pdev->dev, res);
 	if (IS_ERR(priv.base))
 		return PTR_ERR(priv.base);
-- 
1.7.10.4

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

* [RFC 26/42] drivers/thermal: 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 03/42] drivers/cpufreq: don't check resource with devm_ioremap_resource Wolfram Sang
@ 2013-05-10  8:17 ` Wolfram Sang
  2013-05-10 13:50   ` Eduardo Valentin
  2013-05-16  7:22   ` Zhang Rui
  1 sibling, 2 replies; 6+ messages in thread
From: Wolfram Sang @ 2013-05-10  8:17 UTC (permalink / raw)
  To: linux-kernel; +Cc: Wolfram Sang, Zhang Rui, linux-pm

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/thermal/dove_thermal.c     |   11 +----------
 drivers/thermal/exynos_thermal.c   |    5 -----
 drivers/thermal/kirkwood_thermal.c |    7 +------
 drivers/thermal/rcar_thermal.c     |    6 +-----
 4 files changed, 3 insertions(+), 26 deletions(-)

diff --git a/drivers/thermal/dove_thermal.c b/drivers/thermal/dove_thermal.c
index 3078c40..5c53c53 100644
--- a/drivers/thermal/dove_thermal.c
+++ b/drivers/thermal/dove_thermal.c
@@ -133,25 +133,16 @@ static int dove_thermal_probe(struct platform_device *pdev)
 	struct resource *res;
 	int ret;
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "Failed to get platform resource\n");
-		return -ENODEV;
-	}
-
 	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
 	if (!priv)
 		return -ENOMEM;
 
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	priv->sensor = devm_ioremap_resource(&pdev->dev, res);
 	if (IS_ERR(priv->sensor))
 		return PTR_ERR(priv->sensor);
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-	if (!res) {
-		dev_err(&pdev->dev, "Failed to get platform resource\n");
-		return -ENODEV;
-	}
 	priv->control = devm_ioremap_resource(&pdev->dev, res);
 	if (IS_ERR(priv->control))
 		return PTR_ERR(priv->control);
diff --git a/drivers/thermal/exynos_thermal.c b/drivers/thermal/exynos_thermal.c
index b777ae6..a7bef42 100644
--- a/drivers/thermal/exynos_thermal.c
+++ b/drivers/thermal/exynos_thermal.c
@@ -967,11 +967,6 @@ static int exynos_tmu_probe(struct platform_device *pdev)
 	INIT_WORK(&data->irq_work, exynos_tmu_work);
 
 	data->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!data->mem) {
-		dev_err(&pdev->dev, "Failed to get platform resource\n");
-		return -ENOENT;
-	}
-
 	data->base = devm_ioremap_resource(&pdev->dev, data->mem);
 	if (IS_ERR(data->base))
 		return PTR_ERR(data->base);
diff --git a/drivers/thermal/kirkwood_thermal.c b/drivers/thermal/kirkwood_thermal.c
index e5500ed..e3ca1b4 100644
--- a/drivers/thermal/kirkwood_thermal.c
+++ b/drivers/thermal/kirkwood_thermal.c
@@ -75,16 +75,11 @@ static int kirkwood_thermal_probe(struct platform_device *pdev)
 	struct kirkwood_thermal_priv *priv;
 	struct resource *res;
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!res) {
-		dev_err(&pdev->dev, "Failed to get platform resource\n");
-		return -ENODEV;
-	}
-
 	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
 	if (!priv)
 		return -ENOMEM;
 
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	priv->sensor = devm_ioremap_resource(&pdev->dev, res);
 	if (IS_ERR(priv->sensor))
 		return PTR_ERR(priv->sensor);
diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c
index 2cc5b61..b2217b3 100644
--- a/drivers/thermal/rcar_thermal.c
+++ b/drivers/thermal/rcar_thermal.c
@@ -385,11 +385,6 @@ static int rcar_thermal_probe(struct platform_device *pdev)
 		 * platform has IRQ support.
 		 * Then, drier use common register
 		 */
-		res = platform_get_resource(pdev, IORESOURCE_MEM, mres++);
-		if (!res) {
-			dev_err(dev, "Could not get platform resource\n");
-			return -ENODEV;
-		}
 
 		ret = devm_request_irq(dev, irq->start, rcar_thermal_irq, 0,
 				       dev_name(dev), common);
@@ -401,6 +396,7 @@ static int rcar_thermal_probe(struct platform_device *pdev)
 		/*
 		 * rcar_has_irq_support() will be enabled
 		 */
+		res = platform_get_resource(pdev, IORESOURCE_MEM, mres++);
 		common->base = devm_ioremap_resource(dev, res);
 		if (IS_ERR(common->base))
 			return PTR_ERR(common->base);
-- 
1.7.10.4

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

* Re: [RFC 03/42] drivers/cpufreq: don't check resource with devm_ioremap_resource
  2013-05-10  8:16 ` [RFC 03/42] drivers/cpufreq: don't check resource with devm_ioremap_resource Wolfram Sang
@ 2013-05-10 11:09   ` Rafael J. Wysocki
  0 siblings, 0 replies; 6+ messages in thread
From: Rafael J. Wysocki @ 2013-05-10 11:09 UTC (permalink / raw)
  To: Wolfram Sang; +Cc: linux-kernel, Viresh Kumar, cpufreq, linux-pm

On Friday, May 10, 2013 10:16:48 AM 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>

Queued up for a post-3.10-rc1 push.

Thanks,
Rafael


> ---
>  drivers/cpufreq/kirkwood-cpufreq.c |    4 ----
>  1 file changed, 4 deletions(-)
> 
> diff --git a/drivers/cpufreq/kirkwood-cpufreq.c b/drivers/cpufreq/kirkwood-cpufreq.c
> index d36ea8d..b2644af 100644
> --- a/drivers/cpufreq/kirkwood-cpufreq.c
> +++ b/drivers/cpufreq/kirkwood-cpufreq.c
> @@ -171,10 +171,6 @@ static int kirkwood_cpufreq_probe(struct platform_device *pdev)
>  	priv.dev = &pdev->dev;
>  
>  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!res) {
> -		dev_err(&pdev->dev, "Cannot get memory resource\n");
> -		return -ENODEV;
> -	}
>  	priv.base = devm_ioremap_resource(&pdev->dev, res);
>  	if (IS_ERR(priv.base))
>  		return PTR_ERR(priv.base);
> 
-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

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

* Re: [RFC 26/42] drivers/thermal: don't check resource with devm_ioremap_resource
  2013-05-10  8:17 ` [RFC 26/42] drivers/thermal: " Wolfram Sang
@ 2013-05-10 13:50   ` Eduardo Valentin
  2013-05-16  7:22   ` Zhang Rui
  1 sibling, 0 replies; 6+ messages in thread
From: Eduardo Valentin @ 2013-05-10 13:50 UTC (permalink / raw)
  To: Wolfram Sang; +Cc: linux-kernel, Zhang Rui, linux-pm, eduardo.valentin

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

Wolfram,

On 10-05-2013 04:17, 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/thermal/dove_thermal.c     |   11 +----------
>  drivers/thermal/exynos_thermal.c   |    5 -----
>  drivers/thermal/kirkwood_thermal.c |    7 +------
>  drivers/thermal/rcar_thermal.c     |    6 +-----

You missed drivers/thermal/armada_thermal.c ?

For the changes below:

Acked-by: Eduardo Valentin <eduardo.valentin@ti.com>

>  4 files changed, 3 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/thermal/dove_thermal.c b/drivers/thermal/dove_thermal.c
> index 3078c40..5c53c53 100644
> --- a/drivers/thermal/dove_thermal.c
> +++ b/drivers/thermal/dove_thermal.c
> @@ -133,25 +133,16 @@ static int dove_thermal_probe(struct platform_device *pdev)
>  	struct resource *res;
>  	int ret;
>  
> -	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!res) {
> -		dev_err(&pdev->dev, "Failed to get platform resource\n");
> -		return -ENODEV;
> -	}
> -
>  	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
>  	if (!priv)
>  		return -ENOMEM;
>  
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	priv->sensor = devm_ioremap_resource(&pdev->dev, res);
>  	if (IS_ERR(priv->sensor))
>  		return PTR_ERR(priv->sensor);
>  
>  	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> -	if (!res) {
> -		dev_err(&pdev->dev, "Failed to get platform resource\n");
> -		return -ENODEV;
> -	}
>  	priv->control = devm_ioremap_resource(&pdev->dev, res);
>  	if (IS_ERR(priv->control))
>  		return PTR_ERR(priv->control);
> diff --git a/drivers/thermal/exynos_thermal.c b/drivers/thermal/exynos_thermal.c
> index b777ae6..a7bef42 100644
> --- a/drivers/thermal/exynos_thermal.c
> +++ b/drivers/thermal/exynos_thermal.c
> @@ -967,11 +967,6 @@ static int exynos_tmu_probe(struct platform_device *pdev)
>  	INIT_WORK(&data->irq_work, exynos_tmu_work);
>  
>  	data->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!data->mem) {
> -		dev_err(&pdev->dev, "Failed to get platform resource\n");
> -		return -ENOENT;
> -	}
> -
>  	data->base = devm_ioremap_resource(&pdev->dev, data->mem);
>  	if (IS_ERR(data->base))
>  		return PTR_ERR(data->base);
> diff --git a/drivers/thermal/kirkwood_thermal.c b/drivers/thermal/kirkwood_thermal.c
> index e5500ed..e3ca1b4 100644
> --- a/drivers/thermal/kirkwood_thermal.c
> +++ b/drivers/thermal/kirkwood_thermal.c
> @@ -75,16 +75,11 @@ static int kirkwood_thermal_probe(struct platform_device *pdev)
>  	struct kirkwood_thermal_priv *priv;
>  	struct resource *res;
>  
> -	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!res) {
> -		dev_err(&pdev->dev, "Failed to get platform resource\n");
> -		return -ENODEV;
> -	}
> -
>  	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
>  	if (!priv)
>  		return -ENOMEM;
>  
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	priv->sensor = devm_ioremap_resource(&pdev->dev, res);
>  	if (IS_ERR(priv->sensor))
>  		return PTR_ERR(priv->sensor);
> diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c
> index 2cc5b61..b2217b3 100644
> --- a/drivers/thermal/rcar_thermal.c
> +++ b/drivers/thermal/rcar_thermal.c
> @@ -385,11 +385,6 @@ static int rcar_thermal_probe(struct platform_device *pdev)
>  		 * platform has IRQ support.
>  		 * Then, drier use common register
>  		 */
> -		res = platform_get_resource(pdev, IORESOURCE_MEM, mres++);
> -		if (!res) {
> -			dev_err(dev, "Could not get platform resource\n");
> -			return -ENODEV;
> -		}
>  
>  		ret = devm_request_irq(dev, irq->start, rcar_thermal_irq, 0,
>  				       dev_name(dev), common);
> @@ -401,6 +396,7 @@ static int rcar_thermal_probe(struct platform_device *pdev)
>  		/*
>  		 * rcar_has_irq_support() will be enabled
>  		 */
> +		res = platform_get_resource(pdev, IORESOURCE_MEM, mres++);
>  		common->base = devm_ioremap_resource(dev, res);
>  		if (IS_ERR(common->base))
>  			return PTR_ERR(common->base);
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 295 bytes --]

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

* Re: [RFC 26/42] drivers/thermal: don't check resource with devm_ioremap_resource
  2013-05-10  8:17 ` [RFC 26/42] drivers/thermal: " Wolfram Sang
  2013-05-10 13:50   ` Eduardo Valentin
@ 2013-05-16  7:22   ` Zhang Rui
  1 sibling, 0 replies; 6+ messages in thread
From: Zhang Rui @ 2013-05-16  7:22 UTC (permalink / raw)
  To: Wolfram Sang; +Cc: linux-kernel, linux-pm

On Fri, 2013-05-10 at 10:17 +0200, 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>

applied to thermal -next.

thanks,
rui
> ---
>  drivers/thermal/dove_thermal.c     |   11 +----------
>  drivers/thermal/exynos_thermal.c   |    5 -----
>  drivers/thermal/kirkwood_thermal.c |    7 +------
>  drivers/thermal/rcar_thermal.c     |    6 +-----
>  4 files changed, 3 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/thermal/dove_thermal.c b/drivers/thermal/dove_thermal.c
> index 3078c40..5c53c53 100644
> --- a/drivers/thermal/dove_thermal.c
> +++ b/drivers/thermal/dove_thermal.c
> @@ -133,25 +133,16 @@ static int dove_thermal_probe(struct platform_device *pdev)
>  	struct resource *res;
>  	int ret;
>  
> -	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!res) {
> -		dev_err(&pdev->dev, "Failed to get platform resource\n");
> -		return -ENODEV;
> -	}
> -
>  	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
>  	if (!priv)
>  		return -ENOMEM;
>  
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	priv->sensor = devm_ioremap_resource(&pdev->dev, res);
>  	if (IS_ERR(priv->sensor))
>  		return PTR_ERR(priv->sensor);
>  
>  	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> -	if (!res) {
> -		dev_err(&pdev->dev, "Failed to get platform resource\n");
> -		return -ENODEV;
> -	}
>  	priv->control = devm_ioremap_resource(&pdev->dev, res);
>  	if (IS_ERR(priv->control))
>  		return PTR_ERR(priv->control);
> diff --git a/drivers/thermal/exynos_thermal.c b/drivers/thermal/exynos_thermal.c
> index b777ae6..a7bef42 100644
> --- a/drivers/thermal/exynos_thermal.c
> +++ b/drivers/thermal/exynos_thermal.c
> @@ -967,11 +967,6 @@ static int exynos_tmu_probe(struct platform_device *pdev)
>  	INIT_WORK(&data->irq_work, exynos_tmu_work);
>  
>  	data->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!data->mem) {
> -		dev_err(&pdev->dev, "Failed to get platform resource\n");
> -		return -ENOENT;
> -	}
> -
>  	data->base = devm_ioremap_resource(&pdev->dev, data->mem);
>  	if (IS_ERR(data->base))
>  		return PTR_ERR(data->base);
> diff --git a/drivers/thermal/kirkwood_thermal.c b/drivers/thermal/kirkwood_thermal.c
> index e5500ed..e3ca1b4 100644
> --- a/drivers/thermal/kirkwood_thermal.c
> +++ b/drivers/thermal/kirkwood_thermal.c
> @@ -75,16 +75,11 @@ static int kirkwood_thermal_probe(struct platform_device *pdev)
>  	struct kirkwood_thermal_priv *priv;
>  	struct resource *res;
>  
> -	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!res) {
> -		dev_err(&pdev->dev, "Failed to get platform resource\n");
> -		return -ENODEV;
> -	}
> -
>  	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
>  	if (!priv)
>  		return -ENOMEM;
>  
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	priv->sensor = devm_ioremap_resource(&pdev->dev, res);
>  	if (IS_ERR(priv->sensor))
>  		return PTR_ERR(priv->sensor);
> diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c
> index 2cc5b61..b2217b3 100644
> --- a/drivers/thermal/rcar_thermal.c
> +++ b/drivers/thermal/rcar_thermal.c
> @@ -385,11 +385,6 @@ static int rcar_thermal_probe(struct platform_device *pdev)
>  		 * platform has IRQ support.
>  		 * Then, drier use common register
>  		 */
> -		res = platform_get_resource(pdev, IORESOURCE_MEM, mres++);
> -		if (!res) {
> -			dev_err(dev, "Could not get platform resource\n");
> -			return -ENODEV;
> -		}
>  
>  		ret = devm_request_irq(dev, irq->start, rcar_thermal_irq, 0,
>  				       dev_name(dev), common);
> @@ -401,6 +396,7 @@ static int rcar_thermal_probe(struct platform_device *pdev)
>  		/*
>  		 * rcar_has_irq_support() will be enabled
>  		 */
> +		res = platform_get_resource(pdev, IORESOURCE_MEM, mres++);
>  		common->base = devm_ioremap_resource(dev, res);
>  		if (IS_ERR(common->base))
>  			return PTR_ERR(common->base);



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

end of thread, other threads:[~2013-05-16  7:23 UTC | newest]

Thread overview: 6+ 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 03/42] drivers/cpufreq: don't check resource with devm_ioremap_resource Wolfram Sang
2013-05-10 11:09   ` Rafael J. Wysocki
2013-05-10  8:17 ` [RFC 26/42] drivers/thermal: " Wolfram Sang
2013-05-10 13:50   ` Eduardo Valentin
2013-05-16  7:22   ` Zhang Rui

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).