public inbox for linux-arm-kernel@lists.infradead.org 
 help / color / mirror / Atom feed
From: Kieran Bingham <kieran.bingham@ideasonboard•com>
To: Frank.Li@nxp•com, Robby Cai <robby.cai@nxp•com>,
	conor+dt@kernel•org, festevam@gmail•com, krzk+dt@kernel•org,
	mchehab@kernel•org, p.zabel@pengutronix•de, robh@kernel•org,
	s.hauer@pengutronix•de, sakari.ailus@linux•intel.com,
	sebastian.krzyszkowiak@puri•sm, slongerbeam@gmail•com
Cc: kernel@pengutronix•de, devicetree@vger•kernel.org,
	imx@lists•linux.dev, linux-arm-kernel@lists•infradead.org,
	linux-kernel@vger•kernel.org
Subject: Re: [PATCH v3 1/2] arm64: dts: imx8mq-evk: Enable MIPI CSI and dual OV5640 cameras
Date: Mon, 01 Jun 2026 12:20:22 +0100	[thread overview]
Message-ID: <178031282290.662668.15145642423417739969@ping.linuxembedded.co.uk> (raw)
In-Reply-To: <20260529132334.3333294-2-robby.cai@nxp.com>

Quoting Robby Cai (2026-05-29 14:23:33)
> Enable the MIPI CSI-2 host controllers and CSI bridges, and add two
> OV5640 sensors on I2C1 and I2C2, forming two media pipelines:
> 
>   - OV5640 (I2C2) -> MIPI CSI1 -> CSI1 bridge
>   - OV5640 (I2C1) -> MIPI CSI2 -> CSI2 bridge
> 
> On the i.MX8MQ EVK, both sensors share a single reset GPIO line,
> while each sensor has an independent powerdown (PWDN) GPIO.
> 
> Both sensors also share the same MCLK source (CLKO2), configured
> identically as required by the hardware design.

Shouldn't these be overlays? Does *every* IMX8MQ-EVK always have 2 x
OV5640 modules attached? And never anything else ?

--
Regards

Kieran

