summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoão Paulo Gonçalves <joao.goncalves@toradex.com>2025-04-02 13:51:05 -0300
committerJoão Paulo Gonçalves <joao.goncalves@toradex.com>2025-04-04 10:21:50 -0300
commitf9a7fa7fb042fad58aad7ab8cccf3175f44e0967 (patch)
tree3b419de74b54ff86dc0c857d20f8ae2c466a5171
parentb4a76b00cd6688467eb55cb977098343c6e7c0d2 (diff)
verdin-imx8mm: ov5640: Add overlays for modules with 27MHz oscillators
The Toradex Arducam OV5640 module uses a 27MHz on-board crystal oscillator for its camera clock, while the current overlays assume the camera clock is 24MHz. This creates a 10% clock discrepancy for the module, affecting camera frame rate. Add dedicated overlays to support the Arducam OV5640. Worth mentioning that this patch also removes support for legacy OV5640 modules that depends on the SoC for camera clock generation. In other words, legacy modules without a built-in oscillator will no longer function. Related-to: ELB-6321 Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com>
-rw-r--r--overlays/Makefile1
-rw-r--r--overlays/verdin-imx8mm_ov5640-27mhz_overlay.dts17
-rw-r--r--overlays/verdin-imx8mm_ov5640_overlay.dts11
3 files changed, 25 insertions, 4 deletions
diff --git a/overlays/Makefile b/overlays/Makefile
index 9d316e4..2dbedc2 100644
--- a/overlays/Makefile
+++ b/overlays/Makefile
@@ -66,6 +66,7 @@ dtb-y += verdin-imx8mm_dsi-to-hdmi_overlay.dtbo
dtb-y += verdin-imx8mm_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo
dtb-y += verdin-imx8mm_hmp_overlay.dtbo
dtb-y += verdin-imx8mm_nau8822-btl_overlay.dtbo
+dtb-y += verdin-imx8mm_ov5640-27mhz_overlay.dtbo
dtb-y += verdin-imx8mm_ov5640_overlay.dtbo
dtb-y += verdin-imx8mm_panel-cap-touch-7inch-dsi_overlay.dtbo
dtb-y += verdin-imx8mm_panel-cap-touch-10inch-dsi_overlay.dtbo
diff --git a/overlays/verdin-imx8mm_ov5640-27mhz_overlay.dts b/overlays/verdin-imx8mm_ov5640-27mhz_overlay.dts
new file mode 100644
index 0000000..ccda70a
--- /dev/null
+++ b/overlays/verdin-imx8mm_ov5640-27mhz_overlay.dts
@@ -0,0 +1,17 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright (C) 2025 Toradex
+ *
+ * CSI Camera Module OV5640 with 27MHz Oscillator
+ *
+ * https://developer.toradex.com/hardware/accessories/cameras/csi-camera-module-5mp-ov5640-arducam
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include "verdin-imx8mm_ov5640_overlay.dts"
+
+&clk_camera_verdin_csi {
+ clock-frequency = <27000000>;
+};
diff --git a/overlays/verdin-imx8mm_ov5640_overlay.dts b/overlays/verdin-imx8mm_ov5640_overlay.dts
index 581acc2..6b8856f 100644
--- a/overlays/verdin-imx8mm_ov5640_overlay.dts
+++ b/overlays/verdin-imx8mm_ov5640_overlay.dts
@@ -14,6 +14,12 @@
};
&{/} {
+ clk_camera_verdin_csi: camera-verdin-csi-clock {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <24000000>;
+ };
+
regulator_camera: regulator-camera {
compatible = "regulator-fixed";
/* Verdin GPIO_8_CSI - Camera Connector 24 */
@@ -39,10 +45,7 @@
reg = <0x3c>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio5>, <&pinctrl_gpio6>;
- assigned-clocks = <&clk IMX8MM_CLK_CLKO1>;
- assigned-clock-parents = <&clk IMX8MM_CLK_24M>;
- assigned-clock-rates = <24000000>;
- clocks = <&clk IMX8MM_CLK_CLKO1>;
+ clocks = <&clk_camera_verdin_csi>;
clock-names = "xclk";
AVDD-supply = <&regulator_camera>;
DOVDD-supply = <&regulator_camera>;