1 From c18bed87cf9c823818221355bbe3508a60221080 Mon Sep 17 00:00:00 2001
2 From: notro <notro@tronnes.org>
3 Date: Wed, 9 Jul 2014 14:46:08 +0200
4 Subject: [PATCH 025/148] BCM2708: Add core Device Tree support
6 Add the bare minimum needed to boot BCM2708 from a Device Tree.
8 Signed-off-by: Noralf Tronnes <notro@tronnes.org>
10 BCM2708: DT: change 'axi' nodename to 'soc'
12 Change DT node named 'axi' to 'soc' so it matches ARCH_BCM2835.
13 The VC4 bootloader fills in certain properties in the 'axi' subtree,
14 but since this is part of an upstreaming effort, the name is changed.
16 Signed-off-by: Noralf Tronnes notro@tronnes.org
18 BCM2708_DT: Correct length of the peripheral space
20 arch/arm/boot/dts/Makefile | 27 ++
21 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 140 ++++++
22 arch/arm/boot/dts/bcm2708-rpi-b.dts | 130 ++++++
23 arch/arm/boot/dts/bcm2708-rpi-cm.dts | 18 +
24 arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 51 +++
25 arch/arm/boot/dts/bcm2708.dtsi | 19 +
26 arch/arm/boot/dts/bcm2708_common.dtsi | 230 ++++++++++
27 arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 140 ++++++
28 arch/arm/boot/dts/bcm2709.dtsi | 70 +++
29 arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 45 +-
30 arch/arm/boot/dts/bcm2835-rpi-b.dts | 29 +-
31 arch/arm/boot/dts/bcm2835-rpi.dtsi | 97 +++-
32 arch/arm/boot/dts/bcm2835.dtsi | 45 +-
33 arch/arm/boot/dts/overlays/Makefile | 57 +++
34 arch/arm/boot/dts/overlays/README | 493 +++++++++++++++++++++
35 arch/arm/boot/dts/overlays/ads7846-overlay.dts | 83 ++++
36 .../dts/overlays/bmp085_i2c-sensor-overlay.dts | 23 +
37 arch/arm/boot/dts/overlays/dht11-overlay.dts | 39 ++
38 arch/arm/boot/dts/overlays/enc28j60-overlay.dts | 50 +++
39 .../boot/dts/overlays/hifiberry-amp-overlay.dts | 39 ++
40 .../boot/dts/overlays/hifiberry-dac-overlay.dts | 34 ++
41 .../dts/overlays/hifiberry-dacplus-overlay.dts | 39 ++
42 .../boot/dts/overlays/hifiberry-digi-overlay.dts | 39 ++
43 arch/arm/boot/dts/overlays/hy28a-overlay.dts | 87 ++++
44 arch/arm/boot/dts/overlays/hy28b-overlay.dts | 142 ++++++
45 arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts | 49 ++
46 arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts | 13 +
47 arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts | 39 ++
48 .../boot/dts/overlays/iqaudio-dacplus-overlay.dts | 39 ++
49 arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts | 57 +++
50 .../arm/boot/dts/overlays/mcp2515-can0-overlay.dts | 69 +++
51 arch/arm/boot/dts/overlays/mmc-overlay.dts | 19 +
52 arch/arm/boot/dts/overlays/mz61581-overlay.dts | 109 +++++
53 arch/arm/boot/dts/overlays/piscreen-overlay.dts | 96 ++++
54 .../dts/overlays/pitft28-resistive-overlay.dts | 115 +++++
55 arch/arm/boot/dts/overlays/pps-gpio-overlay.dts | 34 ++
56 arch/arm/boot/dts/overlays/rpi-dac-overlay.dts | 34 ++
57 arch/arm/boot/dts/overlays/rpi-display-overlay.dts | 82 ++++
58 arch/arm/boot/dts/overlays/rpi-proto-overlay.dts | 39 ++
59 arch/arm/boot/dts/overlays/sdhost-overlay.dts | 78 ++++
60 arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts | 18 +
61 arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts | 18 +
62 arch/arm/boot/dts/overlays/tinylcd35-overlay.dts | 216 +++++++++
63 arch/arm/boot/dts/overlays/w1-gpio-overlay.dts | 39 ++
64 .../boot/dts/overlays/w1-gpio-pullup-overlay.dts | 41 ++
65 45 files changed, 3316 insertions(+), 54 deletions(-)
66 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
67 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b.dts
68 create mode 100755 arch/arm/boot/dts/bcm2708-rpi-cm.dts
69 create mode 100644 arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
70 create mode 100644 arch/arm/boot/dts/bcm2708.dtsi
71 create mode 100644 arch/arm/boot/dts/bcm2708_common.dtsi
72 create mode 100644 arch/arm/boot/dts/bcm2709-rpi-2-b.dts
73 create mode 100644 arch/arm/boot/dts/bcm2709.dtsi
74 create mode 100644 arch/arm/boot/dts/overlays/Makefile
75 create mode 100644 arch/arm/boot/dts/overlays/README
76 create mode 100644 arch/arm/boot/dts/overlays/ads7846-overlay.dts
77 create mode 100644 arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts
78 create mode 100644 arch/arm/boot/dts/overlays/dht11-overlay.dts
79 create mode 100644 arch/arm/boot/dts/overlays/enc28j60-overlay.dts
80 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
81 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
82 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
83 create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
84 create mode 100644 arch/arm/boot/dts/overlays/hy28a-overlay.dts
85 create mode 100644 arch/arm/boot/dts/overlays/hy28b-overlay.dts
86 create mode 100644 arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
87 create mode 100644 arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts
88 create mode 100644 arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
89 create mode 100644 arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
90 create mode 100644 arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts
91 create mode 100755 arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
92 create mode 100644 arch/arm/boot/dts/overlays/mmc-overlay.dts
93 create mode 100644 arch/arm/boot/dts/overlays/mz61581-overlay.dts
94 create mode 100644 arch/arm/boot/dts/overlays/piscreen-overlay.dts
95 create mode 100644 arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
96 create mode 100644 arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
97 create mode 100644 arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
98 create mode 100644 arch/arm/boot/dts/overlays/rpi-display-overlay.dts
99 create mode 100644 arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
100 create mode 100644 arch/arm/boot/dts/overlays/sdhost-overlay.dts
101 create mode 100644 arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts
102 create mode 100644 arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts
103 create mode 100644 arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
104 create mode 100644 arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
105 create mode 100644 arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
107 --- a/arch/arm/boot/dts/Makefile
108 +++ b/arch/arm/boot/dts/Makefile
110 ifeq ($(CONFIG_OF),y)
112 +dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b.dtb
113 +dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b-plus.dtb
114 +dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-cm.dtb
115 +dtb-$(CONFIG_BCM2709_DT) += bcm2709-rpi-2-b.dtb
118 +ifeq ($(CONFIG_BCM2708_DT),y)
121 +ifeq ($(CONFIG_BCM2709_DT),y)
124 +ifeq ($(CONFIG_ARCH_BCM2835),y)
128 dtb-$(CONFIG_ARCH_ALPINE) += \
130 dtb-$(CONFIG_MACH_ASM9260) += \
131 @@ -660,7 +676,18 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
136 +targets += dtbs dtbs_install
144 +# Enable fixups to support overlays on BCM2708 platforms
145 +ifeq ($(RPI_DT_OVERLAYS),y)
149 +subdir-y += overlays
151 +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
155 +/include/ "bcm2708.dtsi"
158 + compatible = "brcm,bcm2708";
159 + model = "Raspberry Pi Model B+";
182 + spi0_pins: spi0_pins {
183 + brcm,pins = <7 8 9 10 11>;
184 + brcm,function = <4>; /* alt0 */
189 + brcm,function = <4>;
194 + brcm,function = <4>;
198 + brcm,pins = <18 19 20 21>;
199 + brcm,function = <4>; /* alt0 */
217 + pinctrl-names = "default";
218 + pinctrl-0 = <&spi0_pins>;
221 + compatible = "spidev";
222 + reg = <0>; /* CE0 */
223 + #address-cells = <1>;
225 + spi-max-frequency = <500000>;
229 + compatible = "spidev";
230 + reg = <1>; /* CE1 */
231 + #address-cells = <1>;
233 + spi-max-frequency = <500000>;
238 + pinctrl-names = "default";
239 + pinctrl-0 = <&i2c0_pins>;
240 + clock-frequency = <100000>;
244 + pinctrl-names = "default";
245 + pinctrl-0 = <&i2c1_pins>;
246 + clock-frequency = <100000>;
250 + #sound-dai-cells = <0>;
251 + pinctrl-names = "default";
252 + pinctrl-0 = <&i2s_pins>;
258 + linux,default-trigger = "mmc0";
259 + gpios = <&gpio 47 0>;
264 + linux,default-trigger = "input";
265 + gpios = <&gpio 35 0>;
271 + uart0 = <&uart0>,"status";
272 + uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
273 + i2s = <&i2s>,"status";
274 + spi = <&spi0>,"status";
275 + i2c0 = <&i2c0>,"status";
276 + i2c1 = <&i2c1>,"status";
277 + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
278 + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
280 + act_led_gpio = <&act_led>,"gpios:4";
281 + act_led_activelow = <&act_led>,"gpios:8";
282 + act_led_trigger = <&act_led>,"linux,default-trigger";
284 + pwr_led_gpio = <&pwr_led>,"gpios:4";
285 + pwr_led_activelow = <&pwr_led>,"gpios:8";
286 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
288 + audio = <&audio>,"status";
289 + watchdog = <&watchdog>,"status";
290 + random = <&random>,"status";
294 +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
298 +/include/ "bcm2708.dtsi"
301 + compatible = "brcm,bcm2708";
302 + model = "Raspberry Pi Model B";
325 + spi0_pins: spi0_pins {
326 + brcm,pins = <7 8 9 10 11>;
327 + brcm,function = <4>; /* alt0 */
332 + brcm,function = <4>;
337 + brcm,function = <4>;
341 + brcm,pins = <28 29 30 31>;
342 + brcm,function = <4>; /* alt0 */
360 + pinctrl-names = "default";
361 + pinctrl-0 = <&spi0_pins>;
364 + compatible = "spidev";
365 + reg = <0>; /* CE0 */
366 + #address-cells = <1>;
368 + spi-max-frequency = <500000>;
372 + compatible = "spidev";
373 + reg = <1>; /* CE1 */
374 + #address-cells = <1>;
376 + spi-max-frequency = <500000>;
381 + pinctrl-names = "default";
382 + pinctrl-0 = <&i2c0_pins>;
383 + clock-frequency = <100000>;
387 + pinctrl-names = "default";
388 + pinctrl-0 = <&i2c1_pins>;
389 + clock-frequency = <100000>;
393 + #sound-dai-cells = <0>;
394 + pinctrl-names = "default";
395 + pinctrl-0 = <&i2s_pins>;
401 + linux,default-trigger = "mmc0";
402 + gpios = <&gpio 16 1>;
408 + uart0 = <&uart0>,"status";
409 + uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
410 + i2s = <&i2s>,"status";
411 + spi = <&spi0>,"status";
412 + i2c0 = <&i2c0>,"status";
413 + i2c1 = <&i2c1>,"status";
414 + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
415 + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
417 + act_led_gpio = <&act_led>,"gpios:4";
418 + act_led_activelow = <&act_led>,"gpios:8";
419 + act_led_trigger = <&act_led>,"linux,default-trigger";
421 + audio = <&audio>,"status";
422 + watchdog = <&watchdog>,"status";
423 + random = <&random>,"status";
427 +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts
431 +/include/ "bcm2708-rpi-cm.dtsi"
434 + model = "Raspberry Pi Compute Module";
443 + uart0 = <&uart0>,"status";
444 + uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
448 +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
450 +/include/ "bcm2708.dtsi"
476 + linux,default-trigger = "mmc0";
477 + gpios = <&gpio 47 0>;
496 + act_led_gpio = <&act_led>,"gpios:4";
497 + act_led_activelow = <&act_led>,"gpios:8";
498 + act_led_trigger = <&act_led>,"linux,default-trigger";
502 +++ b/arch/arm/boot/dts/bcm2708.dtsi
504 +/include/ "bcm2708_common.dtsi"
507 + compatible = "brcm,bcm2708";
511 + /* No padding required - the boot loader can do that. */
516 + ranges = <0x7e000000 0x20000000 0x01000000>;
519 + compatible = "arm,arm1176-pmu";
524 +++ b/arch/arm/boot/dts/bcm2708_common.dtsi
526 +/include/ "skeleton.dtsi"
529 + interrupt-parent = <&intc>;
531 + /* Onboard audio */
533 + compatible = "brcm,bcm2835-audio";
534 + brcm,pwm-channels = <8>;
535 + status = "disabled";
539 + compatible = "simple-bus";
540 + #address-cells = <1>;
543 + dma: dma@7e007000 {
544 + compatible = "brcm,bcm2835-dma";
545 + reg = <0x7e007000 0xf00>;
546 + interrupts = <1 16>,
561 + brcm,dma-channel-mask = <0x7f35>;
564 + intc: interrupt-controller {
565 + compatible = "brcm,bcm2708-armctrl-ic";
566 + reg = <0x7e00b200 0x200>;
567 + interrupt-controller;
568 + #interrupt-cells = <2>;
571 + watchdog: watchdog@7e100000 {
572 + compatible = "brcm,bcm2835-pm-wdt";
573 + reg = <0x7e100000 0x28>;
574 + status = "disabled";
577 + random: rng@7e104000 {
578 + compatible = "brcm,bcm2835-rng";
579 + reg = <0x7e104000 0x10>;
580 + status = "disabled";
583 + mailbox: mailbox@7e00b800 {
584 + compatible = "brcm,bcm2708-vcio";
585 + reg = <0x7e00b880 0x40>;
586 + interrupts = <0 1>;
590 + compatible = "brcm,bcm2835-gpio";
591 + reg = <0x7e200000 0xb4>;
592 + interrupts = <2 17>, <2 18>;
597 + interrupt-controller;
598 + #interrupt-cells = <2>;
601 + mmc: mmc@7e300000 {
602 + compatible = "brcm,bcm2835-mmc";
603 + reg = <0x7e300000 0x100>;
604 + interrupts = <2 30>;
605 + clocks = <&clk_mmc>;
608 + dma-names = "tx", "rx";
609 + status = "disabled";
612 + uart0: uart@7e201000 {
613 + compatible = "arm,pl011", "arm,primecell";
614 + reg = <0x7e201000 0x1000>;
615 + interrupts = <2 25>;
616 + clocks = <&clk_uart0 &clk_apb_p>;
617 + clock-names = "uartclk","apb_pclk";
618 + arm,primecell-periphid = <0x00241011>; // For an explanation, see
619 + // https://github.com/raspberrypi/linux/commit/13731d862cf5219216533a3b0de052cee4cc5038
620 + status = "disabled";
623 + i2s: i2s@7e203000 {
624 + compatible = "brcm,bcm2708-i2s";
625 + reg = <0x7e203000 0x20>,
630 + dma-names = "tx", "rx";
631 + status = "disabled";
634 + spi0: spi@7e204000 {
635 + compatible = "brcm,bcm2835-spi";
636 + reg = <0x7e204000 0x1000>;
637 + interrupts = <2 22>;
638 + clocks = <&clk_spi>;
639 + #address-cells = <1>;
641 + status = "disabled";
642 + /* the dma channels */
643 + dmas = <&dma 6>, <&dma 7>;
644 + dma-names = "tx", "rx";
645 + /* the chipselects used - <0> means native GPIO
646 + * add more gpios if necessary as <&gpio 6 1>
647 + * (but do not forget to make them output!)
649 + cs-gpios = <0>, <0>;
652 + i2c0: i2c@7e205000 {
653 + compatible = "brcm,bcm2708-i2c";
654 + reg = <0x7e205000 0x1000>;
655 + interrupts = <2 21>;
656 + clocks = <&clk_i2c>;
657 + #address-cells = <1>;
659 + status = "disabled";
662 + uart1: uart@7e215040 {
663 + compatible = "brcm,bcm2835-aux-uart", "ns16550";
664 + reg = <0x7e215040 0x40>;
665 + interrupts = <1 29>;
666 + clock-frequency = <500000000>;
669 + status = "disabled";
672 + i2c1: i2c@7e804000 {
673 + compatible = "brcm,bcm2708-i2c";
674 + reg = <0x7e804000 0x1000>;
675 + interrupts = <2 21>;
676 + clocks = <&clk_i2c>;
677 + #address-cells = <1>;
679 + status = "disabled";
682 + usb: usb@7e980000 {
683 + compatible = "brcm,bcm2708-usb";
684 + reg = <0x7e980000 0x10000>,
685 + <0x7e006000 0x1000>;
686 + interrupts = <2 0>,
691 + compatible = "gpio-leds";
695 + compatible = "brcm,bcm2708-fb";
696 + status = "disabled";
700 + compatible = "brcm,bcm2835-vchiq";
701 + reg = <0x7e00b840 0xf>;
702 + interrupts = <0 2>;
706 + compatible = "brcm,bcm2835-thermal";
711 + compatible = "simple-bus";
712 + #address-cells = <1>;
716 + compatible = "fixed-clock";
718 + #clock-cells = <0>;
719 + clock-output-names = "mmc";
720 + clock-frequency = <250000000>;
724 + compatible = "fixed-clock";
726 + #clock-cells = <0>;
727 + clock-output-names = "i2c";
728 + clock-frequency = <250000000>;
732 + compatible = "fixed-clock";
734 + #clock-cells = <0>;
735 + clock-output-names = "spi";
736 + clock-frequency = <250000000>;
739 + clk_uart0: clock@3 {
740 + compatible = "fixed-clock";
742 + #clock-cells = <0>;
743 + clock-output-names = "uart0_pclk";
744 + clock-frequency = <3000000>;
747 + clk_apb_p: clock@4 {
748 + compatible = "fixed-clock";
750 + #clock-cells = <0>;
751 + clock-output-names = "apb_pclk";
752 + clock-frequency = <126000000>;
757 +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
761 +/include/ "bcm2709.dtsi"
764 + compatible = "brcm,bcm2709";
765 + model = "Raspberry Pi 2 Model B";
788 + spi0_pins: spi0_pins {
789 + brcm,pins = <7 8 9 10 11>;
790 + brcm,function = <4>; /* alt0 */
795 + brcm,function = <4>;
800 + brcm,function = <4>;
804 + brcm,pins = <18 19 20 21>;
805 + brcm,function = <4>; /* alt0 */
823 + pinctrl-names = "default";
824 + pinctrl-0 = <&spi0_pins>;
827 + compatible = "spidev";
828 + reg = <0>; /* CE0 */
829 + #address-cells = <1>;
831 + spi-max-frequency = <500000>;
835 + compatible = "spidev";
836 + reg = <1>; /* CE1 */
837 + #address-cells = <1>;
839 + spi-max-frequency = <500000>;
844 + pinctrl-names = "default";
845 + pinctrl-0 = <&i2c0_pins>;
846 + clock-frequency = <100000>;
850 + pinctrl-names = "default";
851 + pinctrl-0 = <&i2c1_pins>;
852 + clock-frequency = <100000>;
856 + #sound-dai-cells = <0>;
857 + pinctrl-names = "default";
858 + pinctrl-0 = <&i2s_pins>;
864 + linux,default-trigger = "mmc0";
865 + gpios = <&gpio 47 0>;
870 + linux,default-trigger = "input";
871 + gpios = <&gpio 35 0>;
877 + uart0 = <&uart0>,"status";
878 + uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
879 + i2s = <&i2s>,"status";
880 + spi = <&spi0>,"status";
881 + i2c0 = <&i2c0>,"status";
882 + i2c1 = <&i2c1>,"status";
883 + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
884 + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
886 + act_led_gpio = <&act_led>,"gpios:4";
887 + act_led_activelow = <&act_led>,"gpios:8";
888 + act_led_trigger = <&act_led>,"linux,default-trigger";
890 + pwr_led_gpio = <&pwr_led>,"gpios:4";
891 + pwr_led_activelow = <&pwr_led>,"gpios:8";
892 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
894 + audio = <&audio>,"status";
895 + watchdog = <&watchdog>,"status";
896 + random = <&random>,"status";
900 +++ b/arch/arm/boot/dts/bcm2709.dtsi
902 +/include/ "bcm2708_common.dtsi"
905 + compatible = "brcm,bcm2709";
909 + /* No padding required - the boot loader can do that. */
914 + ranges = <0x7e000000 0x3f000000 0x01000000>;
917 + compatible = "arm,cortex-a7-pmu";
918 + interrupts = <3 9>;
923 + compatible = "arm,armv7-timer";
924 + clock-frequency = <19200000>;
925 + interrupts = <3 0>, // PHYS_SECURE_PPI
926 + <3 1>, // PHYS_NONSECURE_PPI
933 + #address-cells = <1>;
937 + device_type = "cpu";
938 + compatible = "arm,cortex-a7";
940 + clock-frequency = <800000000>;
944 + device_type = "cpu";
945 + compatible = "arm,cortex-a7";
947 + clock-frequency = <800000000>;
951 + device_type = "cpu";
952 + compatible = "arm,cortex-a7";
954 + clock-frequency = <800000000>;
958 + device_type = "cpu";
959 + compatible = "arm,cortex-a7";
961 + clock-frequency = <800000000>;
966 + arm_freq = <&v7_cpu0>, "clock-frequency:0",
967 + <&v7_cpu1>, "clock-frequency:0",
968 + <&v7_cpu2>, "clock-frequency:0",
969 + <&v7_cpu3>, "clock-frequency:0";
972 --- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
973 +++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
976 compatible = "raspberrypi,model-b-plus", "brcm,bcm2835";
977 model = "Raspberry Pi Model B+";
981 - gpios = <&gpio 47 0>;
986 - gpios = <&gpio 35 0>;
987 - default-state = "keep";
988 - linux,default-trigger = "default-on";
994 - pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;
996 - /* I2S interface */
997 - i2s_alt0: i2s_alt0 {
999 brcm,pins = <18 19 20 21>;
1000 brcm,function = <4>; /* alt0 */
1005 + #sound-dai-cells = <0>;
1006 + pinctrl-names = "default";
1007 + pinctrl-0 = <&i2s_pins>;
1011 + gpios = <&gpio 47 0>;
1017 + linux,default-trigger = "input";
1018 + gpios = <&gpio 35 0>;
1024 + act_led_gpio = <&act_led>,"gpios:4";
1025 + act_led_activelow = <&act_led>,"gpios:8";
1027 + pwr_led_gpio = <&pwr_led>,"gpios:4";
1028 + pwr_led_activelow = <&pwr_led>,"gpios:8";
1029 + pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
1032 --- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
1033 +++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
1035 compatible = "raspberrypi,model-b", "brcm,bcm2835";
1036 model = "Raspberry Pi Model B";
1040 - gpios = <&gpio 16 1>;
1046 - pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>;
1048 - /* I2S interface */
1049 - i2s_alt2: i2s_alt2 {
1051 brcm,pins = <28 29 30 31>;
1052 - brcm,function = <6>; /* alt2 */
1053 + brcm,function = <4>; /* alt0 */
1058 + #sound-dai-cells = <0>;
1059 + pinctrl-names = "default";
1060 + pinctrl-0 = <&i2s_pins>;
1064 + gpios = <&gpio 16 1>;
1069 + act_led_gpio = <&act_led>,"gpios:4";
1070 + act_led_activelow = <&act_led>,"gpios:8";
1073 --- a/arch/arm/boot/dts/bcm2835-rpi.dtsi
1074 +++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi
1076 /include/ "bcm2835.dtsi"
1079 + /* This is left here in case u-boot needs it */
1081 reg = <0 0x10000000>;
1098 compatible = "gpio-leds";
1102 - default-state = "keep";
1103 - linux,default-trigger = "heartbeat";
1106 + linux,default-trigger = "mmc0";
1110 + /* Onboard audio */
1112 + compatible = "brcm,bcm2835-audio";
1113 + brcm,pwm-channels = <8>;
1114 + status = "disabled";
1117 + /* External sound card */
1123 - pinctrl-names = "default";
1124 + spi0_pins: spi0_pins {
1125 + brcm,pins = <7 8 9 10 11>;
1126 + brcm,function = <4>; /* alt0 */
1129 - gpioout: gpioout {
1131 - brcm,function = <1>; /* GPIO out */
1133 + brcm,pins = <0 1>;
1134 + brcm,function = <4>;
1138 - brcm,pins = <0 1 2 3 4 5 7 8 9 10 11 14 15 40 45>;
1139 - brcm,function = <4>; /* alt0 */
1141 + brcm,pins = <2 3>;
1142 + brcm,function = <4>;
1147 + pinctrl-names = "default";
1148 + pinctrl-0 = <&spi0_pins>;
1151 + compatible = "spidev";
1152 + reg = <0>; /* CE0 */
1153 + #address-cells = <1>;
1154 + #size-cells = <0>;
1155 + spi-max-frequency = <500000>;
1159 - brcm,pins = <48 49 50 51 52 53>;
1160 - brcm,function = <7>; /* alt3 */
1162 + compatible = "spidev";
1163 + reg = <1>; /* CE1 */
1164 + #address-cells = <1>;
1165 + #size-cells = <0>;
1166 + spi-max-frequency = <500000>;
1172 + pinctrl-names = "default";
1173 + pinctrl-0 = <&i2c0_pins>;
1174 clock-frequency = <100000>;
1179 + pinctrl-names = "default";
1180 + pinctrl-0 = <&i2c1_pins>;
1181 clock-frequency = <100000>;
1196 + i2s = <&i2s>,"status";
1197 + spi = <&spi0>,"status";
1198 + i2c0 = <&i2c0>,"status";
1199 + i2c1 = <&i2c1>,"status";
1200 + i2c0_baudrate = <&i2c0>,"clock-frequency:0";
1201 + i2c1_baudrate = <&i2c1>,"clock-frequency:0";
1202 + act_led_trigger = <&act_led>,"linux,default-trigger";
1203 + audio = <&audio>,"status";
1206 --- a/arch/arm/boot/dts/bcm2835.dtsi
1207 +++ b/arch/arm/boot/dts/bcm2835.dtsi
1209 interrupt-parent = <&intc>;
1212 - bootargs = "earlyprintk console=ttyAMA0";
1218 compatible = "simple-bus";
1219 #address-cells = <1>;
1221 ranges = <0x7e000000 0x20000000 0x02000000>;
1222 + dma-ranges = <0x40000000 0x00000000 0x20000000>;
1225 compatible = "brcm,bcm2835-system-timer";
1227 #interrupt-cells = <2>;
1230 - watchdog@7e100000 {
1231 + watchdog: watchdog@7e100000 {
1232 compatible = "brcm,bcm2835-pm-wdt";
1233 reg = <0x7e100000 0x28>;
1237 + random: rng@7e104000 {
1238 compatible = "brcm,bcm2835-rng";
1239 reg = <0x7e104000 0x10>;
1242 + mailbox: mailbox@7e00b800 {
1243 + compatible = "brcm,bcm2708-vcio";
1244 + reg = <0x7e00b880 0x40>;
1245 + interrupts = <0 1>;
1248 gpio: gpio@7e200000 {
1249 compatible = "brcm,bcm2835-gpio";
1250 reg = <0x7e200000 0xb4>;
1252 #interrupt-cells = <2>;
1256 + uart0: uart@7e201000 {
1257 compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell";
1258 reg = <0x7e201000 0x1000>;
1259 interrupts = <2 25>;
1261 status = "disabled";
1264 - spi: spi@7e204000 {
1265 + spi0: spi@7e204000 {
1266 compatible = "brcm,bcm2835-spi";
1267 reg = <0x7e204000 0x1000>;
1268 interrupts = <2 22>;
1269 @@ -122,11 +129,14 @@
1270 status = "disabled";
1273 - sdhci: sdhci@7e300000 {
1274 - compatible = "brcm,bcm2835-sdhci";
1275 + mmc: mmc@7e300000 {
1276 + compatible = "brcm,bcm2835-mmc";
1277 reg = <0x7e300000 0x100>;
1278 interrupts = <2 30>;
1279 clocks = <&clk_mmc>;
1282 + dma-names = "tx", "rx";
1283 status = "disabled";
1287 status = "disabled";
1291 + usb: usb@7e980000 {
1292 compatible = "brcm,bcm2835-usb";
1293 reg = <0x7e980000 0x10000>;
1295 @@ -149,6 +159,21 @@
1297 compatible = "arm,arm1176-pmu";
1301 + compatible = "brcm,bcm2708-fb";
1302 + status = "disabled";
1306 + compatible = "brcm,bcm2835-vchiq";
1307 + reg = <0x7e00b840 0xf>;
1308 + interrupts = <0 2>;
1311 + thermal: thermal {
1312 + compatible = "brcm,bcm2835-thermal";
1320 clock-output-names = "mmc";
1321 - clock-frequency = <100000000>;
1322 + clock-frequency = <250000000>;
1327 +++ b/arch/arm/boot/dts/overlays/Makefile
1329 +ifeq ($(CONFIG_OF),y)
1331 +# Overlays for the Raspberry Pi platform
1333 +ifeq ($(CONFIG_BCM2708_DT),y)
1336 +ifeq ($(CONFIG_BCM2709_DT),y)
1339 +ifeq ($(CONFIG_ARCH_BCM2835),y)
1343 +dtb-$(RPI_DT_OVERLAYS) += ads7846-overlay.dtb
1344 +dtb-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor-overlay.dtb
1345 +dtb-$(RPI_DT_OVERLAYS) += dht11-overlay.dtb
1346 +dtb-$(RPI_DT_OVERLAYS) += enc28j60-overlay.dtb
1347 +dtb-$(RPI_DT_OVERLAYS) += hifiberry-amp-overlay.dtb
1348 +dtb-$(RPI_DT_OVERLAYS) += hifiberry-dac-overlay.dtb
1349 +dtb-$(RPI_DT_OVERLAYS) += hifiberry-dacplus-overlay.dtb
1350 +dtb-$(RPI_DT_OVERLAYS) += hifiberry-digi-overlay.dtb
1351 +dtb-$(RPI_DT_OVERLAYS) += hy28a-overlay.dtb
1352 +dtb-$(RPI_DT_OVERLAYS) += hy28b-overlay.dtb
1353 +dtb-$(RPI_DT_OVERLAYS) += i2c-rtc-overlay.dtb
1354 +dtb-$(RPI_DT_OVERLAYS) += i2s-mmap-overlay.dtb
1355 +dtb-$(RPI_DT_OVERLAYS) += iqaudio-dac-overlay.dtb
1356 +dtb-$(RPI_DT_OVERLAYS) += iqaudio-dacplus-overlay.dtb
1357 +dtb-$(RPI_DT_OVERLAYS) += lirc-rpi-overlay.dtb
1358 +dtb-$(RPI_DT_OVERLAYS) += mcp2515-can0-overlay.dtb
1359 +dtb-$(RPI_DT_OVERLAYS) += mmc-overlay.dtb
1360 +dtb-$(RPI_DT_OVERLAYS) += mz61581-overlay.dtb
1361 +dtb-$(RPI_DT_OVERLAYS) += piscreen-overlay.dtb
1362 +dtb-$(RPI_DT_OVERLAYS) += pitft28-resistive-overlay.dtb
1363 +dtb-$(RPI_DT_OVERLAYS) += pps-gpio-overlay.dtb
1364 +dtb-$(RPI_DT_OVERLAYS) += rpi-dac-overlay.dtb
1365 +dtb-$(RPI_DT_OVERLAYS) += rpi-display-overlay.dtb
1366 +dtb-$(RPI_DT_OVERLAYS) += rpi-proto-overlay.dtb
1367 +dtb-$(RPI_DT_OVERLAYS) += sdhost-overlay.dtb
1368 +dtb-$(RPI_DT_OVERLAYS) += spi-bcm2708-overlay.dtb
1369 +dtb-$(RPI_DT_OVERLAYS) += spi-bcm2835-overlay.dtb
1370 +dtb-$(RPI_DT_OVERLAYS) += tinylcd35-overlay.dtb
1371 +dtb-$(RPI_DT_OVERLAYS) += w1-gpio-overlay.dtb
1372 +dtb-$(RPI_DT_OVERLAYS) += w1-gpio-pullup-overlay.dtb
1374 +targets += dtbs dtbs_install
1375 +targets += $(dtb-y)
1380 +clean-files := *.dtb
1382 +# Enable fixups to support overlays on BCM2708 platforms
1383 +ifeq ($(RPI_DT_OVERLAYS),y)
1387 +++ b/arch/arm/boot/dts/overlays/README
1392 +This directory contains Device Tree overlays. Device Tree makes it possible
1393 +to support many hardware configurations with a single kernel and without the
1394 +need to explicitly load or blacklist kernel modules. Note that this isn't a
1395 +"pure" Device Tree configuration (c.f. MACH_BCM2835) - some on-board devices
1396 +are still configured by the board support code, but the intention is to
1397 +eventually reach that goal.
1399 +On Raspberry Pi, Device Tree usage is controlled from /boot/config.txt. By
1400 +default, the Raspberry Pi kernel boots with device tree enabled. You can
1401 +completely disable DT usage (for now) by adding:
1405 +to your config.txt, which should cause your Pi to revert to the old way of
1406 +doing things after a reboot.
1408 +In /boot you will find a .dtb for each base platform. This describes the
1409 +hardware that is part of the Raspberry Pi board. The loader (start.elf and its
1410 +siblings) selects the .dtb file appropriate for the platform by name, and reads
1411 +it into memory. At this point, all of the optional interfaces (i2c, i2s, spi)
1412 +are disabled, but they can be enabled using Device Tree parameters:
1414 + dtparam=i2c=on,i2s=on,spi=on
1416 +However, this shouldn't be necessary in many use cases because loading an
1417 +overlay that requires one of those interfaces will cause it to be enabled
1418 +automatically, and it is advisable to only enable interfaces if they are
1421 +Configuring additional, optional hardware is done using Device Tree overlays
1427 +The Advanced Options section of the raspi-config utility can enable and disable
1428 +Device Tree use, as well as toggling the I2C and SPI interfaces. Note that it
1429 +is possible to both enable an interface and blacklist the driver, if for some
1430 +reason you should want to defer the loading.
1435 +As well as describing the hardware, Device Tree also gives enough information
1436 +to allow suitable driver modules to be located and loaded, with the corollary
1437 +that unneeded modules are not loaded. As a result it should be possible to
1438 +remove lines from /etc/modules, and /etc/modprobe.d/raspi-blacklist.conf can
1439 +have its contents deleted (or commented out).
1444 +Overlays are loaded using the "dtoverlay" directive. As an example, consider the
1445 +popular lirc-rpi module, the Linux Infrared Remote Control driver. In the
1446 +pre-DT world this would be loaded from /etc/modules, with an explicit
1447 +"modprobe lirc-rpi" command, or programmatically by lircd. With DT enabled,
1448 +this becomes a line in config.txt:
1450 + dtoverlay=lirc-rpi
1452 +This causes the file /boot/overlays/lirc-rpi-overlay.dtb to be loaded. By
1453 +default it will use GPIOs 17 (out) and 18 (in), but this can be modified using
1456 + dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=13
1458 +Parameters always have default values, although in some cases (e.g. "w1-gpio")
1459 +it is necessary to provided multiple overlays in order to get the desired
1460 +behaviour. See the list of overlays below for a description of the parameters and their defaults.
1462 +The Overlay and Parameter Reference
1463 +===================================
1465 +Name: <The base DTB>
1466 +Info: Configures the base Raspberry Pi hardware
1467 +Load: <loaded automatically>
1469 + audio Set to "on" to disable the onboard ALSA audio
1470 + interface (default "off")
1472 + i2c_arm Set to "on" to enable the ARM's i2c interface
1475 + i2c_vc Set to "on" to enable the i2c interface
1476 + usually reserved for the VideoCore processor
1479 + i2c An alias for i2c_arm
1481 + i2c_arm_baudrate Set the baudrate of the ARM's i2c interface
1482 + (default "100000")
1484 + i2c_vc_baudrate Set the baudrate of the VideoCore i2c interface
1485 + (default "100000")
1487 + i2c_baudrate An alias for i2c_arm_baudrate
1489 + i2s Set to "on" to enable the i2s interface
1492 + spi Set to "on" to enable the spi interfaces
1495 + random Set to "on" to enable the hardware random
1496 + number generator (default "off")
1498 + uart0 Set to "off" to disable uart0 (default "on")
1500 + watchdog Set to "on" to enable the hardware watchdog
1503 + act_led_trigger Choose which activity the LED tracks.
1504 + Use "heartbeat" for a nice load indicator.
1507 + act_led_activelow Set to "on" to invert the sense of the LED
1510 + act_led_gpio Set which GPIO to use for the activity LED
1511 + (in case you want to connect it to an external
1513 + (default "16" on a non-Plus board, "47" on a
1519 + As for act_led_*, but using the PWR LED.
1520 + Not available on Model A/B boards.
1522 + N.B. It is recommended to only enable those interfaces that are needed.
1523 + Leaving all interfaces enabled can lead to unwanted behaviour (i2c_vc
1524 + interfering with Pi Camera, I2S and SPI hogging GPIO pins, etc.)
1525 + Note also that i2c, i2c_arm and i2c_vc are aliases for the physical
1526 + interfaces i2c0 and i2c1. Use of the numeric variants is still possible
1527 + but deprecated because the ARM/VC assignments differ between board
1528 + revisions. The same board-specific mapping applies to i2c_baudrate,
1529 + and the other i2c baudrate parameters.
1533 +Info: ADS7846 Touch controller
1534 +Load: dtoverlay=ads7846,<param>=<val>
1535 +Params: cs SPI bus Chip Select (default 1)
1536 + speed SPI bus speed (default 2Mhz, max 3.25MHz)
1537 + penirq GPIO used for PENIRQ. REQUIRED
1538 + penirq_pull Set GPIO pull (default 0=none, 2=pullup)
1539 + swapxy Swap x and y axis
1540 + xmin Minimum value on the X axis (default 0)
1541 + ymin Minimum value on the Y axis (default 0)
1542 + xmax Maximum value on the X axis (default 4095)
1543 + ymax Maximum value on the Y axis (default 4095)
1544 + pmin Minimum reported pressure value (default 0)
1545 + pmax Maximum reported pressure value (default 65535)
1546 + xohms Touchpanel sensitivity (X-plate resistance)
1549 + penirq is required and usually xohms (60-100) has to be set as well.
1550 + Apart from that, pmax (255) and swapxy are also common.
1551 + The rest of the calibration can be done with xinput-calibrator.
1552 + See: github.com/notro/fbtft/wiki/FBTFT-on-Raspian
1553 + Device Tree binding document:
1554 + www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt
1557 +Name: bmp085_i2c-sensor
1558 +Info: Configures the BMP085/BMP180 digital barometric pressure and temperature
1559 + sensors from Bosch Sensortec
1560 +Load: dtoverlay=bmp085_i2c-sensor
1564 +[ The ds1307-rtc overlay has been deleted. See i2c-rtc. ]
1568 +Info: Overlay for the Microchip ENC28J60 Ethernet Controller (SPI)
1569 +Load: dtoverlay=enc28j60,<param>=<val>
1570 +Params: int_pin GPIO used for INT (default 25)
1572 + speed SPI bus speed (default 12000000)
1575 +Name: hifiberry-amp
1576 +Info: Configures the HifiBerry Amp and Amp+ audio cards
1577 +Load: dtoverlay=hifiberry-amp
1581 +Name: hifiberry-dac
1582 +Info: Configures the HifiBerry DAC audio card
1583 +Load: dtoverlay=hifiberry-dac
1587 +Name: hifiberry-dacplus
1588 +Info: Configures the HifiBerry DAC+ audio card
1589 +Load: dtoverlay=hifiberry-dacplus
1593 +Name: hifiberry-digi
1594 +Info: Configures the HifiBerry Digi audio card
1595 +Load: dtoverlay=hifiberry-digi
1600 +Info: HY28A - 2.8" TFT LCD Display Module by HAOYU Electronics
1601 + Default values match Texy's display shield
1602 +Load: dtoverlay=hy28a,<param>=<val>
1603 +Params: speed Display SPI bus speed
1605 + rotate Display rotation {0,90,180,270}
1607 + fps Delay between frame updates
1609 + debug Debug output level {0-7}
1611 + xohms Touchpanel sensitivity (X-plate resistance)
1613 + resetgpio GPIO used to reset controller
1615 + ledgpio GPIO used to control backlight
1619 +Info: HY28B - 2.8" TFT LCD Display Module by HAOYU Electronics
1620 + Default values match Texy's display shield
1621 +Load: dtoverlay=hy28b,<param>=<val>
1622 +Params: speed Display SPI bus speed
1624 + rotate Display rotation {0,90,180,270}
1626 + fps Delay between frame updates
1628 + debug Debug output level {0-7}
1630 + xohms Touchpanel sensitivity (X-plate resistance)
1632 + resetgpio GPIO used to reset controller
1634 + ledgpio GPIO used to control backlight
1638 +Info: Adds support for a number of I2C Real Time Clock devices
1639 +Load: dtoverlay=i2c-rtc,<param>
1640 +Params: ds1307 Select the DS1307 device
1642 + ds3231 Select the DS3231 device
1644 + pcf2127 Select the PCF2127 device
1646 + pcf8523 Select the PCF8523 device
1648 + pcf8563 Select the PCF8563 device
1652 +Info: Configures the IQaudio DAC audio card
1653 +Load: dtoverlay=iqaudio-dac
1657 +Name: iqaudio-dacplus
1658 +Info: Configures the IQaudio DAC+ audio card
1659 +Load: dtoverlay=iqaudio-dacplus
1664 +Info: Configures lirc-rpi (Linux Infrared Remote Control for Raspberry Pi)
1665 + Consult the module documentation for more details.
1666 +Load: dtoverlay=lirc-rpi,<param>=<val>,...
1667 +Params: gpio_out_pin GPIO for output (default "17")
1669 + gpio_in_pin GPIO for input (default "18")
1671 + gpio_in_pull Pull up/down/off on the input pin
1674 + sense Override the IR receive auto-detection logic:
1675 + "1" = force active high
1676 + "0" = force active low
1677 + "-1" = use auto-detection
1680 + softcarrier Turn the software carrier "on" or "off"
1683 + invert "on" = invert the output pin (default "off")
1685 + debug "on" = enable additional debug messages
1690 +Info: Configures the MCP2515 CAN controller
1691 +Load: dtoverlay=mcp2515-can0,<param>=<val>
1692 +Params: oscillator Clock frequency for the CAN controller (Hz)
1694 + spimaxfrequency Maximum SPI frequence (Hz)
1696 + interrupt GPIO for interrupt signal
1700 +Info: Selects the bcm2835-mmc SD/MMC driver, optionally with overclock
1701 +Load: dtoverlay=mmc,<param>=<val>
1702 +Params: overclock_50 Clock (in MHz) to use when the MMC framework
1704 + force_pio Disable DMA support
1708 +Info: MZ61581 display by Tontec
1709 +Load: dtoverlay=mz61581,<param>=<val>
1710 +Params: speed Display SPI bus speed
1712 + rotate Display rotation {0,90,180,270}
1714 + fps Delay between frame updates
1716 + debug Debug output level {0-7}
1718 + xohms Touchpanel sensitivity (X-plate resistance)
1721 +[ The pcf2127-rtc overlay has been deleted. See i2c-rtc. ]
1724 +[ The pcf8523-rtc overlay has been deleted. See i2c-rtc. ]
1727 +[ The pcf8563-rtc overlay has been deleted. See i2c-rtc. ]
1731 +Info: PiScreen display by OzzMaker.com
1732 +Load: dtoverlay=piscreen,<param>=<val>
1733 +Params: speed Display SPI bus speed
1735 + rotate Display rotation {0,90,180,270}
1737 + fps Delay between frame updates
1739 + debug Debug output level {0-7}
1741 + xohms Touchpanel sensitivity (X-plate resistance)
1744 +Name: pitft28-resistive
1745 +Info: Adafruit PiTFT 2.8" resistive touch screen
1746 +Load: dtoverlay=pitft28-resistive,<param>=<val>
1747 +Params: speed Display SPI bus speed
1749 + rotate Display rotation {0,90,180,270}
1751 + fps Delay between frame updates
1753 + debug Debug output level {0-7}
1757 +Info: Configures the pps-gpio (pulse-per-second time signal via GPIO).
1758 +Load: dtoverlay=pps-gpio,<param>=<val>
1759 +Params: gpiopin Input GPIO (default "18")
1763 +Info: Configures the RPi DAC audio card
1764 +Load: dtoverlay=rpi-dac
1769 +Info: RPi-Display - 2.8" Touch Display by Watterott
1770 +Load: dtoverlay=rpi-display,<param>=<val>
1771 +Params: speed Display SPI bus speed
1773 + rotate Display rotation {0,90,180,270}
1775 + fps Delay between frame updates
1777 + debug Debug output level {0-7}
1779 + xohms Touchpanel sensitivity (X-plate resistance)
1783 +Info: Configures the RPi Proto audio card
1784 +Load: dtoverlay=rpi-proto
1789 +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock
1790 +Load: dtoverlay=sdhost,<param>=<val>
1791 +Params: overclock_50 Clock (in MHz) to use when the MMC framework
1793 + force_pio Disable DMA support
1797 +Info: Selects the bcm2708-spi SPI driver
1798 +Load: dtoverlay=spi-bcm2708
1803 +Info: Selects the bcm2835-spi SPI driver
1804 +Load: dtoverlay=spi-bcm2835
1809 +Info: 3.5" Color TFT Display by www.tinylcd.com
1810 + Options: Touch, RTC, keypad
1811 +Load: dtoverlay=tinylcd35,<param>=<val>
1812 +Params: speed Display SPI bus speed
1814 + rotate Display rotation {0,90,180,270}
1816 + fps Delay between frame updates
1818 + debug Debug output level {0-7}
1820 + touch Enable touch panel
1822 + touchgpio Touch controller IRQ GPIO
1824 + xohms Touchpanel: Resistance of X-plate in ohms
1826 + rtc-pcf PCF8563 Real Time Clock
1828 + rtc-ds DS1307 Real Time Clock
1830 + keypad Enable keypad
1833 + Display with touchpanel, PCF8563 RTC and keypad:
1834 + dtoverlay=tinylcd35,touch,rtc-pcf,keypad
1835 + Old touch display:
1836 + dtoverlay=tinylcd35,touch,touchgpio=3
1840 +Info: Configures the w1-gpio Onewire interface module.
1841 + Use this overlay if you *don't* need a GPIO to drive an external pullup.
1842 +Load: dtoverlay=w1-gpio,<param>=<val>
1843 +Params: gpiopin GPIO for I/O (default "4")
1845 + pullup Non-zero, "on", or "y" to enable the parasitic
1846 + power (2-wire, power-on-data) feature
1849 +Name: w1-gpio-pullup
1850 +Info: Configures the w1-gpio Onewire interface module.
1851 + Use this overlay if you *do* need a GPIO to drive an external pullup.
1852 +Load: dtoverlay=w1-gpio-pullup,<param>=<val>,...
1853 +Params: gpiopin GPIO for I/O (default "4")
1855 + pullup Non-zero, "on", or "y" to enable the parasitic
1856 + power (2-wire, power-on-data) feature
1858 + extpullup GPIO for external pullup (default "5")
1864 +If you are experiencing problems that you think are DT-related, enable DT
1865 +diagnostic output by adding this to /boot/config.txt:
1869 +and rebooting. Then run:
1871 + sudo vcdbg log msg
1873 +and look for relevant messages.
1878 +This is only meant to be a quick introduction to the subject of Device Tree on
1879 +Raspberry Pi. There is a more complete explanation here:
1881 +http://www.raspberrypi.org/documentation/configuration/device-tree.md
1883 +++ b/arch/arm/boot/dts/overlays/ads7846-overlay.dts
1886 + * Generic Device Tree overlay for the ADS7846 touch controller
1894 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
1902 + status = "disabled";
1906 + status = "disabled";
1914 + ads7846_pins: ads7846_pins {
1915 + brcm,pins = <255>; /* illegal default value */
1916 + brcm,function = <0>; /* in */
1917 + brcm,pull = <0>; /* none */
1925 + /* needed to avoid dtc warning */
1926 + #address-cells = <1>;
1927 + #size-cells = <0>;
1929 + ads7846: ads7846@1 {
1930 + compatible = "ti,ads7846";
1932 + pinctrl-names = "default";
1933 + pinctrl-0 = <&ads7846_pins>;
1935 + spi-max-frequency = <2000000>;
1936 + interrupts = <255 2>; /* high-to-low edge triggered */
1937 + interrupt-parent = <&gpio>;
1938 + pendown-gpio = <&gpio 255 0>;
1940 + /* driver defaults */
1941 + ti,x-min = /bits/ 16 <0>;
1942 + ti,y-min = /bits/ 16 <0>;
1943 + ti,x-max = /bits/ 16 <0x0FFF>;
1944 + ti,y-max = /bits/ 16 <0x0FFF>;
1945 + ti,pressure-min = /bits/ 16 <0>;
1946 + ti,pressure-max = /bits/ 16 <0xFFFF>;
1947 + ti,x-plate-ohms = /bits/ 16 <400>;
1952 + cs = <&ads7846>,"reg:0";
1953 + speed = <&ads7846>,"spi-max-frequency:0";
1954 + penirq = <&ads7846_pins>,"brcm,pins:0", /* REQUIRED */
1955 + <&ads7846>,"interrupts:0",
1956 + <&ads7846>,"pendown-gpio:4";
1957 + penirq_pull = <&ads7846_pins>,"brcm,pull:0";
1958 + swapxy = <&ads7846>,"ti,swap-xy?";
1959 + xmin = <&ads7846>,"ti,x-min;0";
1960 + ymin = <&ads7846>,"ti,y-min;0";
1961 + xmax = <&ads7846>,"ti,x-max;0";
1962 + ymax = <&ads7846>,"ti,y-max;0";
1963 + pmin = <&ads7846>,"ti,pressure-min;0";
1964 + pmax = <&ads7846>,"ti,pressure-max;0";
1965 + xohms = <&ads7846>,"ti,x-plate-ohms;0";
1969 +++ b/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts
1971 +// Definitions for BMP085/BMP180 digital barometric pressure and temperature sensors from Bosch Sensortec
1976 + compatible = "brcm,bcm2708";
1981 + #address-cells = <1>;
1982 + #size-cells = <0>;
1986 + compatible = "bosch,bmp085";
1988 + default-oversampling = <3>;
1995 +++ b/arch/arm/boot/dts/overlays/dht11-overlay.dts
1998 + * Overlay for the DHT11/21/22 humidity/temperature sensor modules.
2004 + compatible = "brcm,bcm2708";
2007 + target-path = "/";
2011 + compatible = "dht11";
2012 + pinctrl-names = "default";
2013 + pinctrl-0 = <&dht11_pins>;
2014 + gpios = <&gpio 4 0>;
2023 + dht11_pins: dht11_pins {
2025 + brcm,function = <0>; // in
2026 + brcm,pull = <0>; // off
2032 + gpiopin = <&dht11_pins>,"brcm,pins:0",
2033 + <&dht11>,"gpios:4";
2037 +++ b/arch/arm/boot/dts/overlays/enc28j60-overlay.dts
2039 +// Overlay for the Microchip ENC28J60 Ethernet Controller
2044 + compatible = "brcm,bcm2708";
2049 + /* needed to avoid dtc warning */
2050 + #address-cells = <1>;
2051 + #size-cells = <0>;
2056 + status = "disabled";
2060 + compatible = "microchip,enc28j60";
2061 + reg = <0>; /* CE0 */
2062 + pinctrl-names = "default";
2063 + pinctrl-0 = <ð1_pins>;
2064 + interrupt-parent = <&gpio>;
2065 + interrupts = <25 0x2>; /* falling edge */
2066 + spi-max-frequency = <12000000>;
2075 + eth1_pins: eth1_pins {
2077 + brcm,function = <0>; /* in */
2078 + brcm,pull = <0>; /* none */
2084 + int_pin = <ð1>, "interrupts:0",
2085 + <ð1_pins>, "brcm,pins:0";
2086 + speed = <ð1>, "spi-max-frequency:0";
2090 +++ b/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
2092 +// Definitions for HiFiBerry Amp/Amp+
2097 + compatible = "brcm,bcm2708";
2100 + target = <&sound>;
2102 + compatible = "hifiberry,hifiberry-amp";
2103 + i2s-controller = <&i2s>;
2118 + #address-cells = <1>;
2119 + #size-cells = <0>;
2123 + #sound-dai-cells = <0>;
2124 + compatible = "ti,tas5713";
2132 +++ b/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
2134 +// Definitions for HiFiBerry DAC
2139 + compatible = "brcm,bcm2708";
2142 + target = <&sound>;
2144 + compatible = "hifiberry,hifiberry-dac";
2145 + i2s-controller = <&i2s>;
2158 + target-path = "/";
2161 + #sound-dai-cells = <0>;
2162 + compatible = "ti,pcm5102a";
2169 +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
2171 +// Definitions for HiFiBerry DAC+
2176 + compatible = "brcm,bcm2708";
2179 + target = <&sound>;
2181 + compatible = "hifiberry,hifiberry-dacplus";
2182 + i2s-controller = <&i2s>;
2197 + #address-cells = <1>;
2198 + #size-cells = <0>;
2202 + #sound-dai-cells = <0>;
2203 + compatible = "ti,pcm5122";
2211 +++ b/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
2213 +// Definitions for HiFiBerry Digi
2218 + compatible = "brcm,bcm2708";
2221 + target = <&sound>;
2223 + compatible = "hifiberry,hifiberry-digi";
2224 + i2s-controller = <&i2s>;
2239 + #address-cells = <1>;
2240 + #size-cells = <0>;
2244 + #sound-dai-cells = <0>;
2245 + compatible = "wlf,wm8804";
2253 +++ b/arch/arm/boot/dts/overlays/hy28a-overlay.dts
2256 + * Device Tree overlay for HY28A display
2264 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
2272 + status = "disabled";
2276 + status = "disabled";
2284 + hy28a_pins: hy28a_pins {
2285 + brcm,pins = <17 25 18>;
2286 + brcm,function = <0 1 1>; /* in out out */
2294 + /* needed to avoid dtc warning */
2295 + #address-cells = <1>;
2296 + #size-cells = <0>;
2299 + compatible = "ilitek,ili9320";
2301 + pinctrl-names = "default";
2302 + pinctrl-0 = <&hy28a_pins>;
2304 + spi-max-frequency = <32000000>;
2311 + startbyte = <0x70>;
2312 + reset-gpios = <&gpio 25 0>;
2313 + led-gpios = <&gpio 18 1>;
2317 + hy28a_ts: hy28a-ts@1 {
2318 + compatible = "ti,ads7846";
2321 + spi-max-frequency = <2000000>;
2322 + interrupts = <17 2>; /* high-to-low edge triggered */
2323 + interrupt-parent = <&gpio>;
2324 + pendown-gpio = <&gpio 17 0>;
2325 + ti,x-plate-ohms = /bits/ 16 <100>;
2326 + ti,pressure-max = /bits/ 16 <255>;
2331 + speed = <&hy28a>,"spi-max-frequency:0";
2332 + rotate = <&hy28a>,"rotate:0";
2333 + fps = <&hy28a>,"fps:0";
2334 + debug = <&hy28a>,"debug:0";
2335 + xohms = <&hy28a_ts>,"ti,x-plate-ohms;0";
2336 + resetgpio = <&hy28a>,"reset-gpios:4",
2337 + <&hy28a_pins>, "brcm,pins:1";
2338 + ledgpio = <&hy28a>,"led-gpios:4",
2339 + <&hy28a_pins>, "brcm,pins:2";
2343 +++ b/arch/arm/boot/dts/overlays/hy28b-overlay.dts
2346 + * Device Tree overlay for HY28b display shield by Texy
2354 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
2362 + status = "disabled";
2366 + status = "disabled";
2374 + hy28b_pins: hy28b_pins {
2375 + brcm,pins = <17 25 18>;
2376 + brcm,function = <0 1 1>; /* in out out */
2384 + /* needed to avoid dtc warning */
2385 + #address-cells = <1>;
2386 + #size-cells = <0>;
2389 + compatible = "ilitek,ili9325";
2391 + pinctrl-names = "default";
2392 + pinctrl-0 = <&hy28b_pins>;
2394 + spi-max-frequency = <48000000>;
2401 + startbyte = <0x70>;
2402 + reset-gpios = <&gpio 25 0>;
2403 + led-gpios = <&gpio 18 1>;
2405 + gamma = "04 1F 4 7 7 0 7 7 6 0\n0F 00 1 7 4 0 0 0 6 7";
2407 + init = <0x10000e7 0x0010
2462 + hy28b_ts: hy28b-ts@1 {
2463 + compatible = "ti,ads7846";
2466 + spi-max-frequency = <2000000>;
2467 + interrupts = <17 2>; /* high-to-low edge triggered */
2468 + interrupt-parent = <&gpio>;
2469 + pendown-gpio = <&gpio 17 0>;
2470 + ti,x-plate-ohms = /bits/ 16 <100>;
2471 + ti,pressure-max = /bits/ 16 <255>;
2476 + speed = <&hy28b>,"spi-max-frequency:0";
2477 + rotate = <&hy28b>,"rotate:0";
2478 + fps = <&hy28b>,"fps:0";
2479 + debug = <&hy28b>,"debug:0";
2480 + xohms = <&hy28b_ts>,"ti,x-plate-ohms;0";
2481 + resetgpio = <&hy28b>,"reset-gpios:4",
2482 + <&hy28b_pins>, "brcm,pins:1";
2483 + ledgpio = <&hy28b>,"led-gpios:4",
2484 + <&hy28b_pins>, "brcm,pins:2";
2488 +++ b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
2490 +// Definitions for several I2C based Real Time Clocks
2495 + compatible = "brcm,bcm2708";
2500 + #address-cells = <1>;
2501 + #size-cells = <0>;
2504 + ds1307: ds1307@68 {
2505 + compatible = "maxim,ds1307";
2507 + status = "disable";
2509 + ds3231: ds3231@68 {
2510 + compatible = "maxim,ds3231";
2512 + status = "disable";
2514 + pcf2127: pcf2127@51 {
2515 + compatible = "nxp,pcf2127";
2517 + status = "disable";
2519 + pcf8523: pcf8523@68 {
2520 + compatible = "nxp,pcf8523";
2522 + status = "disable";
2524 + pcf8563: pcf8563@51 {
2525 + compatible = "nxp,pcf8563";
2527 + status = "disable";
2532 + ds1307 = <&ds1307>,"status";
2533 + ds3231 = <&ds3231>,"status";
2534 + pcf2127 = <&pcf2127>,"status";
2535 + pcf8523 = <&pcf8523>,"status";
2536 + pcf8563 = <&pcf8563>,"status";
2540 +++ b/arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts
2546 + compatible = "brcm,bcm2708";
2556 +++ b/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
2558 +// Definitions for IQaudIO DAC
2563 + compatible = "brcm,bcm2708";
2566 + target = <&sound>;
2568 + compatible = "iqaudio,iqaudio-dac";
2569 + i2s-controller = <&i2s>;
2584 + #address-cells = <1>;
2585 + #size-cells = <0>;
2589 + #sound-dai-cells = <0>;
2590 + compatible = "ti,pcm5122";
2598 +++ b/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
2600 +// Definitions for IQaudIO DAC+
2605 + compatible = "brcm,bcm2708";
2608 + target = <&sound>;
2610 + compatible = "iqaudio,iqaudio-dac";
2611 + i2s-controller = <&i2s>;
2626 + #address-cells = <1>;
2627 + #size-cells = <0>;
2631 + #sound-dai-cells = <0>;
2632 + compatible = "ti,pcm5122";
2640 +++ b/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts
2642 +// Definitions for lirc-rpi module
2647 + compatible = "brcm,bcm2708";
2650 + target-path = "/";
2652 + lirc_rpi: lirc_rpi {
2653 + compatible = "rpi,lirc-rpi";
2654 + pinctrl-names = "default";
2655 + pinctrl-0 = <&lirc_pins>;
2658 + // Override autodetection of IR receiver circuit
2659 + // (0 = active high, 1 = active low, -1 = no override )
2660 + rpi,sense = <0xffffffff>;
2662 + // Software carrier
2663 + // (0 = off, 1 = on)
2664 + rpi,softcarrier = <1>;
2667 + // (0 = off, 1 = on)
2670 + // Enable debugging messages
2671 + // (0 = off, 1 = on)
2680 + lirc_pins: lirc_pins {
2681 + brcm,pins = <17 18>;
2682 + brcm,function = <1 0>; // out in
2683 + brcm,pull = <0 1>; // off down
2689 + gpio_out_pin = <&lirc_pins>,"brcm,pins:0";
2690 + gpio_in_pin = <&lirc_pins>,"brcm,pins:4";
2691 + gpio_in_pull = <&lirc_pins>,"brcm,pull:4";
2693 + sense = <&lirc_rpi>,"rpi,sense:0";
2694 + softcarrier = <&lirc_rpi>,"rpi,softcarrier:0";
2695 + invert = <&lirc_rpi>,"rpi,invert:0";
2696 + debug = <&lirc_rpi>,"rpi,debug:0";
2700 +++ b/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
2703 + * Device tree overlay for mcp251x/can0 on spi0.0
2710 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
2711 + /* disable spi-dev for spi0.0 */
2717 + status = "disabled";
2722 + /* the interrupt pin of the can-controller */
2726 + can0_pins: can0_pins {
2728 + brcm,function = <0>; /* input */
2733 + /* the clock/oscillator of the can-controller */
2735 + target-path = "/clocks";
2737 + /* external oscillator of mcp2515 on SPI0.0 */
2738 + can0_osc: can0_osc {
2739 + compatible = "fixed-clock";
2740 + #clock-cells = <0>;
2741 + clock-frequency = <16000000>;
2746 + /* the spi config of the can-controller itself binding everything together */
2750 + /* needed to avoid dtc warning */
2751 + #address-cells = <1>;
2752 + #size-cells = <0>;
2755 + compatible = "microchip,mcp2515";
2756 + pinctrl-names = "default";
2757 + pinctrl-0 = <&can0_pins>;
2758 + spi-max-frequency = <10000000>;
2759 + interrupt-parent = <&gpio>;
2760 + interrupts = <25 0x2>;
2761 + clocks = <&can0_osc>;
2766 + oscillator = <&can0_osc>,"clock-frequency:0";
2767 + spimaxfrequency = <&can0>,"spi-max-frequency:0";
2768 + interrupt = <&can0_pins>,"brcm,pins:0",<&can0>,"interrupts:0";
2772 +++ b/arch/arm/boot/dts/overlays/mmc-overlay.dts
2778 + compatible = "brcm,bcm2708";
2784 + brcm,overclock-50 = <0>;
2789 + overclock_50 = <&mmc>,"brcm,overclock-50:0";
2790 + force_pio = <&mmc>,"brcm,force-pio?";
2794 +++ b/arch/arm/boot/dts/overlays/mz61581-overlay.dts
2797 + * Device Tree overlay for MZ61581-PI-EXT 2014.12.28 by Tontec
2805 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
2813 + status = "disabled";
2817 + status = "disabled";
2825 + mz61581_pins: mz61581_pins {
2826 + brcm,pins = <4 15 18 25>;
2827 + brcm,function = <0 1 1 1>; /* in out out out */
2835 + /* needed to avoid dtc warning */
2836 + #address-cells = <1>;
2837 + #size-cells = <0>;
2839 + mz61581: mz61581@0{
2840 + compatible = "samsung,s6d02a1";
2842 + pinctrl-names = "default";
2843 + pinctrl-0 = <&mz61581_pins>;
2845 + spi-max-frequency = <128000000>;
2856 + reset-gpios = <&gpio 15 0>;
2857 + dc-gpios = <&gpio 25 0>;
2858 + led-gpios = <&gpio 18 0>;
2860 + init = <0x10000b0 00
2863 + 0x10000b3 0x02 0x00 0x00 0x00
2864 + 0x10000c0 0x13 0x3b 0x00 0x02 0x00 0x01 0x00 0x43
2865 + 0x10000c1 0x08 0x16 0x08 0x08
2866 + 0x10000c4 0x11 0x07 0x03 0x03
2868 + 0x10000c8 0x03 0x03 0x13 0x5c 0x03 0x07 0x14 0x08 0x00 0x21 0x08 0x14 0x07 0x53 0x0c 0x13 0x03 0x03 0x21 0x00
2872 + 0x1000044 0x00 0x01
2873 + 0x10000d0 0x07 0x07 0x1d 0x03
2874 + 0x10000d1 0x03 0x30 0x10
2875 + 0x10000d2 0x03 0x14 0x04
2879 + /* This is a workaround to make sure the init sequence slows down and doesn't fail */
2883 + mz61581_ts: mz61581_ts@1 {
2884 + compatible = "ti,ads7846";
2887 + spi-max-frequency = <2000000>;
2888 + interrupts = <4 2>; /* high-to-low edge triggered */
2889 + interrupt-parent = <&gpio>;
2890 + pendown-gpio = <&gpio 4 0>;
2892 + ti,x-plate-ohms = /bits/ 16 <60>;
2893 + ti,pressure-max = /bits/ 16 <255>;
2898 + speed = <&mz61581>, "spi-max-frequency:0";
2899 + rotate = <&mz61581>, "rotate:0";
2900 + fps = <&mz61581>, "fps:0";
2901 + debug = <&mz61581>, "debug:0";
2902 + xohms = <&mz61581_ts>,"ti,x-plate-ohms;0";
2906 +++ b/arch/arm/boot/dts/overlays/piscreen-overlay.dts
2909 + * Device Tree overlay for PiScreen 3.5" display shield by Ozzmaker
2917 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
2925 + status = "disabled";
2929 + status = "disabled";
2937 + piscreen_pins: piscreen_pins {
2938 + brcm,pins = <17 25 24 22>;
2939 + brcm,function = <0 1 1 1>; /* in out out out */
2947 + /* needed to avoid dtc warning */
2948 + #address-cells = <1>;
2949 + #size-cells = <0>;
2951 + piscreen: piscreen@0{
2952 + compatible = "ilitek,ili9486";
2954 + pinctrl-names = "default";
2955 + pinctrl-0 = <&piscreen_pins>;
2957 + spi-max-frequency = <24000000>;
2963 + reset-gpios = <&gpio 25 0>;
2964 + dc-gpios = <&gpio 24 0>;
2965 + led-gpios = <&gpio 22 1>;
2968 + init = <0x10000b0 0x00
2974 + 0x10000c5 0x00 0x00 0x00 0x00
2975 + 0x10000e0 0x0f 0x1f 0x1c 0x0c 0x0f 0x08 0x48 0x98 0x37 0x0a 0x13 0x04 0x11 0x0d 0x00
2976 + 0x10000e1 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
2977 + 0x10000e2 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
2982 + piscreen_ts: piscreen-ts@1 {
2983 + compatible = "ti,ads7846";
2986 + spi-max-frequency = <2000000>;
2987 + interrupts = <17 2>; /* high-to-low edge triggered */
2988 + interrupt-parent = <&gpio>;
2989 + pendown-gpio = <&gpio 17 0>;
2991 + ti,x-plate-ohms = /bits/ 16 <100>;
2992 + ti,pressure-max = /bits/ 16 <255>;
2997 + speed = <&piscreen>,"spi-max-frequency:0";
2998 + rotate = <&piscreen>,"rotate:0";
2999 + fps = <&piscreen>,"fps:0";
3000 + debug = <&piscreen>,"debug:0";
3001 + xohms = <&piscreen_ts>,"ti,x-plate-ohms;0";
3005 +++ b/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
3008 + * Device Tree overlay for Adafruit PiTFT 2.8" resistive touch screen
3016 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
3024 + status = "disabled";
3028 + status = "disabled";
3036 + pitft_pins: pitft_pins {
3037 + brcm,pins = <24 25>;
3038 + brcm,function = <0 1>; /* in out */
3039 + brcm,pull = <2 0>; /* pullup none */
3047 + /* needed to avoid dtc warning */
3048 + #address-cells = <1>;
3049 + #size-cells = <0>;
3052 + compatible = "ilitek,ili9340";
3054 + pinctrl-names = "default";
3055 + pinctrl-0 = <&pitft_pins>;
3057 + spi-max-frequency = <32000000>;
3062 + dc-gpios = <&gpio 25 0>;
3067 + #address-cells = <1>;
3068 + #size-cells = <0>;
3069 + compatible = "st,stmpe610";
3072 + spi-max-frequency = <500000>;
3073 + irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */
3074 + interrupts = <24 2>; /* high-to-low edge triggered */
3075 + interrupt-parent = <&gpio>;
3076 + interrupt-controller;
3078 + stmpe_touchscreen {
3079 + compatible = "st,stmpe-ts";
3080 + st,sample-time = <4>;
3083 + st,adc-freq = <2>;
3084 + st,ave-ctrl = <3>;
3085 + st,touch-det-delay = <4>;
3086 + st,settling = <2>;
3087 + st,fraction-z = <7>;
3091 + stmpe_gpio: stmpe_gpio {
3092 + #gpio-cells = <2>;
3093 + compatible = "st,stmpe-gpio";
3095 + * only GPIO2 is wired/available
3096 + * and it is wired to the backlight
3098 + st,norequest-mask = <0x7b>;
3105 + target-path = "/soc";
3108 + compatible = "gpio-backlight";
3109 + gpios = <&stmpe_gpio 2 0>;
3116 + speed = <&pitft>,"spi-max-frequency:0";
3117 + rotate = <&pitft>,"rotate:0";
3118 + fps = <&pitft>,"fps:0";
3119 + debug = <&pitft>,"debug:0";
3123 +++ b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
3129 + compatible = "brcm,bcm2708";
3131 + target-path = "/";
3134 + compatible = "pps-gpio";
3135 + pinctrl-names = "default";
3136 + pinctrl-0 = <&pps_pins>;
3137 + gpios = <&gpio 18 0>;
3146 + pps_pins: pps_pins {
3148 + brcm,function = <0>; // in
3149 + brcm,pull = <0>; // off
3155 + gpiopin = <&pps>,"gpios:4",
3156 + <&pps_pins>,"brcm,pins:0";
3160 +++ b/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts
3162 +// Definitions for RPi DAC
3167 + compatible = "brcm,bcm2708";
3170 + target = <&sound>;
3172 + compatible = "rpi,rpi-dac";
3173 + i2s-controller = <&i2s>;
3186 + target-path = "/";
3189 + #sound-dai-cells = <0>;
3190 + compatible = "ti,pcm1794a";
3197 +++ b/arch/arm/boot/dts/overlays/rpi-display-overlay.dts
3200 + * Device Tree overlay for rpi-display by Watterott
3208 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
3216 + status = "disabled";
3220 + status = "disabled";
3228 + rpi_display_pins: rpi_display_pins {
3229 + brcm,pins = <18 23 24 25>;
3230 + brcm,function = <1 1 1 0>; /* out out out in */
3231 + brcm,pull = <0 0 0 2>; /* - - - up */
3239 + /* needed to avoid dtc warning */
3240 + #address-cells = <1>;
3241 + #size-cells = <0>;
3243 + rpidisplay: rpi-display@0{
3244 + compatible = "ilitek,ili9341";
3246 + pinctrl-names = "default";
3247 + pinctrl-0 = <&rpi_display_pins>;
3249 + spi-max-frequency = <32000000>;
3254 + reset-gpios = <&gpio 23 0>;
3255 + dc-gpios = <&gpio 24 0>;
3256 + led-gpios = <&gpio 18 1>;
3260 + rpidisplay_ts: rpi-display-ts@1 {
3261 + compatible = "ti,ads7846";
3264 + spi-max-frequency = <2000000>;
3265 + interrupts = <25 2>; /* high-to-low edge triggered */
3266 + interrupt-parent = <&gpio>;
3267 + pendown-gpio = <&gpio 25 0>;
3268 + ti,x-plate-ohms = /bits/ 16 <60>;
3269 + ti,pressure-max = /bits/ 16 <255>;
3274 + speed = <&rpidisplay>,"spi-max-frequency:0";
3275 + rotate = <&rpidisplay>,"rotate:0";
3276 + fps = <&rpidisplay>,"fps:0";
3277 + debug = <&rpidisplay>,"debug:0";
3278 + xohms = <&rpidisplay_ts>,"ti,x-plate-ohms;0";
3282 +++ b/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts
3284 +// Definitions for Rpi-Proto
3289 + compatible = "brcm,bcm2708";
3292 + target = <&sound>;
3294 + compatible = "rpi,rpi-proto";
3295 + i2s-controller = <&i2s>;
3310 + #address-cells = <1>;
3311 + #size-cells = <0>;
3315 + #sound-dai-cells = <0>;
3316 + compatible = "wlf,wm8731";
3324 +++ b/arch/arm/boot/dts/overlays/sdhost-overlay.dts
3330 + compatible = "brcm,bcm2708";
3335 + #address-cells = <1>;
3336 + #size-cells = <1>;
3338 + sdhost: sdhost@7e202000 {
3339 + compatible = "brcm,bcm2835-sdhost";
3340 + reg = <0x7e202000 0x100>;
3341 + pinctrl-names = "default";
3342 + pinctrl-0 = <&sdhost_pins>;
3343 + interrupts = <2 24>;
3344 + clocks = <&clk_sdhost>;
3347 + dma-names = "tx", "rx";
3348 + brcm,delay-after-stop = <0>;
3349 + brcm,overclock-50 = <0>;
3356 + target = <&clocks>;
3358 + #address-cells = <1>;
3359 + #size-cells = <0>;
3361 + clk_sdhost: sdhost {
3362 + compatible = "fixed-clock";
3364 + #clock-cells = <0>;
3365 + clock-output-names = "sdhost";
3366 + clock-frequency = <250000000>;
3374 + sdhost_pins: sdhost_pins {
3375 + brcm,pins = <48 49 50 51 52 53>;
3376 + brcm,function = <4>; /* alt0 */
3384 + /* Find a way to disable the other driver */
3386 + status = "disabled";
3391 + target-path = "/__overrides__";
3393 + sdhost_freq = <&clk_sdhost>,"clock-frequency:0";
3398 + delay_after_stop = <&sdhost>,"brcm,delay-after-stop:0";
3399 + overclock_50 = <&sdhost>,"brcm,overclock-50:0";
3400 + force_pio = <&sdhost>,"brcm,force-pio?";
3401 + sdhost_freq = <&clk_sdhost>,"clock-frequency:0";
3405 +++ b/arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts
3408 + * Device tree overlay for spi-bcm2835
3415 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
3416 + /* setting up compatiblity to allow loading the spi-bcm2835 driver */
3421 + compatible = "brcm,bcm2708-spi";
3426 +++ b/arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts
3429 + * Device tree overlay for spi-bcm2835
3436 + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
3437 + /* setting up compatiblity to allow loading the spi-bcm2835 driver */
3442 + compatible = "brcm,bcm2835-spi";
3447 +++ b/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
3450 + * tinylcd35-overlay.dts
3452 + * -------------------------------------------------
3453 + * www.tinlylcd.com
3454 + * -------------------------------------------------
3455 + * Device---Driver-----BUS GPIO's
3456 + * display tinylcd35 spi0.0 25 24 18
3457 + * touch ads7846 spi0.1 5
3458 + * rtc ds1307 i2c1-0068
3459 + * rtc pcf8563 i2c1-0051
3460 + * keypad gpio-keys --------- 17 22 27 23 28
3463 + * TinyLCD.com 3.5 inch TFT
3466 + * 5/3/2015 -- Noralf Trønnes Initial Device tree framework
3467 + * 10/3/2015 -- tinylcd@gmail.com added ds1307 support.
3475 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
3483 + status = "disabled";
3487 + status = "disabled";
3495 + tinylcd35_pins: tinylcd35_pins {
3496 + brcm,pins = <25 24 18>;
3497 + brcm,function = <1>; /* out */
3499 + tinylcd35_ts_pins: tinylcd35_ts_pins {
3501 + brcm,function = <0>; /* in */
3503 + keypad_pins: keypad_pins {
3504 + brcm,pins = <4 17 22 23 27>;
3505 + brcm,function = <0>; /* in */
3506 + brcm,pull = <1>; /* down */
3514 + /* needed to avoid dtc warning */
3515 + #address-cells = <1>;
3516 + #size-cells = <0>;
3518 + tinylcd35: tinylcd35@0{
3519 + compatible = "neosec,tinylcd";
3521 + pinctrl-names = "default";
3522 + pinctrl-0 = <&tinylcd35_pins>,
3523 + <&tinylcd35_ts_pins>;
3525 + spi-max-frequency = <48000000>;
3530 + reset-gpios = <&gpio 25 0>;
3531 + dc-gpios = <&gpio 24 0>;
3532 + led-gpios = <&gpio 18 1>;
3535 + init = <0x10000B0 0x80
3536 + 0x10000C0 0x0A 0x0A
3537 + 0x10000C1 0x01 0x01
3539 + 0x10000C5 0x00 0x42 0x80
3540 + 0x10000B1 0xD0 0x11
3542 + 0x10000B6 0x00 0x22 0x3B
3545 + 0x10000F0 0x36 0xA5 0xD3
3550 + 0x10000F0 0x36 0xA5 0x53
3551 + 0x10000E0 0x00 0x35 0x33 0x00 0x00 0x00 0x00 0x35 0x33 0x00 0x00 0x00
3558 + tinylcd35_ts: tinylcd35_ts@1 {
3559 + compatible = "ti,ads7846";
3561 + status = "disabled";
3563 + spi-max-frequency = <2000000>;
3564 + interrupts = <5 2>; /* high-to-low edge triggered */
3565 + interrupt-parent = <&gpio>;
3566 + pendown-gpio = <&gpio 5 0>;
3567 + ti,x-plate-ohms = /bits/ 16 <100>;
3568 + ti,pressure-max = /bits/ 16 <255>;
3578 + #address-cells = <1>;
3579 + #size-cells = <0>;
3581 + pcf8563: pcf8563@51 {
3582 + compatible = "nxp,pcf8563";
3584 + status = "disabled";
3592 + #address-cells = <1>;
3593 + #size-cells = <0>;
3595 + ds1307: ds1307@68 {
3596 + compatible = "maxim,ds1307";
3598 + status = "disabled";
3604 + * Values for input event code is found under the
3605 + * 'Keys and buttons' heading in include/uapi/linux/input.h
3608 + target-path = "/soc";
3611 + compatible = "gpio-keys";
3612 + #address-cells = <1>;
3613 + #size-cells = <0>;
3614 + pinctrl-names = "default";
3615 + pinctrl-0 = <&keypad_pins>;
3616 + status = "disabled";
3620 + label = "GPIO KEY_UP";
3621 + linux,code = <103>;
3622 + gpios = <&gpio 17 0>;
3625 + label = "GPIO KEY_DOWN";
3626 + linux,code = <108>;
3627 + gpios = <&gpio 22 0>;
3630 + label = "GPIO KEY_LEFT";
3631 + linux,code = <105>;
3632 + gpios = <&gpio 27 0>;
3635 + label = "GPIO KEY_RIGHT";
3636 + linux,code = <106>;
3637 + gpios = <&gpio 23 0>;
3640 + label = "GPIO KEY_ENTER";
3641 + linux,code = <28>;
3642 + gpios = <&gpio 4 0>;
3649 + speed = <&tinylcd35>,"spi-max-frequency:0";
3650 + rotate = <&tinylcd35>,"rotate:0";
3651 + fps = <&tinylcd35>,"fps:0";
3652 + debug = <&tinylcd35>,"debug:0";
3653 + touch = <&tinylcd35_ts>,"status";
3654 + touchgpio = <&tinylcd35_ts_pins>,"brcm,pins:0",
3655 + <&tinylcd35_ts>,"interrupts:0",
3656 + <&tinylcd35_ts>,"pendown-gpio:4";
3657 + xohms = <&tinylcd35_ts>,"ti,x-plate-ohms;0";
3658 + rtc-pcf = <&i2c1>,"status",
3659 + <&pcf8563>,"status";
3660 + rtc-ds = <&i2c1>,"status",
3661 + <&ds1307>,"status";
3662 + keypad = <&keypad>,"status";
3666 +++ b/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
3668 +// Definitions for w1-gpio module (without external pullup)
3673 + compatible = "brcm,bcm2708";
3676 + target-path = "/";
3680 + compatible = "w1-gpio";
3681 + pinctrl-names = "default";
3682 + pinctrl-0 = <&w1_pins>;
3683 + gpios = <&gpio 4 0>;
3684 + rpi,parasitic-power = <0>;
3693 + w1_pins: w1_pins {
3695 + brcm,function = <0>; // in (initially)
3696 + brcm,pull = <0>; // off
3702 + gpiopin = <&w1>,"gpios:4",
3703 + <&w1_pins>,"brcm,pins:0";
3704 + pullup = <&w1>,"rpi,parasitic-power:0";
3708 +++ b/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
3710 +// Definitions for w1-gpio module (with external pullup)
3715 + compatible = "brcm,bcm2708";
3718 + target-path = "/";
3722 + compatible = "w1-gpio";
3723 + pinctrl-names = "default";
3724 + pinctrl-0 = <&w1_pins>;
3725 + gpios = <&gpio 4 0>, <&gpio 5 1>;
3726 + rpi,parasitic-power = <0>;
3735 + w1_pins: w1_pins {
3736 + brcm,pins = <4 5>;
3737 + brcm,function = <0 1>; // in out
3738 + brcm,pull = <0 0>; // off off
3744 + gpiopin = <&w1>,"gpios:4",
3745 + <&w1_pins>,"brcm,pins:0";
3746 + extpullup = <&w1>,"gpios:16",
3747 + <&w1_pins>,"brcm,pins:4";
3748 + pullup = <&w1>,"rpi,parasitic-power:0";