1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT) !! 1 /* 2 // Copyright (c) 2016 ARM Ltd. !! 2 * Copyright (c) 2016 ARM Ltd. >> 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 */ 3 42 4 /dts-v1/; 43 /dts-v1/; 5 44 6 #include "sun50i-a64.dtsi" 45 #include "sun50i-a64.dtsi" 7 #include "sun50i-a64-cpu-opp.dtsi" << 8 46 9 #include <dt-bindings/gpio/gpio.h> 47 #include <dt-bindings/gpio/gpio.h> 10 48 11 / { 49 / { 12 model = "Pine64 PINE A64"; !! 50 model = "Pine64"; 13 compatible = "pine64,pine64", "allwinn 51 compatible = "pine64,pine64", "allwinner,sun50i-a64"; 14 52 15 aliases { 53 aliases { 16 ethernet0 = &emac; 54 ethernet0 = &emac; 17 serial0 = &uart0; 55 serial0 = &uart0; 18 serial1 = &uart1; 56 serial1 = &uart1; 19 serial2 = &uart2; 57 serial2 = &uart2; 20 serial3 = &uart3; 58 serial3 = &uart3; 21 serial4 = &uart4; 59 serial4 = &uart4; 22 }; 60 }; 23 61 24 chosen { 62 chosen { 25 stdout-path = "serial0:115200n 63 stdout-path = "serial0:115200n8"; 26 }; 64 }; 27 65 28 hdmi-connector { 66 hdmi-connector { 29 compatible = "hdmi-connector"; 67 compatible = "hdmi-connector"; 30 type = "a"; 68 type = "a"; 31 69 32 port { 70 port { 33 hdmi_con_in: endpoint 71 hdmi_con_in: endpoint { 34 remote-endpoin 72 remote-endpoint = <&hdmi_out_con>; 35 }; 73 }; 36 }; 74 }; 37 }; 75 }; 38 }; 76 }; 39 77 40 &codec { 78 &codec { 41 status = "okay"; 79 status = "okay"; 42 }; 80 }; 43 81 44 &codec_analog { 82 &codec_analog { 45 cpvdd-supply = <®_eldo1>; !! 83 hpvcc-supply = <®_eldo1>; 46 status = "okay"; 84 status = "okay"; 47 }; 85 }; 48 86 49 &cpu0 { << 50 cpu-supply = <®_dcdc2>; << 51 }; << 52 << 53 &cpu1 { << 54 cpu-supply = <®_dcdc2>; << 55 }; << 56 << 57 &cpu2 { << 58 cpu-supply = <®_dcdc2>; << 59 }; << 60 << 61 &cpu3 { << 62 cpu-supply = <®_dcdc2>; << 63 }; << 64 << 65 &dai { 87 &dai { 66 status = "okay"; 88 status = "okay"; 67 }; 89 }; 68 90 69 &de { 91 &de { 70 status = "okay"; 92 status = "okay"; 71 }; 93 }; 72 94 73 &ehci0 { 95 &ehci0 { 74 status = "okay"; 96 status = "okay"; 75 }; 97 }; 76 98 77 &ehci1 { 99 &ehci1 { 78 status = "okay"; 100 status = "okay"; 79 }; 101 }; 80 102 81 &emac { 103 &emac { 82 pinctrl-names = "default"; 104 pinctrl-names = "default"; 83 pinctrl-0 = <&rmii_pins>; 105 pinctrl-0 = <&rmii_pins>; 84 phy-mode = "rmii"; 106 phy-mode = "rmii"; 85 phy-handle = <&ext_rmii_phy1>; 107 phy-handle = <&ext_rmii_phy1>; 86 phy-supply = <®_dc1sw>; 108 phy-supply = <®_dc1sw>; 87 status = "okay"; 109 status = "okay"; 88 110 89 }; 111 }; 90 112 91 &hdmi { 113 &hdmi { 92 hvcc-supply = <®_dldo1>; 114 hvcc-supply = <®_dldo1>; 93 status = "okay"; 115 status = "okay"; 94 }; 116 }; 95 117 96 &hdmi_out { 118 &hdmi_out { 97 hdmi_out_con: endpoint { 119 hdmi_out_con: endpoint { 98 remote-endpoint = <&hdmi_con_i 120 remote-endpoint = <&hdmi_con_in>; 99 }; 121 }; 100 }; 122 }; 101 123 102 &i2c1 { 124 &i2c1 { >> 125 pinctrl-names = "default"; >> 126 pinctrl-0 = <&i2c1_pins>; 103 status = "okay"; 127 status = "okay"; 104 }; 128 }; 105 129 106 &i2c1_pins { 130 &i2c1_pins { 107 bias-pull-up; 131 bias-pull-up; 108 }; 132 }; 109 133 110 &mdio { 134 &mdio { 111 ext_rmii_phy1: ethernet-phy@1 { 135 ext_rmii_phy1: ethernet-phy@1 { 112 compatible = "ethernet-phy-iee 136 compatible = "ethernet-phy-ieee802.3-c22"; 113 reg = <1>; 137 reg = <1>; 114 }; 138 }; 115 }; 139 }; 116 140 117 &mmc0 { 141 &mmc0 { 118 pinctrl-names = "default"; 142 pinctrl-names = "default"; 119 pinctrl-0 = <&mmc0_pins>; 143 pinctrl-0 = <&mmc0_pins>; 120 vmmc-supply = <®_dcdc1>; 144 vmmc-supply = <®_dcdc1>; 121 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 145 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; 122 disable-wp; 146 disable-wp; 123 bus-width = <4>; 147 bus-width = <4>; 124 status = "okay"; 148 status = "okay"; 125 }; 149 }; 126 150 127 &ohci0 { 151 &ohci0 { 128 status = "okay"; 152 status = "okay"; 129 }; 153 }; 130 154 131 &ohci1 { 155 &ohci1 { 132 status = "okay"; 156 status = "okay"; 133 }; 157 }; 134 158 135 &r_rsb { 159 &r_rsb { 136 status = "okay"; 160 status = "okay"; 137 161 138 axp803: pmic@3a3 { 162 axp803: pmic@3a3 { 139 compatible = "x-powers,axp803" 163 compatible = "x-powers,axp803"; 140 reg = <0x3a3>; 164 reg = <0x3a3>; 141 interrupt-parent = <&r_intc>; 165 interrupt-parent = <&r_intc>; 142 interrupts = <GIC_SPI 32 IRQ_T !! 166 interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 143 }; 167 }; 144 }; 168 }; 145 169 146 #include "axp803.dtsi" 170 #include "axp803.dtsi" 147 171 148 &ac_power_supply { 172 &ac_power_supply { 149 status = "okay"; 173 status = "okay"; 150 }; 174 }; 151 175 152 &battery_power_supply { 176 &battery_power_supply { 153 status = "okay"; 177 status = "okay"; 154 }; 178 }; 155 179 156 ®_aldo2 { 180 ®_aldo2 { 157 regulator-always-on; 181 regulator-always-on; 158 regulator-min-microvolt = <1800000>; 182 regulator-min-microvolt = <1800000>; 159 regulator-max-microvolt = <3300000>; 183 regulator-max-microvolt = <3300000>; 160 regulator-name = "vcc-pl"; 184 regulator-name = "vcc-pl"; 161 }; 185 }; 162 186 163 ®_aldo3 { 187 ®_aldo3 { 164 regulator-always-on; 188 regulator-always-on; 165 regulator-min-microvolt = <3000000>; 189 regulator-min-microvolt = <3000000>; 166 regulator-max-microvolt = <3000000>; 190 regulator-max-microvolt = <3000000>; 167 regulator-name = "vcc-pll-avcc"; 191 regulator-name = "vcc-pll-avcc"; 168 }; 192 }; 169 193 170 ®_dc1sw { 194 ®_dc1sw { 171 regulator-name = "vcc-phy"; 195 regulator-name = "vcc-phy"; 172 }; 196 }; 173 197 174 ®_dcdc1 { 198 ®_dcdc1 { 175 regulator-always-on; 199 regulator-always-on; 176 regulator-min-microvolt = <3300000>; 200 regulator-min-microvolt = <3300000>; 177 regulator-max-microvolt = <3300000>; 201 regulator-max-microvolt = <3300000>; 178 regulator-name = "vcc-3v3"; 202 regulator-name = "vcc-3v3"; 179 }; 203 }; 180 204 181 ®_dcdc2 { 205 ®_dcdc2 { 182 regulator-always-on; 206 regulator-always-on; 183 regulator-min-microvolt = <1040000>; 207 regulator-min-microvolt = <1040000>; 184 regulator-max-microvolt = <1300000>; 208 regulator-max-microvolt = <1300000>; 185 regulator-name = "vdd-cpux"; 209 regulator-name = "vdd-cpux"; 186 }; 210 }; 187 211 188 /* DCDC3 is polyphased with DCDC2 */ 212 /* DCDC3 is polyphased with DCDC2 */ 189 213 190 /* 214 /* 191 * The DRAM chips used by Pine64 boards are DD 215 * The DRAM chips used by Pine64 boards are DDR3L-compatible, so they can 192 * work at 1.35V with less power consumption. 216 * work at 1.35V with less power consumption. 193 * As AXP803 DCDC5 cannot reach 1.35V accurate 217 * As AXP803 DCDC5 cannot reach 1.35V accurately, use 1.36V instead. 194 */ 218 */ 195 ®_dcdc5 { 219 ®_dcdc5 { 196 regulator-always-on; 220 regulator-always-on; 197 regulator-min-microvolt = <1360000>; 221 regulator-min-microvolt = <1360000>; 198 regulator-max-microvolt = <1360000>; 222 regulator-max-microvolt = <1360000>; 199 regulator-name = "vcc-dram"; 223 regulator-name = "vcc-dram"; 200 }; 224 }; 201 225 202 ®_dcdc6 { 226 ®_dcdc6 { 203 regulator-always-on; 227 regulator-always-on; 204 regulator-min-microvolt = <1100000>; 228 regulator-min-microvolt = <1100000>; 205 regulator-max-microvolt = <1100000>; 229 regulator-max-microvolt = <1100000>; 206 regulator-name = "vdd-sys"; 230 regulator-name = "vdd-sys"; 207 }; 231 }; 208 232 209 ®_dldo1 { 233 ®_dldo1 { 210 regulator-min-microvolt = <3300000>; 234 regulator-min-microvolt = <3300000>; 211 regulator-max-microvolt = <3300000>; 235 regulator-max-microvolt = <3300000>; 212 regulator-name = "vcc-hdmi"; 236 regulator-name = "vcc-hdmi"; 213 }; 237 }; 214 238 215 ®_dldo2 { 239 ®_dldo2 { 216 regulator-min-microvolt = <3300000>; 240 regulator-min-microvolt = <3300000>; 217 regulator-max-microvolt = <3300000>; 241 regulator-max-microvolt = <3300000>; 218 regulator-name = "vcc-mipi"; 242 regulator-name = "vcc-mipi"; 219 }; 243 }; 220 244 221 ®_dldo4 { 245 ®_dldo4 { 222 regulator-min-microvolt = <3300000>; 246 regulator-min-microvolt = <3300000>; 223 regulator-max-microvolt = <3300000>; 247 regulator-max-microvolt = <3300000>; 224 regulator-name = "vcc-wifi"; 248 regulator-name = "vcc-wifi"; 225 }; 249 }; 226 250 227 ®_eldo1 { 251 ®_eldo1 { 228 regulator-min-microvolt = <1800000>; 252 regulator-min-microvolt = <1800000>; 229 regulator-max-microvolt = <1800000>; 253 regulator-max-microvolt = <1800000>; 230 regulator-name = "cpvdd"; 254 regulator-name = "cpvdd"; 231 }; 255 }; 232 256 233 ®_fldo1 { 257 ®_fldo1 { 234 regulator-min-microvolt = <1200000>; 258 regulator-min-microvolt = <1200000>; 235 regulator-max-microvolt = <1200000>; 259 regulator-max-microvolt = <1200000>; 236 regulator-name = "vcc-1v2-hsic"; 260 regulator-name = "vcc-1v2-hsic"; 237 }; 261 }; 238 262 239 /* 263 /* 240 * The A64 chip cannot work without this regul 264 * The A64 chip cannot work without this regulator off, although 241 * it seems to be only driving the AR100 core. 265 * it seems to be only driving the AR100 core. 242 * Maybe we don't still know well about CPUs d 266 * Maybe we don't still know well about CPUs domain. 243 */ 267 */ 244 ®_fldo2 { 268 ®_fldo2 { 245 regulator-always-on; 269 regulator-always-on; 246 regulator-min-microvolt = <1100000>; 270 regulator-min-microvolt = <1100000>; 247 regulator-max-microvolt = <1100000>; 271 regulator-max-microvolt = <1100000>; 248 regulator-name = "vdd-cpus"; 272 regulator-name = "vdd-cpus"; 249 }; 273 }; 250 274 251 ®_rtc_ldo { 275 ®_rtc_ldo { 252 regulator-name = "vcc-rtc"; 276 regulator-name = "vcc-rtc"; 253 }; 277 }; 254 278 255 &simplefb_hdmi { 279 &simplefb_hdmi { 256 vcc-hdmi-supply = <®_dldo1>; 280 vcc-hdmi-supply = <®_dldo1>; 257 }; 281 }; 258 282 259 &sound { 283 &sound { 260 simple-audio-card,aux-devs = <&codec_a 284 simple-audio-card,aux-devs = <&codec_analog>; 261 simple-audio-card,widgets = "Microphon 285 simple-audio-card,widgets = "Microphone", "Microphone Jack", 262 "Headphone 286 "Headphone", "Headphone Jack"; 263 simple-audio-card,routing = 287 simple-audio-card,routing = 264 "Left DAC", "DACL", !! 288 "Left DAC", "AIF1 Slot 0 Left", 265 "Right DAC", "DACR", !! 289 "Right DAC", "AIF1 Slot 0 Right", 266 "Headphone Jack", "HP" 290 "Headphone Jack", "HP", 267 "ADCL", "Left ADC", !! 291 "AIF1 Slot 0 Left ADC", "Left ADC", 268 "ADCR", "Right ADC", !! 292 "AIF1 Slot 0 Right ADC", "Right ADC", 269 "MIC2", "Microphone Ja 293 "MIC2", "Microphone Jack"; 270 status = "okay"; 294 status = "okay"; 271 }; 295 }; 272 296 273 /* On Euler connector */ 297 /* On Euler connector */ 274 &spdif { 298 &spdif { 275 status = "disabled"; 299 status = "disabled"; 276 }; 300 }; 277 301 278 /* On Exp and Euler connectors */ 302 /* On Exp and Euler connectors */ 279 &uart0 { 303 &uart0 { 280 pinctrl-names = "default"; 304 pinctrl-names = "default"; 281 pinctrl-0 = <&uart0_pb_pins>; 305 pinctrl-0 = <&uart0_pb_pins>; 282 status = "okay"; 306 status = "okay"; 283 }; 307 }; 284 308 285 /* On Wifi/BT connector, with RTS/CTS */ 309 /* On Wifi/BT connector, with RTS/CTS */ 286 &uart1 { 310 &uart1 { 287 pinctrl-names = "default"; 311 pinctrl-names = "default"; 288 pinctrl-0 = <&uart1_pins>, <&uart1_rts 312 pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; 289 status = "disabled"; 313 status = "disabled"; 290 }; 314 }; 291 315 292 /* On Pi-2 connector */ 316 /* On Pi-2 connector */ 293 &uart2 { 317 &uart2 { 294 pinctrl-names = "default"; 318 pinctrl-names = "default"; 295 pinctrl-0 = <&uart2_pins>; 319 pinctrl-0 = <&uart2_pins>; 296 status = "disabled"; 320 status = "disabled"; 297 }; 321 }; 298 322 299 /* On Euler connector */ 323 /* On Euler connector */ 300 &uart3 { 324 &uart3 { 301 pinctrl-names = "default"; 325 pinctrl-names = "default"; 302 pinctrl-0 = <&uart3_pins>; 326 pinctrl-0 = <&uart3_pins>; 303 status = "disabled"; 327 status = "disabled"; 304 }; 328 }; 305 329 306 /* On Euler connector, RTS/CTS optional */ 330 /* On Euler connector, RTS/CTS optional */ 307 &uart4 { 331 &uart4 { 308 pinctrl-names = "default"; 332 pinctrl-names = "default"; 309 pinctrl-0 = <&uart4_pins>; 333 pinctrl-0 = <&uart4_pins>; 310 status = "disabled"; 334 status = "disabled"; 311 }; 335 }; 312 336 313 &usb_otg { 337 &usb_otg { 314 dr_mode = "host"; 338 dr_mode = "host"; 315 status = "okay"; 339 status = "okay"; 316 }; 340 }; 317 341 318 &usbphy { 342 &usbphy { 319 status = "okay"; 343 status = "okay"; 320 }; 344 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.