summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoão Paulo Gonçalves <joao.goncalves@toradex.com>2025-04-02 13:44:19 -0300
committerJoão Paulo Gonçalves <joao.goncalves@toradex.com>2025-04-04 10:21:12 -0300
commitb4a76b00cd6688467eb55cb977098343c6e7c0d2 (patch)
tree89091a7f9da8baf8606207cbf1a03fa71d604cdb
parent29ddb5b33673b5b1ae8492446ef953e27e2e9c3d (diff)
verdin-imx8mp: 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-imx8mp_ov5640-27mhz_overlay.dts17
-rw-r--r--overlays/verdin-imx8mp_ov5640_overlay.dts11
3 files changed, 25 insertions, 4 deletions
diff --git a/overlays/Makefile b/overlays/Makefile
index a00aab4..9d316e4 100644
--- a/overlays/Makefile
+++ b/overlays/Makefile
@@ -73,6 +73,7 @@ dtb-y += verdin-imx8mm_spidev_overlay.dtbo
dtb-y += verdin-imx8mp_dsi-to-hdmi_overlay.dtbo
dtb-y += verdin-imx8mp_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo
dtb-y += verdin-imx8mp_nau8822-btl_overlay.dtbo
+dtb-y += verdin-imx8mp_ov5640-27mhz_overlay.dtbo
dtb-y += verdin-imx8mp_ov5640_overlay.dtbo
dtb-y += verdin-imx8mp_panel-cap-touch-7inch-dsi_overlay.dtbo
dtb-y += verdin-imx8mp_panel-cap-touch-10inch-dsi_overlay.dtbo
diff --git a/overlays/verdin-imx8mp_ov5640-27mhz_overlay.dts b/overlays/verdin-imx8mp_ov5640-27mhz_overlay.dts
new file mode 100644
index 0000000..2330593
--- /dev/null
+++ b/overlays/verdin-imx8mp_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-imx8mp_ov5640_overlay.dts"
+
+&clk_camera_verdin_csi {
+ clock-frequency = <27000000>;
+};
diff --git a/overlays/verdin-imx8mp_ov5640_overlay.dts b/overlays/verdin-imx8mp_ov5640_overlay.dts
index 7ba9530..5f6bfcb 100644
--- a/overlays/verdin-imx8mp_ov5640_overlay.dts
+++ b/overlays/verdin-imx8mp_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 */
@@ -35,10 +41,7 @@
reg = <0x3c>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio5>, <&pinctrl_gpio6>;
- assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
- assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
- assigned-clock-rates = <24000000>;
- clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
+ clocks = <&clk_camera_verdin_csi>;
clock-names = "xclk";
AVDD-supply = <&regulator_camera>;
DOVDD-supply = <&regulator_camera>;