[PATCH 11/27] i2c: Update for new sequence numbers

Simon Glass sjg at chromium.org
Mon Nov 30 02:53:46 CET 2020


Use the new sequence number in all cases. Drop the logic to check for a
valid number in designware_i2c, since it will always be valid.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

 drivers/i2c/designware_i2c_pci.c   | 22 +---------------------
 drivers/i2c/i2c-uclass.c           |  8 +-------
 drivers/i2c/i2c-versatile.c        |  5 -----
 drivers/i2c/intel_i2c.c            | 12 +-----------
 drivers/i2c/muxes/i2c-mux-uclass.c |  4 ++--
 drivers/i2c/mvtwsi.c               |  4 ++--
 6 files changed, 7 insertions(+), 48 deletions(-)

diff --git a/drivers/i2c/designware_i2c_pci.c b/drivers/i2c/designware_i2c_pci.c
index 04921a304ac..9237726b475 100644
--- a/drivers/i2c/designware_i2c_pci.c
+++ b/drivers/i2c/designware_i2c_pci.c
@@ -90,32 +90,12 @@ static int designware_i2c_pci_probe(struct udevice *dev)
 
 static int designware_i2c_pci_bind(struct udevice *dev)
 {
-	struct uclass *uc;
 	char name[20];
-	int ret;
 
 	if (dev_of_valid(dev))
 		return 0;
 
-	/*
-	 * Create a unique device name for PCI type devices
-	 * ToDo:
-	 * Setting req_seq in the driver is probably not recommended.
-	 * But without a DT alias the number is not configured. And
-	 * using this driver is impossible for PCIe I2C devices.
-	 * This can be removed, once a better (correct) way for this
-	 * is found and implemented.
-	 *
-	 * TODO(sjg at chromium.org): Perhaps if uclasses had platdata this would
-	 * be possible. We cannot use static data in drivers since they may be
-	 * used in SPL or before relocation.
-	 */
-	ret = uclass_get(UCLASS_I2C, &uc);
-	if (ret)
-		return ret;
-
-	dev->req_seq = uclass_find_next_free_req_seq(uc);
-	sprintf(name, "i2c_designware#%u", dev->req_seq);
+	sprintf(name, "i2c_designware#%u", dev_seq(dev));
 	device_set_name(dev, name);
 
 	return 0;
diff --git a/drivers/i2c/i2c-uclass.c b/drivers/i2c/i2c-uclass.c
index 5c4626b0442..2625bd72dc8 100644
--- a/drivers/i2c/i2c-uclass.c
+++ b/drivers/i2c/i2c-uclass.c
@@ -700,13 +700,7 @@ static int i2c_post_bind(struct udevice *dev)
 	if (!priv)
 		return -ENOMEM;
 
-	debug("%s: %s, req_seq=%d\n", __func__, dev->name, dev->req_seq);
-
-	/* if there is no alias ID, use the first free */
-	if (dev->req_seq == -1)
-		dev->req_seq = ++priv->max_id;
-
-	debug("%s: %s, new req_seq=%d\n", __func__, dev->name, dev->req_seq);
+	debug("%s: %s, seq=%d\n", __func__, dev->name, dev_seq(dev));
 
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 	ret = dm_scan_fdt_dev(dev);
diff --git a/drivers/i2c/i2c-versatile.c b/drivers/i2c/i2c-versatile.c
index 62831522bd3..69042d54205 100644
--- a/drivers/i2c/i2c-versatile.c
+++ b/drivers/i2c/i2c-versatile.c
@@ -252,11 +252,6 @@ static int versatile_i2c_probe(struct udevice *dev)
 
 	priv->base = (phys_addr_t)dev_read_addr(dev);
 	priv->delay = 25;	/* 25us * 4 = 100kHz */
-	/*
-	 * U-Boot still doesn't assign automatically
-	 * sequence numbers to devices
-	 */
-	dev->req_seq = 1;
 
 	return 0;
 }
diff --git a/drivers/i2c/intel_i2c.c b/drivers/i2c/intel_i2c.c
index 3b79cb40cd3..66d017a2615 100644
--- a/drivers/i2c/intel_i2c.c
+++ b/drivers/i2c/intel_i2c.c
@@ -269,21 +269,11 @@ static int intel_i2c_probe(struct udevice *dev)
 
 static int intel_i2c_bind(struct udevice *dev)
 {
-	static int num_cards __attribute__ ((section(".data")));
 	char name[20];
 
 	/* Create a unique device name for PCI type devices */
 	if (device_is_on_pci_bus(dev)) {
-		/*
-		 * ToDo:
-		 * Setting req_seq in the driver is probably not recommended.
-		 * But without a DT alias the number is not configured. And
-		 * using this driver is impossible for PCIe I2C devices.
-		 * This can be removed, once a better (correct) way for this
-		 * is found and implemented.
-		 */
-		dev->req_seq = num_cards;
-		sprintf(name, "intel_i2c#%u", num_cards++);
+		sprintf(name, "intel_i2c#%u", dev_seq(dev));
 		device_set_name(dev, name);
 	}
 
diff --git a/drivers/i2c/muxes/i2c-mux-uclass.c b/drivers/i2c/muxes/i2c-mux-uclass.c
index 26897554b0f..9a8cf8fb172 100644
--- a/drivers/i2c/muxes/i2c-mux-uclass.c
+++ b/drivers/i2c/muxes/i2c-mux-uclass.c
@@ -87,8 +87,8 @@ static int i2c_mux_post_bind(struct udevice *mux)
 
 		ret = device_bind_driver_to_node(mux, "i2c_mux_bus_drv",
 						 full_name, node, &dev);
-		debug("   - bind ret=%d, %s, req_seq %d\n", ret,
-		      dev ? dev->name : NULL, dev->req_seq);
+		debug("   - bind ret=%d, %s, seq %d\n", ret,
+		      dev ? dev->name : NULL, dev_seq(dev));
 		if (ret)
 			return ret;
 	}
diff --git a/drivers/i2c/mvtwsi.c b/drivers/i2c/mvtwsi.c
index fdb8fd42e5c..5cec4d68c90 100644
--- a/drivers/i2c/mvtwsi.c
+++ b/drivers/i2c/mvtwsi.c
@@ -823,8 +823,8 @@ static int mvtwsi_i2c_bind(struct udevice *bus)
 	struct mvtwsi_registers *twsi = dev_read_addr_ptr(bus);
 
 	/* Disable the hidden slave in i2c0 of these platforms */
-	if ((IS_ENABLED(CONFIG_ARMADA_38X) || IS_ENABLED(CONFIG_ARCH_KIRKWOOD))
-			&& bus->req_seq == 0)
+	if ((IS_ENABLED(CONFIG_ARMADA_38X) ||
+	    IS_ENABLED(CONFIG_ARCH_KIRKWOOD)) && !dev_seq(bus))
 		twsi_disable_i2c_slave(twsi);
 
 	return 0;
-- 
2.29.2.454.gaff20da3a2-goog



More information about the U-Boot mailing list