brcm2708: update to latest patches from RPi Foundation
[openwrt/openwrt.git] / target / linux / brcm2708 / patches-4.19 / 950-0182-dtoverlays-Add-support-for-ADV7280-M-ADV7281-M-and-A.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0182-dtoverlays-Add-support-for-ADV7280-M-ADV7281-M-and-A.patch b/target/linux/brcm2708/patches-4.19/950-0182-dtoverlays-Add-support-for-ADV7280-M-ADV7281-M-and-A.patch
new file mode 100644 (file)
index 0000000..9348af8
--- /dev/null
@@ -0,0 +1,135 @@
+From 8ea13a43a77dfb45c836de2d6c747f630dd75275 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 31 Oct 2018 15:02:18 +0000
+Subject: [PATCH] dtoverlays: Add support for ADV7280-M, ADV7281-M and
+ ADV7281-MA chips.
+
+The driver that supports the ADV7282-M also supports the ADV7280-M,
+ADV7281-M, and ADV7281-MA.
+The 7280-M exposes 8 analogue inputs. The 7281-M doesn't have the
+I2P deinterlacing block. The 7281-MA has 8 inputs but no I2P.
+Otherwise they are the same as ADV7282-M.
+
+Adds a new overlay "adv728x" that includes the existing adv7282
+overlay but adds several parameters to modify the behaviour.
+
+Adds a new addr parameter to allow the I2C address to be changed.
+(the chip has an address select pin to change between 0x20 and 0x21).
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ arch/arm/boot/dts/overlays/Makefile           |  1 +
+ arch/arm/boot/dts/overlays/README             | 13 +++++++
+ .../boot/dts/overlays/adv7282m-overlay.dts    |  9 +++--
+ .../boot/dts/overlays/adv728x-m-overlay.dts   | 37 +++++++++++++++++++
+ 4 files changed, 56 insertions(+), 4 deletions(-)
+ create mode 100644 arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
+
+--- a/arch/arm/boot/dts/overlays/Makefile
++++ b/arch/arm/boot/dts/overlays/Makefile
+@@ -7,6 +7,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
+       ads1115.dtbo \
+       ads7846.dtbo \
+       adv7282m.dtbo \
++      adv728x-m.dtbo \
+       akkordion-iqdacplus.dtbo \
+       allo-boss-dac-pcm512x-audio.dtbo \
+       allo-digione.dtbo \
+--- a/arch/arm/boot/dts/overlays/README
++++ b/arch/arm/boot/dts/overlays/README
+@@ -274,6 +274,19 @@ Info:   Analog Devices ADV7282M analogue
+ Load:   dtoverlay=adv7282m,<param>=<val>
+ Params: 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.
++        addr                    Overrides the I2C address (default 0x21)
++
++
++Name:   adv728x-m
++Info:   Analog Devices ADV728[0|1|2]-M analogue video to CSI2 bridges.
++        This is a wrapper for adv7282m, and defaults to ADV7282M.
++Load:   dtoverlay=adv728x-m,<param>=<val>
++Params: 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.
++        addr                    Overrides the I2C address (default 0x21)
++        adv7280m                Select ADV7280-M.
++        adv7281m                Select ADV7281-M.
++        adv7281ma               Select ADV7281-MA.
+ Name:   akkordion-iqdacplus
+--- a/arch/arm/boot/dts/overlays/adv7282m-overlay.dts
++++ b/arch/arm/boot/dts/overlays/adv7282m-overlay.dts
+@@ -13,13 +13,13 @@
+                       #size-cells = <0>;
+                       status = "okay";
+-                      adv7282: adv7282@21 {
++                      adv728x: adv728x@21 {
+                               compatible = "adi,adv7282-m";
+                               reg = <0x21>;
+                               status = "okay";
+                               clock-frequency = <24000000>;
+                               port {
+-                                      adv7282_0: endpoint {
++                                      adv728x_0: endpoint {
+                                               remote-endpoint = <&csi1_ep>;
+                                               clock-lanes = <0>;
+                                               data-lanes = <1>;
+@@ -43,7 +43,7 @@
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               csi1_ep: endpoint {
+-                                      remote-endpoint = <&adv7282_0>;
++                                      remote-endpoint = <&adv728x_0>;
+                               };
+                       };
+               };
+@@ -71,6 +71,7 @@
+       };
+       __overrides__ {
+-              i2c_pins_28_29 = <0>,"+2-3";
++              i2c_pins_28_29 =        <0>,"+2-3";
++              addr =                  <&adv728x>,"reg:0";
+       };
+ };
+--- /dev/null
++++ b/arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
+@@ -0,0 +1,37 @@
++// SPDX-License-Identifier: GPL-2.0-only
++// Definitions for Analog Devices ADV728[0|1|2]-M video to CSI2 bridges on VC
++// I2C bus
++
++#include "adv7282m-overlay.dts"
++
++/{
++      compatible = "brcm,bcm2708";
++
++      // Fragment numbers deliberately high to avoid conflicts with the
++      // included adv7282m overlay file.
++
++      fragment@101 {
++              target = <&adv728x>;
++              __dormant__ {
++                      compatible = "adi,adv7280-m";
++              };
++      };
++      fragment@102 {
++              target = <&adv728x>;
++              __dormant__ {
++                      compatible = "adi,adv7281-m";
++              };
++      };
++      fragment@103 {
++              target = <&adv728x>;
++              __dormant__ {
++                      compatible = "adi,adv7281-ma";
++              };
++      };
++
++      __overrides__ {
++              adv7280m = <0>, "+101";
++              adv7281m = <0>, "+102";
++              adv7281ma = <0>, "+103";
++      };
++};