[PATCH 4/4] arm64: dts: st: add imx335/csi/dcmipp nodes on stm32mp235f-dk
From: Alain Volmat
Date: Mon Sep 14 2026 - 02:58:40 EST
Add all nodes necessary for the imx335 camera capture via csi / dcmipp
on stm32mp235f discovery board.
Signed-off-by: Alain Volmat <alain.volmat@xxxxxxxxxxx>
---
arch/arm64/boot/dts/st/stm32mp235f-dk.dts | 75 +++++++++++++++++++++++++++++++
1 file changed, 75 insertions(+)
diff --git a/arch/arm64/boot/dts/st/stm32mp235f-dk.dts b/arch/arm64/boot/dts/st/stm32mp235f-dk.dts
index dd4efbe5a46e..f06b334dc9ce 100644
--- a/arch/arm64/boot/dts/st/stm32mp235f-dk.dts
+++ b/arch/arm64/boot/dts/st/stm32mp235f-dk.dts
@@ -9,6 +9,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
+#include <dt-bindings/media/video-interfaces.h>
#include "stm32mp235.dtsi"
#include "stm32mp23xf.dtsi"
#include "stm32mp25-pinctrl.dtsi"
@@ -27,6 +28,14 @@ chosen {
stdout-path = "serial0:115200n8";
};
+ clocks {
+ clk_ext_camera: clk-ext-camera {
+ #clock-cells = <0>;
+ compatible = "fixed-clock";
+ clock-frequency = <24000000>;
+ };
+ };
+
gpio-keys {
compatible = "gpio-keys";
@@ -131,6 +140,42 @@ &arm_wdt {
status = "okay";
};
+&csi {
+ vdd-supply = <&scmi_vddcore>;
+ vdda18-supply = <&scmi_v1v8>;
+ status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ port@0 {
+ reg = <0>;
+ csi_sink: endpoint {
+ remote-endpoint = <&imx335_ep>;
+ data-lanes = <1 2>;
+ bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
+ };
+ };
+ port@1 {
+ reg = <1>;
+ csi_source: endpoint {
+ remote-endpoint = <&dcmipp_0>;
+ };
+ };
+ };
+};
+
+&dcmipp {
+ status = "okay";
+
+ port {
+ dcmipp_0: endpoint {
+ remote-endpoint = <&csi_source>;
+ bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
+ };
+ };
+};
+
ðernet1 {
pinctrl-0 = <ð1_rgmii_pins_b>;
pinctrl-1 = <ð1_rgmii_sleep_pins_b>;
@@ -153,6 +198,16 @@ phy1_eth1: ethernet-phy@1 {
};
};
+&gpiob {
+ /* Enable the IMX335 power line */
+ imx335-en-hog {
+ gpio-hog;
+ gpios = <11 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "imx335_en";
+ };
+};
+
&i2c2 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&i2c2_pins_b>;
@@ -165,6 +220,26 @@ &i2c2 {
/delete-property/dmas;
/delete-property/dma-names;
+ imx335: camera@1a {
+ compatible = "sony,imx335";
+ reg = <0x1a>;
+ clocks = <&clk_ext_camera>;
+ avdd-supply = <&scmi_v3v3>;
+ ovdd-supply = <&scmi_v3v3>;
+ dvdd-supply = <&scmi_v3v3>;
+ reset-gpios = <&gpiob 1 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;
+ status = "okay";
+
+ port {
+ imx335_ep: endpoint {
+ remote-endpoint = <&csi_sink>;
+ clock-lanes = <0>;
+ data-lanes = <1 2>;
+ link-frequencies = /bits/ 64 <594000000>;
+ };
+ };
+ };
+
ili2511: ili2511@41 {
compatible = "ilitek,ili251x";
reg = <0x41>;
--
2.34.1