Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'sunxi-dt64-for-4.14-2' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into next/dt64

Pull "Allwinner arm64 device tree changes for 4.14, round 2" from Chen-Yu Tsai:

The usual improvement patches:

- PMIC, USB and WiFi enabled for Bananapi M64

- New board added: NanoPi A64

- New board added: Olimex A64-OLinuXino

* tag 'sunxi-dt64-for-4.14-2' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux:
arm64: allwinner: a64: Add A64-OLinuXino initial support
arm64: allwinner: a64: Add initial NanoPi A64 support
arm64: allwinner: a64: add proper support for the Wi-Fi on BPi M64
arm64: allwinner: a64: enable AXP803 for Banana Pi M64
arm64: allwinner: a64: enable USB host controller for BPi M64

+544 -8
+2
arch/arm64/boot/dts/allwinner/Makefile
··· 1 1 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-bananapi-m64.dtb 2 + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-nanopi-a64.dtb 3 + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-olinuxino.dtb 2 4 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-orangepi-win.dtb 3 5 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pine64-plus.dtb sun50i-a64-pine64.dtb 4 6 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb
+136 -8
arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
··· 59 59 stdout-path = "serial0:115200n8"; 60 60 }; 61 61 62 - reg_vcc3v3: vcc3v3 { 63 - compatible = "regulator-fixed"; 64 - regulator-name = "vcc3v3"; 65 - regulator-min-microvolt = <3300000>; 66 - regulator-max-microvolt = <3300000>; 62 + wifi_pwrseq: wifi_pwrseq { 63 + compatible = "mmc-pwrseq-simple"; 64 + reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ 67 65 }; 66 + }; 67 + 68 + &ehci1 { 69 + status = "okay"; 68 70 }; 69 71 70 72 &emac { ··· 74 72 pinctrl-0 = <&rgmii_pins>; 75 73 phy-mode = "rgmii"; 76 74 phy-handle = <&ext_rgmii_phy>; 75 + phy-supply = <&reg_dc1sw>; 77 76 status = "okay"; 78 77 }; 79 78 ··· 98 95 &mmc0 { 99 96 pinctrl-names = "default"; 100 97 pinctrl-0 = <&mmc0_pins>; 101 - vmmc-supply = <&reg_vcc3v3>; 98 + vmmc-supply = <&reg_dcdc1>; 102 99 cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; 103 100 cd-inverted; 104 101 disable-wp; ··· 109 106 &mmc1 { 110 107 pinctrl-names = "default"; 111 108 pinctrl-0 = <&mmc1_pins>; 112 - vmmc-supply = <&reg_vcc3v3>; 109 + vmmc-supply = <&reg_dldo2>; 110 + vqmmc-supply = <&reg_dldo4>; 111 + mmc-pwrseq = <&wifi_pwrseq>; 113 112 bus-width = <4>; 114 113 non-removable; 115 114 status = "okay"; 115 + 116 + brcmf: wifi@1 { 117 + reg = <1>; 118 + compatible = "brcm,bcm4329-fmac"; 119 + interrupt-parent = <&r_pio>; 120 + interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */ 121 + interrupt-names = "host-wake"; 122 + }; 116 123 }; 117 124 118 125 &mmc2 { 119 126 pinctrl-names = "default"; 120 127 pinctrl-0 = <&mmc2_pins>; 121 - vmmc-supply = <&reg_vcc3v3>; 128 + vmmc-supply = <&reg_dcdc1>; 122 129 bus-width = <8>; 123 130 non-removable; 124 131 cap-mmc-hw-reset; 125 132 status = "okay"; 133 + }; 134 + 135 + &ohci1 { 136 + status = "okay"; 137 + }; 138 + 139 + &r_rsb { 140 + status = "okay"; 141 + 142 + axp803: pmic@3a3 { 143 + compatible = "x-powers,axp803"; 144 + reg = <0x3a3>; 145 + interrupt-parent = <&r_intc>; 146 + interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 147 + }; 148 + }; 149 + 150 + #include "axp803.dtsi" 151 + 152 + &reg_aldo2 { 153 + regulator-always-on; 154 + regulator-min-microvolt = <1800000>; 155 + regulator-max-microvolt = <3300000>; 156 + regulator-name = "vcc-pl"; 157 + }; 158 + 159 + &reg_aldo3 { 160 + regulator-always-on; 161 + regulator-min-microvolt = <3000000>; 162 + regulator-max-microvolt = <3000000>; 163 + regulator-name = "vcc-pll-avcc"; 164 + }; 165 + 166 + &reg_dc1sw { 167 + regulator-name = "vcc-phy"; 168 + }; 169 + 170 + &reg_dcdc1 { 171 + regulator-always-on; 172 + regulator-min-microvolt = <3300000>; 173 + regulator-max-microvolt = <3300000>; 174 + regulator-name = "vcc-3v3"; 175 + }; 176 + 177 + &reg_dcdc2 { 178 + regulator-always-on; 179 + regulator-min-microvolt = <1040000>; 180 + regulator-max-microvolt = <1300000>; 181 + regulator-name = "vdd-cpux"; 182 + }; 183 + 184 + /* DCDC3 is polyphased with DCDC2 */ 185 + 186 + &reg_dcdc5 { 187 + regulator-always-on; 188 + regulator-min-microvolt = <1500000>; 189 + regulator-max-microvolt = <1500000>; 190 + regulator-name = "vcc-dram"; 191 + }; 192 + 193 + &reg_dcdc6 { 194 + regulator-always-on; 195 + regulator-min-microvolt = <1100000>; 196 + regulator-max-microvolt = <1100000>; 197 + regulator-name = "vdd-sys"; 198 + }; 199 + 200 + &reg_dldo1 { 201 + regulator-min-microvolt = <3300000>; 202 + regulator-max-microvolt = <3300000>; 203 + regulator-name = "vcc-hdmi-dsi"; 204 + }; 205 + 206 + &reg_dldo2 { 207 + regulator-min-microvolt = <3300000>; 208 + regulator-max-microvolt = <3300000>; 209 + regulator-name = "vcc-wifi"; 210 + }; 211 + 212 + &reg_dldo4 { 213 + regulator-min-microvolt = <1800000>; 214 + regulator-max-microvolt = <3300000>; 215 + regulator-name = "vcc-wifi-io"; 216 + }; 217 + 218 + &reg_eldo1 { 219 + regulator-min-microvolt = <1800000>; 220 + regulator-max-microvolt = <1800000>; 221 + regulator-name = "cpvdd"; 222 + }; 223 + 224 + &reg_fldo1 { 225 + regulator-min-microvolt = <1200000>; 226 + regulator-max-microvolt = <1200000>; 227 + regulator-name = "vcc-1v2-hsic"; 228 + }; 229 + 230 + /* 231 + * The A64 chip cannot work without this regulator off, although 232 + * it seems to be only driving the AR100 core. 233 + * Maybe we don't still know well about CPUs domain. 234 + */ 235 + &reg_fldo2 { 236 + regulator-always-on; 237 + regulator-min-microvolt = <1100000>; 238 + regulator-max-microvolt = <1100000>; 239 + regulator-name = "vdd-cpus"; 240 + }; 241 + 242 + &reg_rtc_ldo { 243 + regulator-name = "vcc-rtc"; 126 244 }; 127 245 128 246 &uart0 { ··· 255 131 &uart1 { 256 132 pinctrl-names = "default"; 257 133 pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; 134 + status = "okay"; 135 + }; 136 + 137 + &usbphy { 258 138 status = "okay"; 259 139 };
+207
arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts
··· 1 + /* 2 + * Copyright (C) 2017 Jagan Teki <jteki@openedev.com> 3 + * 4 + * This file is dual-licensed: you can use it either under the terms 5 + * of the GPL or the X11 license, at your option. Note that this dual 6 + * licensing only applies to this file, and not this project as a 7 + * whole. 8 + * 9 + * a) This library is free software; you can redistribute it and/or 10 + * modify it under the terms of the GNU General Public License as 11 + * published by the Free Software Foundation; either version 2 of the 12 + * License, or (at your option) any later version. 13 + * 14 + * This library is distributed in the hope that it will be useful, 15 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 + * GNU General Public License for more details. 18 + * 19 + * Or, alternatively, 20 + * 21 + * b) Permission is hereby granted, free of charge, to any person 22 + * obtaining a copy of this software and associated documentation 23 + * files (the "Software"), to deal in the Software without 24 + * restriction, including without limitation the rights to use, 25 + * copy, modify, merge, publish, distribute, sublicense, and/or 26 + * sell copies of the Software, and to permit persons to whom the 27 + * Software is furnished to do so, subject to the following 28 + * conditions: 29 + * 30 + * The above copyright notice and this permission notice shall be 31 + * included in all copies or substantial portions of the Software. 32 + * 33 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40 + * OTHER DEALINGS IN THE SOFTWARE. 41 + */ 42 + 43 + /dts-v1/; 44 + 45 + #include "sun50i-a64.dtsi" 46 + 47 + #include <dt-bindings/gpio/gpio.h> 48 + 49 + / { 50 + model = "FriendlyARM NanoPi A64"; 51 + compatible = "friendlyarm,nanopi-a64", "allwinner,sun50i-a64"; 52 + 53 + aliases { 54 + serial0 = &uart0; 55 + }; 56 + 57 + chosen { 58 + stdout-path = "serial0:115200n8"; 59 + }; 60 + }; 61 + 62 + &ehci0 { 63 + status = "okay"; 64 + }; 65 + 66 + &ehci1 { 67 + status = "okay"; 68 + }; 69 + 70 + /* i2c1 connected with gpio headers like pine64, bananapi */ 71 + &i2c1 { 72 + pinctrl-names = "default"; 73 + pinctrl-0 = <&i2c1_pins>; 74 + status = "disabled"; 75 + }; 76 + 77 + &i2c1_pins { 78 + bias-pull-up; 79 + }; 80 + 81 + &mmc0 { 82 + pinctrl-names = "default"; 83 + pinctrl-0 = <&mmc0_pins>; 84 + vmmc-supply = <&reg_dcdc1>; 85 + cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; 86 + cd-inverted; 87 + disable-wp; 88 + bus-width = <4>; 89 + status = "okay"; 90 + }; 91 + 92 + &ohci0 { 93 + status = "okay"; 94 + }; 95 + 96 + &ohci1 { 97 + status = "okay"; 98 + }; 99 + 100 + &r_rsb { 101 + status = "okay"; 102 + 103 + axp803: pmic@3a3 { 104 + compatible = "x-powers,axp803"; 105 + reg = <0x3a3>; 106 + interrupt-parent = <&r_intc>; 107 + interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 108 + }; 109 + }; 110 + 111 + #include "axp803.dtsi" 112 + 113 + &reg_aldo2 { 114 + regulator-always-on; 115 + regulator-min-microvolt = <1800000>; 116 + regulator-max-microvolt = <3300000>; 117 + regulator-name = "vcc-pl"; 118 + }; 119 + 120 + &reg_aldo3 { 121 + regulator-always-on; 122 + regulator-min-microvolt = <3000000>; 123 + regulator-max-microvolt = <3000000>; 124 + regulator-name = "vcc-pll-avcc"; 125 + }; 126 + 127 + &reg_dcdc1 { 128 + regulator-always-on; 129 + regulator-min-microvolt = <3000000>; 130 + regulator-max-microvolt = <3000000>; 131 + regulator-name = "vcc-3v"; 132 + }; 133 + 134 + &reg_dcdc2 { 135 + regulator-always-on; 136 + regulator-min-microvolt = <1040000>; 137 + regulator-max-microvolt = <1300000>; 138 + regulator-name = "vdd-cpux"; 139 + }; 140 + 141 + /* DCDC3 is polyphased with DCDC2 */ 142 + 143 + &reg_dcdc5 { 144 + regulator-always-on; 145 + regulator-min-microvolt = <1500000>; 146 + regulator-max-microvolt = <1500000>; 147 + regulator-name = "vcc-dram"; 148 + }; 149 + 150 + &reg_dcdc6 { 151 + regulator-always-on; 152 + regulator-min-microvolt = <1100000>; 153 + regulator-max-microvolt = <1100000>; 154 + regulator-name = "vdd-sys"; 155 + }; 156 + 157 + &reg_dldo1 { 158 + regulator-always-on; 159 + regulator-min-microvolt = <3300000>; 160 + regulator-max-microvolt = <3300000>; 161 + regulator-name = "vcc-hdmi-dsi"; 162 + }; 163 + 164 + &reg_dldo4 { 165 + regulator-always-on; 166 + regulator-min-microvolt = <3000000>; 167 + regulator-max-microvolt = <3000000>; 168 + regulator-name = "vcc-pg-wifi-io"; 169 + }; 170 + 171 + &reg_eldo1 { 172 + regulator-min-microvolt = <1800000>; 173 + regulator-max-microvolt = <1800000>; 174 + regulator-name = "cpvdd"; 175 + }; 176 + 177 + &reg_fldo1 { 178 + regulator-min-microvolt = <1200000>; 179 + regulator-max-microvolt = <1200000>; 180 + regulator-name = "vcc-1v2-hsic"; 181 + }; 182 + 183 + /* 184 + * The A64 chip cannot work without this regulator off, although 185 + * it seems to be only driving the AR100 core. 186 + * Maybe we don't still know well about CPUs domain. 187 + */ 188 + &reg_fldo2 { 189 + regulator-always-on; 190 + regulator-min-microvolt = <1100000>; 191 + regulator-max-microvolt = <1100000>; 192 + regulator-name = "vdd-cpus"; 193 + }; 194 + 195 + &reg_rtc_ldo { 196 + regulator-name = "vcc-rtc"; 197 + }; 198 + 199 + &uart0 { 200 + pinctrl-names = "default"; 201 + pinctrl-0 = <&uart0_pins_a>; 202 + status = "okay"; 203 + }; 204 + 205 + &usbphy { 206 + status = "okay"; 207 + };
+199
arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts
··· 1 + /* 2 + * Copyright (C) 2017 Jagan Teki <jteki@openedev.com> 3 + * 4 + * This file is dual-licensed: you can use it either under the terms 5 + * of the GPL or the X11 license, at your option. Note that this dual 6 + * licensing only applies to this file, and not this project as a 7 + * whole. 8 + * 9 + * a) This library is free software; you can redistribute it and/or 10 + * modify it under the terms of the GNU General Public License as 11 + * published by the Free Software Foundation; either version 2 of the 12 + * License, or (at your option) any later version. 13 + * 14 + * This library is distributed in the hope that it will be useful, 15 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 + * GNU General Public License for more details. 18 + * 19 + * Or, alternatively, 20 + * 21 + * b) Permission is hereby granted, free of charge, to any person 22 + * obtaining a copy of this software and associated documentation 23 + * files (the "Software"), to deal in the Software without 24 + * restriction, including without limitation the rights to use, 25 + * copy, modify, merge, publish, distribute, sublicense, and/or 26 + * sell copies of the Software, and to permit persons to whom the 27 + * Software is furnished to do so, subject to the following 28 + * conditions: 29 + * 30 + * The above copyright notice and this permission notice shall be 31 + * included in all copies or substantial portions of the Software. 32 + * 33 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40 + * OTHER DEALINGS IN THE SOFTWARE. 41 + */ 42 + 43 + /dts-v1/; 44 + 45 + #include "sun50i-a64.dtsi" 46 + 47 + #include <dt-bindings/gpio/gpio.h> 48 + 49 + / { 50 + model = "Olimex A64-Olinuxino"; 51 + compatible = "olimex,a64-olinuxino", "allwinner,sun50i-a64"; 52 + 53 + aliases { 54 + serial0 = &uart0; 55 + }; 56 + 57 + chosen { 58 + stdout-path = "serial0:115200n8"; 59 + }; 60 + }; 61 + 62 + &mmc0 { 63 + pinctrl-names = "default"; 64 + pinctrl-0 = <&mmc0_pins>; 65 + vmmc-supply = <&reg_dcdc1>; 66 + cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; 67 + cd-inverted; 68 + disable-wp; 69 + bus-width = <4>; 70 + status = "okay"; 71 + }; 72 + 73 + &r_rsb { 74 + status = "okay"; 75 + 76 + axp803: pmic@3a3 { 77 + compatible = "x-powers,axp803"; 78 + reg = <0x3a3>; 79 + interrupt-parent = <&r_intc>; 80 + interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 81 + }; 82 + }; 83 + 84 + #include "axp803.dtsi" 85 + 86 + &reg_aldo1 { 87 + regulator-always-on; 88 + regulator-min-microvolt = <2800000>; 89 + regulator-max-microvolt = <2800000>; 90 + regulator-name = "vcc-pe"; 91 + }; 92 + 93 + &reg_aldo2 { 94 + regulator-always-on; 95 + regulator-min-microvolt = <3300000>; 96 + regulator-max-microvolt = <3300000>; 97 + regulator-name = "vcc-pl"; 98 + }; 99 + 100 + &reg_aldo3 { 101 + regulator-always-on; 102 + regulator-min-microvolt = <3000000>; 103 + regulator-max-microvolt = <3000000>; 104 + regulator-name = "vcc-pll-avcc"; 105 + }; 106 + 107 + &reg_dcdc1 { 108 + regulator-always-on; 109 + regulator-min-microvolt = <3300000>; 110 + regulator-max-microvolt = <3300000>; 111 + regulator-name = "vcc-3v3"; 112 + }; 113 + 114 + &reg_dcdc2 { 115 + regulator-always-on; 116 + regulator-min-microvolt = <1040000>; 117 + regulator-max-microvolt = <1300000>; 118 + regulator-name = "vdd-cpux"; 119 + }; 120 + 121 + /* DCDC3 is polyphased with DCDC2 */ 122 + 123 + &reg_dcdc5 { 124 + regulator-always-on; 125 + regulator-min-microvolt = <1500000>; 126 + regulator-max-microvolt = <1500000>; 127 + regulator-name = "vcc-ddr3"; 128 + }; 129 + 130 + &reg_dcdc6 { 131 + regulator-always-on; 132 + regulator-min-microvolt = <1100000>; 133 + regulator-max-microvolt = <1100000>; 134 + regulator-name = "vdd-sys"; 135 + }; 136 + 137 + &reg_dldo1 { 138 + regulator-min-microvolt = <3300000>; 139 + regulator-max-microvolt = <3300000>; 140 + regulator-name = "vcc-hdmi"; 141 + }; 142 + 143 + &reg_dldo2 { 144 + regulator-min-microvolt = <3300000>; 145 + regulator-max-microvolt = <3300000>; 146 + regulator-name = "vcc-mipi"; 147 + }; 148 + 149 + &reg_dldo3 { 150 + regulator-min-microvolt = <2800000>; 151 + regulator-max-microvolt = <2800000>; 152 + regulator-name = "vcc-avdd-csi"; 153 + }; 154 + 155 + &reg_dldo4 { 156 + regulator-min-microvolt = <3300000>; 157 + regulator-max-microvolt = <3300000>; 158 + regulator-name = "vcc-wifi-io"; 159 + }; 160 + 161 + &reg_eldo1 { 162 + regulator-min-microvolt = <1800000>; 163 + regulator-max-microvolt = <1800000>; 164 + regulator-name = "cpvdd"; 165 + }; 166 + 167 + &reg_eldo2 { 168 + regulator-min-microvolt = <1800000>; 169 + regulator-max-microvolt = <1800000>; 170 + regulator-name = "vcc-dvdd-csi"; 171 + }; 172 + 173 + &reg_fldo1 { 174 + regulator-min-microvolt = <1200000>; 175 + regulator-max-microvolt = <1200000>; 176 + regulator-name = "vcc-1v2-hsic"; 177 + }; 178 + 179 + /* 180 + * The A64 chip cannot work without this regulator off, although 181 + * it seems to be only driving the AR100 core. 182 + * Maybe we don't still know well about CPUs domain. 183 + */ 184 + &reg_fldo2 { 185 + regulator-always-on; 186 + regulator-min-microvolt = <1100000>; 187 + regulator-max-microvolt = <1100000>; 188 + regulator-name = "vdd-cpus"; 189 + }; 190 + 191 + &reg_rtc_ldo { 192 + regulator-name = "vcc-rtc"; 193 + }; 194 + 195 + &uart0 { 196 + pinctrl-names = "default"; 197 + pinctrl-0 = <&uart0_pins_a>; 198 + status = "okay"; 199 + };