[SRU][N:raspi][PATCH 3/3] dtoverlays: ov9281: Add continuous clock option as an override

Juerg Haefliger juerg.haefliger at canonical.com
Wed Jul 30 14:35:48 UTC 2025


From: Dave Stevenson <dave.stevenson at raspberrypi.com>

BugLink: https://bugs.launchpad.net/bugs/2116543

The previous change to make ov9281 always run in continuous clock
mode causes problems on Pi3 for reasons that aren't fully
understood. Pi4 is quite happy with it.

Change the default back to being non-continuous clock, and add
an override to select continuous clock mode and its slightly
greater max frame rate.

https://forums.raspberrypi.com/viewtopic.php?p=2300215

Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.com>
(cherry picked from commit ac56a225e0889e60e912ecd3a51333a5aee901fc rpi-6.6.y)
Signed-off-by: Juerg Haefliger <juerg.haefliger at canonical.com>
---
 arch/arm/boot/dts/overlays/README             |  3 +++
 arch/arm/boot/dts/overlays/ov9281-overlay.dts | 16 +++++++++++++++-
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
index cc9aa0f6a862..2f79c576dece 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -3389,6 +3389,9 @@ Params: rotation                Mounting rotation of the camera sensor (0 or
                                 Compute Module (CSI0, i2c_vc, and cam0_reg).
         arducam                 Slow down the regulator for slow Arducam
                                 modules.
+        clk-continuous          Switch to continuous mode on the CSI clock lane,
+                                which increases the maximum frame rate slightly.
+                                Appears not to work on Pi3.
 
 
 Name:   papirus
diff --git a/arch/arm/boot/dts/overlays/ov9281-overlay.dts b/arch/arm/boot/dts/overlays/ov9281-overlay.dts
index b574aacd063c..28b8cb538aa3 100644
--- a/arch/arm/boot/dts/overlays/ov9281-overlay.dts
+++ b/arch/arm/boot/dts/overlays/ov9281-overlay.dts
@@ -64,6 +64,20 @@ __dormant__ {
 		};
 	};
 
+	fragment at 6 {
+		target = <&csi_ep>;
+		__overlay__ {
+			clock-noncontinuous;
+		};
+	};
+
+	fragment at 7 {
+		target = <&cam_endpoint>;
+		__overlay__ {
+			clock-noncontinuous;
+		};
+	};
+
 	__overrides__ {
 		rotation = <&cam_node>,"rotation:0";
 		orientation = <&cam_node>,"orientation:0";
@@ -75,7 +89,7 @@ __overrides__ {
 		       <&cam_node>, "avdd-supply:0=",<&cam0_reg>,
 		       <&reg_frag>, "target:0=",<&cam0_reg>;
 		arducam = <0>, "+5";
-
+		clk-continuous = <0>, "-6-7";
 	};
 };
 
-- 
2.48.1




More information about the kernel-team mailing list