| From 07127fcefbe234f8d36507c58c82098663781cb0 Mon Sep 17 00:00:00 2001 |
| From: Phil Elwell <phil@raspberrypi.org> |
| Date: Tue, 20 Feb 2018 10:07:27 +0000 |
| Subject: [PATCH] i2c-gpio: Also set bus numbers from reg property |
| |
| I2C busses can be assigned specific bus numbers using aliases in |
| Device Tree - string properties where the name is the alias and the |
| value is the path to the node. The current DT parameter mechanism |
| does not allow property names to be derived from a parameter value |
| in any way, so it isn't possible to generate unique or matching |
| aliases for nodes from an overlay that can generate multiple |
| instances, e.g. i2c-gpio. |
| |
| Work around this limitation (at least temporarily) by allowing |
| the i2c adapter number to be initialised from the "reg" property |
| if present. |
| |
| Signed-off-by: Phil Elwell <phil@raspberrypi.org> |
| --- |
| drivers/i2c/busses/i2c-gpio.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/i2c/busses/i2c-gpio.c |
| +++ b/drivers/i2c/busses/i2c-gpio.c |
| @@ -445,7 +445,9 @@ static int i2c_gpio_probe(struct platfor |
| adap->dev.parent = dev; |
| adap->dev.of_node = np; |
| |
| - adap->nr = pdev->id; |
| + if (pdev->id != PLATFORM_DEVID_NONE || !pdev->dev.of_node || |
| + of_property_read_u32(pdev->dev.of_node, "reg", &adap->nr)) |
| + adap->nr = pdev->id; |
| ret = i2c_bit_add_numbered_bus(adap); |
| if (ret) |
| return ret; |