diff options
author | João Paulo Gonçalves <joao.goncalves@toradex.com> | 2025-04-02 13:51:05 -0300 |
---|---|---|
committer | João Paulo Gonçalves <joao.goncalves@toradex.com> | 2025-04-04 10:21:50 -0300 |
commit | f9a7fa7fb042fad58aad7ab8cccf3175f44e0967 (patch) | |
tree | 3b419de74b54ff86dc0c857d20f8ae2c466a5171 | |
parent | b4a76b00cd6688467eb55cb977098343c6e7c0d2 (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/Makefile | 1 | ||||
-rw-r--r-- | overlays/verdin-imx8mm_ov5640-27mhz_overlay.dts | 17 | ||||
-rw-r--r-- | overlays/verdin-imx8mm_ov5640_overlay.dts | 11 |
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 = <®ulator_camera>; DOVDD-supply = <®ulator_camera>; |