All of lore.kernel.org
 help / color / mirror / Atom feed
From: Grant Likely <grant.likely@secretlab.ca>
To: Wolfram Sang <w.sang@pengutronix.de>, linux-i2c@vger.kernel.org
Cc: Viresh Kumar <viresh.kumar@st.com>,
	Mauro Carvalho Chehab <mchehab@redhat.com>,
	Tony Lindgren <tony@atomide.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Jochen Friedrich <jochen@scram.de>,
	Laxman Dewangan <ldewangan@nvidia.com>,
	Peter Korsgaard <jacmet@sunsite.dk>,
	Kukjin Kim <kgene.kim@samsung.com>,
	S tephen Warren <swarren@nvidia.com>,
	Olof Johansson <olof@lixom.net>, Barry Song <21cnbao@gmail.com>,
	Haojian Zhuang <haojian.zhuang@marvell.com>,
	Deepak Sikri <deepak.sikri@st.com>, Li Yang <leoli@freescale.com>,
	Haavard Skinnemoen <hskinnemoen@gmail.com>,
	Pawel Moll <pawel.moll@arm.com>,
	Vitaly Wool <vitalywool@gmail.com>,
	Wolfram Sang <wolfram@the-dreams.de>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Rusty Russell <rusty@rustcorp.com.au>,
	Tang Yuantian <B29983@freescale.com>,
	"Jean Delvare (PC drivers, core)" <khali@linux-fr.org>,
	Magnus Damm <damm@opensource.se>,
	Lars
Subject: Re: [PATCH] i2c: let the core register devices from devicetree
Date: Wed, 13 Jun 2012 22:40:00 -0600	[thread overview]
Message-ID: <20120614044000.63E583E3FA3@localhost> (raw)
In-Reply-To: <1339622215-4733-1-git-send-email-w.sang@pengutronix.de>

On Wed, 13 Jun 2012 23:12:10 +0200, Wolfram Sang <w.sang@pengutronix.de> wrote:
> Currently, every driver has to do it on its own, but it should be done
> in the core, like we already do with board_info structs.
> 
> Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>

FWIW, and without any actual compiling or testing:

Acked-by: Grant Likely <grant.likely@secretlab.ca>

On this topic, I'd also like to see all of drivers/of/of_i2c.c move
into drivers/i2c.  I've done the same for spi and gpio and I think the
result is cleaner.

g.

