--- /dev/null
+U-Boot I2C
+----------
+
+U-Boot's I2C model has the concept of an offset within a chip (I2C target
+device). The offset can be up to 4 bytes long, but is normally 1 byte,
+meaning that offsets from 0 to 255 are supported by the chip. This often
+corresponds to register numbers.
+
+Apart from the controller-specific I2C bindings, U-Boot supports a special
+property which allows the chip offset length to be selected.
+
+Optional properties:
+- u-boot,i2c-offset-len - length of chip offset in bytes. If omitted the
+    default value of 1 is used.
+
+
+Example
+-------
+
+i2c4: i2c@12ca0000 {
+       cros-ec@1e {
+               reg = <0x1e>;
+               compatible = "google,cros-ec";
+               i2c-max-frequency = <100000>;
+               u-boot,i2c-offset-len = <0>;
+               ec-interrupt = <&gpx1 6 GPIO_ACTIVE_LOW>;
+       };
+};
 
 int i2c_chip_ofdata_to_platdata(const void *blob, int node,
                                struct dm_i2c_chip *chip)
 {
-       chip->offset_len = 1;   /* default */
+       chip->offset_len = fdtdec_get_int(gd->fdt_blob, node,
+                                         "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) {