From 26b77aae545e8618d0553b3f9d92bd3ea8a115e8 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 20 Feb 2018 10:07:27 +0000 Subject: [PATCH] i2c-gpio: Also set bus numbers from reg property raspberrypi inclusion category: feature bugzilla: 50432 -------------------------------- 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 Signed-off-by: Fang Yafen Signed-off-by: Zheng Zengkai --- drivers/i2c/busses/i2c-gpio.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-gpio.c b/drivers/i2c/busses/i2c-gpio.c index a4a6825c8758..cfbcf3952ddc 100644 --- a/drivers/i2c/busses/i2c-gpio.c +++ b/drivers/i2c/busses/i2c-gpio.c @@ -445,7 +445,9 @@ static int i2c_gpio_probe(struct platform_device *pdev) 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; -- GitLab