* [PATCH 1/4] arm64: dts: st: add imx335/csi/dcmipp nodes on stm32mp257f-dk
2026-09-14 6:54 [PATCH 0/4] arm64: dts: st: enable camera on stm32mp2x-dk and correct stm32mp2x-ev Alain Volmat
@ 2026-09-14 6:54 ` Alain Volmat
2026-09-14 6:54 ` [PATCH 2/4] arm64: dts: st: ensure IMX335 is enabled on stm32mp257f-ev1 Alain Volmat
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Alain Volmat @ 2026-09-14 6:54 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Maxime Coquelin,
Alexandre Torgue
Cc: devicetree, linux-stm32, linux-arm-kernel, linux-kernel,
Alain Volmat
Add all nodes necessary for the imx335 camera capture via csi / dcmipp
on stm32mp257f discovery board.
Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
---
arch/arm64/boot/dts/st/stm32mp257f-dk.dts | 74 +++++++++++++++++++++++++++++++
1 file changed, 74 insertions(+)
diff --git a/arch/arm64/boot/dts/st/stm32mp257f-dk.dts b/arch/arm64/boot/dts/st/stm32mp257f-dk.dts
index 8daf3dfd5133..39ad23d95069 100644
--- a/arch/arm64/boot/dts/st/stm32mp257f-dk.dts
+++ b/arch/arm64/boot/dts/st/stm32mp257f-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 "stm32mp257.dtsi"
#include "stm32mp25xf.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";
@@ -138,6 +147,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>;
@@ -160,6 +205,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>;
@@ -172,6 +227,25 @@ &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)>;
+
+ 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
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 2/4] arm64: dts: st: ensure IMX335 is enabled on stm32mp257f-ev1
2026-09-14 6:54 [PATCH 0/4] arm64: dts: st: enable camera on stm32mp2x-dk and correct stm32mp2x-ev Alain Volmat
2026-09-14 6:54 ` [PATCH 1/4] arm64: dts: st: add imx335/csi/dcmipp nodes on stm32mp257f-dk Alain Volmat
@ 2026-09-14 6:54 ` Alain Volmat
2026-09-14 6:54 ` [PATCH 3/4] arm64: dts: st: use video-interfaces media bus type in stm32mp257f-ev1 Alain Volmat
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Alain Volmat @ 2026-09-14 6:54 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Maxime Coquelin,
Alexandre Torgue
Cc: devicetree, linux-stm32, linux-arm-kernel, linux-kernel,
Alain Volmat, Hugues Fruchet
Set the GPIO enable line for the IMX335 camera via a GPIO hog
in order to ensure it is well enabled.
Use scmi_v3v3 for imx335 regulators.
The 3 imx335 supplies are generated within the MB1854 and all come
from the v3v3 coming from the board. Ensure that this regulator is
enabled by using the scmi_v3v3 as supplier of the imx335.
Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
---
arch/arm64/boot/dts/st/stm32mp257f-ev1.dts | 40 ++++++++++--------------------
1 file changed, 13 insertions(+), 27 deletions(-)
diff --git a/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts b/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts
index 12b4018edeb0..acc730146287 100644
--- a/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts
+++ b/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts
@@ -72,30 +72,6 @@ ddr_channel: sdram-channel-0 {
io-width = <32>;
};
- imx335_2v9: regulator-2v9 {
- compatible = "regulator-fixed";
- regulator-name = "imx335-avdd";
- regulator-min-microvolt = <2900000>;
- regulator-max-microvolt = <2900000>;
- regulator-always-on;
- };
-
- imx335_1v8: regulator-1v8 {
- compatible = "regulator-fixed";
- regulator-name = "imx335-ovdd";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
- regulator-always-on;
- };
-
- imx335_1v2: regulator-1v2 {
- compatible = "regulator-fixed";
- regulator-name = "imx335-dvdd";
- regulator-min-microvolt = <1200000>;
- regulator-max-microvolt = <1200000>;
- regulator-always-on;
- };
-
memory@80000000 {
device_type = "memory";
reg = <0x0 0x80000000 0x1 0x0>;
@@ -253,6 +229,16 @@ phy0_eth2: ethernet-phy@1 {
};
};
+&gpioi {
+ /* Enable the IMX335 power line */
+ imx335-en-hog {
+ gpio-hog;
+ gpios = <0 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "imx335_en";
+ };
+};
+
&i2c2 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&i2c2_pins_a>;
@@ -269,9 +255,9 @@ imx335: camera@1a {
compatible = "sony,imx335";
reg = <0x1a>;
clocks = <&clk_ext_camera>;
- avdd-supply = <&imx335_2v9>;
- ovdd-supply = <&imx335_1v8>;
- dvdd-supply = <&imx335_1v2>;
+ avdd-supply = <&scmi_v3v3>;
+ ovdd-supply = <&scmi_v3v3>;
+ dvdd-supply = <&scmi_v3v3>;
reset-gpios = <&gpioi 7 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;
port {
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 3/4] arm64: dts: st: use video-interfaces media bus type in stm32mp257f-ev1
2026-09-14 6:54 [PATCH 0/4] arm64: dts: st: enable camera on stm32mp2x-dk and correct stm32mp2x-ev Alain Volmat
2026-09-14 6:54 ` [PATCH 1/4] arm64: dts: st: add imx335/csi/dcmipp nodes on stm32mp257f-dk Alain Volmat
2026-09-14 6:54 ` [PATCH 2/4] arm64: dts: st: ensure IMX335 is enabled on stm32mp257f-ev1 Alain Volmat
@ 2026-09-14 6:54 ` Alain Volmat
2026-09-14 6:54 ` [PATCH 4/4] arm64: dts: st: add imx335/csi/dcmipp nodes on stm32mp235f-dk Alain Volmat
2026-09-28 12:36 ` [PATCH 0/4] arm64: dts: st: enable camera on stm32mp2x-dk and correct stm32mp2x-ev Alexandre TORGUE
4 siblings, 0 replies; 6+ messages in thread
From: Alain Volmat @ 2026-09-14 6:54 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Maxime Coquelin,
Alexandre Torgue
Cc: devicetree, linux-stm32, linux-arm-kernel, linux-kernel,
Alain Volmat
Use MEDIA_BUS_TYPE macro in stm32mp257f-ev1 for csi/dcmipp bus-type.
Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
---
arch/arm64/boot/dts/st/stm32mp257f-ev1.dts | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts b/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts
index acc730146287..782b4bb843ee 100644
--- a/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts
+++ b/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts
@@ -8,6 +8,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>
+#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/regulator/st,stm32mp25-regulator.h>
#include "stm32mp257.dtsi"
#include "stm32mp25xf.dtsi"
@@ -161,7 +162,7 @@ port@0 {
csi_sink: endpoint {
remote-endpoint = <&imx335_ep>;
data-lanes = <1 2>;
- bus-type = <4>;
+ bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
};
};
port@1 {
@@ -178,7 +179,7 @@ &dcmipp {
port {
dcmipp_0: endpoint {
remote-endpoint = <&csi_source>;
- bus-type = <4>;
+ bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
};
};
};
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 4/4] arm64: dts: st: add imx335/csi/dcmipp nodes on stm32mp235f-dk
2026-09-14 6:54 [PATCH 0/4] arm64: dts: st: enable camera on stm32mp2x-dk and correct stm32mp2x-ev Alain Volmat
` (2 preceding siblings ...)
2026-09-14 6:54 ` [PATCH 3/4] arm64: dts: st: use video-interfaces media bus type in stm32mp257f-ev1 Alain Volmat
@ 2026-09-14 6:54 ` Alain Volmat
2026-09-28 12:36 ` [PATCH 0/4] arm64: dts: st: enable camera on stm32mp2x-dk and correct stm32mp2x-ev Alexandre TORGUE
4 siblings, 0 replies; 6+ messages in thread
From: Alain Volmat @ 2026-09-14 6:54 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Maxime Coquelin,
Alexandre Torgue
Cc: devicetree, linux-stm32, linux-arm-kernel, linux-kernel,
Alain Volmat
Add all nodes necessary for the imx335 camera capture via csi / dcmipp
on stm32mp235f discovery board.
Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
---
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
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH 0/4] arm64: dts: st: enable camera on stm32mp2x-dk and correct stm32mp2x-ev
2026-09-14 6:54 [PATCH 0/4] arm64: dts: st: enable camera on stm32mp2x-dk and correct stm32mp2x-ev Alain Volmat
` (3 preceding siblings ...)
2026-09-14 6:54 ` [PATCH 4/4] arm64: dts: st: add imx335/csi/dcmipp nodes on stm32mp235f-dk Alain Volmat
@ 2026-09-28 12:36 ` Alexandre TORGUE
4 siblings, 0 replies; 6+ messages in thread
From: Alexandre TORGUE @ 2026-09-28 12:36 UTC (permalink / raw)
To: Alain Volmat, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Maxime Coquelin
Cc: devicetree, linux-stm32, linux-arm-kernel, linux-kernel,
Hugues Fruchet
Hi Alain
On 9/14/26 08:54, Alain Volmat wrote:
> This series enables the camera pipeline on stm32mp235f-dk and
> stm32mp257f-dk boards via usage of the CSI IMX335 sensor connected
> to the CSI / DCMIPP of the STM32MP2x.
> It also perform 2 corrections to the stm32mp257f-ev1 board to ensure
> that the IMX335 is well enabled.
>
> Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
> ---
> Alain Volmat (4):
> arm64: dts: st: add imx335/csi/dcmipp nodes on stm32mp257f-dk
> arm64: dts: st: ensure IMX335 is enabled on stm32mp257f-ev1
> arm64: dts: st: use video-interfaces media bus type in stm32mp257f-ev1
> arm64: dts: st: add imx335/csi/dcmipp nodes on stm32mp235f-dk
>
> arch/arm64/boot/dts/st/stm32mp235f-dk.dts | 75 ++++++++++++++++++++++++++++++
> arch/arm64/boot/dts/st/stm32mp257f-dk.dts | 74 +++++++++++++++++++++++++++++
> arch/arm64/boot/dts/st/stm32mp257f-ev1.dts | 45 +++++++-----------
> 3 files changed, 165 insertions(+), 29 deletions(-)
> ---
> base-commit: 2f92d900f262a16c8ae02daf53ae2910d07185f5
> change-id: 20260913-stm32mp2-dk-camera-7ad3ac8d3075
>
> Best regards,
> --
> Alain Volmat <alain.volmat@foss.st.com>
>
Applied on stm32-next.
regards
Alex
^ permalink raw reply [flat|nested] 6+ messages in thread