6b6bacca837c955f64ea6d73e9bed22c55d8de14
[openwrt/staging/lynxis.git] / target / linux / brcm2708 / patches-4.14 / 950-0409-dtoverlays-Add-support-for-ADV7280-M-ADV7281-M-and-A.patch
1 From c325695bc45f687cb2b206d02c8d8e7f3c1ad0a1 Mon Sep 17 00:00:00 2001
2 From: Dave Stevenson <dave.stevenson@raspberrypi.org>
3 Date: Thu, 23 Aug 2018 10:42:41 +0100
4 Subject: [PATCH 409/454] dtoverlays: Add support for ADV7280-M, ADV7281-M and
5 ADV7281-MA chips.
6
7 The driver that supports the ADV7282-M also supports the ADV7280-M,
8 ADV7281-M, and ADV7281-MA.
9 The 7280-M exposes 8 analogue inputs. The 7281-M doesn't have the
10 I2P deinterlacing block. The 7281-MA has 8 inputs but no I2P.
11 Otherwise they are the same as ADV7282-M.
12
13 Adds a new overlay "adv728x" that includes the existing adv7282
14 overlay but adds several parameters to modify the behaviour.
15
16 Adds a new addr parameter to allow the I2C address to be changed.
17 (the chip has an address select pin to change between 0x20 and 0x21).
18
19 Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
20 ---
21 arch/arm/boot/dts/overlays/Makefile | 1 +
22 arch/arm/boot/dts/overlays/README | 13 +++++++
23 .../boot/dts/overlays/adv7282m-overlay.dts | 9 ++---
24 .../boot/dts/overlays/adv728x-m-overlay.dts | 36 +++++++++++++++++++
25 4 files changed, 55 insertions(+), 4 deletions(-)
26 create mode 100644 arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
27
28 --- a/arch/arm/boot/dts/overlays/Makefile
29 +++ b/arch/arm/boot/dts/overlays/Makefile
30 @@ -7,6 +7,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
31 ads1115.dtbo \
32 ads7846.dtbo \
33 adv7282m.dtbo \
34 + adv728x-m.dtbo \
35 akkordion-iqdacplus.dtbo \
36 allo-boss-dac-pcm512x-audio.dtbo \
37 allo-digione.dtbo \
38 --- a/arch/arm/boot/dts/overlays/README
39 +++ b/arch/arm/boot/dts/overlays/README
40 @@ -274,6 +274,19 @@ Info: Analog Devices ADV7282M analogue
41 Load: dtoverlay=adv7282m,<param>=<val>
42 Params: i2c_pins_28_29 Use pins 28&29 for the I2C instead of 44&45.
43 This is required for Pi B+, 2, 0, and 0W.
44 + addr Overrides the I2C address (default 0x21)
45 +
46 +
47 +Name: adv728x-m
48 +Info: Analog Devices ADV728[0|1|2]-M analogue video to CSI2 bridges.
49 + This is a wrapper for adv7282m, and defaults to ADV7282M.
50 +Load: dtoverlay=adv728x-m,<param>=<val>
51 +Params: i2c_pins_28_29 Use pins 28&29 for the I2C instead of 44&45.
52 + This is required for Pi B+, 2, 0, and 0W.
53 + addr Overrides the I2C address (default 0x21)
54 + adv7280m Select ADV7280-M.
55 + adv7281m Select ADV7281-M.
56 + adv7281ma Select ADV7281-MA.
57
58
59 Name: akkordion-iqdacplus
60 --- a/arch/arm/boot/dts/overlays/adv7282m-overlay.dts
61 +++ b/arch/arm/boot/dts/overlays/adv7282m-overlay.dts
62 @@ -12,13 +12,13 @@
63 #size-cells = <0>;
64 status = "okay";
65
66 - adv7282: adv7282@21 {
67 + adv728x: adv728x@21 {
68 compatible = "adi,adv7282-m";
69 reg = <0x21>;
70 status = "okay";
71 clock-frequency = <24000000>;
72 port {
73 - adv7282_0: endpoint {
74 + adv728x_0: endpoint {
75 remote-endpoint = <&csi1_ep>;
76 clock-lanes = <0>;
77 data-lanes = <1>;
78 @@ -42,7 +42,7 @@
79 #address-cells = <1>;
80 #size-cells = <0>;
81 csi1_ep: endpoint {
82 - remote-endpoint = <&adv7282_0>;
83 + remote-endpoint = <&adv728x_0>;
84 };
85 };
86 };
87 @@ -70,6 +70,7 @@
88 };
89
90 __overrides__ {
91 - i2c_pins_28_29 = <0>,"+2-3";
92 + i2c_pins_28_29 = <0>,"+2-3";
93 + addr = <&adv728x>,"reg:0";
94 };
95 };
96 --- /dev/null
97 +++ b/arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
98 @@ -0,0 +1,36 @@
99 +// Definitions for Analog Devices ADV728[0|1|2]-M video to CSI2 bridges on VC
100 +// I2C bus
101 +
102 +#include "adv7282m-overlay.dts"
103 +
104 +/{
105 + compatible = "brcm,bcm2708";
106 +
107 + // Fragment numbers deliberately high to avoid conflicts with the
108 + // included adv7282m overlay file.
109 +
110 + fragment@101 {
111 + target = <&adv728x>;
112 + __dormant__ {
113 + compatible = "adi,adv7280-m";
114 + };
115 + };
116 + fragment@102 {
117 + target = <&adv728x>;
118 + __dormant__ {
119 + compatible = "adi,adv7281-m";
120 + };
121 + };
122 + fragment@103 {
123 + target = <&adv728x>;
124 + __dormant__ {
125 + compatible = "adi,adv7281-ma";
126 + };
127 + };
128 +
129 + __overrides__ {
130 + adv7280m = <0>, "+101";
131 + adv7281m = <0>, "+102";
132 + adv7281ma = <0>, "+103";
133 + };
134 +};