This commit cleanups the I2C uclass driver by:
- simplify i2c_child_post_bind() method
- cleanups i2c_chip_ofdata_to_platdata(), by calling dev_get_reg()
  for getting chip address

Signed-off-by: Przemyslaw Marczak <p.marc...@samsung.com>
Cc: Masahiro Yamada <yamada.masah...@socionext.com>
Cc: Joe Hershberger <joe.hershber...@ni.com>
Cc: Simon Glass <s...@chromium.org>
Cc: Heiko Schocher <h...@denx.de>
Cc: Stefan Roese <s...@denx.de>
---
 drivers/i2c/i2c-uclass.c | 17 ++++++++---------
 include/i2c.h            | 11 ++++-------
 2 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/drivers/i2c/i2c-uclass.c b/drivers/i2c/i2c-uclass.c
index 50b99ea..3cfbd22 100644
--- a/drivers/i2c/i2c-uclass.c
+++ b/drivers/i2c/i2c-uclass.c
@@ -467,16 +467,17 @@ int i2c_deblock(struct udevice *bus)
        return ops->deblock(bus);
 }
 
-int i2c_chip_ofdata_to_platdata(const void *blob, int node,
-                               struct dm_i2c_chip *chip)
+int i2c_chip_ofdata_to_platdata(struct udevice *dev)
 {
-       chip->offset_len = fdtdec_get_int(gd->fdt_blob, node,
+       struct dm_i2c_chip *chip = dev_get_parent_platdata(dev);
+
+       chip->offset_len = fdtdec_get_int(gd->fdt_blob, dev->of_offset,
                                          "u-boot,i2c-offset-len", 1);
        chip->flags = 0;
-       chip->chip_addr = fdtdec_get_int(gd->fdt_blob, node, "reg", -1);
-       if (chip->chip_addr == -1) {
+       chip->chip_addr = dev_get_reg(dev);
+       if (chip->chip_addr == FDT_ADDR_T_NONE) {
                debug("%s: I2C Node '%s' has no 'reg' property\n", __func__,
-                     fdt_get_name(blob, node, NULL));
+                     fdt_get_name(gd->fdt_blob, dev->of_offset, NULL));
                return -EINVAL;
        }
 
@@ -501,12 +502,10 @@ static int i2c_post_bind(struct udevice *dev)
 
 static int i2c_child_post_bind(struct udevice *dev)
 {
-       struct dm_i2c_chip *plat = dev_get_parent_platdata(dev);
-
        if (dev->of_offset == -1)
                return 0;
 
-       return i2c_chip_ofdata_to_platdata(gd->fdt_blob, dev->of_offset, plat);
+       return i2c_chip_ofdata_to_platdata(dev);
 }
 
 UCLASS_DRIVER(i2c) = {
diff --git a/include/i2c.h b/include/i2c.h
index 1f5ae45..c5bb39c 100644
--- a/include/i2c.h
+++ b/include/i2c.h
@@ -518,15 +518,12 @@ int i2c_get_chip_for_busnum(int busnum, int chip_addr, 
uint offset_len,
  * i2c_chip_ofdata_to_platdata() - Decode standard I2C platform data
  *
  * This decodes the chip address from a device tree node and puts it into
- * its dm_i2c_chip structure. This should be called in your driver's
- * ofdata_to_platdata() method.
+ * its dm_i2c_chip structure. This is called after device's bind inside
+ * uclass driver's i2c_child_post_bind() method.
  *
- * @blob:      Device tree blob
- * @node:      Node offset to read from
- * @spi:       Place to put the decoded information
+ * @dev:       pointer to a chip device
  */
-int i2c_chip_ofdata_to_platdata(const void *blob, int node,
-                               struct dm_i2c_chip *chip);
+int i2c_chip_ofdata_to_platdata(struct udevice *dev);
 
 /**
  * i2c_dump_msgs() - Dump a list of I2C messages
-- 
1.9.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to