> 
> Signed-off-by: Robby Cai <robby.cai@nxp•com>
> ---
>  arch/arm64/boot/dts/freescale/imx8mq-evk.dts | 150 +++++++++++++++++++
>  1 file changed, 150 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/freescale/imx8mq-evk.dts b/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
> index d48f901487d4..7ff1a763890a 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
> +++ b/arch/arm64/boot/dts/freescale/imx8mq-evk.dts
> @@ -6,6 +6,7 @@
>  
>  /dts-v1/;
>  
> +#include <dt-bindings/media/video-interfaces.h>
>  #include "imx8mq.dtsi"
>  
>  / {
> @@ -50,6 +51,20 @@ reg_usdhc2_vmmc: regulator-vsd-3v3 {
>                 enable-active-high;
>         };
>  
> +       reg_1v5: regulator-1v5 {
> +               compatible = "regulator-fixed";
> +               regulator-name = "DVDD_1V5";
> +               regulator-min-microvolt = <1500000>;
> +               regulator-max-microvolt = <1500000>;
> +       };
> +
> +       reg_2v8: regulator-2v8 {
> +               compatible = "regulator-fixed";
> +               regulator-name = "AVDD_2V8";
> +               regulator-min-microvolt = <2800000>;
> +               regulator-max-microvolt = <2800000>;
> +       };
> +
>         buck2_reg: regulator-buck2 {
>                 pinctrl-names = "default";
>                 pinctrl-0 = <&pinctrl_buck2>;
> @@ -172,6 +187,14 @@ &A53_3 {
>         cpu-supply = <&buck2_reg>;
>  };
>  
> +&csi1 {
> +       status = "okay";
> +};
> +
> +&csi2 {
> +       status = "okay";
> +};
> +
>  &ddrc {
>         operating-points-v2 = <&ddrc_opp_table>;
>         status = "okay";
> @@ -330,12 +353,103 @@ vgen6_reg: vgen6 {
>                         };
>                 };
>         };
> +
> +       camera@3c {
> +               compatible = "ovti,ov5640";
> +               reg = <0x3c>;
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&pinctrl_camera2_pwdn>;
> +               clocks = <&clk IMX8MQ_CLK_CLKO2>;
> +               clock-names = "xclk";
> +               assigned-clocks = <&clk IMX8MQ_CLK_CLKO2>;
> +               assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_200M>;
> +               assigned-clock-rates = <20000000>;
> +               powerdown-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
> +               reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
> +               DOVDD-supply = <&sw4_reg>;
> +               AVDD-supply = <&reg_2v8>;
> +               DVDD-supply = <&reg_1v5>;
> +
> +               port {
> +                       camera2_ep: endpoint {
> +                               remote-endpoint = <&mipi_csi2_in_ep>;
> +                               clock-lanes = <0>;
> +                               data-lanes = <1 2>;
> +                       };
> +               };
> +       };
> +};
> +
> +&i2c2 {
> +       clock-frequency = <100000>;
> +       pinctrl-names = "default";
> +       pinctrl-0 = <&pinctrl_i2c2>;
> +       status = "okay";
> +
> +       camera@3c {
> +               compatible = "ovti,ov5640";
> +               reg = <0x3c>;
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&pinctrl_camera1_pwdn>;
> +               clocks = <&clk IMX8MQ_CLK_CLKO2>;
> +               clock-names = "xclk";
> +               assigned-clocks = <&clk IMX8MQ_CLK_CLKO2>;
> +               assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_200M>;
> +               assigned-clock-rates = <20000000>;
> +               powerdown-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
> +               reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
> +               DOVDD-supply = <&sw4_reg>;
> +               AVDD-supply = <&reg_2v8>;
> +               DVDD-supply = <&reg_1v5>;
> +
> +               port {
> +                       camera1_ep: endpoint {
> +                               remote-endpoint = <&mipi_csi1_in_ep>;
> +                               clock-lanes = <0>;
> +                               data-lanes = <1 2>;
> +                       };
> +               };
> +       };
>  };
>  
>  &lcdif {
>         status = "okay";
>  };
>  
> +&mipi_csi1 {
> +       assigned-clock-rates = <266000000>, <200000000>, <66000000>;
> +       status = "okay";
> +
> +       ports {
> +               port@0 {
> +                       reg = <0>;
> +
> +                       mipi_csi1_in_ep: endpoint {
> +                               remote-endpoint = <&camera1_ep>;
> +                               data-lanes = <1 2>;
> +                               bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
> +                       };
> +               };
> +       };
> +};
> +
> +&mipi_csi2 {
> +       assigned-clock-rates = <266000000>, <200000000>, <66000000>;
> +       status = "okay";
> +
> +       ports {
> +               port@0 {
> +                       reg = <0>;
> +
> +                       mipi_csi2_in_ep: endpoint {
> +                               remote-endpoint = <&camera2_ep>;
> +                               data-lanes = <1 2>;
> +                               bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
> +                       };
> +               };
> +       };
> +};
> +
>  &mipi_dsi {
>         #address-cells = <1>;
>         #size-cells = <0>;
> @@ -532,12 +646,34 @@ &wdog1 {
>  };
>  
>  &iomuxc {
> +       pinctrl-names = "default";
> +       pinctrl-0 = <&pinctrl_mclk>, <&pinctrl_camera_reset>;
> +
>         pinctrl_buck2: vddarmgrp {
>                 fsl,pins = <
>                         MX8MQ_IOMUXC_GPIO1_IO13_GPIO1_IO13              0x19
>                 >;
>         };
>  
> +       pinctrl_camera1_pwdn: camera1pwdngrp {
> +               fsl,pins = <
> +                       MX8MQ_IOMUXC_GPIO1_IO03_GPIO1_IO3               0x19
> +               >;
> +       };
> +
> +       pinctrl_camera2_pwdn: camera2pwdngrp {
> +               fsl,pins = <
> +                       MX8MQ_IOMUXC_GPIO1_IO05_GPIO1_IO5               0x19
> +               >;
> +       };
> +
> +       /* Shared reset line for cameras on CSI1 and CSI2. */
> +       pinctrl_camera_reset: cameraresetgrp {
> +               fsl,pins = <
> +                       MX8MQ_IOMUXC_GPIO1_IO06_GPIO1_IO6               0x19
> +               >;
> +       };
> +
>         pinctrl_fec1: fec1grp {
>                 fsl,pins = <
>                         MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC                 0x3
> @@ -565,12 +701,26 @@ MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA                    0x4000007f
>                 >;
>         };
>  
> +       pinctrl_i2c2: i2c2grp {
> +               fsl,pins = <
> +                       MX8MQ_IOMUXC_I2C2_SCL_I2C2_SCL                  0x4000007f
> +                       MX8MQ_IOMUXC_I2C2_SDA_I2C2_SDA                  0x4000007f
> +               >;
> +       };
> +
>         pinctrl_ir: irgrp {
>                 fsl,pins = <
>                         MX8MQ_IOMUXC_GPIO1_IO12_GPIO1_IO12              0x4f
>                 >;
>         };
>  
> +       /* Shared MCLK for cameras on CSI1 and CSI2. */
> +       pinctrl_mclk: mclkgrp {
> +               fsl,pins = <
> +                       MX8MQ_IOMUXC_GPIO1_IO15_CCMSRCGPCMIX_CLKO2      0x59
> +               >;
> +       };
> +
>         pinctrl_mipi_dsi: mipidsigrp {
>                 fsl,pins = <
>                         MX8MQ_IOMUXC_ECSPI1_SCLK_GPIO5_IO6              0x16
> -- 
> 2.50.1
>


  reply	other threads:[~2026-06-01 11:20 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-29 13:23 [PATCH v3 0/2] i.MX8MQ EVK: Enable dual OV5640 cameras Robby Cai
2026-05-29 13:23 ` [PATCH v3 1/2] arm64: dts: imx8mq-evk: Enable MIPI CSI and " Robby Cai
2026-06-01 11:20   ` Kieran Bingham [this message]
2026-06-03 10:18     ` Robby Cai
2026-05-29 13:23 ` [PATCH v3 2/2] media: i2c: ov5640: Use reset control framework to support shared reset Robby Cai

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=178031282290.662668.15145642423417739969@ping.linuxembedded.co.uk \
    --to=kieran.bingham@ideasonboard$(echo .)com \
    --cc=Frank.Li@nxp$(echo .)com \
    --cc=conor+dt@kernel$(echo .)org \
    --cc=devicetree@vger$(echo .)kernel.org \
    --cc=festevam@gmail$(echo .)com \
    --cc=imx@lists$(echo .)linux.dev \
    --cc=kernel@pengutronix$(echo .)de \
    --cc=krzk+dt@kernel$(echo .)org \
    --cc=linux-arm-kernel@lists$(echo .)infradead.org \
    --cc=linux-kernel@vger$(echo .)kernel.org \
    --cc=mchehab@kernel$(echo .)org \
    --cc=p.zabel@pengutronix$(echo .)de \
    --cc=robby.cai@nxp$(echo .)com \
    --cc=robh@kernel$(echo .)org \
    --cc=s.hauer@pengutronix$(echo .)de \
    --cc=sakari.ailus@linux$(echo .)intel.com \
    --cc=sebastian.krzyszkowiak@puri$(echo .)sm \
    --cc=slongerbeam@gmail$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox