[PATCH v2 1/1] arm64: dts: imx8mp-evk: add camera ov5640 and related nodes

Frank Li
2025-12-29T16:31:22Z

Add camera ov5640 and related nodes.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
change in v2
- correct regulator voltage.
---
arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 80 ++++++++++++++++++++
1 file changed, 80 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
index c6facb2ad9aaa..e7fe90ae59353 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
@@ -74,6 +74,27 @@ pcie0_refclk: pcie0-refclk {
clock-frequency = <100000000>;
};

+ reg_1v5: regulator-1v5 {
+ compatible = "regulator-fixed";
+ regulator-name = "1v5";
+ regulator-min-microvolt = <1500000>;
+ regulator-max-microvolt = <1500000>;
+ };
+
+ reg_1v8: regulator-1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "1v8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ reg_2v8: regulator-1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "2v8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ };
+
reg_audio_3v3: regulator-audio-3v3 {
compatible = "regulator-fixed";
regulator-name = "audio-3v3";
@@ -560,6 +581,30 @@ &i2c2 {
pinctrl-0 = <&pinctrl_i2c2>;
status = "okay";

+ camera@3c {
+ compatible = "ovti,ov5640";
+ reg = <0x3c>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>;
+ clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
+ clock-names = "xclk";
+ assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
+ assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
+ assigned-clock-rates = <24000000>;
+ powerdown-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>;
+ AVDD-supply = <&reg_2v8>;
+ DVDD-supply = <&reg_1v5>;
+ DOVDD-supply = <&reg_1v8>;
+ status = "okay";
+
+ port {
+ ov5640_mipi_0_ep: endpoint {
+ remote-endpoint = <&mipi_csi0_ep>;
+ data-lanes = <1 2>;
+ };
+ };
+ };
+
hdmi@3d {
compatible = "adi,adv7535";
reg = <0x3d>;
@@ -664,6 +709,10 @@ &i2c5 {
*/
};

+&isi_0 {
+ status = "okay";
+};
+
&lcdif1 {
status = "okay";
};
@@ -682,6 +731,19 @@ &micfil {
status = "okay";
};

+&mipi_csi_0 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ mipi_csi0_ep: endpoint {
+ remote-endpoint = <&ov5640_mipi_0_ep>;
+ data-lanes = <1 2>;
+ };
+ };
+ };
+};
+
&mipi_dsi {
samsung,esc-clock-frequency = <10000000>;
status = "okay";
@@ -855,6 +917,24 @@ MX8MP_IOMUXC_SAI3_RXC__GPIO4_IO29 0xd6
>;
};

+ pinctrl_csi_mclk: csi_mclk_grp {
+ fsl,pins = <
+ MX8MP_IOMUXC_GPIO1_IO15__CCM_CLKO2 0x50
+ >;
+ };
+
+ pinctrl_csi0_pwn: csi0_pwn_grp {
+ fsl,pins = <
+ MX8MP_IOMUXC_SD1_STROBE__GPIO2_IO11 0x10
+ >;
+ };
+
+ pinctrl_csi0_rst: csi0_rst_grp {
+ fsl,pins = <
+ MX8MP_IOMUXC_GPIO1_IO06__GPIO1_IO06 0x10
+ >;
+ };
+
pinctrl_eqos: eqosgrp {
fsl,pins = <
MX8MP_IOMUXC_ENET_MDC__ENET_QOS_MDC 0x2
--
2.34.1