> ---
> 
> Based on v3.5-rc2. Only build tested, I don't have a OF based device
> around at the moment.
> 
> @Peter: Why does ocores do the device registration manually via
> platform_data instead of using board_info?
> 
>  drivers/i2c/busses/i2c-cpm.c                |    5 -----
>  drivers/i2c/busses/i2c-designware-platdrv.c |    1 -
>  drivers/i2c/busses/i2c-gpio.c               |    2 --
>  drivers/i2c/busses/i2c-ibm_iic.c            |    3 ---
>  drivers/i2c/busses/i2c-imx.c                |    2 --
>  drivers/i2c/busses/i2c-mpc.c                |    1 -
>  drivers/i2c/busses/i2c-mxs.c                |    2 --
>  drivers/i2c/busses/i2c-ocores.c             |    2 --
>  drivers/i2c/busses/i2c-omap.c               |    2 --
>  drivers/i2c/busses/i2c-pnx.c                |    2 --
>  drivers/i2c/busses/i2c-pxa.c                |    1 -
>  drivers/i2c/busses/i2c-s3c2410.c            |    1 -
>  drivers/i2c/busses/i2c-sh_mobile.c          |    1 -
>  drivers/i2c/busses/i2c-tegra.c              |    2 --
>  drivers/i2c/busses/i2c-versatile.c          |    1 -
>  drivers/i2c/busses/i2c-xiic.c               |    2 --
>  drivers/i2c/i2c-core.c                      |    3 +++
>  17 files changed, 3 insertions(+), 30 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-cpm.c b/drivers/i2c/busses/i2c-cpm.c
> index c1e1096..749e63c 100644
> --- a/drivers/i2c/busses/i2c-cpm.c
> +++ b/drivers/i2c/busses/i2c-cpm.c
> @@ -673,11 +673,6 @@ static int __devinit cpm_i2c_probe(struct platform_device *ofdev)
>  	dev_dbg(&ofdev->dev, "hw routines for %s registered.\n",
>  		cpm->adap.name);
>  
> -	/*
> -	 * register OF I2C devices
> -	 */
> -	of_i2c_register_devices(&cpm->adap);
> -
>  	return 0;
>  out_shut:
>  	cpm_i2c_shutdown(cpm);
> diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
> index 0506fef..cf3b23c 100644
> --- a/drivers/i2c/busses/i2c-designware-platdrv.c
> +++ b/drivers/i2c/busses/i2c-designware-platdrv.c
> @@ -147,7 +147,6 @@ static int __devinit dw_i2c_probe(struct platform_device *pdev)
>  		dev_err(&pdev->dev, "failure adding adapter\n");
>  		goto err_free_irq;
>  	}
> -	of_i2c_register_devices(adap);
>  
>  	return 0;
>  
> diff --git a/drivers/i2c/busses/i2c-gpio.c b/drivers/i2c/busses/i2c-gpio.c
> index e62d2d9..75e26b9 100644
> --- a/drivers/i2c/busses/i2c-gpio.c
> +++ b/drivers/i2c/busses/i2c-gpio.c
> @@ -195,8 +195,6 @@ static int __devinit i2c_gpio_probe(struct platform_device *pdev)
>  	if (ret)
>  		goto err_add_bus;
>  
> -	of_i2c_register_devices(adap);
> -
>  	platform_set_drvdata(pdev, priv);
>  
>  	dev_info(&pdev->dev, "using pins %u (SDA) and %u (SCL%s)\n",
> diff --git a/drivers/i2c/busses/i2c-ibm_iic.c b/drivers/i2c/busses/i2c-ibm_iic.c
> index 806e225..8894ab6 100644
> --- a/drivers/i2c/busses/i2c-ibm_iic.c
> +++ b/drivers/i2c/busses/i2c-ibm_iic.c
> @@ -759,9 +759,6 @@ static int __devinit iic_probe(struct platform_device *ofdev)
>  	dev_info(&ofdev->dev, "using %s mode\n",
>  		 dev->fast_mode ? "fast (400 kHz)" : "standard (100 kHz)");
>  
> -	/* Now register all the child nodes */
> -	of_i2c_register_devices(adap);
> -
>  	return 0;
>  
>  error_cleanup:
> diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
> index 8d6b504..16d9356 100644
> --- a/drivers/i2c/busses/i2c-imx.c
> +++ b/drivers/i2c/busses/i2c-imx.c
> @@ -568,8 +568,6 @@ static int __init i2c_imx_probe(struct platform_device *pdev)
>  		goto fail5;
>  	}
>  
> -	of_i2c_register_devices(&i2c_imx->adapter);
> -
>  	/* Set up platform driver data */
>  	platform_set_drvdata(pdev, i2c_imx);
>  
> diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
> index b76731e..a86049a 100644
> --- a/drivers/i2c/busses/i2c-mpc.c
> +++ b/drivers/i2c/busses/i2c-mpc.c
> @@ -675,7 +675,6 @@ static int __devinit fsl_i2c_probe(struct platform_device *op)
>  		dev_err(i2c->dev, "failed to add adapter\n");
>  		goto fail_add;
>  	}
> -	of_i2c_register_devices(&i2c->adap);
>  
>  	return result;
>  
> diff --git a/drivers/i2c/busses/i2c-mxs.c b/drivers/i2c/busses/i2c-mxs.c
> index 04eb441..2bc0ec6 100644
> --- a/drivers/i2c/busses/i2c-mxs.c
> +++ b/drivers/i2c/busses/i2c-mxs.c
> @@ -379,8 +379,6 @@ static int __devinit mxs_i2c_probe(struct platform_device *pdev)
>  		return err;
>  	}
>  
> -	of_i2c_register_devices(adap);
> -
>  	return 0;
>  }
>  
> diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c
> index 75194c5..a6a11cb 100644
> --- a/drivers/i2c/busses/i2c-ocores.c
> +++ b/drivers/i2c/busses/i2c-ocores.c
> @@ -344,8 +344,6 @@ static int __devinit ocores_i2c_probe(struct platform_device *pdev)
>  	if (pdata) {
>  		for (i = 0; i < pdata->num_devices; i++)
>  			i2c_new_device(&i2c->adap, pdata->devices + i);
> -	} else {
> -		of_i2c_register_devices(&i2c->adap);
>  	}
>  
>  	return 0;
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> index 801df60..c290091 100644
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -1121,8 +1121,6 @@ omap_i2c_probe(struct platform_device *pdev)
>  		goto err_free_irq;
>  	}
>  
> -	of_i2c_register_devices(adap);
> -
>  	return 0;
>  
>  err_free_irq:
> diff --git a/drivers/i2c/busses/i2c-pnx.c b/drivers/i2c/busses/i2c-pnx.c
> index 99389d2..c64d960 100644
> --- a/drivers/i2c/busses/i2c-pnx.c
> +++ b/drivers/i2c/busses/i2c-pnx.c
> @@ -730,8 +730,6 @@ static int __devinit i2c_pnx_probe(struct platform_device *pdev)
>  		goto out_irq;
>  	}
>  
> -	of_i2c_register_devices(&alg_data->adapter);
> -
>  	dev_dbg(&pdev->dev, "%s: Master at %#8x, irq %d.\n",
>  		alg_data->adapter.name, res->start, alg_data->irq);
>  
> diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
> index a997c7d..9475235 100644
> --- a/drivers/i2c/busses/i2c-pxa.c
> +++ b/drivers/i2c/busses/i2c-pxa.c
> @@ -1194,7 +1194,6 @@ static int i2c_pxa_probe(struct platform_device *dev)
>  		printk(KERN_INFO "I2C: Failed to add bus\n");
>  		goto eadapt;
>  	}
> -	of_i2c_register_devices(&i2c->adap);
>  
>  	platform_set_drvdata(dev, i2c);
>  
> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
> index 0195915..ad3a79b 100644
> --- a/drivers/i2c/busses/i2c-s3c2410.c
> +++ b/drivers/i2c/busses/i2c-s3c2410.c
> @@ -1058,7 +1058,6 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  		goto err_cpufreq;
>  	}
>  
> -	of_i2c_register_devices(&i2c->adap);
>  	platform_set_drvdata(pdev, i2c);
>  
>  	pm_runtime_enable(&pdev->dev);
> diff --git a/drivers/i2c/busses/i2c-sh_mobile.c b/drivers/i2c/busses/i2c-sh_mobile.c
> index 8110ca4..9acd286 100644
> --- a/drivers/i2c/busses/i2c-sh_mobile.c
> +++ b/drivers/i2c/busses/i2c-sh_mobile.c
> @@ -670,7 +670,6 @@ static int sh_mobile_i2c_probe(struct platform_device *dev)
>  	dev_info(&dev->dev, "I2C adapter %d with bus speed %lu Hz\n",
>  		 adap->nr, pd->bus_speed);
>  
> -	of_i2c_register_devices(adap);
>  	return 0;
>  
>   err_all:
> diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
> index 8b2e555..67388cc 100644
> --- a/drivers/i2c/busses/i2c-tegra.c
> +++ b/drivers/i2c/busses/i2c-tegra.c
> @@ -684,8 +684,6 @@ static int __devinit tegra_i2c_probe(struct platform_device *pdev)
>  		goto err_free_irq;
>  	}
>  
> -	of_i2c_register_devices(&i2c_dev->adapter);
> -
>  	return 0;
>  err_free_irq:
>  	free_irq(i2c_dev->irq, i2c_dev);
> diff --git a/drivers/i2c/busses/i2c-versatile.c b/drivers/i2c/busses/i2c-versatile.c
> index eec20db..14a1432 100644
> --- a/drivers/i2c/busses/i2c-versatile.c
> +++ b/drivers/i2c/busses/i2c-versatile.c
> @@ -108,7 +108,6 @@ static int i2c_versatile_probe(struct platform_device *dev)
>  	ret = i2c_bit_add_numbered_bus(&i2c->adap);
>  	if (ret >= 0) {
>  		platform_set_drvdata(dev, i2c);
> -		of_i2c_register_devices(&i2c->adap);
>  		return 0;
>  	}
>  
> diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
> index 641d0e5..d76bb71 100644
> --- a/drivers/i2c/busses/i2c-xiic.c
> +++ b/drivers/i2c/busses/i2c-xiic.c
> @@ -754,8 +754,6 @@ static int __devinit xiic_i2c_probe(struct platform_device *pdev)
>  			i2c_new_device(&i2c->adap, pdata->devices + i);
>  	}
>  
> -	of_i2c_register_devices(&i2c->adap);
> -
>  	return 0;
>  
>  add_adapter_failed:
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index a6ad32b..4791833 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -39,6 +39,7 @@
>  #include <linux/irqflags.h>
>  #include <linux/rwsem.h>
>  #include <linux/pm_runtime.h>
> +#include <linux/of_i2c.h>
>  #include <asm/uaccess.h>
>  
>  #include "i2c-core.h"
> @@ -880,6 +881,8 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
>  #endif
>  
>  	/* create pre-declared device nodes */
> +	of_i2c_register_devices(adap);
> +
>  	if (adap->nr < __i2c_first_dynamic_bus_num)
>  		i2c_scan_static_board_info(adap);
>  
> -- 
> 1.7.10
> 

