linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] ARM: EXYNOS: Add aliases for i2c controller for exynos4
@ 2012-11-20 22:27 Doug Anderson
  2012-11-20 22:27 ` [PATCH 2/2] i2c: s3c2410: Get the i2c bus number from alias id Doug Anderson
                   ` (2 more replies)
  0 siblings, 3 replies; 23+ messages in thread
From: Doug Anderson @ 2012-11-20 22:27 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: linux-i2c, Olof Johansson, Thomas Abraham, Kukjin Kim,
	Doug Anderson, Russell King, Tomasz Figa, Kyungmin Park,
	linux-arm-kernel, linux-kernel

This is similar to a recent commit for exynos5250 titled:
  ARM: EXYNOS: Add aliases for i2c controller

Adding aliases will be useful to prevent warnings in a future
change.  See:
  i2c: s3c2410: Get the i2c bus number from alias id

Signed-off-by: Doug Anderson <dianders@chromium.org>

---
 arch/arm/boot/dts/exynos4.dtsi |   24 ++++++++++++++++--------
 1 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi
index a26c3dd..824d362 100644
--- a/arch/arm/boot/dts/exynos4.dtsi
+++ b/arch/arm/boot/dts/exynos4.dtsi
@@ -28,6 +28,14 @@
 		spi0 = &spi_0;
 		spi1 = &spi_1;
 		spi2 = &spi_2;
+		i2c0 = &i2c_0;
+		i2c1 = &i2c_1;
+		i2c2 = &i2c_2;
+		i2c3 = &i2c_3;
+		i2c4 = &i2c_4;
+		i2c5 = &i2c_5;
+		i2c6 = &i2c_6;
+		i2c7 = &i2c_7;
 	};
 
 	gic:interrupt-controller@10490000 {
@@ -121,7 +129,7 @@
 		status = "disabled";
 	};
 
-	i2c@13860000 {
+	i2c_0: i2c@13860000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
@@ -130,7 +138,7 @@
 		status = "disabled";
 	};
 
-	i2c@13870000 {
+	i2c_1: i2c@13870000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
@@ -139,7 +147,7 @@
 		status = "disabled";
 	};
 
-	i2c@13880000 {
+	i2c_2: i2c@13880000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
@@ -148,7 +156,7 @@
 		status = "disabled";
 	};
 
-	i2c@13890000 {
+	i2c_3: i2c@13890000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
@@ -157,7 +165,7 @@
 		status = "disabled";
 	};
 
-	i2c@138A0000 {
+	i2c_4: i2c@138A0000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
@@ -166,7 +174,7 @@
 		status = "disabled";
 	};
 
-	i2c@138B0000 {
+	i2c_5: i2c@138B0000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
@@ -175,7 +183,7 @@
 		status = "disabled";
 	};
 
-	i2c@138C0000 {
+	i2c_6: i2c@138C0000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
@@ -184,7 +192,7 @@
 		status = "disabled";
 	};
 
