summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiago De Franco <hiago.franco@toradex.com>2025-06-09 17:42:33 -0300
committerHiago De Franco <hiago.franco@toradex.com>2025-06-12 10:42:09 -0300
commit0b9dfe1955f77bf8270c705e373ac0f3557dc690 (patch)
tree4a33bd0dfb7813d73327542d646f995f4dfacefa
parenteebbac1c93c34faa8d45ac1bed0d87b859e24182 (diff)
toradex-smarc-imx8mp: csi0-ov5640-27mhz: add overlay
Add CSI0 Arducam OV5640 camera overlay. Related-to: ELB-6417 Signed-off-by: Hiago De Franco <hiago.franco@toradex.com>
-rw-r--r--overlays/Makefile1
-rw-r--r--overlays/toradex-smarc-imx8mp_csi0-ov5640-27mhz_overlay.dts85
2 files changed, 86 insertions, 0 deletions
diff --git a/overlays/Makefile b/overlays/Makefile
index 25256af..1fb5403 100644
--- a/overlays/Makefile
+++ b/overlays/Makefile
@@ -55,6 +55,7 @@ dtb-y += colibri-imx7_panel-res-touch-7inch_overlay.dtbo
dtb-y += colibri-imx7_spidev_overlay.dtbo
dtb-y += colibri-imx7_vga-640x480_overlay.dtbo
dtb-y += colibri-imx8x_hmp_overlay.dtbo
+dtb-y += toradex-smarc-imx8mp_csi0-ov5640-27mhz_overlay.dtbo
dtb-y += toradex-smarc-imx8mp_dsi-to-hdmi_overlay.dtbo
dtb-y += toradex-smarc-imx8mp_panel-cap-touch-10inch-dsi_overlay.dtbo
dtb-y += toradex-smarc-imx8mp_panel-cap-touch-10inch-lvds_overlay.dtbo
diff --git a/overlays/toradex-smarc-imx8mp_csi0-ov5640-27mhz_overlay.dts b/overlays/toradex-smarc-imx8mp_csi0-ov5640-27mhz_overlay.dts
new file mode 100644
index 0000000..89f60a9
--- /dev/null
+++ b/overlays/toradex-smarc-imx8mp_csi0-ov5640-27mhz_overlay.dts
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (C) 2025 Toradex
+ *
+ * CSI Camera Module OV5640 with 27MHz Oscillator overlay for SMARC CSI0
+ *
+ * https://developer.toradex.com/hardware/accessories/cameras/csi-camera-module-5mp-ov5640-arducam
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+ compatible = "toradex,smarc-imx8mp";
+};
+
+&{/} {
+ clk_csi_0_ov5640: ov5640-csi-0-clock {
+ #clock-cells = <0>;
+ compatible = "fixed-clock";
+ clock-frequency = <27000000>;
+ };
+
+ regulator_camera_csi_0: regulator-camera-csi-0 {
+ compatible = "regulator-fixed";
+ /* SMARC GPIO0 as CAM0_PWR# - Camera Connector 24 */
+ gpios = <&som_gpio_expander 0 GPIO_ACTIVE_LOW>;
+ enable-active-high;
+ regulator-name = "V_CSI";
+ startup-delay-us = <5000>;
+ };
+};
+
+/* SMARC I2C_CAM0 */
+&i2c3 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ camera@3c {
+ compatible = "ovti,ov5640";
+ reg = <0x3c>;
+ clocks = <&clk_csi_0_ov5640>;
+ clock-names = "xclk";
+ /* SMARC GPIO2 as CAM0_RST# - Camera Connector 11 */
+ reset-gpios = <&som_gpio_expander 2 GPIO_ACTIVE_LOW>;
+ AVDD-supply = <&regulator_camera_csi_0>;
+ DVDD-supply = <&regulator_camera_csi_0>;
+ DOVDD-supply = <&regulator_camera_csi_0>;
+ PVDD-supply = <&regulator_camera_csi_0>;
+
+ port {
+ ov5640_cam0_ep: endpoint {
+ remote-endpoint = <&mipi_csi_1_ep>;
+ clock-lanes = <0>;
+ data-lanes = <1 2>;
+ };
+ };
+ };
+};
+
+&isi_0 {
+ status = "okay";
+};
+
+/* SMARC CSI0 */
+&mipi_csi_1 {
+ status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ mipi_csi_1_ep: endpoint {
+ remote-endpoint = <&ov5640_cam0_ep>;
+ data-lanes = <1 2>;
+ };
+ };
+ };
+};