aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2018-03-27 08:24:01 -0400
committerArnd Bergmann <arnd@arndb.de>2018-03-27 08:24:01 -0400
commit8408e650bb0f99b60045a569804f8bd07a3cca78 (patch)
tree0e65c4f8d02f0fb63d19d8aae5881cdea3757a36
parentc073f31a969accd4d07345fe72e7a9e7b582f93b (diff)
parente65857a64f69077ca95c79028a2e7f3b580fe19e (diff)
Merge tag 'armsoc-versatile-drm-dts' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator into next/dt
Pull "DTS changes for RealView+Versatile" from Linus Walleij: This augments the RealView and Versatile device trees to properly define the VGA and panel connectors in preparation for DRM. * tag 'armsoc-versatile-drm-dts' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator: ARM: dts: Augment panel setting for Versatile ARM: dts: Add Versatile IB2 device tree ARM: dts: Augment VGA connector bridge on Realview PBX ARM: dts: Augment VGA connector bridge on Realview EB ARM: dts: Augment VGA connector bridge on PB1176 ARM: dts: Augment VGA connector bridge on PB11MPcore
-rw-r--r--arch/arm/boot/dts/Makefile1
-rw-r--r--arch/arm/boot/dts/arm-realview-eb.dtsi64
-rw-r--r--arch/arm/boot/dts/arm-realview-pb1176.dts66
-rw-r--r--arch/arm/boot/dts/arm-realview-pb11mp.dts78
-rw-r--r--arch/arm/boot/dts/arm-realview-pbx.dtsi82
-rw-r--r--arch/arm/boot/dts/versatile-ab-ib2.dts26
-rw-r--r--arch/arm/boot/dts/versatile-ab.dts83
7 files changed, 296 insertions, 104 deletions
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 9be131bc22af..d8f49c3b9948 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -1064,6 +1064,7 @@ dtb-$(CONFIG_ARCH_UNIPHIER) += \
1064 uniphier-sld8-ref.dtb 1064 uniphier-sld8-ref.dtb
1065dtb-$(CONFIG_ARCH_VERSATILE) += \ 1065dtb-$(CONFIG_ARCH_VERSATILE) += \
1066 versatile-ab.dtb \ 1066 versatile-ab.dtb \
1067 versatile-ab-ib2.dtb \
1067 versatile-pb.dtb 1068 versatile-pb.dtb
1068dtb-$(CONFIG_ARCH_VEXPRESS) += \ 1069dtb-$(CONFIG_ARCH_VEXPRESS) += \
1069 vexpress-v2p-ca5s.dtb \ 1070 vexpress-v2p-ca5s.dtb \
diff --git a/arch/arm/boot/dts/arm-realview-eb.dtsi b/arch/arm/boot/dts/arm-realview-eb.dtsi
index e2e9599596e2..a917cf8825ca 100644
--- a/arch/arm/boot/dts/arm-realview-eb.dtsi
+++ b/arch/arm/boot/dts/arm-realview-eb.dtsi
@@ -143,6 +143,43 @@
143 port1-otg; 143 port1-otg;
144 }; 144 };
145 145
146 bridge {
147 compatible = "ti,ths8134a", "ti,ths8134";
148 #address-cells = <1>;
149 #size-cells = <0>;
150
151 ports {
152 #address-cells = <1>;
153 #size-cells = <0>;
154
155 port@0 {
156 reg = <0>;
157
158 vga_bridge_in: endpoint {
159 remote-endpoint = <&clcd_pads>;
160 };
161 };
162
163 port@1 {
164 reg = <1>;
165
166 vga_bridge_out: endpoint {
167 remote-endpoint = <&vga_con_in>;
168 };
169 };
170 };
171 };
172
173 vga {
174 compatible = "vga-connector";
175
176 port {
177 vga_con_in: endpoint {
178 remote-endpoint = <&vga_bridge_out>;
179 };
180 };
181 };
182
146 /* These peripherals are inside the FPGA */ 183 /* These peripherals are inside the FPGA */
147 fpga { 184 fpga {
148 #address-cells = <1>; 185 #address-cells = <1>;
@@ -409,36 +446,15 @@
409 interrupt-names = "combined"; 446 interrupt-names = "combined";
410 clocks = <&oscclk0>, <&pclk>; 447 clocks = <&oscclk0>, <&pclk>;
411 clock-names = "clcdclk", "apb_pclk"; 448 clock-names = "clcdclk", "apb_pclk";
449 /* 1024x768 16bpp @65MHz works fine */
450 max-memory-bandwidth = <95000000>;
412 451
413 port { 452 port {
414 clcd_pads: endpoint { 453 clcd_pads: endpoint {
415 remote-endpoint = <&clcd_panel>; 454 remote-endpoint = <&vga_bridge_in>;
416 arm,pl11x,tft-r0g0b0-pads = <0 8 16>; 455 arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
417 }; 456 };
418 }; 457 };
419
420 panel {
421 compatible = "panel-dpi";
422
423 port {
424 clcd_panel: endpoint {
425 remote-endpoint = <&clcd_pads>;
426 };
427 };
428
429 /* Standard 640x480 VGA timings */
430 panel-timing {
431 clock-frequency = <25175000>;
432 hactive = <640>;
433 hback-porch = <48>;
434 hfront-porch = <16>;
435 hsync-len = <96>;
436 vactive = <480>;
437 vback-porch = <33>;
438 vfront-porch = <10>;
439 vsync-len = <2>;
440 };
441 };
442 }; 458 };
443 }; 459 };
444}; 460};
diff --git a/arch/arm/boot/dts/arm-realview-pb1176.dts b/arch/arm/boot/dts/arm-realview-pb1176.dts
index c789564f2803..f935b72d3d96 100644
--- a/arch/arm/boot/dts/arm-realview-pb1176.dts
+++ b/arch/arm/boot/dts/arm-realview-pb1176.dts
@@ -161,6 +161,43 @@
161 port1-otg; 161 port1-otg;
162 }; 162 };
163 163
164 bridge {
165 compatible = "ti,ths8134a", "ti,ths8134";
166 #address-cells = <1>;
167 #size-cells = <0>;
168
169 ports {
170 #address-cells = <1>;
171 #size-cells = <0>;
172
173 port@0 {
174 reg = <0>;
175
176 vga_bridge_in: endpoint {
177 remote-endpoint = <&clcd_pads>;
178 };
179 };
180
181 port@1 {
182 reg = <1>;
183
184 vga_bridge_out: endpoint {
185 remote-endpoint = <&vga_con_in>;
186 };
187 };
188 };
189 };
190
191 vga {
192 compatible = "vga-connector";
193
194 port {
195 vga_con_in: endpoint {
196 remote-endpoint = <&vga_bridge_out>;
197 };
198 };
199 };
200
164 soc { 201 soc {
165 #address-cells = <1>; 202 #address-cells = <1>;
166 #size-cells = <1>; 203 #size-cells = <1>;
@@ -403,36 +440,15 @@
403 interrupts = <0 47 IRQ_TYPE_LEVEL_HIGH>; 440 interrupts = <0 47 IRQ_TYPE_LEVEL_HIGH>;
404 clocks = <&oscclk0>, <&pclk>; 441 clocks = <&oscclk0>, <&pclk>;
405 clock-names = "clcdclk", "apb_pclk"; 442 clock-names = "clcdclk", "apb_pclk";
443 /* 1024x768 16bpp @65MHz works fine */
444 max-memory-bandwidth = <95000000>;
406 445
407 port { 446 port {
408 clcd_pads: endpoint { 447 clcd_pads: endpoint {
409 remote-endpoint = <&clcd_panel>; 448 remote-endpoint = <&vga_bridge_in>;
410 arm,pl11x,tft-r0g0b0-pads = <0 8 16>; 449 arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
411 }; 450 };
412 }; 451 };
413
414 panel {
415 compatible = "panel-dpi";
416
417 port {
418 clcd_panel: endpoint {
419 remote-endpoint = <&clcd_pads>;
420 };
421 };
422
423 /* Standard 640x480 VGA timings */
424 panel-timing {
425 clock-frequency = <25175000>;
426 hactive = <640>;
427 hback-porch = <48>;
428 hfront-porch = <16>;
429 hsync-len = <96>;
430 vactive = <480>;
431 vback-porch = <33>;
432 vfront-porch = <10>;
433 vsync-len = <2>;
434 };
435 };
436 }; 452 };
437 }; 453 };
438 454
@@ -564,7 +580,5 @@
564 clocks = <&pclk>; 580 clocks = <&pclk>;
565 clock-names = "apb_pclk"; 581 clock-names = "apb_pclk";
566 }; 582 };
567
568
569 }; 583 };
570}; 584};
diff --git a/arch/arm/boot/dts/arm-realview-pb11mp.dts b/arch/arm/boot/dts/arm-realview-pb11mp.dts
index 3944765ac4b0..36203288de42 100644
--- a/arch/arm/boot/dts/arm-realview-pb11mp.dts
+++ b/arch/arm/boot/dts/arm-realview-pb11mp.dts
@@ -242,6 +242,49 @@
242 bank-width = <4>; 242 bank-width = <4>;
243 }; 243 };
244 244
245 bridge {
246 compatible = "ti,ths8134a", "ti,ths8134";
247 #address-cells = <1>;
248 #size-cells = <0>;
249
250 ports {
251 #address-cells = <1>;
252 #size-cells = <0>;
253
254 port@0 {
255 reg = <0>;
256
257 vga_bridge_in: endpoint {
258 remote-endpoint = <&clcd_pads>;
259 };
260 };
261
262 port@1 {
263 reg = <1>;
264
265 vga_bridge_out: endpoint {
266 remote-endpoint = <&vga_con_in>;
267 };
268 };
269 };
270 };
271
272 vga {
273 /*
274 * This DDC I2C is connected directly to the DVI portions
275 * of the connector, so it's not really working when the
276 * monitor is connected to the VGA connector.
277 */
278 compatible = "vga-connector";
279 ddc-i2c-bus = <&i2c1>;
280
281 port {
282 vga_con_in: endpoint {
283 remote-endpoint = <&vga_bridge_out>;
284 };
285 };
286 };
287
245 soc { 288 soc {
246 #address-cells = <1>; 289 #address-cells = <1>;
247 #size-cells = <1>; 290 #size-cells = <1>;
@@ -575,6 +618,13 @@
575 clock-names = "apb_pclk"; 618 clock-names = "apb_pclk";
576 }; 619 };
577 620
621 i2c1: i2c@10016000 {
622 #address-cells = <1>;
623 #size-cells = <0>;
624 compatible = "arm,versatile-i2c";
625 reg = <0x10016000 0x1000>;
626 };
627
578 rtc: rtc@10017000 { 628 rtc: rtc@10017000 {
579 compatible = "arm,pl031", "arm,primecell"; 629 compatible = "arm,pl031", "arm,primecell";
580 reg = <0x10017000 0x1000>; 630 reg = <0x10017000 0x1000>;
@@ -609,37 +659,15 @@
609 interrupts = <0 23 IRQ_TYPE_LEVEL_HIGH>; 659 interrupts = <0 23 IRQ_TYPE_LEVEL_HIGH>;
610 clocks = <&oscclk4>, <&pclk>; 660 clocks = <&oscclk4>, <&pclk>;
611 clock-names = "clcdclk", "apb_pclk"; 661 clock-names = "clcdclk", "apb_pclk";
612 max-memory-bandwidth = <130000000>; /* 16bpp @ 63.5MHz */ 662 /* 1024x768 16bpp @65MHz works fine */
663 max-memory-bandwidth = <95000000>;
613 664
614 port { 665 port {
615 clcd_pads: endpoint { 666 clcd_pads: endpoint {
616 remote-endpoint = <&clcd_panel>; 667 remote-endpoint = <&vga_bridge_in>;
617 arm,pl11x,tft-r0g0b0-pads = <0 8 16>; 668 arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
618 }; 669 };
619 }; 670 };
620
621 panel {
622 compatible = "panel-dpi";
623
624 port {
625 clcd_panel: endpoint {
626 remote-endpoint = <&clcd_pads>;
627 };
628 };
629
630 /* Standard 640x480 VGA timings */
631 panel-timing {
632 clock-frequency = <25175000>;
633 hactive = <640>;
634 hback-porch = <48>;
635 hfront-porch = <16>;
636 hsync-len = <96>;
637 vactive = <480>;
638 vback-porch = <33>;
639 vfront-porch = <10>;
640 vsync-len = <2>;
641 };
642 };
643 }; 671 };
644 672
645 /* 673 /*
diff --git a/arch/arm/boot/dts/arm-realview-pbx.dtsi b/arch/arm/boot/dts/arm-realview-pbx.dtsi
index aeb49c4bd773..10868ba3277f 100644
--- a/arch/arm/boot/dts/arm-realview-pbx.dtsi
+++ b/arch/arm/boot/dts/arm-realview-pbx.dtsi
@@ -34,7 +34,8 @@
34 serial1 = &serial1; 34 serial1 = &serial1;
35 serial2 = &serial2; 35 serial2 = &serial2;
36 serial3 = &serial3; 36 serial3 = &serial3;
37 i2c0 = &i2c; 37 i2c0 = &i2c0;
38 i2c1 = &i2c1;
38 }; 39 };
39 40
40 memory { 41 memory {
@@ -158,6 +159,49 @@
158 port1-otg; 159 port1-otg;
159 }; 160 };
160 161
162 bridge {
163 compatible = "ti,ths8134a", "ti,ths8134";
164 #address-cells = <1>;
165 #size-cells = <0>;
166
167 ports {
168 #address-cells = <1>;
169 #size-cells = <0>;
170
171 port@0 {
172 reg = <0>;
173
174 vga_bridge_in: endpoint {
175 remote-endpoint = <&clcd_pads>;
176 };
177 };
178
179 port@1 {
180 reg = <1>;
181
182 vga_bridge_out: endpoint {
183 remote-endpoint = <&vga_con_in>;
184 };
185 };
186 };
187 };
188
189 vga {
190 /*
191 * This DDC I2C is connected directly to the DVI portions
192 * of the connector, so it's not really working when the
193 * monitor is connected to the VGA connector.
194 */
195 compatible = "vga-connector";
196 ddc-i2c-bus = <&i2c1>;
197
198 port {
199 vga_con_in: endpoint {
200 remote-endpoint = <&vga_bridge_out>;
201 };
202 };
203 };
204
161 soc: soc@0 { 205 soc: soc@0 {
162 compatible = "arm,realview-pbx-soc", "simple-bus"; 206 compatible = "arm,realview-pbx-soc", "simple-bus";
163 #address-cells = <1>; 207 #address-cells = <1>;
@@ -285,7 +329,7 @@
285 <&timclk>; 329 <&timclk>;
286 }; 330 };
287 331
288 i2c: i2c@10002000 { 332 i2c0: i2c@10002000 {
289 #address-cells = <1>; 333 #address-cells = <1>;
290 #size-cells = <0>; 334 #size-cells = <0>;
291 compatible = "arm,versatile-i2c"; 335 compatible = "arm,versatile-i2c";
@@ -396,7 +440,12 @@
396 clock-names = "apb_pclk"; 440 clock-names = "apb_pclk";
397 }; 441 };
398 442
399 /* DVI serial bus control is at 10016000 */ 443 i2c1: i2c@10016000 {
444 #address-cells = <1>;
445 #size-cells = <0>;
446 compatible = "arm,versatile-i2c";
447 reg = <0x10016000 0x1000>;
448 };
400 449
401 rtc: rtc@10017000 { 450 rtc: rtc@10017000 {
402 compatible = "arm,pl031", "arm,primecell"; 451 compatible = "arm,pl031", "arm,primecell";
@@ -506,36 +555,15 @@
506 interrupt-names = "combined"; 555 interrupt-names = "combined";
507 clocks = <&oscclk4>, <&pclk>; 556 clocks = <&oscclk4>, <&pclk>;
508 clock-names = "clcdclk", "apb_pclk"; 557 clock-names = "clcdclk", "apb_pclk";
558 /* 1024x768 16bpp @65MHz works fine */
559 max-memory-bandwidth = <95000000>;
509 560
510 port { 561 port {
511 clcd_pads: endpoint { 562 clcd_pads: endpoint {
512 remote-endpoint = <&clcd_panel>; 563 remote-endpoint = <&vga_bridge_in>;
513 arm,pl11x,tft-r0g0b0-pads = <0 8 16>; 564 arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
514 }; 565 };
515 }; 566 };
516
517 panel {
518 compatible = "panel-dpi";
519
520 port {
521 clcd_panel: endpoint {
522 remote-endpoint = <&clcd_pads>;
523 };
524 };
525
526 /* Standard 640x480 VGA timings */
527 panel-timing {
528 clock-frequency = <25175000>;
529 hactive = <640>;
530 hback-porch = <48>;
531 hfront-porch = <16>;
532 hsync-len = <96>;
533 vactive = <480>;
534 vback-porch = <33>;
535 vfront-porch = <10>;
536 vsync-len = <2>;
537 };
538 };
539 }; 567 };
540 }; 568 };
541}; 569};
diff --git a/arch/arm/boot/dts/versatile-ab-ib2.dts b/arch/arm/boot/dts/versatile-ab-ib2.dts
new file mode 100644
index 000000000000..5890cb974f78
--- /dev/null
+++ b/arch/arm/boot/dts/versatile-ab-ib2.dts
@@ -0,0 +1,26 @@
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * The Versatile AB with the IB2 expansion board mounted.
4 * This works as a superset of the Versatile AB.
5 */
6
7#include "versatile-ab.dts"
8
9/ {
10 model = "ARM Versatile AB + IB2 board";
11
12 /* Special IB2 control register */
13 ib2_syscon@27000000 {
14 compatible = "arm,versatile-ib2-syscon", "syscon", "simple-mfd";
15 reg = <0x27000000 0x4>;
16
17 led@00.4 {
18 compatible = "register-bit-led";
19 offset = <0x00>;
20 mask = <0x10>;
21 label = "versatile-ib2:0";
22 linux,default-trigger = "heartbeat";
23 default-state = "on";
24 };
25 };
26};
diff --git a/arch/arm/boot/dts/versatile-ab.dts b/arch/arm/boot/dts/versatile-ab.dts
index 4a51612996bc..5f61d3609027 100644
--- a/arch/arm/boot/dts/versatile-ab.dts
+++ b/arch/arm/boot/dts/versatile-ab.dts
@@ -30,6 +30,43 @@
30 clock-frequency = <24000000>; 30 clock-frequency = <24000000>;
31 }; 31 };
32 32
33 bridge {
34 compatible = "ti,ths8134b", "ti,ths8134";
35 #address-cells = <1>;
36 #size-cells = <0>;
37
38 ports {
39 #address-cells = <1>;
40 #size-cells = <0>;
41
42 port@0 {
43 reg = <0>;
44
45 vga_bridge_in: endpoint {
46 remote-endpoint = <&clcd_pads_vga_dac>;
47 };
48 };
49
50 port@1 {
51 reg = <1>;
52
53 vga_bridge_out: endpoint {
54 remote-endpoint = <&vga_con_in>;
55 };
56 };
57 };
58 };
59
60 vga {
61 compatible = "vga-connector";
62
63 port {
64 vga_con_in: endpoint {
65 remote-endpoint = <&vga_bridge_out>;
66 };
67 };
68 };
69
33 core-module@10000000 { 70 core-module@10000000 {
34 compatible = "arm,core-module-versatile", "syscon", "simple-mfd"; 71 compatible = "arm,core-module-versatile", "syscon", "simple-mfd";
35 reg = <0x10000000 0x200>; 72 reg = <0x10000000 0x200>;
@@ -230,7 +267,39 @@
230 reg = <0x10120000 0x1000>; 267 reg = <0x10120000 0x1000>;
231 interrupts = <16>; 268 interrupts = <16>;
232 clocks = <&osc1>, <&pclk>; 269 clocks = <&osc1>, <&pclk>;
233 clock-names = "clcd", "apb_pclk"; 270 clock-names = "clcdclk", "apb_pclk";
271 /* 800x600 16bpp @ 36MHz works fine */
272 max-memory-bandwidth = <54000000>;
273
274 /*
275 * This port is routed through a PLD (Programmable
276 * Logic Device) that routes the output from the CLCD
277 * (after transformations) to the VGA DAC and also an
278 * external panel connector. The PLD is essential for
279 * supporting RGB565/BGR565.
280 *
281 * The signals from the port thus reaches two endpoints.
282 * The PLD is managed through a few special bits in the
283 * FPGA "sysreg".
284 *
285 * This arrangement can be clearly seen in
286 * ARM DUI 0225D, page 3-41, figure 3-19.
287 */
288 port@0 {
289 #address-cells = <1>;
290 #size-cells = <0>;
291
292 clcd_pads_panel: endpoint@0 {
293 reg = <0>;
294 remote-endpoint = <&panel_in>;
295 arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
296 };
297 clcd_pads_vga_dac: endpoint@1 {
298 reg = <1>;
299 remote-endpoint = <&vga_bridge_in>;
300 arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
301 };
302 };
234 }; 303 };
235 304
236 sctl@101e0000 { 305 sctl@101e0000 {
@@ -319,8 +388,18 @@
319 ranges = <0 0x10000000 0x10000>; 388 ranges = <0 0x10000000 0x10000>;
320 389
321 sysreg@0 { 390 sysreg@0 {
322 compatible = "arm,versatile-sysreg", "syscon"; 391 compatible = "arm,versatile-sysreg", "syscon", "simple-mfd";
323 reg = <0x00000 0x1000>; 392 reg = <0x00000 0x1000>;
393
394 panel: display@0 {
395 compatible = "arm,versatile-tft-panel";
396
397 port {
398 panel_in: endpoint {
399 remote-endpoint = <&clcd_pads_panel>;
400 };
401 };
402 };
324 }; 403 };
325 404
326 aaci@4000 { 405 aaci@4000 {