brcm2708: update to latest patches from RPi Foundation
[openwrt/staging/chunkeey.git] / target / linux / brcm2708 / patches-4.19 / 950-0741-dtoverlays-Add-an-overlay-for-the-Infineon-IRS1125.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0741-dtoverlays-Add-an-overlay-for-the-Infineon-IRS1125.patch b/target/linux/brcm2708/patches-4.19/950-0741-dtoverlays-Add-an-overlay-for-the-Infineon-IRS1125.patch
new file mode 100644 (file)
index 0000000..1202d10
--- /dev/null
@@ -0,0 +1,149 @@
+From 89af5d7df7f548744bd675d96295c0f45e24b31f Mon Sep 17 00:00:00 2001
+From: Markus Proeller <markus.proeller@pieye.org>
+Date: Thu, 10 Oct 2019 19:13:02 +0200
+Subject: [PATCH] dtoverlays: Add an overlay for the Infineon IRS1125
+
+The Infineon IRS1125 is a CSI2 time of flight depth sensor
+which has a suitable V4L2 subdevice driver.
+
+Add an overlay for configuring it.
+
+Signed-off-by: Markus Proeller <markus.proeller@pieye.org>
+---
+ arch/arm/boot/dts/overlays/Makefile           |  1 +
+ arch/arm/boot/dts/overlays/README             | 12 +++
+ .../arm/boot/dts/overlays/irs1125-overlay.dts | 97 +++++++++++++++++++
+ 3 files changed, 110 insertions(+)
+ create mode 100644 arch/arm/boot/dts/overlays/irs1125-overlay.dts
+
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -83,6 +83,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
+       iqaudio-dac.dtbo \
+       iqaudio-dacplus.dtbo \
+       iqaudio-digi-wm8804-audio.dtbo \
++      irs1125.dtbo \
+       jedec-spi-nor.dtbo \
+       justboom-dac.dtbo \
+       justboom-digi.dtbo \
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -1347,6 +1347,18 @@ Params: card_name               Override
+                                 dai stream name.
++Name:   irs1125
++Info:   Infineon irs1125 TOF camera module.
++        Uses Unicam 1, which is the standard camera connector on most Pi
++        variants.
++Load:   dtoverlay=irs1125,<param>=<val>
++Params: i2c_pins_0_1            Use pins 0&1 for the I2C instead of 44&45.
++                                Useful on Compute Modules.
++
++        i2c_pins_28_29          Use pins 28&29 for the I2C instead of 44&45.
++                                This is required for Pi B+, 2, 0, and 0W.
++
++
+ Name:   jedec-spi-nor
+ Info:   Adds support for JEDEC-compliant SPI NOR flash devices.  (Note: The
+         "jedec,spi-nor" kernel driver was formerly known as "m25p80".)
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/irs1125-overlay.dts
+@@ -0,0 +1,97 @@
++// SPDX-License-Identifier: GPL-2.0-only
++// Definitions for IRS1125 camera module on VC I2C bus
++/dts-v1/;
++/plugin/;
++
++/{
++      compatible = "brcm,bcm2835";
++
++      fragment@0 {
++              target = <&i2c_vc>;
++              __overlay__ {
++                      #address-cells = <1>;
++                      #size-cells = <0>;
++                      status = "okay";
++
++                      irs1125: irs1125@3D {
++                              compatible = "infineon,irs1125";
++                              reg = <0x3D>;
++                              status = "okay";
++
++                              pwdn-gpios = <&gpio 5 0>;
++                              clocks = <&irs1125_clk>;
++
++                              irs1125_clk: camera-clk {
++                                      compatible = "fixed-clock";
++                                      #clock-cells = <0>;
++                                      clock-frequency = <26000000>;
++                              };
++
++                              port {
++                                      irs1125_0: endpoint {
++                                              remote-endpoint = <&csi1_ep>;
++                                              clock-lanes = <0>;
++                                              data-lanes = <1 2>;
++                                              clock-noncontinuous;
++                                              link-frequencies =
++                                                      /bits/ 64 <297000000>;
++                                      };
++                              };
++                      };
++              };
++      };
++
++      fragment@1 {
++              target = <&csi1>;
++              __overlay__ {
++                      status = "okay";
++
++                      port {
++                              csi1_ep: endpoint {
++                                      remote-endpoint = <&irs1125_0>;
++                              };
++                      };
++              };
++      };
++
++      fragment@2 {
++              target = <&i2c0_pins>;
++              __dormant__ {
++                      brcm,pins = <28 29>;
++                      brcm,function = <4>; /* alt0 */
++              };
++      };
++      fragment@3 {
++              target = <&i2c0_pins>;
++              __overlay__ {
++                      brcm,pins = <44 45>;
++                      brcm,function = <5>; /* alt1 */
++              };
++      };
++      fragment@4 {
++              target = <&i2c0_pins>;
++              __dormant__ {
++                      brcm,pins = <0 1>;
++                      brcm,function = <4>; /* alt0 */
++              };
++      };
++      fragment@5 {
++              target = <&i2c_vc>;
++              __overlay__ {
++                      status = "okay";
++              };
++      };
++
++      fragment@6 {
++              target-path="/__overrides__";
++              __overlay__ {
++                      cam0-pwdn-ctrl = <&irs1125>,"pwdn-gpios:0";
++                      cam0-pwdn      = <&irs1125>,"pwdn-gpios:4";
++              };
++      };
++
++      __overrides__ {
++              i2c_pins_0_1 = <0>,"-2-3+4";
++              i2c_pins_28_29 = <0>,"+2-3-4";
++      };
++};