aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2017-10-30 09:13:31 -0400
committerArnd Bergmann <arnd@arndb.de>2017-10-30 09:13:31 -0400
commitadd5c42e99b2d88542e4a194ba586930756c94ff (patch)
treead124cc73a24929789dc9606508f4e34fabce9c3
parent9f4fb2081ba9bb61757531bed48d98d15f26aac3 (diff)
parentd25d41827fee2b489518eee99ef156b005c0c01e (diff)
Merge tag 'sunxi-dt64-for-4.15' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into next/dt
Pull "Allwinner arm64 DT changes for 4.15" from Maxime Ripard: Most notable changes: - SPI and DMA support on the a64 - New boards: NanoPi NEO Plus2 * tag 'sunxi-dt64-for-4.15' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux: arm: allwinner: Correct unit name in devicetree binding example arm64: allwinner: a64: add dma controller references to spi nodes arm64: allwinner: a64: Add device node for DMA controller arm64: allwinner: a64: Fix node with unit name and no reg property arm64: allwinner: a64: Fix simple-bus unit address format error arm64: allwinner: h5: add NanoPi NEO Plus2 DT support arm64: allwinner: a64: add SPI nodes
-rw-r--r--Documentation/devicetree/bindings/dma/sun6i-dma.txt2
-rw-r--r--arch/arm64/boot/dts/allwinner/Makefile1
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi60
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts193
4 files changed, 253 insertions, 3 deletions
diff --git a/Documentation/devicetree/bindings/dma/sun6i-dma.txt b/Documentation/devicetree/bindings/dma/sun6i-dma.txt
index 98fbe1a5c6dd..b32e3bfdb88a 100644
--- a/Documentation/devicetree/bindings/dma/sun6i-dma.txt
+++ b/Documentation/devicetree/bindings/dma/sun6i-dma.txt
@@ -18,7 +18,7 @@ Required properties:
18- #dma-cells : Should be 1, a single cell holding a line request number 18- #dma-cells : Should be 1, a single cell holding a line request number
19 19
20Example: 20Example:
21 dma: dma-controller@01c02000 { 21 dma: dma-controller@1c02000 {
22 compatible = "allwinner,sun6i-a31-dma"; 22 compatible = "allwinner,sun6i-a31-dma";
23 reg = <0x01c02000 0x1000>; 23 reg = <0x01c02000 0x1000>;
24 interrupts = <0 50 4>; 24 interrupts = <0 50 4>;
diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile
index 19c3fbd75eda..5d88df3533e1 100644
--- a/arch/arm64/boot/dts/allwinner/Makefile
+++ b/arch/arm64/boot/dts/allwinner/Makefile
@@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-pc2.dtb
8dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-prime.dtb 8dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-prime.dtb
9dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus2.dtb 9dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus2.dtb
10dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo2.dtb 10dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo2.dtb
11dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo-plus2.dtb
11 12
12always := $(dtb-y) 13always := $(dtb-y)
13subdir-y := $(dts-dirs) 14subdir-y := $(dts-dirs)
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
index 0daad839f92c..062040ec2fed 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
@@ -136,6 +136,17 @@
136 reg = <0x01c00000 0x1000>; 136 reg = <0x01c00000 0x1000>;
137 }; 137 };
138 138
139 dma: dma-controller@1c02000 {
140 compatible = "allwinner,sun50i-a64-dma";
141 reg = <0x01c02000 0x1000>;
142 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
143 clocks = <&ccu CLK_BUS_DMA>;
144 dma-channels = <8>;
145 dma-requests = <27>;
146 resets = <&ccu RST_BUS_DMA>;
147 #dma-cells = <1>;
148 };
149
139 mmc0: mmc@1c0f000 { 150 mmc0: mmc@1c0f000 {
140 compatible = "allwinner,sun50i-a64-mmc"; 151 compatible = "allwinner,sun50i-a64-mmc";
141 reg = <0x01c0f000 0x1000>; 152 reg = <0x01c0f000 0x1000>;
@@ -325,7 +336,17 @@
325 drive-strength = <40>; 336 drive-strength = <40>;
326 }; 337 };
327 338
328 uart0_pins_a: uart0@0 { 339 spi0_pins: spi0 {
340 pins = "PC0", "PC1", "PC2", "PC3";
341 function = "spi0";
342 };
343
344 spi1_pins: spi1 {
345 pins = "PD0", "PD1", "PD2", "PD3";
346 function = "spi1";
347 };
348
349 uart0_pins_a: uart0 {
329 pins = "PB8", "PB9"; 350 pins = "PB8", "PB9";
330 function = "uart0"; 351 function = "uart0";
331 }; 352 };
@@ -449,6 +470,41 @@
449 #size-cells = <0>; 470 #size-cells = <0>;
450 }; 471 };
451 472
473
474 spi0: spi@1c68000 {
475 compatible = "allwinner,sun8i-h3-spi";
476 reg = <0x01c68000 0x1000>;
477 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
478 clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
479 clock-names = "ahb", "mod";
480 dmas = <&dma 23>, <&dma 23>;
481 dma-names = "rx", "tx";
482 pinctrl-names = "default";
483 pinctrl-0 = <&spi0_pins>;
484 resets = <&ccu RST_BUS_SPI0>;
485 status = "disabled";
486 num-cs = <1>;
487 #address-cells = <1>;
488 #size-cells = <0>;
489 };
490
491 spi1: spi@1c69000 {
492 compatible = "allwinner,sun8i-h3-spi";
493 reg = <0x01c69000 0x1000>;
494 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
495 clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
496 clock-names = "ahb", "mod";
497 dmas = <&dma 24>, <&dma 24>;
498 dma-names = "rx", "tx";
499 pinctrl-names = "default";
500 pinctrl-0 = <&spi1_pins>;
501 resets = <&ccu RST_BUS_SPI1>;
502 status = "disabled";
503 num-cs = <1>;
504 #address-cells = <1>;
505 #size-cells = <0>;
506 };
507
452 gic: interrupt-controller@1c81000 { 508 gic: interrupt-controller@1c81000 {
453 compatible = "arm,gic-400"; 509 compatible = "arm,gic-400";
454 reg = <0x01c81000 0x1000>, 510 reg = <0x01c81000 0x1000>,
@@ -497,7 +553,7 @@
497 interrupt-controller; 553 interrupt-controller;
498 #interrupt-cells = <3>; 554 #interrupt-cells = <3>;
499 555
500 r_rsb_pins: rsb@0 { 556 r_rsb_pins: rsb {
501 pins = "PL0", "PL1"; 557 pins = "PL0", "PL1";
502 function = "s_rsb"; 558 function = "s_rsb";
503 }; 559 };
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts
new file mode 100644
index 000000000000..7c028af58f47
--- /dev/null
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts
@@ -0,0 +1,193 @@
1/*
2 * Copyright (C) 2017 Antony Antony <antony@phenome.org>
3 * Copyright (C) 2016 ARM Ltd.
4 *
5 * This file is dual-licensed: you can use it either under the terms
6 * of the GPL or the X11 license, at your option. Note that this dual
7 * licensing only applies to this file, and not this project as a
8 * whole.
9 *
10 * a) This file is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public License as
12 * published by the Free Software Foundation; either version 2 of the
13 * License, or (at your option) any later version.
14 *
15 * This file is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * Or, alternatively,
21 *
22 * b) Permission is hereby granted, free of charge, to any person
23 * obtaining a copy of this software and associated documentation
24 * files (the "Software"), to deal in the Software without
25 * restriction, including without limitation the rights to use,
26 * copy, modify, merge, publish, distribute, sublicense, and/or
27 * sell copies of the Software, and to permit persons to whom the
28 * Software is furnished to do so, subject to the following
29 * conditions:
30 *
31 * The above copyright notice and this permission notice shall be
32 * included in all copies or substantial portions of the Software.
33 *
34 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
35 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
36 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
37 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
38 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
39 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
40 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
41 * OTHER DEALINGS IN THE SOFTWARE.
42 */
43
44/dts-v1/;
45#include "sun50i-h5.dtsi"
46
47#include <dt-bindings/gpio/gpio.h>
48#include <dt-bindings/input/input.h>
49#include <dt-bindings/pinctrl/sun4i-a10.h>
50
51/ {
52 model = "FriendlyARM NanoPi NEO Plus2";
53 compatible = "friendlyarm,nanopi-neo-plus2", "allwinner,sun50i-h5";
54
55 aliases {
56 serial0 = &uart0;
57 };
58
59 chosen {
60 stdout-path = "serial0:115200n8";
61 };
62
63 leds {
64 compatible = "gpio-leds";
65
66 pwr {
67 label = "nanopi:green:pwr";
68 gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
69 default-state = "on";
70 };
71
72 status {
73 label = "nanopi:red:status";
74 gpios = <&pio 0 20 GPIO_ACTIVE_HIGH>;
75 };
76 };
77
78 reg_gmac_3v3: gmac-3v3 {
79 compatible = "regulator-fixed";
80 pinctrl-names = "default";
81 regulator-name = "gmac-3v3";
82 regulator-min-microvolt = <3300000>;
83 regulator-max-microvolt = <3300000>;
84 startup-delay-us = <100000>;
85 enable-active-high;
86 gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
87 };
88
89 reg_vcc3v3: vcc3v3 {
90 compatible = "regulator-fixed";
91 regulator-name = "vcc3v3";
92 regulator-min-microvolt = <3300000>;
93 regulator-max-microvolt = <3300000>;
94 };
95
96 vdd_cpux: gpio-regulator {
97 compatible = "regulator-gpio";
98 pinctrl-names = "default";
99 regulator-name = "vdd-cpux";
100 regulator-type = "voltage";
101 regulator-boot-on;
102 regulator-always-on;
103 regulator-min-microvolt = <1100000>;
104 regulator-max-microvolt = <1300000>;
105 regulator-ramp-delay = <50>; /* 4ms */
106 gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>;
107 gpios-states = <0x1>;
108 states = <1100000 0x0
109 1300000 0x1>;
110 };
111
112 wifi_pwrseq: wifi_pwrseq {
113 compatible = "mmc-pwrseq-simple";
114 pinctrl-names = "default";
115 reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
116 post-power-on-delay-ms = <200>;
117 };
118};
119
120&codec {
121 allwinner,audio-routing =
122 "Line Out", "LINEOUT",
123 "MIC1", "Mic",
124 "Mic", "MBIAS";
125 status = "okay";
126};
127
128&ehci0 {
129 status = "okay";
130};
131
132&ehci3 {
133 status = "okay";
134};
135
136&mmc0 {
137 pinctrl-names = "default";
138 pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>;
139 vmmc-supply = <&reg_vcc3v3>;
140 bus-width = <4>;
141 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
142 status = "okay";
143};
144
145&mmc1 {
146 pinctrl-names = "default";
147 pinctrl-0 = <&mmc1_pins_a>;
148 vmmc-supply = <&reg_vcc3v3>;
149 vqmmc-supply = <&reg_vcc3v3>;
150 mmc-pwrseq = <&wifi_pwrseq>;
151 bus-width = <4>;
152 non-removable;
153 status = "okay";
154
155 brcmf: wifi@1 {
156 reg = <1>;
157 compatible = "brcm,bcm4329-fmac";
158 };
159};
160
161&mmc2 {
162 pinctrl-names = "default";
163 pinctrl-0 = <&mmc2_8bit_pins>;
164 vmmc-supply = <&reg_vcc3v3>;
165 bus-width = <8>;
166 non-removable;
167 cap-mmc-hw-reset;
168 status = "okay";
169};
170
171&ohci0 {
172 status = "okay";
173};
174
175&ohci3 {
176 status = "okay";
177};
178
179&uart0 {
180 pinctrl-names = "default";
181 pinctrl-0 = <&uart0_pins_a>;
182 status = "okay";
183};
184
185&usb_otg {
186 dr_mode = "host";
187 status = "okay";
188};
189
190&usbphy {
191 /* USB Type-A ports' VBUS is always on */
192 status = "okay";
193};