From: Steve Longerbeam <slongerbeam@gmail.com> To: robh+dt@kernel.org, mark.rutland@arm.com, shawnguo@kernel.org, kernel@pengutronix.de, fabio.estevam@nxp.com, linux@armlinux.org.uk, mchehab@kernel.org, hverkuil@xs4all.nl, nick@shmanahar.org, markus.heiser@darmarIT.de, p.zabel@pengutronix.de, laurent.pinchart+renesas@ideasonboard.com, bparrot@ti.com, geert@linux-m68k.org, arnd@arndb.de, sudipm.mukherjee@gmail.com, minghsiu.tsai@mediatek.com, tiffany.lin@mediatek.com, jean-christophe.trotin@st.com, horms+renesas@verge.net.au, niklas.soderlund+renesas@ragnatech.se, robert.jarzmik@free.fr, songjun.wu@microchip.com, andrew-ct.chen@mediatek.com, gregkh@linuxfoundation.org, shuah@kernel.org, sakari.ailus@linux.intel.com, pavel@ucw.cz Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org, devel@driverdev.osuosl.org, Steve Longerbeam <steve_longerbeam@mentor.com> Subject: [PATCH v8 11/34] ARM: dts: imx6-sabreauto: create i2cmux for i2c3 Date: Wed, 7 Jun 2017 11:33:50 -0700 [thread overview] Message-ID: <1496860453-6282-12-git-send-email-steve_longerbeam@mentor.com> (raw) In-Reply-To: <1496860453-6282-1-git-send-email-steve_longerbeam@mentor.com> 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> --- arch/arm/boot/dts/imx6qdl-sabreauto.dtsi | 65 +++++++++++++++++++++----------- 1 file changed, 44 insertions(+), 21 deletions(-) diff --git a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi index a2a714d..c8e35c4 100644 --- a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi +++ b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi @@ -108,6 +108,44 @@ default-brightness-level = <7>; status = "okay"; }; + + i2cmux { + compatible = "i2c-mux-gpio"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c3mux>; + mux-gpios = <&gpio5 4 0>; + i2c-parent = <&i2c3>; + idle-state = <0>; + + i2c@1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + + max7310_a: gpio@30 { + compatible = "maxim,max7310"; + reg = <0x30>; + gpio-controller; + #gpio-cells = <2>; + }; + + max7310_b: gpio@32 { + compatible = "maxim,max7310"; + reg = <0x32>; + gpio-controller; + #gpio-cells = <2>; + }; + + max7310_c: gpio@34 { + compatible = "maxim,max7310"; + reg = <0x34>; + gpio-controller; + #gpio-cells = <2>; + }; + }; + }; }; &clks { @@ -290,27 +328,6 @@ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c3>; status = "okay"; - - max7310_a: gpio@30 { - compatible = "maxim,max7310"; - reg = <0x30>; - gpio-controller; - #gpio-cells = <2>; - }; - - max7310_b: gpio@32 { - compatible = "maxim,max7310"; - reg = <0x32>; - gpio-controller; - #gpio-cells = <2>; - }; - - max7310_c: gpio@34 { - compatible = "maxim,max7310"; - reg = <0x34>; - gpio-controller; - #gpio-cells = <2>; - }; }; &iomuxc { @@ -418,6 +435,12 @@ >; }; + pinctrl_i2c3mux: i2c3muxgrp { + fsl,pins = < + MX6QDL_PAD_EIM_A24__GPIO5_IO04 0x0b0b1 + >; + }; + pinctrl_pwm3: pwm1grp { fsl,pins = < MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1 -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: slongerbeam@gmail.com (Steve Longerbeam) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v8 11/34] ARM: dts: imx6-sabreauto: create i2cmux for i2c3 Date: Wed, 7 Jun 2017 11:33:50 -0700 [thread overview] Message-ID: <1496860453-6282-12-git-send-email-steve_longerbeam@mentor.com> (raw) In-Reply-To: <1496860453-6282-1-git-send-email-steve_longerbeam@mentor.com> 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> --- arch/arm/boot/dts/imx6qdl-sabreauto.dtsi | 65 +++++++++++++++++++++----------- 1 file changed, 44 insertions(+), 21 deletions(-) diff --git a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi index a2a714d..c8e35c4 100644 --- a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi +++ b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi @@ -108,6 +108,44 @@ default-brightness-level = <7>; status = "okay"; }; + + i2cmux { + compatible = "i2c-mux-gpio"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_i2c3mux>; + mux-gpios = <&gpio5 4 0>; + i2c-parent = <&i2c3>; + idle-state = <0>; + + i2c at 1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + + max7310_a: gpio at 30 { + compatible = "maxim,max7310"; + reg = <0x30>; + gpio-controller; + #gpio-cells = <2>; + }; + + max7310_b: gpio at 32 { + compatible = "maxim,max7310"; + reg = <0x32>; + gpio-controller; + #gpio-cells = <2>; + }; + + max7310_c: gpio at 34 { + compatible = "maxim,max7310"; + reg = <0x34>; + gpio-controller; + #gpio-cells = <2>; + }; + }; + }; }; &clks { @@ -290,27 +328,6 @@ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c3>; status = "okay"; - - max7310_a: gpio at 30 { - compatible = "maxim,max7310"; - reg = <0x30>; - gpio-controller; - #gpio-cells = <2>; - }; - - max7310_b: gpio at 32 { - compatible = "maxim,max7310"; - reg = <0x32>; - gpio-controller; - #gpio-cells = <2>; - }; - - max7310_c: gpio at 34 { - compatible = "maxim,max7310"; - reg = <0x34>; - gpio-controller; - #gpio-cells = <2>; - }; }; &iomuxc { @@ -418,6 +435,12 @@ >; }; + pinctrl_i2c3mux: i2c3muxgrp { + fsl,pins = < + MX6QDL_PAD_EIM_A24__GPIO5_IO04 0x0b0b1 + >; + }; + pinctrl_pwm3: pwm1grp { fsl,pins = < MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1 -- 2.7.4
next prev parent reply other threads:[~2017-06-07 18:34 UTC|newest] Thread overview: 163+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-06-07 18:33 [PATCH v8 00/34] i.MX Media Driver Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 01/34] dt-bindings: Add bindings for video-multiplexer device Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 02/34] [media] dt-bindings: Add bindings for i.MX media driver Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-08 16:45 ` Steve Longerbeam 2017-06-08 16:45 ` Steve Longerbeam 2017-06-08 17:08 ` Steve Longerbeam 2017-06-09 14:21 ` Rob Herring 2017-06-10 18:56 ` [PATCH v9 " Steve Longerbeam 2017-06-10 18:56 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 03/34] [media] dt/bindings: Add bindings for OV5640 Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 04/34] ARM: dts: imx6qdl: add multiplexer controls Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 05/34] ARM: dts: imx6qdl: Add compatible, clocks, irqs to MIPI CSI-2 node Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 06/34] ARM: dts: imx6qdl: Add video multiplexers, mipi_csi, and their connections Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 07/34] ARM: dts: imx6qdl: add capture-subsystem device Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 08/34] ARM: dts: imx6qdl-sabrelite: remove erratum ERR006687 workaround Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 09/34] ARM: dts: imx6-sabrelite: add OV5642 and OV5640 camera sensors Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 10/34] ARM: dts: imx6-sabresd: " Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam [this message] 2017-06-07 18:33 ` [PATCH v8 11/34] ARM: dts: imx6-sabreauto: create i2cmux for i2c3 Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 12/34] ARM: dts: imx6-sabreauto: add reset-gpios property for max7310_b Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 13/34] ARM: dts: imx6-sabreauto: add pinctrl for gpt input capture Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 14/34] ARM: dts: imx6-sabreauto: add the ADV7180 video decoder Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-08 20:25 ` Tim Harvey 2017-06-08 20:25 ` Tim Harvey 2017-06-08 20:25 ` Tim Harvey 2017-06-08 20:36 ` Steve Longerbeam 2017-06-08 20:36 ` Steve Longerbeam 2017-06-08 20:36 ` Steve Longerbeam 2017-06-09 21:38 ` Pavel Machek 2017-06-09 21:38 ` Pavel Machek 2017-06-09 21:38 ` Pavel Machek 2017-06-09 22:35 ` Steve Longerbeam 2017-06-09 22:35 ` Steve Longerbeam 2017-06-09 22:35 ` Steve Longerbeam 2017-06-09 23:23 ` Pavel Machek 2017-06-09 23:23 ` Pavel Machek 2017-06-09 23:23 ` Pavel Machek 2017-06-10 0:19 ` Steve Longerbeam 2017-06-10 0:19 ` Steve Longerbeam 2017-06-10 0:19 ` Steve Longerbeam 2017-06-08 23:40 ` [PATCH v9 " Steve Longerbeam 2017-06-08 23:40 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 15/34] add mux and video interface bridge entity functions Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 16/34] platform: add video-multiplexer subdevice driver Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 17/34] [media] add Omnivision OV5640 sensor driver Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-10 21:55 ` Sakari Ailus 2017-06-10 21:55 ` Sakari Ailus 2017-06-10 21:55 ` Sakari Ailus 2017-06-07 18:33 ` [PATCH v8 18/34] media: Add userspace header file for i.MX Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 19/34] media: Add i.MX media core driver Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-09 13:15 ` Philipp Zabel 2017-06-09 13:15 ` Philipp Zabel 2017-06-09 13:15 ` Philipp Zabel 2017-06-09 23:02 ` Steve Longerbeam 2017-06-09 23:02 ` Steve Longerbeam 2017-06-09 23:02 ` Steve Longerbeam 2017-06-10 19:00 ` [PATCH v9 " Steve Longerbeam 2017-06-07 18:33 ` [PATCH v8 20/34] media: imx: Add a TODO file Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:33 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 21/34] media: imx: Add Capture Device Interface Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 22/34] media: imx: Add CSI subdev driver Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 23/34] media: imx: Add VDIC " Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 24/34] media: imx: Add IC subdev drivers Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 25/34] media: imx: Add MIPI CSI-2 Receiver subdev driver Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 26/34] media: imx: csi: add support for bayer formats Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 27/34] media: imx: csi: increase burst size for YUV formats Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 28/34] media: imx: csi: add frame skipping support Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 29/34] media: imx: csi: add sink selection rectangles Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 30/34] media: imx: csi: add frame size/interval enumeration Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 31/34] media: imx: capture: add frame sizes/interval enumeration Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 32/34] media: imx: set and propagate default field, colorimetry Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 33/34] media: imx: Drop warning upon multiple S_STREAM disable calls Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 18:34 ` [PATCH v8 34/34] ARM: imx_v6_v7_defconfig: Enable staging video4linux drivers Steve Longerbeam 2017-06-07 18:34 ` Steve Longerbeam 2017-06-07 19:02 ` [PATCH v8 00/34] i.MX Media Driver Hans Verkuil 2017-06-07 19:02 ` Hans Verkuil 2017-06-07 19:02 ` Hans Verkuil 2017-06-07 19:05 ` Steve Longerbeam 2017-06-07 19:05 ` Steve Longerbeam 2017-06-07 19:05 ` Steve Longerbeam 2017-06-09 23:16 ` Steve Longerbeam 2017-06-09 23:16 ` Steve Longerbeam 2017-06-09 23:17 ` Steve Longerbeam 2017-06-09 23:17 ` Steve Longerbeam 2017-06-09 23:26 ` Hans Verkuil 2017-06-09 23:26 ` Hans Verkuil 2017-06-10 7:35 ` Pavel Machek 2017-06-10 7:35 ` Pavel Machek 2017-06-10 7:35 ` Pavel Machek 2017-06-11 20:05 ` Vladimir Zapolskiy 2017-06-11 20:05 ` Vladimir Zapolskiy 2017-06-11 20:05 ` Vladimir Zapolskiy 2017-06-12 18:14 ` Steve Longerbeam 2017-06-12 18:14 ` Steve Longerbeam 2017-06-20 8:29 ` Shawn Guo: your attetion is needed here " Pavel Machek 2017-06-20 8:29 ` Pavel Machek 2017-06-20 8:29 ` Pavel Machek 2017-06-20 11:05 ` Fabio Estevam 2017-06-20 11:05 ` Fabio Estevam 2017-06-20 11:05 ` Fabio Estevam 2017-06-20 11:05 ` Fabio Estevam 2017-06-20 12:03 ` Pavel Machek 2017-06-20 12:03 ` Pavel Machek 2017-06-20 12:03 ` Pavel Machek 2017-06-20 12:03 ` Pavel Machek 2017-06-11 8:28 ` Hans Verkuil 2017-06-11 15:38 ` Hans Verkuil
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1496860453-6282-12-git-send-email-steve_longerbeam@mentor.com \ --to=slongerbeam@gmail.com \ --cc=andrew-ct.chen@mediatek.com \ --cc=arnd@arndb.de \ --cc=bparrot@ti.com \ --cc=devel@driverdev.osuosl.org \ --cc=devicetree@vger.kernel.org \ --cc=fabio.estevam@nxp.com \ --cc=geert@linux-m68k.org \ --cc=gregkh@linuxfoundation.org \ --cc=horms+renesas@verge.net.au \ --cc=hverkuil@xs4all.nl \ --cc=jean-christophe.trotin@st.com \ --cc=kernel@pengutronix.de \ --cc=laurent.pinchart+renesas@ideasonboard.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-media@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=mark.rutland@arm.com \ --cc=markus.heiser@darmarIT.de \ --cc=mchehab@kernel.org \ --cc=minghsiu.tsai@mediatek.com \ --cc=nick@shmanahar.org \ --cc=niklas.soderlund+renesas@ragnatech.se \ --cc=p.zabel@pengutronix.de \ --cc=pavel@ucw.cz \ --cc=robert.jarzmik@free.fr \ --cc=robh+dt@kernel.org \ --cc=sakari.ailus@linux.intel.com \ --cc=shawnguo@kernel.org \ --cc=shuah@kernel.org \ --cc=songjun.wu@microchip.com \ --cc=steve_longerbeam@mentor.com \ --cc=sudipm.mukherjee@gmail.com \ --cc=tiffany.lin@mediatek.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.