ARM: dts: imx6-sabreauto: create i2cmux for i2c3
authorSteve Longerbeam <slongerbeam@gmail.com>
Mon, 12 Jun 2017 18:24:01 +0000 (11:24 -0700)
committerShawn Guo <shawnguo@kernel.org>
Wed, 14 Jun 2017 15:08:31 +0000 (23:08 +0800)
commit9976c92df9c347acd9726f5c187705f191d51999
treec3d346cb4eb77e32b63aaf1b1dd6fbda6b189ba2
parent545fb52e53d6dfa9e64e0a10c336d8473319d077
ARM: dts: imx6-sabreauto: create i2cmux for i2c3

The sabreauto uses a steering pin to select between the SDA signal on
i2c3 bus, and a data-in pin for an SPI NOR chip. Use i2cmux to control
this steering pin. Idle state of the i2cmux selects SPI NOR. This is not
a classic way to use i2cmux, since one side of the mux selects something
other than an i2c bus, but it works and is probably the cleanest
solution. Note that if one thread is attempting to access SPI NOR while
another thread is accessing i2c3, the SPI NOR access will fail since the
i2cmux has selected the SDA pin rather than SPI NOR data-in. This couldn't
be avoided in any case, the board is not designed to allow concurrent
i2c3 and SPI NOR functions (and the default device-tree does not enable
SPI NOR anyway).

Devices hanging off i2c3 should now be defined under i2cmux, so
that the steering pin can be properly controlled to access those
devices. The port expanders (MAX7310) are thus moved into i2cmux.

Signed-off-by: Steve Longerbeam <steve_longerbeam@mentor.com>
Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm/boot/dts/imx6qdl-sabreauto.dtsi