brcm2708: update linux 4.4 patches to latest version
[openwrt/staging/wigyori.git] / target / linux / brcm2708 / patches-4.4 / 0506-BCM270X-Add-an-overlay-for-enabling-the-vc4-driver-i.patch
1 From 74759d90a1556cac03225046a976805fd3585f8d Mon Sep 17 00:00:00 2001
2 From: Eric Anholt <eric@anholt.net>
3 Date: Wed, 14 Sep 2016 08:52:26 +0100
4 Subject: [PATCH] BCM270X: Add an overlay for enabling the vc4 driver in
5 firmware-KMS mode.
6
7 This gets us normal 3D support on top of the existing firmware display
8 stack. There's no real modesetting support, no async pageflips
9 (hurting performance), etc., but it means that the desktop can at
10 least run until we get full native modesetting.
11
12 Signed-off-by: Eric Anholt <eric@anholt.net>
13 ---
14 arch/arm/boot/dts/bcm2708_common.dtsi | 31 +++++---
15 arch/arm/boot/dts/overlays/Makefile | 1 +
16 arch/arm/boot/dts/overlays/README | 11 +++
17 .../arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts | 89 ++++++++++++++++++++++
18 4 files changed, 121 insertions(+), 11 deletions(-)
19 create mode 100644 arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
20
21 --- a/arch/arm/boot/dts/bcm2708_common.dtsi
22 +++ b/arch/arm/boot/dts/bcm2708_common.dtsi
23 @@ -284,6 +284,26 @@
24 status = "disabled";
25 };
26
27 + firmwarekms: firmwarekms@7e600000 {
28 + compatible = "raspberrypi,rpi-firmware-kms";
29 + /* SMI interrupt reg */
30 + reg = <0x7e600000 0x100>;
31 + interrupts = <2 16>;
32 + brcm,firmware = <&firmware>;
33 + status = "disabled";
34 + };
35 +
36 + smi: smi@7e600000 {
37 + compatible = "brcm,bcm2835-smi";
38 + reg = <0x7e600000 0x44>, <0x7e1010b0 0x8>;
39 + interrupts = <2 16>;
40 + brcm,smi-clock-source = <6>;
41 + brcm,smi-clock-divisor = <4>;
42 + dmas = <&dma 4>;
43 + dma-names = "rx-tx";
44 + status = "disabled";
45 + };
46 +
47 dsi1: dsi@7e700000 {
48 #address-cells = <1>;
49 #size-cells = <0>;
50 @@ -325,17 +345,6 @@
51 status = "disabled";
52 };
53
54 - smi: smi@7e600000 {
55 - compatible = "brcm,bcm2835-smi";
56 - reg = <0x7e600000 0x44>, <0x7e1010b0 0x8>;
57 - interrupts = <2 16>;
58 - brcm,smi-clock-source = <6>;
59 - brcm,smi-clock-divisor = <4>;
60 - dmas = <&dma 4>;
61 - dma-names = "rx-tx";
62 - status = "disabled";
63 - };
64 -
65 pixelvalve2: pixelvalve@7e807000 {
66 compatible = "brcm,bcm2835-pixelvalve2";
67 reg = <0x7e807000 0x100>;
68 --- a/arch/arm/boot/dts/overlays/Makefile
69 +++ b/arch/arm/boot/dts/overlays/Makefile
70 @@ -96,6 +96,7 @@ dtbo-$(RPI_DT_OVERLAYS) += spi2-2cs.dtbo
71 dtbo-$(RPI_DT_OVERLAYS) += spi2-3cs.dtbo
72 dtbo-$(RPI_DT_OVERLAYS) += tinylcd35.dtbo
73 dtbo-$(RPI_DT_OVERLAYS) += uart1.dtbo
74 +dtbo-$(RPI_DT_OVERLAYS) += vc4-fkms-v3d.dtbo
75 dtbo-$(RPI_DT_OVERLAYS) += vc4-kms-v3d.dtbo
76 dtbo-$(RPI_DT_OVERLAYS) += vga666.dtbo
77 dtbo-$(RPI_DT_OVERLAYS) += w1-gpio.dtbo
78 --- a/arch/arm/boot/dts/overlays/README
79 +++ b/arch/arm/boot/dts/overlays/README
80 @@ -1215,6 +1215,17 @@ Params: txd1_pin GPIO pin
81 rxd1_pin GPIO pin for RXD1 (15, 33 or 41 - default 15)
82
83
84 +Name: vc4-fkms-v3d
85 +Info: Enable Eric Anholt's DRM VC4 V3D driver on top of the dispmanx
86 + display stack.
87 +Load: dtoverlay=vc4-fkms-v3d,<param>
88 +Params: cma-256 CMA is 256MB, 256MB-aligned (needs 1GB)
89 + cma-192 CMA is 192MB, 256MB-aligned (needs 1GB)
90 + cma-128 CMA is 128MB, 128MB-aligned
91 + cma-96 CMA is 96MB, 128MB-aligned
92 + cma-64 CMA is 64MB, 64MB-aligned
93 +
94 +
95 Name: vc4-kms-v3d
96 Info: Enable Eric Anholt's DRM VC4 HDMI/HVS/V3D driver. Running startx or
97 booting to GUI while this overlay is in use will cause interesting
98 --- /dev/null
99 +++ b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
100 @@ -0,0 +1,89 @@
101 +/*
102 + * vc4-fkms-v3d-overlay.dts
103 + */
104 +
105 +/dts-v1/;
106 +/plugin/;
107 +
108 +/ {
109 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
110 +
111 + fragment@0 {
112 + target-path = "/chosen";
113 + __overlay__ {
114 + bootargs = "cma=256M@256M";
115 + };
116 + };
117 +
118 + fragment@1 {
119 + target-path = "/chosen";
120 + __dormant__ {
121 + bootargs = "cma=192M@256M";
122 + };
123 + };
124 +
125 + fragment@2 {
126 + target-path = "/chosen";
127 + __dormant__ {
128 + bootargs = "cma=128M@128M";
129 + };
130 + };
131 +
132 + fragment@3 {
133 + target-path = "/chosen";
134 + __dormant__ {
135 + bootargs = "cma=96M@128M";
136 + };
137 + };
138 +
139 + fragment@4 {
140 + target-path = "/chosen";
141 + __dormant__ {
142 + bootargs = "cma=64M@64M";
143 + };
144 + };
145 +
146 + fragment@5 {
147 + target = <&fb>;
148 + __overlay__ {
149 + status = "disabled";
150 + };
151 + };
152 +
153 + fragment@6 {
154 + target = <&firmwarekms>;
155 + __overlay__ {
156 + status = "okay";
157 + };
158 + };
159 +
160 + fragment@7 {
161 + target = <&v3d>;
162 + __overlay__ {
163 + interrupts = <1 10>;
164 + status = "okay";
165 + };
166 + };
167 +
168 + fragment@8 {
169 + target = <&gpu>;
170 + __overlay__ {
171 + status = "okay";
172 + };
173 + };
174 +
175 + fragment@9 {
176 + target-path = "/soc/dma";
177 + __overlay__ {
178 + brcm,dma-channel-mask = <0x7f35>;
179 + };
180 + };
181 +
182 + __overrides__ {
183 + cma-256 = <0>,"+0-1-2-3-4";
184 + cma-192 = <0>,"-0+1-2-3-4";
185 + cma-128 = <0>,"-0-1+2-3-4";
186 + cma-96 = <0>,"-0-1-2+3-4";
187 + cma-64 = <0>,"-0-1-2-3+4";
188 + };
189 +};