diff options
| author | João Paulo Gonçalves <joao.goncalves@toradex.com> | 2025-04-02 13:44:19 -0300 |
|---|---|---|
| committer | João Paulo Gonçalves <joao.goncalves@toradex.com> | 2025-04-04 10:21:12 -0300 |
| commit | b4a76b00cd6688467eb55cb977098343c6e7c0d2 (patch) | |
| tree | 89091a7f9da8baf8606207cbf1a03fa71d604cdb | |
| parent | 29ddb5b33673b5b1ae8492446ef953e27e2e9c3d (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/Makefile | 1 | ||||
| -rw-r--r-- | overlays/verdin-imx8mp_ov5640-27mhz_overlay.dts | 17 | ||||
| -rw-r--r-- | overlays/verdin-imx8mp_ov5640_overlay.dts | 11 |
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 = <®ulator_camera>; DOVDD-supply = <®ulator_camera>; |
