aboutsummaryrefslogtreecommitdiff
path: root/target/linux/bcm27xx/patches-6.1/950-0563-dtoverlays-Add-VCM-option-to-imx519.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-6.1/950-0563-dtoverlays-Add-VCM-option-to-imx519.patch')
-rw-r--r--target/linux/bcm27xx/patches-6.1/950-0563-dtoverlays-Add-VCM-option-to-imx519.patch151
1 files changed, 151 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-6.1/950-0563-dtoverlays-Add-VCM-option-to-imx519.patch b/target/linux/bcm27xx/patches-6.1/950-0563-dtoverlays-Add-VCM-option-to-imx519.patch
new file mode 100644
index 0000000000..92439d348d
--- /dev/null
+++ b/target/linux/bcm27xx/patches-6.1/950-0563-dtoverlays-Add-VCM-option-to-imx519.patch
@@ -0,0 +1,151 @@
+From 0c0ce98b6c48ffd63690e17872c82a6ea4e08fbf Mon Sep 17 00:00:00 2001
+From: Lee Jackson <info@arducam.com>
+Date: Mon, 20 Feb 2023 10:25:33 +0800
+Subject: [PATCH] dtoverlays: Add VCM option to imx519
+
+VCM is enabled by default, but you can use 'vcm=off' to disable VCM support.
+
+Signed-off-by: Lee Jackson <lee.jackson@arducam.com>
+---
+ arch/arm/boot/dts/overlays/README | 2 +
+ arch/arm/boot/dts/overlays/imx519-overlay.dts | 61 +++++++++----------
+ arch/arm/boot/dts/overlays/imx519.dtsi | 34 +++++++++++
+ 3 files changed, 65 insertions(+), 32 deletions(-)
+ create mode 100644 arch/arm/boot/dts/overlays/imx519.dtsi
+
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -2384,6 +2384,8 @@ Params: rotation Mounting
+ configuring the sensor (default on)
+ cam0 Adopt the default configuration for CAM0 on a
+ Compute Module (CSI0, i2c_vc, and cam0_reg).
++ vcm Select lens driver state. Default is enabled,
++ but vcm=off will disable.
+
+
+ Name: imx708
+--- a/arch/arm/boot/dts/overlays/imx519-overlay.dts
++++ b/arch/arm/boot/dts/overlays/imx519-overlay.dts
+@@ -15,32 +15,7 @@
+ #size-cells = <0>;
+ status = "okay";
+
+- imx519: imx519@1a {
+- compatible = "sony,imx519";
+- reg = <0x1a>;
+- status = "okay";
+-
+- clocks = <&cam1_clk>;
+- clock-names = "xclk";
+-
+- VANA-supply = <&cam1_reg>; /* 2.8v */
+- VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
+- VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
+-
+- rotation = <0>;
+- orientation = <2>;
+-
+- port {
+- imx519_0: endpoint {
+- remote-endpoint = <&csi1_ep>;
+- clock-lanes = <0>;
+- data-lanes = <1 2>;
+- clock-noncontinuous;
+- link-frequencies =
+- /bits/ 64 <493500000>;
+- };
+- };
+- };
++ #include "imx519.dtsi"
+ };
+ };
+
+@@ -51,8 +26,8 @@
+ brcm,media-controller;
+
+ port{
+- csi1_ep: endpoint{
+- remote-endpoint = <&imx519_0>;
++ csi_ep: endpoint{
++ remote-endpoint = <&cam_endpoint>;
+ clock-lanes = <0>;
+ data-lanes = <1 2>;
+ clock-noncontinuous;
+@@ -83,14 +58,36 @@
+ };
+ };
+
++ fragment@5 {
++ target = <&cam_node>;
++ __overlay__ {
++ lens-focus = <&vcm_node>;
++ };
++ };
++
+ __overrides__ {
+- rotation = <&imx519>,"rotation:0";
+- orientation = <&imx519>,"orientation:0";
++ rotation = <&cam_node>,"rotation:0";
++ orientation = <&cam_node>,"orientation:0";
+ media-controller = <&csi>,"brcm,media-controller?";
+ cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
+ <&csi_frag>, "target:0=",<&csi0>,
+ <&clk_frag>, "target:0=",<&cam0_clk>,
+- <&imx519>, "clocks:0=",<&cam0_clk>,
+- <&imx519>, "VANA-supply:0=",<&cam0_reg>;
++ <&cam_node>, "clocks:0=",<&cam0_clk>,
++ <&cam_node>, "VANA-supply:0=",<&cam0_reg>,
++ <&vcm_node>, "vdd-supply:0=",<&cam0_reg>;
++ vcm = <&vcm_node>, "status",
++ <0>, "=5";
+ };
+ };
++
++&cam_node {
++ status = "okay";
++};
++
++&cam_endpoint {
++ remote-endpoint = <&csi_ep>;
++};
++
++&vcm_node {
++ status = "okay";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/imx519.dtsi
+@@ -0,0 +1,34 @@
++// Fragment that configures a Sony IMX519
++
++cam_node: imx519@1a {
++ compatible = "sony,imx519";
++ reg = <0x1a>;
++ status = "disabled";
++
++ clocks = <&cam1_clk>;
++ clock-names = "xclk";
++
++ VANA-supply = <&cam1_reg>; /* 2.8v */
++ VDIG-supply = <&cam_dummy_reg>; /* 1.8v */
++ VDDL-supply = <&cam_dummy_reg>; /* 1.2v */
++
++ rotation = <0>;
++ orientation = <2>;
++
++ port {
++ cam_endpoint: endpoint {
++ clock-lanes = <0>;
++ data-lanes = <1 2>;
++ clock-noncontinuous;
++ link-frequencies =
++ /bits/ 64 <493500000>;
++ };
++ };
++};
++
++vcm_node: ak7375@c {
++ compatible = "asahi-kasei,ak7375";
++ reg = <0x0c>;
++ status = "disabled";
++ vdd-supply = <&cam1_reg>;
++};