Hi Simon,
On Mon, 19 Jan 2015 20:12:30 -0700 Simon Glass <s...@chromium.org> wrote: > diff --git a/common/cmd_i2c.c b/common/cmd_i2c.c > index 1e500fb..7c3ad00 100644 > --- a/common/cmd_i2c.c > +++ b/common/cmd_i2c.c > @@ -168,7 +168,7 @@ static int i2c_get_cur_bus_chip(uint chip_addr, struct > udevice **devp) > if (ret) > return ret; > > - return i2c_get_chip(bus, chip_addr, devp); > + return i2c_get_chip(bus, chip_addr, 1, devp); > } The i2c command calls [1] i2c_get_cur_bus_chip() = set the offset len to 1 [2] i2c_set_chip_offset_len = change the offset Now we can do [1] and [2] at the same time, right? If we set the offset address when we get the device, we won't need i2c_set_chip_offset_len(), I think. The offset_len for each device does not change. Chainging it on the way makes no sense. > } > > -int i2c_get_chip(struct udevice *bus, uint chip_addr, struct udevice **devp) > +int i2c_get_chip(struct udevice *bus, uint chip_addr, uint offset_len, > + struct udevice **devp) If the device tree for the child device is not found (i.e. i2c_bind_driver() is called), the new generic chip will be given with the offset_len. On the other hand, if the device tree is found, offset_len is default to 1 because i2c_chip_ofdata_to_platdata() always set chip->offset_len to 1. It is a pity. I wonder if it would not be possible to get the default offset_len from the device tree node of the child device. For example, the EEPROM on my board expects chip->offset_len == 2. It would be nice if we could have the offset property for the EEPROM device node. I dug into Documentation/devicetree/bindings/, but I could not find the one. Best Regards Masahiro Yamada _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot