mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	Tested on bcm2710 (Raspberry Pi 3B). Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
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;
 |