overlays: Add "always-on" parameter to imx477 and imx296
authorNick Hollinghurst <nick.hollinghurst@raspberrypi.com>
Wed, 6 Dec 2023 14:38:03 +0000 (14:38 +0000)
committerDom Cobley <popcornmix@gmail.com>
Mon, 19 Feb 2024 11:35:24 +0000 (11:35 +0000)
Leave the camera's power supplies up, to prevent the camera
clamping its 1.8V digital I/Os to ground. This may be useful
when synchronizing multiple camera systems using XVS or XTRIG.

Signed-off-by: Nick Hollinghurst <nick.hollinghurst@raspberrypi.com>
arch/arm/boot/dts/overlays/README
arch/arm/boot/dts/overlays/imx296-overlay.dts
arch/arm/boot/dts/overlays/imx477_378-overlay.dtsi

index c1128fc..88553d6 100644 (file)
@@ -2520,6 +2520,8 @@ Params: rotation                Mounting rotation of the camera sensor (0 or
         clock-frequency         Sets the clock frequency to match that used on
                                 the board, which should be one of 54000000
                                 (the default), 37125000 or 74250000.
+        always-on               Leave the regulator powered up, to stop the
+                                camera clamping I/Os such as XTRIG to 0V.
 
 
 Name:   imx327
@@ -2558,6 +2560,8 @@ Params: rotation                Mounting rotation of the camera sensor (0 or
                                 configuring the sensor (default on)
         cam0                    Adopt the default configuration for CAM0 on a
                                 Compute Module (CSI0, i2c_vc, and cam0_reg).
+        always-on               Leave the regulator powered up, to stop the
+                                camera clamping I/Os such as XVS to 0V.
 
 
 Name:   imx462
@@ -2596,6 +2600,8 @@ Params: rotation                Mounting rotation of the camera sensor (0 or
                                 configuring the sensor (default on)
         cam0                    Adopt the default configuration for CAM0 on a
                                 Compute Module (CSI0, i2c_vc, and cam0_reg).
+        always-on               Leave the regulator powered up, to stop the
+                                camera clamping I/Os such as XVS to 0V.
 
 
 Name:   imx519
index ff27025..0eb4d9c 100644 (file)
                };
        };
 
+       reg_alwayson_frag: fragment@99 {
+               target = <&cam1_reg>;
+               __dormant__ {
+                       regulator-always-on;
+               };
+       };
+
        i2c_frag: fragment@100 {
                target = <&i2c_csi_dsi>;
                __overlay__ {
                       <&csi_frag>, "target:0=",<&csi0>,
                       <&clk_frag>, "target:0=",<&cam0_clk>,
                       <&reg_frag>, "target:0=",<&cam0_reg>,
+                      <&reg_alwayson_frag>, "target:0=",<&cam0_reg>,
                       <&imx296>, "clocks:0=",<&cam0_clk>,
                       <&imx296>, "avdd-supply:0=",<&cam0_reg>;
                clock-frequency = <&clk_over>, "clock-frequency:0";
+               always-on = <0>, "+99";
        };
 };
index 39ed759..1ce42c2 100644 (file)
                };
        };
 
+       reg_alwayson_frag: fragment@99 {
+               target = <&cam1_reg>;
+               __dormant__ {
+                       regulator-always-on;
+               };
+       };
+
        i2c_frag: fragment@100 {
                target = <&i2c_csi_dsi>;
                __overlay__ {
                       <&csi_frag>, "target:0=",<&csi0>,
                       <&clk_frag>, "target:0=",<&cam0_clk>,
                       <&reg_frag>, "target:0=",<&cam0_reg>,
+                      <&reg_alwayson_frag>, "target:0=",<&cam0_reg>,
                       <&cam_node>, "clocks:0=",<&cam0_clk>,
                       <&cam_node>, "VANA-supply:0=",<&cam0_reg>;
+               always-on = <0>, "+99";
        };
 };