-- 
Grant Likely, B.Sc, P.Eng.
Secret Lab Technologies, Ltd.

WARNING: multiple messages have this Message-ID (diff)
From: Grant Likely <grant.likely@secretlab.ca>
To: Wolfram Sang <w.sang@pengutronix.de>, linux-i2c@vger.kernel.org
Cc: Viresh Kumar <viresh.kumar@st.com>,
	Mauro Carvalho Chehab <mchehab@redhat.com>,
	Tony Lindgren <tony@atomide.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Laxman Dewangan <ldewangan@nvidia.com>,
	Kukjin Kim <kgene.kim@samsung.com>,
	S tephen Warren <swarren@nvidia.com>,
	Olof Johansson <olof@lixom.net>, Barry Song <21cnbao@gmail.com>,
	Haojian Zhuang <haojian.zhuang@marvell.com>,
	Deepak Sikri <deepak.sikri@st.com>,
	Haavard Skinnemoen <hskinnemoen@gmail.com>,
	Pawel Moll <pawel.moll@arm.com>,
	Wolfram Sang <wolfram@the-dreams.de>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Rusty Russell <rusty@rustcorp.com.au>,
	Tang Yuantian <B29983@freescale.com>,
	"Jean Delvare \(PC drivers, core\)" <khali@linux-fr.org>,
	Magnus Damm <damm@opensource.se>,
	Lars-Peter Clausen <lars@metafoo.de>,
	"Ben Dooks \(embedded platforms\)" <ben-linux@fluff.org>,
	linux-arm-kernel@lists.infradead.org,
	Jiri Kosina <jkosina@suse.cz>,
	Wolfram Sang <w.sang@pengutronix.de>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Karol Lewandowski <k.lewandowsk@samsung.com>,
	Dirk Brandewie <dirk.brandewie@gmail.com>,
	Shawn Guo <shawn.guo@linaro.org>,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH] i2c: let the core register devices from devicetree
Date: Wed, 13 Jun 2012 22:40:00 -0600	[thread overview]
Message-ID: <20120614044000.63E583E3FA3@localhost> (raw)
In-Reply-To: <1339622215-4733-1-git-send-email-w.sang@pengutronix.de>

On Wed, 13 Jun 2012 23:12:10 +0200, Wolfram Sang <w.sang@pengutronix.de> wrote:
> Currently, every driver has to do it on its own, but it should be done
> in the core, like we already do with board_info structs.
> 
> Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>

FWIW, and without any actual compiling or testing:

Acked-by: Grant Likely <grant.likely@secretlab.ca>

