diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0836-dtoverlays-Add-an-overlay-for-the-Sony-IMX290-image-.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0836-dtoverlays-Add-an-overlay-for-the-Sony-IMX290-image-.patch | 236 |
1 files changed, 236 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0836-dtoverlays-Add-an-overlay-for-the-Sony-IMX290-image-.patch b/target/linux/bcm27xx/patches-5.4/950-0836-dtoverlays-Add-an-overlay-for-the-Sony-IMX290-image-.patch new file mode 100644 index 0000000000..f64db00ddc --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0836-dtoverlays-Add-an-overlay-for-the-Sony-IMX290-image-.patch @@ -0,0 +1,236 @@ +From 57250281004e141dff4662d1abb3f31982ec01ee Mon Sep 17 00:00:00 2001 +From: Dave Stevenson <dave.stevenson@raspberrypi.com> +Date: Tue, 19 May 2020 13:35:17 +0100 +Subject: [PATCH] dtoverlays: Add an overlay for the Sony IMX290 + image sensor + +Adds an overlay to configure the IMX290 image sensor. + +Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> +--- + arch/arm/boot/dts/overlays/Makefile | 1 + + arch/arm/boot/dts/overlays/README | 16 ++ + arch/arm/boot/dts/overlays/imx290-overlay.dts | 32 ++++ + .../boot/dts/overlays/imx290_327-overlay.dtsi | 145 ++++++++++++++++++ + 4 files changed, 194 insertions(+) + create mode 100644 arch/arm/boot/dts/overlays/imx290-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi + +--- a/arch/arm/boot/dts/overlays/Makefile ++++ b/arch/arm/boot/dts/overlays/Makefile +@@ -85,6 +85,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ + i2s-gpio28-31.dtbo \ + ilitek251x.dtbo \ + imx219.dtbo \ ++ imx290.dtbo \ + imx477.dtbo \ + iqaudio-codec.dtbo \ + iqaudio-dac.dtbo \ +--- a/arch/arm/boot/dts/overlays/README ++++ b/arch/arm/boot/dts/overlays/README +@@ -1430,6 +1430,22 @@ Load: dtoverlay=imx219 + Params: <None> + + ++Name: imx290 ++Info: Sony IMX290 camera module. ++ Uses Unicam 1, which is the standard camera connector on most Pi ++ variants. NB This currently uses 4 CSI2 data lanes and therefore will ++ only work on a CM. ++Load: dtoverlay=imx290,<param> ++Params: 4lane Enable 4 CSI2 lanes. This requires a Compute ++ Module (1, 3, or 4). ++ clock-frequency Sets the clock frequency to match that used on ++ the board. ++ Modules from Vision Components use 37.125MHz ++ (the default), whilst those from Innomaker use ++ 74.25MHz. ++ mono Denote that the module is a mono sensor. ++ ++ + Name: imx477 + Info: Sony IMX477 camera module. + Uses Unicam 1, which is the standard camera connector on most Pi +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/imx290-overlay.dts +@@ -0,0 +1,32 @@ ++// SPDX-License-Identifier: GPL-2.0-only ++// Definitions for IMX290 camera module on VC I2C bus ++/dts-v1/; ++/plugin/; ++ ++#include <dt-bindings/gpio/gpio.h> ++#include "imx290_327-overlay.dtsi" ++ ++/{ ++ compatible = "brcm,bcm2835"; ++ ++ // Fragment numbers deliberately high to avoid conflicts with the ++ // included imx290_327 overlay file. ++ ++ fragment@101 { ++ target = <&imx290>; ++ __overlay__ { ++ compatible = "sony,imx290"; ++ }; ++ }; ++ ++ fragment@102 { ++ target = <&imx290>; ++ __dormant__ { ++ compatible = "sony,imx290-mono"; ++ }; ++ }; ++ ++ __overrides__ { ++ mono = <0>, "-101+102"; ++ }; ++}; +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi +@@ -0,0 +1,145 @@ ++// SPDX-License-Identifier: GPL-2.0-only ++// Partial definitions for IMX290 or IMX327 camera module on VC I2C bus ++// The compatible string should be set in an overlay that then includes this one ++/dts-v1/; ++/plugin/; ++ ++#include <dt-bindings/gpio/gpio.h> ++ ++/{ ++ compatible = "brcm,bcm2835"; ++ ++ fragment@0 { ++ target = <&i2c_csi_dsi>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ imx290: imx290@1a { ++ reg = <0x1a>; ++ status = "okay"; ++ ++ clocks = <&imx290_clk>; ++ clock-names = "xclk"; ++ clock-frequency = <37125000>; ++ ++ vdda-supply = <&imx290_vdda>; /* 2.8v */ ++ vdddo-supply = <&imx290_vdddo>; /* 1.8v */ ++ vddd-supply = <&imx290_vddd>; /* 1.5v */ ++ ++ port { ++ imx290_0: endpoint { ++ remote-endpoint = <&csi1_ep>; ++ clock-lanes = <0>; ++ }; ++ }; ++ }; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&csi1>; ++ __overlay__ { ++ status = "okay"; ++ ++ port { ++ csi1_ep: endpoint { ++ remote-endpoint = <&imx290_0>; ++ }; ++ }; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&i2c0if>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@3 { ++ target-path="/"; ++ __overlay__ { ++ imx290_vdda: fixedregulator@0 { ++ compatible = "regulator-fixed"; ++ regulator-name = "imx290_vdda"; ++ regulator-min-microvolt = <2800000>; ++ regulator-max-microvolt = <2800000>; ++ gpio = <&gpio 41 GPIO_ACTIVE_HIGH>; ++ enable-active-high; ++ }; ++ imx290_vdddo: fixedregulator@1 { ++ compatible = "regulator-fixed"; ++ regulator-name = "imx290_vdddo"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ }; ++ imx290_vddd: fixedregulator@2 { ++ compatible = "regulator-fixed"; ++ regulator-name = "imx290_vddd"; ++ regulator-min-microvolt = <1500000>; ++ regulator-max-microvolt = <1500000>; ++ }; ++ ++ imx290_clk: camera-clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <37125000>; ++ }; ++ }; ++ }; ++ ++ fragment@4 { ++ target = <&i2c0mux>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@5 { ++ target-path="/__overrides__"; ++ __overlay__ { ++ cam0-pwdn-ctrl = <&imx290_vdda>,"gpio:0"; ++ cam0-pwdn = <&imx290_vdda>,"gpio:4"; ++ }; ++ }; ++ ++ fragment@6 { ++ target = <&imx290_0>; ++ __overlay__ { ++ data-lanes = <1 2>; ++ link-frequencies = ++ /bits/ 64 <445500000 297000000>; ++ }; ++ }; ++ ++ fragment@7 { ++ target = <&imx290_0>; ++ __dormant__ { ++ data-lanes = <1 2 3 4>; ++ link-frequencies = ++ /bits/ 64 <222750000 148500000>; ++ }; ++ }; ++ ++ fragment@8 { ++ target = <&csi1_ep>; ++ __overlay__ { ++ data-lanes = <1 2>; ++ }; ++ }; ++ ++ fragment@9 { ++ target = <&csi1_ep>; ++ __dormant__ { ++ data-lanes = <1 2 3 4>; ++ }; ++ }; ++ ++ __overrides__ { ++ 4lane = <0>, "-6+7-8+9"; ++ clock-frequency = <&imx290_clk>,"clock-frequency:0", ++ <&imx290>,"clock-frequency:0"; ++ }; ++}; |