-	i2c@138D0000 {
+	i2c_7: i2c@138D0000 {
 		#address-cells = <1>;
 		#size-cells = <0>;
 		compatible = "samsung,s3c2440-i2c";
-- 
1.7.7.3


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

* [PATCH 2/2] i2c: s3c2410: Get the i2c bus number from alias id
  2012-11-20 22:27 [PATCH 1/2] ARM: EXYNOS: Add aliases for i2c controller for exynos4 Doug Anderson
@ 2012-11-20 22:27 ` Doug Anderson
  2012-11-21  4:09   ` Mark Brown
                     ` (2 more replies)
  2012-11-21  7:25 ` [PATCH 1/2] ARM: EXYNOS: Add aliases for i2c controller for exynos4 Olof Johansson
  2012-11-21  9:43 ` Kukjin Kim
  2 siblings, 3 replies; 23+ messages in thread
From: Doug Anderson @ 2012-11-20 22:27 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: linux-i2c, Olof Johansson, Thomas Abraham, Kukjin Kim,
	Padmavathi Venna, Doug Anderson, Ben Dooks, Wolfram Sang,
	linux-arm-kernel, linux-kernel

From: Padmavathi Venna <padma.v@samsung.com>

Get the i2c bus number that the device is connected to using the alias
id.  This makes debugging / grokking of kernel messages much easier.

[dianders: slight patch cleanup from Padmavathi's original.]

Signed-off-by: Padmavathi Venna <padma.v@samsung.com>
Signed-off-by: Doug Anderson <dianders@chromium.org>
---
 drivers/i2c/busses/i2c-s3c2410.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
index 3e0335f..ca43590 100644
--- a/drivers/i2c/busses/i2c-s3c2410.c
+++ b/drivers/i2c/busses/i2c-s3c2410.c
@@ -899,11 +899,19 @@ static void
 s3c24xx_i2c_parse_dt(struct device_node *np, struct s3c24xx_i2c *i2c)
 {
 	struct s3c2410_platform_i2c *pdata = i2c->pdata;
+	int id;
 
 	if (!np)
 		return;
 
-	pdata->bus_num = -1; /* i2c bus number is dynamically assigned */
+	id = of_alias_get_id(np, "i2c");
+	if (id < 0) {
+		dev_warn(i2c->dev, "failed to get alias id:%d\n", id);
+		pdata->bus_num = -1;
+	} else {
+		/* i2c bus number is statically assigned from alias */
+		pdata->bus_num = id;
+	}
 	of_property_read_u32(np, "samsung,i2c-sda-delay", &pdata->sda_delay);
 	of_property_read_u32(np, "samsung,i2c-slave-addr", &pdata->slave_addr);
 	of_property_read_u32(np, "samsung,i2c-max-bus-freq",
-- 
1.7.7.3


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

* Re: [PATCH 2/2] i2c: s3c2410: Get the i2c bus number from alias id
  2012-11-20 22:27 ` [PATCH 2/2] i2c: s3c2410: Get the i2c bus number from alias id Doug Anderson
@ 2012-11-21  4:09   ` Mark Brown
  2012-11-21 18:33     ` Doug Anderson
  2012-11-21  9:43   ` Kukjin Kim
       [not found]   ` <1353522362-25519-1-git-send-email-dianders@chromium.org>
  2 siblings, 1 reply; 23+ messages in thread
From: Mark Brown @ 2012-11-21  4:09 UTC (permalink / raw)
  To: Doug Anderson
  Cc: linux-samsung-soc, linux-i2c, Olof Johansson, Thomas Abraham,
	Kukjin Kim, Padmavathi Venna, Ben Dooks, Wolfram Sang,
	linux-arm-kernel, linux-kernel

On Tue, Nov 20, 2012 at 02:27:04PM -0800, Doug Anderson wrote:
> From: Padmavathi Venna <padma.v@samsung.com>
> 
> Get the i2c bus number that the device is connected to using the alias
> id.  This makes debugging / grokking of kernel messages much easier.

This doesn't look like a s3c2410 specific change - it's a generic device
tree issue.  This suggests that it sohuld be implemented in the
framework so that all I2C controllers with DT can use it.

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

* Re: [PATCH 1/2] ARM: EXYNOS: Add aliases for i2c controller for exynos4
  2012-11-20 22:27 [PATCH 1/2] ARM: EXYNOS: Add aliases for i2c controller for exynos4 Doug Anderson
  2012-11-20 22:27 ` [PATCH 2/2] i2c: s3c2410: Get the i2c bus number from alias id Doug Anderson
@ 2012-11-21  7:25 ` Olof Johansson
  2012-11-21  9:43 ` Kukjin Kim
  2 siblings, 0 replies; 23+ messages in thread
From: Olof Johansson @ 2012-11-21  7:25 UTC (permalink / raw)
  To: Doug Anderson
  Cc: linux-samsung-soc, linux-i2c, Thomas Abraham, Kukjin Kim,
	Russell King, Tomasz Figa, Kyungmin Park, linux-arm-kernel,
	linux-kernel

On Tue, Nov 20, 2012 at 02:27:03PM -0800, Doug Anderson wrote:
> This is similar to a recent commit for exynos5250 titled:
>   ARM: EXYNOS: Add aliases for i2c controller
> 
> Adding aliases will be useful to prevent warnings in a future
> change.  See:
>   i2c: s3c2410: Get the i2c bus number from alias id
> 
> Signed-off-by: Doug Anderson <dianders@chromium.org>

Acked-by: Olof Johansson <olof@lixom.net>

This can go in independently of the pending comment on the i2c driver change
(that it should be done in the core, which makes sense).


-Olof

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

* RE: [PATCH 1/2] ARM: EXYNOS: Add aliases for i2c controller for exynos4
  2012-11-20 22:27 [PATCH 1/2] ARM: EXYNOS: Add aliases for i2c controller for exynos4 Doug Anderson
  2012-11-20 22:27 ` [PATCH 2/2] i2c: s3c2410: Get the i2c bus number from alias id Doug Anderson
  2012-11-21  7:25 ` [PATCH 1/2] ARM: EXYNOS: Add aliases for i2c controller for exynos4 Olof Johansson
@ 2012-11-21  9:43 ` Kukjin Kim
  2 siblings, 0 replies; 23+ messages in thread
From: Kukjin Kim @ 2012-11-21  9:43 UTC (permalink / raw)
  To: 'Doug Anderson', linux-samsung-soc
  Cc: linux-i2c, 'Olof Johansson', 'Thomas Abraham',
	'Russell King', 'Tomasz Figa',
	'Kyungmin Park',
	linux-arm-kernel, linux-kernel

Doug Anderson wrote:
> 
> This is similar to a recent commit for exynos5250 titled:
>   ARM: EXYNOS: Add aliases for i2c controller
> 
> Adding aliases will be useful to prevent warnings in a future
> change.  See:
>   i2c: s3c2410: Get the i2c bus number from alias id
> 
> Signed-off-by: Doug Anderson <dianders@chromium.org>
> 
> ---
>  arch/arm/boot/dts/exynos4.dtsi |   24 ++++++++++++++++--------
>  1 files changed, 16 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/exynos4.dtsi
> b/arch/arm/boot/dts/exynos4.dtsi
> index a26c3dd..824d362 100644
> --- a/arch/arm/boot/dts/exynos4.dtsi
> +++ b/arch/arm/boot/dts/exynos4.dtsi
> @@ -28,6 +28,14 @@
>  		spi0 = &spi_0;
>  		spi1 = &spi_1;
>  		spi2 = &spi_2;
> +		i2c0 = &i2c_0;
> +		i2c1 = &i2c_1;
> +		i2c2 = &i2c_2;
> +		i2c3 = &i2c_3;
> +		i2c4 = &i2c_4;
> +		i2c5 = &i2c_5;
> +		i2c6 = &i2c_6;
> +		i2c7 = &i2c_7;
>  	};
> 
>  	gic:interrupt-controller@10490000 {
> @@ -121,7 +129,7 @@
>  		status = "disabled";
>  	};
> 
> -	i2c@13860000 {
> +	i2c_0: i2c@13860000 {
>  		#address-cells = <1>;
>  		#size-cells = <0>;
>  		compatible = "samsung,s3c2440-i2c";
> @@ -130,7 +138,7 @@
>  		status = "disabled";
>  	};
> 
> -	i2c@13870000 {
> +	i2c_1: i2c@13870000 {
>  		#address-cells = <1>;
>  		#size-cells = <0>;
>  		compatible = "samsung,s3c2440-i2c";
> @@ -139,7 +147,7 @@
>  		status = "disabled";
>  	};
> 
> -	i2c@13880000 {
> +	i2c_2: i2c@13880000 {
>  		#address-cells = <1>;
>  		#size-cells = <0>;
>  		compatible = "samsung,s3c2440-i2c";
> @@ -148,7 +156,7 @@
>  		status = "disabled";
>  	};
> 
> -	i2c@13890000 {
> +	i2c_3: i2c@13890000 {
>  		#address-cells = <1>;
>  		#size-cells = <0>;
>  		compatible = "samsung,s3c2440-i2c";
> @@ -157,7 +165,7 @@
>  		status = "disabled";
>  	};
> 
> -	i2c@138A0000 {
> +	i2c_4: i2c@138A0000 {
>  		#address-cells = <1>;
>  		#size-cells = <0>;
>  		compatible = "samsung,s3c2440-i2c";
> @@ -166,7 +174,7 @@
>  		status = "disabled";
>  	};
> 
> -	i2c@138B0000 {
> +	i2c_5: i2c@138B0000 {
>  		#address-cells = <1>;
>  		#size-cells = <0>;
>  		compatible = "samsung,s3c2440-i2c";
> @@ -175,7 +183,7 @@
>  		status = "disabled";
>  	};
> 
> -	i2c@138C0000 {
> +	i2c_6: i2c@138C0000 {
>  		#address-cells = <1>;
>  		#size-cells = <0>;
>  		compatible = "samsung,s3c2440-i2c";
> @@ -184,7 +192,7 @@
>  		status = "disabled";
>  	};
> 
> -	i2c@138D0000 {
> +	i2c_7: i2c@138D0000 {
>  		#address-cells = <1>;
>  		#size-cells = <0>;
>  		compatible = "samsung,s3c2440-i2c";
> --
> 1.7.7.3

Applied, thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.


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

* RE: [PATCH 2/2] i2c: s3c2410: Get the i2c bus number from alias id
  2012-11-20 22:27 ` [PATCH 2/2] i2c: s3c2410: Get the i2c bus number from alias id Doug Anderson
  2012-11-21  4:09   ` Mark Brown
@ 2012-11-21  9:43   ` Kukjin Kim
       [not found]   ` <1353522362-25519-1-git-send-email-dianders@chromium.org>
  2 siblings, 0 replies; 23+ messages in thread
From: Kukjin Kim @ 2012-11-21  9:43 UTC (permalink / raw)
  To: 'Doug Anderson', linux-samsung-soc
  Cc: linux-i2c, 'Olof Johansson', 'Thomas Abraham',
	'Padmavathi Venna', 'Ben Dooks',
	'Wolfram Sang',
	linux-arm-kernel, linux-kernel

Doug Anderson wrote:
> 
> From: Padmavathi Venna <padma.v@samsung.com>
> 
> Get the i2c bus number that the device is connected to using the alias
> id.  This makes debugging / grokking of kernel messages much easier.
> 
> [dianders: slight patch cleanup from Padmavathi's original.]
> 
> Signed-off-by: Padmavathi Venna <padma.v@samsung.com>
> Signed-off-by: Doug Anderson <dianders@chromium.org>

Acked-by: Kukjin Kim <kgene.kim@samsung.com>

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.

> ---
>  drivers/i2c/busses/i2c-s3c2410.c |   10 +++++++++-
>  1 files changed, 9 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-
> s3c2410.c
> index 3e0335f..ca43590 100644
> --- a/drivers/i2c/busses/i2c-s3c2410.c
> +++ b/drivers/i2c/busses/i2c-s3c2410.c
> @@ -899,11 +899,19 @@ static void
>  s3c24xx_i2c_parse_dt(struct device_node *np, struct s3c24xx_i2c *i2c)
>  {
>  	struct s3c2410_platform_i2c *pdata = i2c->pdata;
> +	int id;
> 
>  	if (!np)
>  		return;
> 
> -	pdata->bus_num = -1; /* i2c bus number is dynamically assigned */
> +	id = of_alias_get_id(np, "i2c");
> +	if (id < 0) {
> +		dev_warn(i2c->dev, "failed to get alias id:%d\n", id);
> +		pdata->bus_num = -1;
> +	} else {
> +		/* i2c bus number is statically assigned from alias */
> +		pdata->bus_num = id;
> +	}
>  	of_property_read_u32(np, "samsung,i2c-sda-delay", &pdata-
> >sda_delay);
>  	of_property_read_u32(np, "samsung,i2c-slave-addr", &pdata-
> >slave_addr);
>  	of_property_read_u32(np, "samsung,i2c-max-bus-freq",
> --
> 1.7.7.3


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

* [PATCH 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present
       [not found]   ` <1353522362-25519-1-git-send-email-dianders@chromium.org>
@ 2012-11-21 18:26     ` Doug Anderson
  2012-12-05  1:45       ` Haojian Zhuang
  2013-01-11 17:57       ` [REPOST PATCH 0/2] Add automatic bus number support for i2c busses with device tree Doug Anderson
  2012-11-21 18:26     ` [PATCH " Doug Anderson
  1 sibling, 2 replies; 23+ messages in thread
From: Doug Anderson @ 2012-11-21 18:26 UTC (permalink / raw)
  To: linux-i2c, Mark Brown
  Cc: Kukjin Kim, Olof Johansson, Thomas Abraham, Padmavathi Venna,
	Ben Dooks, Wolfram Sang, linux-arm-kernel, linux-samsung-soc,
	Haojian Zhuang, Arnd Bergmann, Doug Anderson, linux-kernel

This allows you to get the equivalent functionality of
i2c_add_numbered_adapter() with all data in the device tree and no
special case code in your driver.  This is a common device tree
technique.

For quick reference, the FDT syntax for using an alias to provide an
ID looks like:
  aliases {
    i2c0 = &i2c_0;
    i2c1 = &i2c_1;
  };

Signed-off-by: Doug Anderson <dianders@chromium.org>
CC: Mark Brown <broonie@opensource.wolfsonmicro.com>

---
 drivers/i2c/i2c-core.c |  105 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 77 insertions(+), 28 deletions(-)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index a7edf98..71deb2a2 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -915,13 +915,81 @@ out_list:
 }
 
 /**
+ * i2c_get_number_from_dt - get the adapter number based on dt alias
+ * @adap: the adapter to look at
+ *
+ * Check whether there's an alias in the FDT that gives an ID for this i2c
+ * device.  Use an alias like "i2c<nr>", like:
+ *   aliases {
+ *     i2c0 = &i2c_0;
+ *     i2c1 = &i2c_1;
+ *   };
+ *
+ * Returns the ID if found.  If no alias is found returns -1.
+ */
+static int i2c_get_number_from_dt(struct i2c_adapter *adap)
+{
+	struct device *dev = &adap->dev;
+	int id;
+
+	if (!dev->of_node)
+		return -1;
+
+	id = of_alias_get_id(dev->of_node, "i2c");
+	if (id < 0)
+		return -1;
+	return id;
+}
+
+/**
+ * _i2c_add_numbered_adapter - i2c_add_numbered_adapter where nr is never -1
+ * @adap: the adapter to register (with adap->nr initialized)
+ * Context: can sleep
+ *
+ * See i2c_add_numbered_adapter() for details.
+ */
+static int _i2c_add_numbered_adapter(struct i2c_adapter *adap)
+{
+	int	id;
+	int	status;
+
+	/* Handled by wrappers */
+	BUG_ON(adap->nr == -1);
+
+	if (adap->nr & ~MAX_IDR_MASK)
+		return -EINVAL;
+
+retry:
+	if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
+		return -ENOMEM;
+
+	mutex_lock(&core_lock);
+	/* "above" here means "above or equal to", sigh;
+	 * we need the "equal to" result to force the result
+	 */
+	status = idr_get_new_above(&i2c_adapter_idr, adap, adap->nr, &id);
+	if (status == 0 && id != adap->nr) {
+		status = -EBUSY;
+		idr_remove(&i2c_adapter_idr, id);
+	}
+	mutex_unlock(&core_lock);
+	if (status == -EAGAIN)
+		goto retry;
+
+	if (status == 0)
+		status = i2c_register_adapter(adap);
+	return status;
+}
+
+/**
  * i2c_add_adapter - declare i2c adapter, use dynamic bus number
  * @adapter: the adapter to add
  * Context: can sleep
  *
  * This routine is used to declare an I2C adapter when its bus number
- * doesn't matter.  Examples: for I2C adapters dynamically added by
- * USB links or PCI plugin cards.
+ * doesn't matter or when its bus number is specified by an dt alias.
+ * Examples of bases when the bus number doesn't matter: I2C adapters
+ * dynamically added by USB links or PCI plugin cards.
  *
  * When this returns zero, a new bus number was allocated and stored
  * in adap->nr, and the specified adapter became available for clients.
@@ -931,6 +999,12 @@ int i2c_add_adapter(struct i2c_adapter *adapter)
 {
 	int	id, res = 0;
 
+	id = i2c_get_number_from_dt(adapter);
+	if (id >= 0) {
+		adapter->nr = id;
+		return _i2c_add_numbered_adapter(adapter);
+	}
+
 retry:
 	if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
 		return -ENOMEM;
@@ -977,34 +1051,9 @@ EXPORT_SYMBOL(i2c_add_adapter);
  */
 int i2c_add_numbered_adapter(struct i2c_adapter *adap)
 {
-	int	id;
-	int	status;
-
 	if (adap->nr == -1) /* -1 means dynamically assign bus id */
 		return i2c_add_adapter(adap);
-	if (adap->nr & ~MAX_IDR_MASK)
-		return -EINVAL;
-
-retry:
-	if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
-		return -ENOMEM;
-
-	mutex_lock(&core_lock);
-	/* "above" here means "above or equal to", sigh;
-	 * we need the "equal to" result to force the result
-	 */
-	status = idr_get_new_above(&i2c_adapter_idr, adap, adap->nr, &id);
-	if (status == 0 && id != adap->nr) {
-		status = -EBUSY;
-		idr_remove(&i2c_adapter_idr, id);
-	}
-	mutex_unlock(&core_lock);
-	if (status == -EAGAIN)
-		goto retry;
-
-	if (status == 0)
-		status = i2c_register_adapter(adap);
-	return status;
+	return _i2c_add_numbered_adapter(adap);
 }
 EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter);
 
-- 
1.7.7.3


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

* [PATCH 2/2] i2c: pxa: Use i2c-core to get bus number now
       [not found]   ` <1353522362-25519-1-git-send-email-dianders@chromium.org>
  2012-11-21 18:26     ` [PATCH 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present Doug Anderson
@ 2012-11-21 18:26     ` Doug Anderson
  2012-12-05  1:45       ` Haojian Zhuang
  1 sibling, 1 reply; 23+ messages in thread
From: Doug Anderson @ 2012-11-21 18:26 UTC (permalink / raw)
  To: linux-i2c, Mark Brown
  Cc: Kukjin Kim, Olof Johansson, Thomas Abraham, Padmavathi Venna,
	Ben Dooks, Wolfram Sang, linux-arm-kernel, linux-samsung-soc,
	Haojian Zhuang, Arnd Bergmann, Doug Anderson, Andrew Morton,
	Karol Lewandowski, linux-kernel

The commit: "i2c-core: dt: Pick i2c bus number from i2c alias if
present" adds support for automatically picking the bus number based
on the alias ID.  Remove the now unnecessary code from i2c-pxa that
did the same thing.

Signed-off-by: Doug Anderson <dianders@chromium.org>
---
 drivers/i2c/busses/i2c-pxa.c |    8 +-------
 1 files changed, 1 insertions(+), 7 deletions(-)

diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
index 1034d93..8ee9fa0 100644
--- a/drivers/i2c/busses/i2c-pxa.c
+++ b/drivers/i2c/busses/i2c-pxa.c
@@ -1053,16 +1053,10 @@ static int i2c_pxa_probe_dt(struct platform_device *pdev, struct pxa_i2c *i2c,
 	struct device_node *np = pdev->dev.of_node;
 	const struct of_device_id *of_id =
 			of_match_device(i2c_pxa_dt_ids, &pdev->dev);
-	int ret;
 
 	if (!of_id)
 		return 1;
-	ret = of_alias_get_id(np, "i2c");
-	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to get alias id, errno %d\n", ret);
-		return ret;
-	}
-	pdev->id = ret;
+	pdev->id = -1;
 	if (of_get_property(np, "mrvl,i2c-polling", NULL))
 		i2c->use_pio = 1;
 	if (of_get_property(np, "mrvl,i2c-fast-mode", NULL))
-- 
1.7.7.3


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

* Re: [PATCH 2/2] i2c: s3c2410: Get the i2c bus number from alias id
  2012-11-21  4:09   ` Mark Brown
@ 2012-11-21 18:33     ` Doug Anderson
  2012-11-22  6:56       ` Kukjin Kim
  0 siblings, 1 reply; 23+ messages in thread
From: Doug Anderson @ 2012-11-21 18:33 UTC (permalink / raw)
  To: Mark Brown
  Cc: linux-samsung-soc, linux-i2c, Olof Johansson, Thomas Abraham,
	Kukjin Kim, Padmavathi Venna, Ben Dooks, Wolfram Sang,
	linux-arm-kernel, linux-kernel

On Tue, Nov 20, 2012 at 8:09 PM, Mark Brown
<broonie@opensource.wolfsonmicro.com> wrote:
> On Tue, Nov 20, 2012 at 02:27:04PM -0800, Doug Anderson wrote:
>> From: Padmavathi Venna <padma.v@samsung.com>
>>
>> Get the i2c bus number that the device is connected to using the alias
>> id.  This makes debugging / grokking of kernel messages much easier.
>
> This doesn't look like a s3c2410 specific change - it's a generic device
> tree issue.  This suggests that it sohuld be implemented in the
> framework so that all I2C controllers with DT can use it.

Good suggestion.  I have posted a series with the title "Add automatic
bus number support for i2c busses with device tree".  It contains the
i2c-core patch as well as a patch removing similar code from the pxa
i2c driver.

Kukjin: please consider this patch abandoned and superseded by the new
i2c-core patch.  As Olof said, the patch for adding aliases for
exynos4 should still be fine to apply.


Thanks!

-Doug

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

* RE: [PATCH 2/2] i2c: s3c2410: Get the i2c bus number from alias id
  2012-11-21 18:33     ` Doug Anderson
@ 2012-11-22  6:56       ` Kukjin Kim
  0 siblings, 0 replies; 23+ messages in thread
From: Kukjin Kim @ 2012-11-22  6:56 UTC (permalink / raw)
  To: 'Doug Anderson', 'Mark Brown'
  Cc: linux-samsung-soc, linux-i2c, 'Olof Johansson',
	'Thomas Abraham', 'Padmavathi Venna',
	'Ben Dooks', 'Wolfram Sang',
	linux-arm-kernel, linux-kernel

Doug Anderson wrote:
> 
> On Tue, Nov 20, 2012 at 8:09 PM, Mark Brown
> <broonie@opensource.wolfsonmicro.com> wrote:
> > On Tue, Nov 20, 2012 at 02:27:04PM -0800, Doug Anderson wrote:
> >> From: Padmavathi Venna <padma.v@samsung.com>
> >>
> >> Get the i2c bus number that the device is connected to using the alias
> >> id.  This makes debugging / grokking of kernel messages much easier.
> >
> > This doesn't look like a s3c2410 specific change - it's a generic device
> > tree issue.  This suggests that it sohuld be implemented in the
> > framework so that all I2C controllers with DT can use it.
> 
> Good suggestion.  I have posted a series with the title "Add automatic
> bus number support for i2c busses with device tree".  It contains the
> i2c-core patch as well as a patch removing similar code from the pxa
> i2c driver.
> 
> Kukjin: please consider this patch abandoned and superseded by the new
> i2c-core patch.  As Olof said, the patch for adding aliases for
> exynos4 should still be fine to apply.
> 
OK, I see.

Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.


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

* Re: [PATCH 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present
  2012-11-21 18:26     ` [PATCH 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present Doug Anderson
@ 2012-12-05  1:45       ` Haojian Zhuang
  2013-01-11 17:57       ` [REPOST PATCH 0/2] Add automatic bus number support for i2c busses with device tree Doug Anderson
  1 sibling, 0 replies; 23+ messages in thread
From: Haojian Zhuang @ 2012-12-05  1:45 UTC (permalink / raw)
  To: Doug Anderson
  Cc: linux-i2c, Mark Brown, Kukjin Kim, Olof Johansson,
	Thomas Abraham, Padmavathi Venna, Ben Dooks, Wolfram Sang,
	linux-arm-kernel, linux-samsung-soc, Haojian Zhuang,
	Arnd Bergmann, linux-kernel

On Thu, Nov 22, 2012 at 2:26 AM, Doug Anderson <dianders@chromium.org> wrote:
> This allows you to get the equivalent functionality of
> i2c_add_numbered_adapter() with all data in the device tree and no
> special case code in your driver.  This is a common device tree
> technique.
>
> For quick reference, the FDT syntax for using an alias to provide an
> ID looks like:
>   aliases {
>     i2c0 = &i2c_0;
>     i2c1 = &i2c_1;
>   };
>
> Signed-off-by: Doug Anderson <dianders@chromium.org>
> CC: Mark Brown <broonie@opensource.wolfsonmicro.com>
>
> ---
>  drivers/i2c/i2c-core.c |  105 +++++++++++++++++++++++++++++++++++-------------
>  1 files changed, 77 insertions(+), 28 deletions(-)
>

Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>

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

* Re: [PATCH 2/2] i2c: pxa: Use i2c-core to get bus number now
  2012-11-21 18:26     ` [PATCH " Doug Anderson
@ 2012-12-05  1:45       ` Haojian Zhuang
  0 siblings, 0 replies; 23+ messages in thread
From: Haojian Zhuang @ 2012-12-05  1:45 UTC (permalink / raw)
  To: Doug Anderson
  Cc: linux-i2c, Mark Brown, Kukjin Kim, Olof Johansson,
	Thomas Abraham, Padmavathi Venna, Ben Dooks, Wolfram Sang,
	linux-arm-kernel, linux-samsung-soc, Haojian Zhuang,
	Arnd Bergmann, Andrew Morton, Karol Lewandowski, linux-kernel

On Thu, Nov 22, 2012 at 2:26 AM, Doug Anderson <dianders@chromium.org> wrote:
> The commit: "i2c-core: dt: Pick i2c bus number from i2c alias if
> present" adds support for automatically picking the bus number based
> on the alias ID.  Remove the now unnecessary code from i2c-pxa that
> did the same thing.
>
> Signed-off-by: Doug Anderson <dianders@chromium.org>
> ---
>  drivers/i2c/busses/i2c-pxa.c |    8 +-------
>  1 files changed, 1 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
> index 1034d93..8ee9fa0 100644
> --- a/drivers/i2c/busses/i2c-pxa.c
> +++ b/drivers/i2c/busses/i2c-pxa.c
> @@ -1053,16 +1053,10 @@ static int i2c_pxa_probe_dt(struct platform_device *pdev, struct pxa_i2c *i2c,
>         struct device_node *np = pdev->dev.of_node;
>         const struct of_device_id *of_id =
>                         of_match_device(i2c_pxa_dt_ids, &pdev->dev);
> -       int ret;
>
>         if (!of_id)
>                 return 1;
> -       ret = of_alias_get_id(np, "i2c");
> -       if (ret < 0) {
> -               dev_err(&pdev->dev, "failed to get alias id, errno %d\n", ret);
> -               return ret;
> -       }
> -       pdev->id = ret;
> +       pdev->id = -1;
>         if (of_get_property(np, "mrvl,i2c-polling", NULL))
>                 i2c->use_pio = 1;
>         if (of_get_property(np, "mrvl,i2c-fast-mode", NULL))
> --
> 1.7.7.3
>

Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>

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

* [REPOST PATCH 0/2] Add automatic bus number support for i2c busses with device tree
  2012-11-21 18:26     ` [PATCH 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present Doug Anderson
  2012-12-05  1:45       ` Haojian Zhuang
@ 2013-01-11 17:57       ` Doug Anderson
  2013-01-11 17:57         ` [REPOST PATCH 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present Doug Anderson
  2013-01-11 17:57         ` [REPOST PATCH " Doug Anderson
  1 sibling, 2 replies; 23+ messages in thread
From: Doug Anderson @ 2013-01-11 17:57 UTC (permalink / raw)
  To: linux-i2c, Mark Brown
  Cc: Kukjin Kim, Olof Johansson, Thomas Abraham, Padmavathi Venna,
	Ben Dooks, Wolfram Sang, linux-arm-kernel, linux-samsung-soc,
	Haojian Zhuang, Arnd Bergmann, Doug Anderson, Karol Lewandowski,
	linux-kernel, Andrew Morton

This was suggested by Mark Brown in response to a patch for adding
this functionality only for the s3c2410 bus:
  https://lkml.org/lkml/2012/11/20/681

I have also modified the i2c-pxa driver to use this new functionality.
As Haojian Zhuang has Acked this patch, I believe that this has now
been tested.

Reposting (with Haojian Zhuang's ack) in the hopes that a maintainer
will pick it up.  :)


Doug Anderson (2):
  i2c-core: dt: Pick i2c bus number from i2c alias if present
  i2c: pxa: Use i2c-core to get bus number now

 drivers/i2c/busses/i2c-pxa.c |    8 +---
 drivers/i2c/i2c-core.c       |  105 ++++++++++++++++++++++++++++++-----------
 2 files changed, 78 insertions(+), 35 deletions(-)

-- 
1.7.7.3


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

* [REPOST PATCH 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present
  2013-01-11 17:57       ` [REPOST PATCH 0/2] Add automatic bus number support for i2c busses with device tree Doug Anderson
@ 2013-01-11 17:57         ` Doug Anderson
  2013-01-14 18:53           ` [PATCH v2 0/2] Add automatic bus number support for i2c busses with device tree Doug Anderson
  2013-01-11 17:57         ` [REPOST PATCH " Doug Anderson
  1 sibling, 1 reply; 23+ messages in thread
From: Doug Anderson @ 2013-01-11 17:57 UTC (permalink / raw)
  To: linux-i2c, Mark Brown
  Cc: Kukjin Kim, Olof Johansson, Thomas Abraham, Padmavathi Venna,
	Ben Dooks, Wolfram Sang, linux-arm-kernel, linux-samsung-soc,
	Haojian Zhuang, Arnd Bergmann, Doug Anderson, linux-kernel

This allows you to get the equivalent functionality of
i2c_add_numbered_adapter() with all data in the device tree and no
special case code in your driver.  This is a common device tree
technique.

For quick reference, the FDT syntax for using an alias to provide an
ID looks like:
  aliases {
    i2c0 = &i2c_0;
    i2c1 = &i2c_1;
  };

Signed-off-by: Doug Anderson <dianders@chromium.org>
Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
---
 drivers/i2c/i2c-core.c |  105 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 77 insertions(+), 28 deletions(-)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index e388590..a60ed6d 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -921,13 +921,81 @@ out_list:
 }
 
 /**
+ * i2c_get_number_from_dt - get the adapter number based on dt alias
+ * @adap: the adapter to look at
+ *
+ * Check whether there's an alias in the FDT that gives an ID for this i2c
+ * device.  Use an alias like "i2c<nr>", like:
+ *   aliases {
+ *     i2c0 = &i2c_0;
+ *     i2c1 = &i2c_1;
+ *   };
+ *
+ * Returns the ID if found.  If no alias is found returns -1.
+ */
+static int i2c_get_number_from_dt(struct i2c_adapter *adap)
+{
+	struct device *dev = &adap->dev;
+	int id;
+
+	if (!dev->of_node)
+		return -1;
+
+	id = of_alias_get_id(dev->of_node, "i2c");
+	if (id < 0)
+		return -1;
+	return id;
+}
+
+/**
+ * _i2c_add_numbered_adapter - i2c_add_numbered_adapter where nr is never -1
+ * @adap: the adapter to register (with adap->nr initialized)
+ * Context: can sleep
+ *
+ * See i2c_add_numbered_adapter() for details.
+ */
+static int _i2c_add_numbered_adapter(struct i2c_adapter *adap)
+{
+	int	id;
+	int	status;
+
+	/* Handled by wrappers */
+	BUG_ON(adap->nr == -1);
+
+	if (adap->nr & ~MAX_IDR_MASK)
+		return -EINVAL;
+
+retry:
+	if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
+		return -ENOMEM;
+
+	mutex_lock(&core_lock);
+	/* "above" here means "above or equal to", sigh;
+	 * we need the "equal to" result to force the result
+	 */
+	status = idr_get_new_above(&i2c_adapter_idr, adap, adap->nr, &id);
+	if (status == 0 && id != adap->nr) {
+		status = -EBUSY;
+		idr_remove(&i2c_adapter_idr, id);
+	}
+	mutex_unlock(&core_lock);
+	if (status == -EAGAIN)
+		goto retry;
+
+	if (status == 0)
+		status = i2c_register_adapter(adap);
+	return status;
+}
+
+/**
  * i2c_add_adapter - declare i2c adapter, use dynamic bus number
  * @adapter: the adapter to add
  * Context: can sleep
  *
  * This routine is used to declare an I2C adapter when its bus number
- * doesn't matter.  Examples: for I2C adapters dynamically added by
- * USB links or PCI plugin cards.
+ * doesn't matter or when its bus number is specified by an dt alias.
+ * Examples of bases when the bus number doesn't matter: I2C adapters
+ * dynamically added by USB links or PCI plugin cards.
  *
  * When this returns zero, a new bus number was allocated and stored
  * in adap->nr, and the specified adapter became available for clients.
@@ -937,6 +1005,12 @@ int i2c_add_adapter(struct i2c_adapter *adapter)
 {
 	int	id, res = 0;
 
+	id = i2c_get_number_from_dt(adapter);
+	if (id >= 0) {
+		adapter->nr = id;
+		return _i2c_add_numbered_adapter(adapter);
+	}
+
 retry:
 	if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
 		return -ENOMEM;
@@ -983,34 +1057,9 @@ EXPORT_SYMBOL(i2c_add_adapter);
  */
 int i2c_add_numbered_adapter(struct i2c_adapter *adap)
 {
-	int	id;
-	int	status;
-
 	if (adap->nr == -1) /* -1 means dynamically assign bus id */
 		return i2c_add_adapter(adap);
-	if (adap->nr & ~MAX_IDR_MASK)
-		return -EINVAL;
-
-retry:
-	if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
-		return -ENOMEM;
-
-	mutex_lock(&core_lock);
-	/* "above" here means "above or equal to", sigh;
-	 * we need the "equal to" result to force the result
-	 */
-	status = idr_get_new_above(&i2c_adapter_idr, adap, adap->nr, &id);
-	if (status == 0 && id != adap->nr) {
-		status = -EBUSY;
-		idr_remove(&i2c_adapter_idr, id);
-	}
-	mutex_unlock(&core_lock);
-	if (status == -EAGAIN)
-		goto retry;
-
-	if (status == 0)
-		status = i2c_register_adapter(adap);
-	return status;
+	return _i2c_add_numbered_adapter(adap);
 }
 EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter);
 
-- 
1.7.7.3


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

* [REPOST PATCH 2/2] i2c: pxa: Use i2c-core to get bus number now
  2013-01-11 17:57       ` [REPOST PATCH 0/2] Add automatic bus number support for i2c busses with device tree Doug Anderson
  2013-01-11 17:57         ` [REPOST PATCH 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present Doug Anderson
@ 2013-01-11 17:57         ` Doug Anderson
  2013-01-11 22:12           ` Sylwester Nawrocki
  1 sibling, 1 reply; 23+ messages in thread
From: Doug Anderson @ 2013-01-11 17:57 UTC (permalink / raw)
  To: linux-i2c, Mark Brown
  Cc: Kukjin Kim, Olof Johansson, Thomas Abraham, Padmavathi Venna,
	Ben Dooks, Wolfram Sang, linux-arm-kernel, linux-samsung-soc,
	Haojian Zhuang, Arnd Bergmann, Doug Anderson, Andrew Morton,
	Karol Lewandowski, linux-kernel

The commit: "i2c-core: dt: Pick i2c bus number from i2c alias if
present" adds support for automatically picking the bus number based
on the alias ID.  Remove the now unnecessary code from i2c-pxa that
did the same thing.

Signed-off-by: Doug Anderson <dianders@chromium.org>
Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
---
 drivers/i2c/busses/i2c-pxa.c |    8 +-------
 1 files changed, 1 insertions(+), 7 deletions(-)

diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
index 1034d93..8ee9fa0 100644
--- a/drivers/i2c/busses/i2c-pxa.c
+++ b/drivers/i2c/busses/i2c-pxa.c
@@ -1053,16 +1053,10 @@ static int i2c_pxa_probe_dt(struct platform_device *pdev, struct pxa_i2c *i2c,
 	struct device_node *np = pdev->dev.of_node;
 	const struct of_device_id *of_id =
 			of_match_device(i2c_pxa_dt_ids, &pdev->dev);
-	int ret;
 
 	if (!of_id)
 		return 1;
-	ret = of_alias_get_id(np, "i2c");
-	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to get alias id, errno %d\n", ret);
-		return ret;
-	}
-	pdev->id = ret;
+	pdev->id = -1;
 	if (of_get_property(np, "mrvl,i2c-polling", NULL))
 		i2c->use_pio = 1;
 	if (of_get_property(np, "mrvl,i2c-fast-mode", NULL))
-- 
1.7.7.3


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

* Re: [REPOST PATCH 2/2] i2c: pxa: Use i2c-core to get bus number now
  2013-01-11 17:57         ` [REPOST PATCH " Doug Anderson
@ 2013-01-11 22:12           ` Sylwester Nawrocki
  2013-01-14 18:52             ` Doug Anderson
  0 siblings, 1 reply; 23+ messages in thread
From: Sylwester Nawrocki @ 2013-01-11 22:12 UTC (permalink / raw)
  To: Doug Anderson
  Cc: linux-i2c, Mark Brown, Kukjin Kim, Olof Johansson,
	Thomas Abraham, Padmavathi Venna, Ben Dooks, Wolfram Sang,
	linux-arm-kernel, linux-samsung-soc, Haojian Zhuang,
	Arnd Bergmann, Andrew Morton, Karol Lewandowski, linux-kernel

Hi,

On 01/11/2013 06:57 PM, Doug Anderson wrote:
> The commit: "i2c-core: dt: Pick i2c bus number from i2c alias if
> present" adds support for automatically picking the bus number based
> on the alias ID.  Remove the now unnecessary code from i2c-pxa that
> did the same thing.
>
> Signed-off-by: Doug Anderson<dianders@chromium.org>
> Acked-by: Haojian Zhuang<haojian.zhuang@gmail.com>
> ---
>   drivers/i2c/busses/i2c-pxa.c |    8 +-------
>   1 files changed, 1 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
> index 1034d93..8ee9fa0 100644
> --- a/drivers/i2c/busses/i2c-pxa.c
> +++ b/drivers/i2c/busses/i2c-pxa.c
> @@ -1053,16 +1053,10 @@ static int i2c_pxa_probe_dt(struct platform_device *pdev, struct pxa_i2c *i2c,
>   	struct device_node *np = pdev->dev.of_node;
>   	const struct of_device_id *of_id =
>   			of_match_device(i2c_pxa_dt_ids,&pdev->dev);
> -	int ret;
>
>   	if (!of_id)
>   		return 1;
> -	ret = of_alias_get_id(np, "i2c");
> -	if (ret<  0) {
> -		dev_err(&pdev->dev, "failed to get alias id, errno %d\n", ret);
> -		return ret;
> -	}
> -	pdev->id = ret;
> +	pdev->id = -1;

I think assignments like this are illegal. At this point the device is
already registered and modifying pdev->id can cause issues at the core
code.

It might be better to have the bus number stored in struct pxa_i2c,
initialized with pdev->id value for non-dt and now with -1 for dt case.

I realize it is not something your patch is intended to deal with,
but since you're touching this code maybe it's worth to fix that issue
as well ?

--

Thanks,
Sylwester

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

* Re: [REPOST PATCH 2/2] i2c: pxa: Use i2c-core to get bus number now
  2013-01-11 22:12           ` Sylwester Nawrocki
@ 2013-01-14 18:52             ` Doug Anderson
  0 siblings, 0 replies; 23+ messages in thread
From: Doug Anderson @ 2013-01-14 18:52 UTC (permalink / raw)
  To: Sylwester Nawrocki
  Cc: linux-i2c, Mark Brown, Kukjin Kim, Olof Johansson,
	Thomas Abraham, Padmavathi Venna, Ben Dooks, Wolfram Sang,
	linux-arm-kernel, linux-samsung-soc, Haojian Zhuang,
	Arnd Bergmann, Andrew Morton, Karol Lewandowski, linux-kernel

Sylwester,

Thanks for the review...

On Fri, Jan 11, 2013 at 2:12 PM, Sylwester Nawrocki
<sylvester.nawrocki@gmail.com> wrote:
>> -       ret = of_alias_get_id(np, "i2c");
>> -       if (ret<  0) {
>> -               dev_err(&pdev->dev, "failed to get alias id, errno %d\n",
>> ret);
>> -               return ret;
>> -       }
>> -       pdev->id = ret;
>> +       pdev->id = -1;
>
>
> I think assignments like this are illegal. At this point the device is
> already registered and modifying pdev->id can cause issues at the core
> code.

Good catch.  I think the old code is just as illegal since it was also
assigning to pdev->id, but I'm happy to spin the patch.

> It might be better to have the bus number stored in struct pxa_i2c,
> initialized with pdev->id value for non-dt and now with -1 for dt case.

I'll just init i2c->adap.nr before calling i2c_pxa_probe_dt().  Then
i2c_pxa_probe_dt() can adjust the number.  Hopefully this is OK.

> I realize it is not something your patch is intended to deal with,
> but since you're touching this code maybe it's worth to fix that issue
> as well ?

Sure, I've spun it.  While doing this I realized a few other issues
relating to the ID number.  Specifically:

* We were using the id (as %u) when creating 'i2c->adap.name'.  This
probably gave a very nonsensical ID.  I'm just going to remove the
device number from the adap.name.  That matches what i2c-s3c2410.c
does.  As far as I can tell the adap.name isn't actually used for
much.

* The name was being used in request_irq().  I've changed this to be
like i2c-s3c2410 and use dev_name().  On my current board that means
that the name comes from the table in of_platform_populate().  ...but
that table is supposed to be going away.  If I remove that i2c parts
of that table I get names like '12c60000.i2c', which should be fine
for passing to request_irq().


-Doug

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

* [PATCH v2 0/2] Add automatic bus number support for i2c busses with device tree
  2013-01-11 17:57         ` [REPOST PATCH 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present Doug Anderson
@ 2013-01-14 18:53           ` Doug Anderson
  2013-01-14 18:53             ` [PATCH v2 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present Doug Anderson
  2013-01-14 18:53             ` [PATCH v2 2/2] i2c: pxa: Use i2c-core to get bus number now Doug Anderson
  0 siblings, 2 replies; 23+ messages in thread
From: Doug Anderson @ 2013-01-14 18:53 UTC (permalink / raw)
  To: linux-i2c, Mark Brown
  Cc: Kukjin Kim, Olof Johansson, Thomas Abraham, Padmavathi Venna,
	Ben Dooks, Wolfram Sang, linux-arm-kernel, linux-samsung-soc,
	Haojian Zhuang, Arnd Bergmann, Sylwester Nawrocki, Doug Anderson,
	Karol Lewandowski, linux-kernel, Haojian Zhuang, Andrew Morton

This was suggested by Mark Brown in response to a patch for adding
this functionality only for the s3c2410 bus:
  https://lkml.org/lkml/2012/11/20/681

I have also modified the i2c-pxa driver to use this new functionality.

Changes in v2:
- No longer tweak pdev->id as per Sylwester Nawrocki.
- No longer add the dev ID to the adap.name.  Other drivers don't
  include the device ID here and it doesn't make sense with
  dynamically (or automatically) allocated IDs.
- Use dev_name(&dev->dev) to register for the IRQ; this matches what
  the i2c-s3c2410.c does and handles dynamically allocated IDs.
- This change was only compile-tested (corgi_defconfig), since I don't
  have access to a board that uses this driver.

Doug Anderson (2):
  i2c-core: dt: Pick i2c bus number from i2c alias if present
  i2c: pxa: Use i2c-core to get bus number now

 drivers/i2c/busses/i2c-pxa.c |   20 ++++----
 drivers/i2c/i2c-core.c       |  105 ++++++++++++++++++++++++++++++-----------
 2 files changed, 86 insertions(+), 39 deletions(-)

-- 
1.7.7.3


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

* [PATCH v2 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present
  2013-01-14 18:53           ` [PATCH v2 0/2] Add automatic bus number support for i2c busses with device tree Doug Anderson
@ 2013-01-14 18:53             ` Doug Anderson
  2013-01-15  6:34               ` Olof Johansson
  2013-02-10 12:19               ` Wolfram Sang
  2013-01-14 18:53             ` [PATCH v2 2/2] i2c: pxa: Use i2c-core to get bus number now Doug Anderson
  1 sibling, 2 replies; 23+ messages in thread
From: Doug Anderson @ 2013-01-14 18:53 UTC (permalink / raw)
  To: linux-i2c, Mark Brown
  Cc: Kukjin Kim, Olof Johansson, Thomas Abraham, Padmavathi Venna,
	Ben Dooks, Wolfram Sang, linux-arm-kernel, linux-samsung-soc,
	Haojian Zhuang, Arnd Bergmann, Sylwester Nawrocki, Doug Anderson,
	linux-kernel

This allows you to get the equivalent functionality of
i2c_add_numbered_adapter() with all data in the device tree and no
special case code in your driver.  This is a common device tree
technique.

For quick reference, the FDT syntax for using an alias to provide an
ID looks like:
  aliases {
    i2c0 = &i2c_0;
    i2c1 = &i2c_1;
  };

Signed-off-by: Doug Anderson <dianders@chromium.org>
Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
---
Changes in v2: None

 drivers/i2c/i2c-core.c |  105 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 77 insertions(+), 28 deletions(-)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index e388590..a60ed6d 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -921,13 +921,81 @@ out_list:
 }
 
 /**
+ * i2c_get_number_from_dt - get the adapter number based on dt alias
+ * @adap: the adapter to look at
+ *
+ * Check whether there's an alias in the FDT that gives an ID for this i2c
+ * device.  Use an alias like "i2c<nr>", like:
+ *   aliases {
+ *     i2c0 = &i2c_0;
+ *     i2c1 = &i2c_1;
+ *   };
+ *
+ * Returns the ID if found.  If no alias is found returns -1.
+ */
+static int i2c_get_number_from_dt(struct i2c_adapter *adap)
+{
+	struct device *dev = &adap->dev;
+	int id;
+
+	if (!dev->of_node)
+		return -1;
+
+	id = of_alias_get_id(dev->of_node, "i2c");
+	if (id < 0)
+		return -1;
+	return id;
+}
+
+/**
+ * _i2c_add_numbered_adapter - i2c_add_numbered_adapter where nr is never -1
+ * @adap: the adapter to register (with adap->nr initialized)
+ * Context: can sleep
+ *
+ * See i2c_add_numbered_adapter() for details.
+ */
+static int _i2c_add_numbered_adapter(struct i2c_adapter *adap)
+{
+	int	id;
+	int	status;
+
+	/* Handled by wrappers */
+	BUG_ON(adap->nr == -1);
+
+	if (adap->nr & ~MAX_IDR_MASK)
+		return -EINVAL;
+
+retry:
+	if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
+		return -ENOMEM;
+
+	mutex_lock(&core_lock);
+	/* "above" here means "above or equal to", sigh;
+	 * we need the "equal to" result to force the result
+	 */
+	status = idr_get_new_above(&i2c_adapter_idr, adap, adap->nr, &id);
+	if (status == 0 && id != adap->nr) {
+		status = -EBUSY;
+		idr_remove(&i2c_adapter_idr, id);
+	}
+	mutex_unlock(&core_lock);
+	if (status == -EAGAIN)
+		goto retry;
+
+	if (status == 0)
+		status = i2c_register_adapter(adap);
+	return status;
+}
+
+/**
  * i2c_add_adapter - declare i2c adapter, use dynamic bus number
  * @adapter: the adapter to add
  * Context: can sleep
  *
  * This routine is used to declare an I2C adapter when its bus number
- * doesn't matter.  Examples: for I2C adapters dynamically added by
- * USB links or PCI plugin cards.
+ * doesn't matter or when its bus number is specified by an dt alias.
+ * Examples of bases when the bus number doesn't matter: I2C adapters
+ * dynamically added by USB links or PCI plugin cards.
  *
  * When this returns zero, a new bus number was allocated and stored
  * in adap->nr, and the specified adapter became available for clients.
@@ -937,6 +1005,12 @@ int i2c_add_adapter(struct i2c_adapter *adapter)
 {
 	int	id, res = 0;
 
+	id = i2c_get_number_from_dt(adapter);
+	if (id >= 0) {
+		adapter->nr = id;
+		return _i2c_add_numbered_adapter(adapter);
+	}
+
 retry:
 	if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
 		return -ENOMEM;
@@ -983,34 +1057,9 @@ EXPORT_SYMBOL(i2c_add_adapter);
  */
 int i2c_add_numbered_adapter(struct i2c_adapter *adap)
 {
-	int	id;
-	int	status;
-
 	if (adap->nr == -1) /* -1 means dynamically assign bus id */
 		return i2c_add_adapter(adap);
-	if (adap->nr & ~MAX_IDR_MASK)
-		return -EINVAL;
-
-retry:
-	if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
-		return -ENOMEM;
-
-	mutex_lock(&core_lock);
-	/* "above" here means "above or equal to", sigh;
-	 * we need the "equal to" result to force the result
-	 */
-	status = idr_get_new_above(&i2c_adapter_idr, adap, adap->nr, &id);
-	if (status == 0 && id != adap->nr) {
-		status = -EBUSY;
-		idr_remove(&i2c_adapter_idr, id);
-	}
-	mutex_unlock(&core_lock);
-	if (status == -EAGAIN)
-		goto retry;
-
-	if (status == 0)
-		status = i2c_register_adapter(adap);
-	return status;
+	return _i2c_add_numbered_adapter(adap);
 }
 EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter);
 
-- 
1.7.7.3


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

* [PATCH v2 2/2] i2c: pxa: Use i2c-core to get bus number now
  2013-01-14 18:53           ` [PATCH v2 0/2] Add automatic bus number support for i2c busses with device tree Doug Anderson
  2013-01-14 18:53             ` [PATCH v2 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present Doug Anderson
@ 2013-01-14 18:53             ` Doug Anderson
  1 sibling, 0 replies; 23+ messages in thread
From: Doug Anderson @ 2013-01-14 18:53 UTC (permalink / raw)
  To: linux-i2c, Mark Brown
  Cc: Kukjin Kim, Olof Johansson, Thomas Abraham, Padmavathi Venna,
	Ben Dooks, Wolfram Sang, linux-arm-kernel, linux-samsung-soc,
	Haojian Zhuang, Arnd Bergmann, Sylwester Nawrocki, Doug Anderson,
	Andrew Morton, Karol Lewandowski, Haojian Zhuang, linux-kernel

The commit: "i2c-core: dt: Pick i2c bus number from i2c alias if
present" adds support for automatically picking the bus number based
on the alias ID.  Remove the now unnecessary code from i2c-pxa that
did the same thing.

Signed-off-by: Doug Anderson <dianders@chromium.org>
---
Changes in v2:
- No longer tweak pdev->id as per Sylwester Nawrocki.
- No longer add the dev ID to the adap.name.  Other drivers don't
  include the device ID here and it doesn't make sense with
  dynamically (or automatically) allocated IDs.
- Use dev_name(&dev->dev) to register for the IRQ; this matches what
  the i2c-s3c2410.c does and handles dynamically allocated IDs.
- This change was only compile-tested (corgi_defconfig), since I don't
  have access to a board that uses this driver.

 drivers/i2c/busses/i2c-pxa.c |   20 +++++++++-----------
 1 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
index 1034d93..705cc9f 100644
--- a/drivers/i2c/busses/i2c-pxa.c
+++ b/drivers/i2c/busses/i2c-pxa.c
@@ -1053,16 +1053,13 @@ static int i2c_pxa_probe_dt(struct platform_device *pdev, struct pxa_i2c *i2c,
 	struct device_node *np = pdev->dev.of_node;
 	const struct of_device_id *of_id =
 			of_match_device(i2c_pxa_dt_ids, &pdev->dev);
-	int ret;
 
 	if (!of_id)
 		return 1;
-	ret = of_alias_get_id(np, "i2c");
-	if (ret < 0) {
-		dev_err(&pdev->dev, "failed to get alias id, errno %d\n", ret);
-		return ret;
-	}
-	pdev->id = ret;
+
+	/* For device tree we always use the dynamic or alias-assigned ID */
+	i2c->adap.nr = -1;
+
 	if (of_get_property(np, "mrvl,i2c-polling", NULL))
 		i2c->use_pio = 1;
 	if (of_get_property(np, "mrvl,i2c-fast-mode", NULL))
@@ -1100,6 +1097,9 @@ static int i2c_pxa_probe(struct platform_device *dev)
 		goto emalloc;
 	}
 
+	/* Default adapter num to device id; i2c_pxa_probe_dt can override. */
+	i2c->adap.nr = dev->id;
+
 	ret = i2c_pxa_probe_dt(dev, i2c, &i2c_type);
 	if (ret > 0)
 		ret = i2c_pxa_probe_pdata(dev, i2c, &i2c_type);
@@ -1124,9 +1124,7 @@ static int i2c_pxa_probe(struct platform_device *dev)
 	spin_lock_init(&i2c->lock);
 	init_waitqueue_head(&i2c->wait);
 
-	i2c->adap.nr = dev->id;
-	snprintf(i2c->adap.name, sizeof(i2c->adap.name), "pxa_i2c-i2c.%u",
-		 i2c->adap.nr);
+	strlcpy(i2c->adap.name, "pxa_i2c-i2c", sizeof(i2c->adap.name));
 
 	i2c->clk = clk_get(&dev->dev, NULL);
 	if (IS_ERR(i2c->clk)) {
@@ -1169,7 +1167,7 @@ static int i2c_pxa_probe(struct platform_device *dev)
 	} else {
 		i2c->adap.algo = &i2c_pxa_algorithm;
 		ret = request_irq(irq, i2c_pxa_handler, IRQF_SHARED,
-				  i2c->adap.name, i2c);
+				  dev_name(&dev->dev), i2c);
 		if (ret)
 			goto ereqirq;
 	}
-- 
1.7.7.3


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

* Re: [PATCH v2 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present
  2013-01-14 18:53             ` [PATCH v2 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present Doug Anderson
@ 2013-01-15  6:34               ` Olof Johansson
  2013-02-10 12:19               ` Wolfram Sang
  1 sibling, 0 replies; 23+ messages in thread
From: Olof Johansson @ 2013-01-15  6:34 UTC (permalink / raw)
  To: Doug Anderson
  Cc: linux-i2c, Mark Brown, Kukjin Kim, Thomas Abraham,
	Padmavathi Venna, Ben Dooks, Wolfram Sang, linux-arm-kernel,
	linux-samsung-soc, Haojian Zhuang, Arnd Bergmann,
	Sylwester Nawrocki, linux-kernel

On Mon, Jan 14, 2013 at 10:53:21AM -0800, Doug Anderson wrote:
> This allows you to get the equivalent functionality of
> i2c_add_numbered_adapter() with all data in the device tree and no
> special case code in your driver.  This is a common device tree
> technique.
> 
> For quick reference, the FDT syntax for using an alias to provide an
> ID looks like:
>   aliases {
>     i2c0 = &i2c_0;
>     i2c1 = &i2c_1;
>   };
> 
> Signed-off-by: Doug Anderson <dianders@chromium.org>
> Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>

The call path for i2c_add_numbered_adapter() with nr == -1 is a little
awkward now, but I don't see much how it can be improved much.

Acked-by: Olof Johansson <olof@lixom.net>


-Olof

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

* Re: [PATCH v2 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present
  2013-01-14 18:53             ` [PATCH v2 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present Doug Anderson
  2013-01-15  6:34               ` Olof Johansson
@ 2013-02-10 12:19               ` Wolfram Sang
  2013-02-12  0:48                 ` Doug Anderson
  1 sibling, 1 reply; 23+ messages in thread
From: Wolfram Sang @ 2013-02-10 12:19 UTC (permalink / raw)
  To: Doug Anderson
  Cc: linux-i2c, Mark Brown, Kukjin Kim, Olof Johansson,
	Thomas Abraham, Padmavathi Venna, Ben Dooks, linux-arm-kernel,
	linux-samsung-soc, Haojian Zhuang, Arnd Bergmann,
	Sylwester Nawrocki, linux-kernel

Hi Doug,

On Mon, Jan 14, 2013 at 10:53:21AM -0800, Doug Anderson wrote:
> This allows you to get the equivalent functionality of
> i2c_add_numbered_adapter() with all data in the device tree and no
> special case code in your driver.  This is a common device tree
> technique.
> 
> For quick reference, the FDT syntax for using an alias to provide an
> ID looks like:
>   aliases {
>     i2c0 = &i2c_0;
>     i2c1 = &i2c_1;
>   };
> 
> Signed-off-by: Doug Anderson <dianders@chromium.org>
> Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
> ---
> Changes in v2: None
> 
>  drivers/i2c/i2c-core.c |  105 +++++++++++++++++++++++++++++++++++-------------
>  1 files changed, 77 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index e388590..a60ed6d 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -921,13 +921,81 @@ out_list:
>  }
>  
>  /**
> + * i2c_get_number_from_dt - get the adapter number based on dt alias
> + * @adap: the adapter to look at
> + *
> + * Check whether there's an alias in the FDT that gives an ID for this i2c
> + * device.  Use an alias like "i2c<nr>", like:
> + *   aliases {
> + *     i2c0 = &i2c_0;
> + *     i2c1 = &i2c_1;
> + *   };
> + *
> + * Returns the ID if found.  If no alias is found returns -1.
> + */
> +static int i2c_get_number_from_dt(struct i2c_adapter *adap)

i2c_get_id_from_dt()?

> +{
> +	struct device *dev = &adap->dev;
> +	int id;
> +
> +	if (!dev->of_node)
> +		return -1;

-ESOMETHING?

> +
> +	id = of_alias_get_id(dev->of_node, "i2c");
> +	if (id < 0)
> +		return -1;
> +	return id;

Simply 'return of_alias_get_id(...)'? Even more, since this function
boils down to calling of_alias_get_id only and is only used once, I'd
think we can implement that directly and drop this function. That
shouldn't hurt readability.

> +}
> +
> +/**
> + * _i2c_add_numbered_adapter - i2c_add_numbered_adapter where nr is never -1
> + * @adap: the adapter to register (with adap->nr initialized)
> + * Context: can sleep
> + *
> + * See i2c_add_numbered_adapter() for details.
> + */
> +static int _i2c_add_numbered_adapter(struct i2c_adapter *adap)

All other internal functions are prefixed with '__'.

> +{
> +	int	id;
> +	int	status;
> +
> +	/* Handled by wrappers */
> +	BUG_ON(adap->nr == -1);

Is that a reason to halt the kernel? WARN and bailing out would do IMO.

> +
> +	if (adap->nr & ~MAX_IDR_MASK)
> +		return -EINVAL;

Note the idr-cleanup series from Tejun Heo. Given that his series is
scheduled for v3.9, I'd like to have your patches on top of his.

Thanks,

   Wolfram


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

* Re: [PATCH v2 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present
  2013-02-10 12:19               ` Wolfram Sang
@ 2013-02-12  0:48                 ` Doug Anderson
  0 siblings, 0 replies; 23+ messages in thread
From: Doug Anderson @ 2013-02-12  0:48 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: linux-i2c, Mark Brown, Kukjin Kim, Olof Johansson,
	Thomas Abraham, Padmavathi Venna, Ben Dooks, linux-arm-kernel,
	linux-samsung-soc, Haojian Zhuang, Arnd Bergmann,
	Sylwester Nawrocki, linux-kernel

Wolfram,

Thanks for the review.  New patch was just sent.  :)

On Sun, Feb 10, 2013 at 4:19 AM, Wolfram Sang <w.sang@pengutronix.de> wrote:
>> +static int i2c_get_number_from_dt(struct i2c_adapter *adap)
>
> i2c_get_id_from_dt()?

Done.


>> +     if (!dev->of_node)
>> +             return -1;
>
> -ESOMETHING?

Function has been removed, as per below.


>> +
>> +     id = of_alias_get_id(dev->of_node, "i2c");
>> +     if (id < 0)
>> +             return -1;
>> +     return id;
>
> Simply 'return of_alias_get_id(...)'? Even more, since this function
> boils down to calling of_alias_get_id only and is only used once, I'd
> think we can implement that directly and drop this function. That
> shouldn't hurt readability.

Good point.  Done.

>> +/**
>> + * _i2c_add_numbered_adapter - i2c_add_numbered_adapter where nr is never -1
>> + * @adap: the adapter to register (with adap->nr initialized)
>> + * Context: can sleep
>> + *
>> + * See i2c_add_numbered_adapter() for details.
>> + */
>> +static int _i2c_add_numbered_adapter(struct i2c_adapter *adap)
>
> All other internal functions are prefixed with '__'.

Done.


>> +{
>> +     int     id;
>> +     int     status;
>> +
>> +     /* Handled by wrappers */
>> +     BUG_ON(adap->nr == -1);
>
> Is that a reason to halt the kernel? WARN and bailing out would do IMO.

Done.


>> +
>> +     if (adap->nr & ~MAX_IDR_MASK)
>> +             return -EINVAL;
>
> Note the idr-cleanup series from Tejun Heo. Given that his series is
> scheduled for v3.9, I'd like to have your patches on top of his.

Done.

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

end of thread, other threads:[~2013-02-12  0:48 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-20 22:27 [PATCH 1/2] ARM: EXYNOS: Add aliases for i2c controller for exynos4 Doug Anderson
2012-11-20 22:27 ` [PATCH 2/2] i2c: s3c2410: Get the i2c bus number from alias id Doug Anderson
2012-11-21  4:09   ` Mark Brown
2012-11-21 18:33     ` Doug Anderson
2012-11-22  6:56       ` Kukjin Kim
2012-11-21  9:43   ` Kukjin Kim
     [not found]   ` <1353522362-25519-1-git-send-email-dianders@chromium.org>
2012-11-21 18:26     ` [PATCH 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present Doug Anderson
2012-12-05  1:45       ` Haojian Zhuang
2013-01-11 17:57       ` [REPOST PATCH 0/2] Add automatic bus number support for i2c busses with device tree Doug Anderson
2013-01-11 17:57         ` [REPOST PATCH 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present Doug Anderson
2013-01-14 18:53           ` [PATCH v2 0/2] Add automatic bus number support for i2c busses with device tree Doug Anderson
2013-01-14 18:53             ` [PATCH v2 1/2] i2c-core: dt: Pick i2c bus number from i2c alias if present Doug Anderson
2013-01-15  6:34               ` Olof Johansson
2013-02-10 12:19               ` Wolfram Sang
2013-02-12  0:48                 ` Doug Anderson
2013-01-14 18:53             ` [PATCH v2 2/2] i2c: pxa: Use i2c-core to get bus number now Doug Anderson
2013-01-11 17:57         ` [REPOST PATCH " Doug Anderson
2013-01-11 22:12           ` Sylwester Nawrocki
2013-01-14 18:52             ` Doug Anderson
2012-11-21 18:26     ` [PATCH " Doug Anderson
2012-12-05  1:45       ` Haojian Zhuang
2012-11-21  7:25 ` [PATCH 1/2] ARM: EXYNOS: Add aliases for i2c controller for exynos4 Olof Johansson
2012-11-21  9:43 ` Kukjin Kim

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).