On this topic, I'd also like to see all of drivers/of/of_i2c.c move
into drivers/i2c.  I've done the same for spi and gpio and I think the
result is cleaner.

g.

> ---
> 
> Based on v3.5-rc2. Only build tested, I don't have a OF based device
> around at the moment.
> 
> @Peter: Why does ocores do the device registration manually via
> platform_data instead of using board_info?
> 
>  drivers/i2c/busses/i2c-cpm.c                |    5 -----
>  drivers/i2c/busses/i2c-designware-platdrv.c |    1 -
>  drivers/i2c/busses/i2c-gpio.c               |    2 --
>  drivers/i2c/busses/i2c-ibm_iic.c            |    3 ---
>  drivers/i2c/busses/i2c-imx.c                |    2 --
>  drivers/i2c/busses/i2c-mpc.c                |    1 -
>  drivers/i2c/busses/i2c-mxs.c                |    2 --
>  drivers/i2c/busses/i2c-ocores.c             |    2 --
>  drivers/i2c/busses/i2c-omap.c               |    2 --
>  drivers/i2c/busses/i2c-pnx.c                |    2 --
>  drivers/i2c/busses/i2c-pxa.c                |    1 -
>  drivers/i2c/busses/i2c-s3c2410.c            |    1 -
>  drivers/i2c/busses/i2c-sh_mobile.c          |    1 -
>  drivers/i2c/busses/i2c-tegra.c              |    2 --
>  drivers/i2c/busses/i2c-versatile.c          |    1 -
>  drivers/i2c/busses/i2c-xiic.c               |    2 --
>  drivers/i2c/i2c-core.c                      |    3 +++
>  17 files changed, 3 insertions(+), 30 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-cpm.c b/drivers/i2c/busses/i2c-cpm.c
> index c1e1096..749e63c 100644
> --- a/drivers/i2c/busses/i2c-cpm.c
> +++ b/drivers/i2c/busses/i2c-cpm.c
> @@ -673,11 +673,6 @@ static int __devinit cpm_i2c_probe(struct platform_device *ofdev)
>  	dev_dbg(&ofdev->dev, "hw routines for %s registered.\n",
>  		cpm->adap.name);
>  
> -	/*
> -	 * register OF I2C devices
> -	 */
> -	of_i2c_register_devices(&cpm->adap);
> -
>  	return 0;
>  out_shut:
>  	cpm_i2c_shutdown(cpm);
> diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
> index 0506fef..cf3b23c 100644
> --- a/drivers/i2c/busses/i2c-designware-platdrv.c
> +++ b/drivers/i2c/busses/i2c-designware-platdrv.c
> @@ -147,7 +147,6 @@ static int __devinit dw_i2c_probe(struct platform_device *pdev)
>  		dev_err(&pdev->dev, "failure adding adapter\n");
>  		goto err_free_irq;
>  	}
> -	of_i2c_register_devices(adap);
>  
>  	return 0;
>  
> diff --git a/drivers/i2c/busses/i2c-gpio.c b/drivers/i2c/busses/i2c-gpio.c
> index e62d2d9..75e26b9 100644
> --- a/drivers/i2c/busses/i2c-gpio.c
> +++ b/drivers/i2c/busses/i2c-gpio.c
> @@ -195,8 +195,6 @@ static int __devinit i2c_gpio_probe(struct platform_device *pdev)
>  	if (ret)
>  		goto err_add_bus;
>  
> -	of_i2c_register_devices(adap);
> -
>  	platform_set_drvdata(pdev, priv);
>  
>  	dev_info(&pdev->dev, "using pins %u (SDA) and %u (SCL%s)\n",
> diff --git a/drivers/i2c/busses/i2c-ibm_iic.c b/drivers/i2c/busses/i2c-ibm_iic.c
> index 806e225..8894ab6 100644
> --- a/drivers/i2c/busses/i2c-ibm_iic.c
> +++ b/drivers/i2c/busses/i2c-ibm_iic.c
> @@ -759,9 +759,6 @@ static int __devinit iic_probe(struct platform_device *ofdev)
>  	dev_info(&ofdev->dev, "using %s mode\n",
>  		 dev->fast_mode ? "fast (400 kHz)" : "standard (100 kHz)");
>  
> -	/* Now register all the child nodes */
> -	of_i2c_register_devices(adap);
> -
>  	return 0;
>  
>  error_cleanup:
> diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
> index 8d6b504..16d9356 100644
> --- a/drivers/i2c/busses/i2c-imx.c
> +++ b/drivers/i2c/busses/i2c-imx.c
> @@ -568,8 +568,6 @@ static int __init i2c_imx_probe(struct platform_device *pdev)
>  		goto fail5;
>  	}
>  
> -	of_i2c_register_devices(&i2c_imx->adapter);
> -
>  	/* Set up platform driver data */
>  	platform_set_drvdata(pdev, i2c_imx);
>  
> diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
> index b76731e..a86049a 100644
> --- a/drivers/i2c/busses/i2c-mpc.c
> +++ b/drivers/i2c/busses/i2c-mpc.c
> @@ -675,7 +675,6 @@ static int __devinit fsl_i2c_probe(struct platform_device *op)
>  		dev_err(i2c->dev, "failed to add adapter\n");
>  		goto fail_add;
>  	}
> -	of_i2c_register_devices(&i2c->adap);
>  
>  	return result;
>  
> diff --git a/drivers/i2c/busses/i2c-mxs.c b/drivers/i2c/busses/i2c-mxs.c
> index 04eb441..2bc0ec6 100644
> --- a/drivers/i2c/busses/i2c-mxs.c
> +++ b/drivers/i2c/busses/i2c-mxs.c
> @@ -379,8 +379,6 @@ static int __devinit mxs_i2c_probe(struct platform_device *pdev)
>  		return err;
>  	}
>  
> -	of_i2c_register_devices(adap);
> -
>  	return 0;
>  }
>  
> diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c
> index 75194c5..a6a11cb 100644
> --- a/drivers/i2c/busses/i2c-ocores.c
> +++ b/drivers/i2c/busses/i2c-ocores.c
> @@ -344,8 +344,6 @@ static int __devinit ocores_i2c_probe(struct platform_device *pdev)
>  	if (pdata) {
>  		for (i = 0; i < pdata->num_devices; i++)
>  			i2c_new_device(&i2c->adap, pdata->devices + i);
> -	} else {
> -		of_i2c_register_devices(&i2c->adap);
>  	}
>  
>  	return 0;
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> index 801df60..c290091 100644
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -1121,8 +1121,6 @@ omap_i2c_probe(struct platform_device *pdev)
>  		goto err_free_irq;
>  	}
>  
> -	of_i2c_register_devices(adap);
> -
>  	return 0;
>  
>  err_free_irq:
> diff --git a/drivers/i2c/busses/i2c-pnx.c b/drivers/i2c/busses/i2c-pnx.c
> index 99389d2..c64d960 100644
> --- a/drivers/i2c/busses/i2c-pnx.c
> +++ b/drivers/i2c/busses/i2c-pnx.c
> @@ -730,8 +730,6 @@ static int __devinit i2c_pnx_probe(struct platform_device *pdev)
>  		goto out_irq;
>  	}
>  
> -	of_i2c_register_devices(&alg_data->adapter);
> -
>  	dev_dbg(&pdev->dev, "%s: Master at %#8x, irq %d.\n",
>  		alg_data->adapter.name, res->start, alg_data->irq);
>  
> diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
> index a997c7d..9475235 100644
> --- a/drivers/i2c/busses/i2c-pxa.c
> +++ b/drivers/i2c/busses/i2c-pxa.c
> @@ -1194,7 +1194,6 @@ static int i2c_pxa_probe(struct platform_device *dev)
>  		printk(KERN_INFO "I2C: Failed to add bus\n");
>  		goto eadapt;
>  	}
> -	of_i2c_register_devices(&i2c->adap);
>  
>  	platform_set_drvdata(dev, i2c);
>  
> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
> index 0195915..ad3a79b 100644
> --- a/drivers/i2c/busses/i2c-s3c2410.c
> +++ b/drivers/i2c/busses/i2c-s3c2410.c
> @@ -1058,7 +1058,6 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  		goto err_cpufreq;
>  	}
>  
> -	of_i2c_register_devices(&i2c->adap);
>  	platform_set_drvdata(pdev, i2c);
>  
>  	pm_runtime_enable(&pdev->dev);
> diff --git a/drivers/i2c/busses/i2c-sh_mobile.c b/drivers/i2c/busses/i2c-sh_mobile.c
> index 8110ca4..9acd286 100644
> --- a/drivers/i2c/busses/i2c-sh_mobile.c
> +++ b/drivers/i2c/busses/i2c-sh_mobile.c
> @@ -670,7 +670,6 @@ static int sh_mobile_i2c_probe(struct platform_device *dev)
>  	dev_info(&dev->dev, "I2C adapter %d with bus speed %lu Hz\n",
>  		 adap->nr, pd->bus_speed);
>  
> -	of_i2c_register_devices(adap);
>  	return 0;
>  
>   err_all:
> diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
> index 8b2e555..67388cc 100644
> --- a/drivers/i2c/busses/i2c-tegra.c
> +++ b/drivers/i2c/busses/i2c-tegra.c
> @@ -684,8 +684,6 @@ static int __devinit tegra_i2c_probe(struct platform_device *pdev)
>  		goto err_free_irq;
>  	}
>  
> -	of_i2c_register_devices(&i2c_dev->adapter);
> -
>  	return 0;
>  err_free_irq:
>  	free_irq(i2c_dev->irq, i2c_dev);
> diff --git a/drivers/i2c/busses/i2c-versatile.c b/drivers/i2c/busses/i2c-versatile.c
> index eec20db..14a1432 100644
> --- a/drivers/i2c/busses/i2c-versatile.c
> +++ b/drivers/i2c/busses/i2c-versatile.c
> @@ -108,7 +108,6 @@ static int i2c_versatile_probe(struct platform_device *dev)
>  	ret = i2c_bit_add_numbered_bus(&i2c->adap);
>  	if (ret >= 0) {
>  		platform_set_drvdata(dev, i2c);
> -		of_i2c_register_devices(&i2c->adap);
>  		return 0;
>  	}
>  
> diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
> index 641d0e5..d76bb71 100644
> --- a/drivers/i2c/busses/i2c-xiic.c
> +++ b/drivers/i2c/busses/i2c-xiic.c
> @@ -754,8 +754,6 @@ static int __devinit xiic_i2c_probe(struct platform_device *pdev)
>  			i2c_new_device(&i2c->adap, pdata->devices + i);
>  	}
>  
> -	of_i2c_register_devices(&i2c->adap);
> -
>  	return 0;
>  
>  add_adapter_failed:
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index a6ad32b..4791833 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -39,6 +39,7 @@
>  #include <linux/irqflags.h>
>  #include <linux/rwsem.h>
>  #include <linux/pm_runtime.h>
> +#include <linux/of_i2c.h>
>  #include <asm/uaccess.h>
>  
>  #include "i2c-core.h"
> @@ -880,6 +881,8 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
>  #endif
>  
>  	/* create pre-declared device nodes */
> +	of_i2c_register_devices(adap);
> +
>  	if (adap->nr < __i2c_first_dynamic_bus_num)
>  		i2c_scan_static_board_info(adap);
>  
> -- 
> 1.7.10
> 

