Simon Glass | 7132b9f | 2015-01-26 20:29:37 -0700 | [diff] [blame] | 1 | U-Boot I2C |
| 2 | ---------- |
| 3 | |
| 4 | U-Boot's I2C model has the concept of an offset within a chip (I2C target |
| 5 | device). The offset can be up to 4 bytes long, but is normally 1 byte, |
| 6 | meaning that offsets from 0 to 255 are supported by the chip. This often |
| 7 | corresponds to register numbers. |
| 8 | |
| 9 | Apart from the controller-specific I2C bindings, U-Boot supports a special |
| 10 | property which allows the chip offset length to be selected. |
| 11 | |
| 12 | Optional properties: |
| 13 | - u-boot,i2c-offset-len - length of chip offset in bytes. If omitted the |
| 14 | default value of 1 is used. |
Lukasz Majewski | a40fe21 | 2019-04-04 12:35:34 +0200 | [diff] [blame^] | 15 | - u-boot,i2c-transaction-bytes - the length of single I2C transaction on |
| 16 | the bus. Some devices require more than single byte transmission |
| 17 | (e.g. mc34708 mfd). This information is necessary to correctly |
| 18 | initialize (put into idle state) I2C bus after soft reset. |
Alexander Kochetkov | df8dcac | 2018-03-27 17:52:26 +0300 | [diff] [blame] | 19 | - gpios = <sda ...>, <scl ...>; |
| 20 | pinctrl-names = "default", "gpio"; |
| 21 | pinctrl-0 = <&i2c_xfer>; |
| 22 | pinctrl-1 = <&i2c_gpio>; |
| 23 | Pin description for I2C bus software deblocking. |
Simon Glass | 7132b9f | 2015-01-26 20:29:37 -0700 | [diff] [blame] | 24 | |
| 25 | |
| 26 | Example |
| 27 | ------- |
| 28 | |
| 29 | i2c4: i2c@12ca0000 { |
| 30 | cros-ec@1e { |
| 31 | reg = <0x1e>; |
| 32 | compatible = "google,cros-ec"; |
| 33 | i2c-max-frequency = <100000>; |
| 34 | u-boot,i2c-offset-len = <0>; |
Lukasz Majewski | a40fe21 | 2019-04-04 12:35:34 +0200 | [diff] [blame^] | 35 | u-boot,i2c-transaction-bytes = <3>; |
Simon Glass | 7132b9f | 2015-01-26 20:29:37 -0700 | [diff] [blame] | 36 | ec-interrupt = <&gpx1 6 GPIO_ACTIVE_LOW>; |
| 37 | }; |
| 38 | }; |
Alexander Kochetkov | df8dcac | 2018-03-27 17:52:26 +0300 | [diff] [blame] | 39 | |
| 40 | &i2c1 { |
| 41 | pinctrl-names = "default", "gpio"; |
| 42 | pinctrl-0 = <&i2c1_xfer>; |
| 43 | pinctrl-1 = <&i2c1_gpio>; |
| 44 | gpios = <&gpio1 26 GPIO_ACTIVE_LOW>, /* SDA */ |
| 45 | <&gpio1 27 GPIO_ACTIVE_LOW>; /* SCL */ |
| 46 | }; |