i2c: mux: pca954x: support property idle-state
authorBiwen Li <biwen.li@nxp.com>
Wed, 25 Dec 2019 10:36:23 +0000 (18:36 +0800)
committerPeter Rosin <peda@axentia.se>
Fri, 3 Jan 2020 14:00:53 +0000 (15:00 +0100)
commite65e228eb0963be32180db3039f0a1467b426aae
tree558ac11521f2584fbd7eebe13a24c29e2332548a
parent0d1569a763faef9df0f08c19c31c6aea84a302ff
i2c: mux: pca954x: support property idle-state

This supports property idle-state,if present,
overrides i2c-mux-idle-disconnect.

My use cases:
- Use the property idle-state to fix
  an errata on LS2085ARDB and LS2088ARDB.
- Errata id: E-00013(board LS2085ARDB and
  LS2088ARDB revision on Rev.B, Rev.C and Rev.D).
- About E-00013:
  - Description: I2C1 and I2C3 buses
    are missing pull-up.
  - Impact: When the PCA954x device is tri-stated, the I2C bus
    will float. This makes the I2C bus and its associated
    downstream devices inaccessible.
  - Hardware fix: Populate resistors R189 and R190 for I2C1
    and resistors R228 and R229 for I2C3.
  - Software fix: Remove the tri-state option from the PCA954x
    driver(PCA954x always on enable status, specify a
    channel zero in dts to fix the errata E-00013).

Tested-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Signed-off-by: Biwen Li <biwen.li@nxp.com>
Signed-off-by: Peter Rosin <peda@axentia.se>
drivers/i2c/muxes/i2c-mux-pca954x.c