-- 
Grant Likely, B.Sc, P.Eng.
Secret Lab Technologies, Ltd.

WARNING: multiple messages have this Message-ID (diff)
From: grant.likely@secretlab.ca (Grant Likely)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] i2c: let the core register devices from devicetree
Date: Wed, 13 Jun 2012 22:40:00 -0600	[thread overview]
Message-ID: <20120614044000.63E583E3FA3@localhost> (raw)
In-Reply-To: <1339622215-4733-1-git-send-email-w.sang@pengutronix.de>

On Wed, 13 Jun 2012 23:12:10 +0200, Wolfram Sang <w.sang@pengutronix.de> wrote:
> Currently, every driver has to do it on its own, but it should be done
> in the core, like we already do with board_info structs.
> 
> Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>

FWIW, and without any actual compiling or testing:

Acked-by: Grant Likely <grant.likely@secretlab.ca>

On this topic, I'd also like to see all of drivers/of/of_i2c.c move
into drivers/i2c.  I've done the same for spi and gpio and I think the
result is cleaner.

g.

> ---
> 
> Based on v3.5-rc2. Only build tested, I don't have a OF based device
> around at the moment.
> 
> @Peter: Why does ocores do the device registration manually via
> platform_data instead of using board_info?
> 
>  drivers/i2c/busses/i2c-cpm.c                |    5 -----
>  drivers/i2c/busses/i2c-designware-platdrv.c |    1 -
>  drivers/i2c/busses/i2c-gpio.c               |    2 --
>  drivers/i2c/busses/i2c-ibm_iic.c            |    3 ---
>  drivers/i2c/busses/i2c-imx.c                |    2 --
>  drivers/i2c/busses/i2c-mpc.c                |    1 -
>  drivers/i2c/busses/i2c-mxs.c                |    2 --
>  drivers/i2c/busses/i2c-ocores.c             |    2 --
>  drivers/i2c/busses/i2c-omap.c               |    2 --
>  drivers/i2c/busses/i2c-pnx.c                |    2 --
>  drivers/i2c/busses/i2c-pxa.c                |    1 -
>  drivers/i2c/busses/i2c-s3c2410.c            |    1 -
>  drivers/i2c/busses/i2c-sh_mobile.c          |    1 -
>  drivers/i2c/busses/i2c-tegra.c              |    2 --
>  drivers/i2c/busses/i2c-versatile.c          |    1 -
>  drivers/i2c/busses/i2c-xiic.c               |    2 --
>  drivers/i2c/i2c-core.c                      |    3 +++
>  17 files changed, 3 insertions(+), 30 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-cpm.c b/drivers/i2c/busses/i2c-cpm.c
> index c1e1096..749e63c 100644
> --- a/drivers/i2c/busses/i2c-cpm.c
> +++ b/drivers/i2c/busses/i2c-cpm.c
> @@ -673,11 +673,6 @@ static int __devinit cpm_i2c_probe(struct platform_device *ofdev)
>  	dev_dbg(&ofdev->dev, "hw routines for %s registered.\n",
>  		cpm->adap.name);
>  
> -	/*
> -	 * register OF I2C devices
> -	 */
> -	of_i2c_register_devices(&cpm->adap);
> -
>  	return 0;
>  out_shut:
>  	cpm_i2c_shutdown(cpm);
> diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
> index 0506fef..cf3b23c 100644
> --- a/drivers/i2c/busses/i2c-designware-platdrv.c
> +++ b/drivers/i2c/busses/i2c-designware-platdrv.c
> @@ -147,7 +147,6 @@ static int __devinit dw_i2c_probe(struct platform_device *pdev)
>  		dev_err(&pdev->dev, "failure adding adapter\n");
>  		goto err_free_irq;
>  	}
> -	of_i2c_register_devices(adap);
>  
>  	return 0;
>  
> diff --git a/drivers/i2c/busses/i2c-gpio.c b/drivers/i2c/busses/i2c-gpio.c
> index e62d2d9..75e26b9 100644
> --- a/drivers/i2c/busses/i2c-gpio.c
> +++ b/drivers/i2c/busses/i2c-gpio.c
> @@ -195,8 +195,6 @@ static int __devinit i2c_gpio_probe(struct platform_device *pdev)
>  	if (ret)
>  		goto err_add_bus;
>  
> -	of_i2c_register_devices(adap);
> -
>  	platform_set_drvdata(pdev, priv);
>  
>  	dev_info(&pdev->dev, "using pins %u (SDA) and %u (SCL%s)\n",
> diff --git a/drivers/i2c/busses/i2c-ibm_iic.c b/drivers/i2c/busses/i2c-ibm_iic.c
> index 806e225..8894ab6 100644
> --- a/drivers/i2c/busses/i2c-ibm_iic.c
> +++ b/drivers/i2c/busses/i2c-ibm_iic.c
> @@ -759,9 +759,6 @@ static int __devinit iic_probe(struct platform_device *ofdev)
>  	dev_info(&ofdev->dev, "using %s mode\n",
>  		 dev->fast_mode ? "fast (400 kHz)" : "standard (100 kHz)");
>  
> -	/* Now register all the child nodes */
> -	of_i2c_register_devices(adap);
> -
>  	return 0;
>  
>  error_cleanup:
> diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
> index 8d6b504..16d9356 100644
> --- a/drivers/i2c/busses/i2c-imx.c
> +++ b/drivers/i2c/busses/i2c-imx.c
> @@ -568,8 +568,6 @@ static int __init i2c_imx_probe(struct platform_device *pdev)
>  		goto fail5;
>  	}
>  
> -	of_i2c_register_devices(&i2c_imx->adapter);
> -
>  	/* Set up platform driver data */
>  	platform_set_drvdata(pdev, i2c_imx);
>  
> diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
> index b76731e..a86049a 100644
> --- a/drivers/i2c/busses/i2c-mpc.c
> +++ b/drivers/i2c/busses/i2c-mpc.c
> @@ -675,7 +675,6 @@ static int __devinit fsl_i2c_probe(struct platform_device *op)
>  		dev_err(i2c->dev, "failed to add adapter\n");
>  		goto fail_add;
>  	}
> -	of_i2c_register_devices(&i2c->adap);
>  
>  	return result;
>  
> diff --git a/drivers/i2c/busses/i2c-mxs.c b/drivers/i2c/busses/i2c-mxs.c
> index 04eb441..2bc0ec6 100644
> --- a/drivers/i2c/busses/i2c-mxs.c
> +++ b/drivers/i2c/busses/i2c-mxs.c
> @@ -379,8 +379,6 @@ static int __devinit mxs_i2c_probe(struct platform_device *pdev)
>  		return err;
>  	}
>  
> -	of_i2c_register_devices(adap);
> -
>  	return 0;
>  }
>  
> diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c
> index 75194c5..a6a11cb 100644
> --- a/drivers/i2c/busses/i2c-ocores.c
> +++ b/drivers/i2c/busses/i2c-ocores.c
> @@ -344,8 +344,6 @@ static int __devinit ocores_i2c_probe(struct platform_device *pdev)
>  	if (pdata) {
>  		for (i = 0; i < pdata->num_devices; i++)
>  			i2c_new_device(&i2c->adap, pdata->devices + i);
> -	} else {
> -		of_i2c_register_devices(&i2c->adap);
>  	}
>  
>  	return 0;
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> index 801df60..c290091 100644
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -1121,8 +1121,6 @@ omap_i2c_probe(struct platform_device *pdev)
>  		goto err_free_irq;
>  	}
>  
> -	of_i2c_register_devices(adap);
> -
>  	return 0;
>  
>  err_free_irq:
> diff --git a/drivers/i2c/busses/i2c-pnx.c b/drivers/i2c/busses/i2c-pnx.c
> index 99389d2..c64d960 100644
> --- a/drivers/i2c/busses/i2c-pnx.c
> +++ b/drivers/i2c/busses/i2c-pnx.c
> @@ -730,8 +730,6 @@ static int __devinit i2c_pnx_probe(struct platform_device *pdev)
>  		goto out_irq;
>  	}
>  
> -	of_i2c_register_devices(&alg_data->adapter);
> -
>  	dev_dbg(&pdev->dev, "%s: Master at %#8x, irq %d.\n",
>  		alg_data->adapter.name, res->start, alg_data->irq);
>  
> diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
> index a997c7d..9475235 100644
> --- a/drivers/i2c/busses/i2c-pxa.c
> +++ b/drivers/i2c/busses/i2c-pxa.c
> @@ -1194,7 +1194,6 @@ static int i2c_pxa_probe(struct platform_device *dev)
>  		printk(KERN_INFO "I2C: Failed to add bus\n");
>  		goto eadapt;
>  	}
> -	of_i2c_register_devices(&i2c->adap);
>  
>  	platform_set_drvdata(dev, i2c);
>  
> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
> index 0195915..ad3a79b 100644
> --- a/drivers/i2c/busses/i2c-s3c2410.c
> +++ b/drivers/i2c/busses/i2c-s3c2410.c
> @@ -1058,7 +1058,6 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
>  		goto err_cpufreq;
>  	}
>  
> -	of_i2c_register_devices(&i2c->adap);
>  	platform_set_drvdata(pdev, i2c);
>  
>  	pm_runtime_enable(&pdev->dev);
> diff --git a/drivers/i2c/busses/i2c-sh_mobile.c b/drivers/i2c/busses/i2c-sh_mobile.c
> index 8110ca4..9acd286 100644
> --- a/drivers/i2c/busses/i2c-sh_mobile.c
> +++ b/drivers/i2c/busses/i2c-sh_mobile.c
> @@ -670,7 +670,6 @@ static int sh_mobile_i2c_probe(struct platform_device *dev)
>  	dev_info(&dev->dev, "I2C adapter %d with bus speed %lu Hz\n",
>  		 adap->nr, pd->bus_speed);
>  
> -	of_i2c_register_devices(adap);
>  	return 0;
>  
>   err_all:
> diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
> index 8b2e555..67388cc 100644
> --- a/drivers/i2c/busses/i2c-tegra.c
> +++ b/drivers/i2c/busses/i2c-tegra.c
> @@ -684,8 +684,6 @@ static int __devinit tegra_i2c_probe(struct platform_device *pdev)
>  		goto err_free_irq;
>  	}
>  
> -	of_i2c_register_devices(&i2c_dev->adapter);
> -
>  	return 0;
>  err_free_irq:
>  	free_irq(i2c_dev->irq, i2c_dev);
> diff --git a/drivers/i2c/busses/i2c-versatile.c b/drivers/i2c/busses/i2c-versatile.c
> index eec20db..14a1432 100644
> --- a/drivers/i2c/busses/i2c-versatile.c
> +++ b/drivers/i2c/busses/i2c-versatile.c
> @@ -108,7 +108,6 @@ static int i2c_versatile_probe(struct platform_device *dev)
>  	ret = i2c_bit_add_numbered_bus(&i2c->adap);
>  	if (ret >= 0) {
>  		platform_set_drvdata(dev, i2c);
> -		of_i2c_register_devices(&i2c->adap);
>  		return 0;
>  	}
>  
> diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
> index 641d0e5..d76bb71 100644
> --- a/drivers/i2c/busses/i2c-xiic.c
> +++ b/drivers/i2c/busses/i2c-xiic.c
> @@ -754,8 +754,6 @@ static int __devinit xiic_i2c_probe(struct platform_device *pdev)
>  			i2c_new_device(&i2c->adap, pdata->devices + i);
>  	}
>  
> -	of_i2c_register_devices(&i2c->adap);
> -
>  	return 0;
>  
>  add_adapter_failed:
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index a6ad32b..4791833 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -39,6 +39,7 @@
>  #include <linux/irqflags.h>
>  #include <linux/rwsem.h>
>  #include <linux/pm_runtime.h>
> +#include <linux/of_i2c.h>
>  #include <asm/uaccess.h>
>  
>  #include "i2c-core.h"
> @@ -880,6 +881,8 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
>  #endif
>  
>  	/* create pre-declared device nodes */
> +	of_i2c_register_devices(adap);
> +
>  	if (adap->nr < __i2c_first_dynamic_bus_num)
>  		i2c_scan_static_board_info(adap);
>  
> -- 
> 1.7.10
> 

-- 
Grant Likely, B.Sc, P.Eng.
Secret Lab Technologies, Ltd.

  parent reply	other threads:[~2012-06-14  4:40 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-13 21:12 [PATCH] i2c: let the core register devices from devicetree Wolfram Sang
2012-06-13 21:12 ` Wolfram Sang
2012-06-13 21:12 ` Wolfram Sang
2012-06-13 21:33 ` Benjamin Herrenschmidt
2012-06-13 21:33   ` Benjamin Herrenschmidt
2012-06-13 21:33   ` Benjamin Herrenschmidt
2012-06-14  9:14   ` Wolfram Sang
2012-06-14  9:14     ` Wolfram Sang
2012-06-14  9:14     ` Wolfram Sang
2012-06-14 11:35     ` Benjamin Herrenschmidt
2012-06-14 11:35       ` Benjamin Herrenschmidt
2012-06-14 11:35       ` Benjamin Herrenschmidt
2012-06-13 22:03 ` Stephen Warren
2012-06-13 22:03   ` Stephen Warren
2012-06-13 22:03   ` Stephen Warren
2012-06-14  4:40 ` Grant Likely [this message]
2012-06-14  4:40   ` Grant Likely
2012-06-14  4:40   ` Grant Likely
2012-06-14  7:31 ` Peter Korsgaard
2012-06-14  7:31   ` Peter Korsgaard
2012-06-14  7:31   ` Peter Korsgaard
2012-06-14  7:53 ` viresh kumar
2012-06-14  7:53   ` viresh kumar
2012-06-14  7:53   ` viresh kumar
2012-06-14 10:28 ` Pawel Moll
2012-06-14 10:28   ` Pawel Moll
2012-06-14 10:28   ` Pawel Moll
2012-06-14 10:42 ` Jean Delvare
2012-06-14 10:42   ` Jean Delvare
2012-06-14 10:42   ` Jean Delvare
2012-06-14 17:29 ` Linus Walleij
2012-06-14 17:29   ` Linus Walleij
2012-06-14 17:29   ` Linus Walleij
2012-06-21  1:16 ` Barry Song
2012-06-21  1:16   ` Barry Song
2012-06-21  1:16   ` Barry Song

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120614044000.63E583E3FA3@localhost \
    --to=grant.likely@secretlab.ca \
    --cc=21cnbao@gmail.com \
    --cc=B29983@freescale.com \
    --cc=damm@opensource.se \
    --cc=deepak.sikri@st.com \
    --cc=haojian.zhuang@marvell.com \
    --cc=hskinnemoen@gmail.com \
    --cc=jacmet@sunsite.dk \
    --cc=jochen@scram.de \
    --cc=kgene.kim@samsung.com \
    --cc=khali@linux-fr.org \
    --cc=ldewangan@nvidia.com \
    --cc=leoli@freescale.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=mchehab@redhat.com \
    --cc=olof@lixom.net \
    --cc=pawel.moll@arm.com \
    --cc=rusty@rustcorp.com.au \
    --cc=s.hauer@pengutronix.de \
    --cc=swarren@nvidia.com \
    --cc=tony@atomide.com \
    --cc=viresh.kumar@st.com \
    --cc=vitalywool@gmail.com \
    --cc=w.sang@pengutronix.de \
    --cc=wolfram@the-dreams.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.