1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2// Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.xyz> 3// Copyright (C) 2018 Vasily Khoruzhick <anarsoul@gmail.com> 4 5/dts-v1/; 6 7#include "sun50i-a64.dtsi" 8#include "sun50i-a64-cpu-opp.dtsi" 9 10#include <dt-bindings/gpio/gpio.h> 11#include <dt-bindings/input/gpio-keys.h> 12#include <dt-bindings/input/input.h> 13#include <dt-bindings/pwm/pwm.h> 14 15/ { 16 model = "Pinebook"; 17 compatible = "pine64,pinebook", "allwinner,sun50i-a64"; 18 19 aliases { 20 serial0 = &uart0; 21 ethernet0 = &rtl8723cs; 22 }; 23 24 backlight: backlight { 25 compatible = "pwm-backlight"; 26 pwms = <&pwm 0 50000 0>; 27 brightness-levels = <0 5 10 15 20 30 40 55 70 85 100>; 28 default-brightness-level = <2>; 29 enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */ 30 power-supply = <®_vbklt>; 31 }; 32 33 chosen { 34 stdout-path = "serial0:115200n8"; 35 }; 36 37 gpio_keys { 38 compatible = "gpio-keys"; 39 40 lid_switch { 41 label = "Lid Switch"; 42 gpios = <&r_pio 0 12 GPIO_ACTIVE_LOW>; /* PL12 */ 43 linux,input-type = <EV_SW>; 44 linux,code = <SW_LID>; 45 linux,can-disable; 46 wakeup-source; 47 wakeup-event-action = <EV_ACT_DEASSERTED>; 48 }; 49 }; 50 51 panel_edp: panel-edp { 52 compatible = "neweast,wjfh116008a"; 53 backlight = <&backlight>; 54 power-supply = <®_dc1sw>; 55 56 port { 57 panel_edp_in: endpoint { 58 remote-endpoint = <&anx6345_out_edp>; 59 }; 60 }; 61 }; 62 63 reg_vbklt: vbklt { 64 compatible = "regulator-fixed"; 65 regulator-name = "vbklt"; 66 regulator-min-microvolt = <18000000>; 67 regulator-max-microvolt = <18000000>; 68 gpio = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */ 69 enable-active-high; 70 }; 71 72 reg_vcc5v0: vcc5v0 { 73 compatible = "regulator-fixed"; 74 regulator-name = "vcc5v0"; 75 regulator-min-microvolt = <5000000>; 76 regulator-max-microvolt = <5000000>; 77 gpio = <&axp_gpio 0 GPIO_ACTIVE_HIGH>; 78 enable-active-high; 79 }; 80 81 wifi_pwrseq: wifi_pwrseq { 82 compatible = "mmc-pwrseq-simple"; 83 reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ 84 }; 85 86 speaker_amp: audio-amplifier { 87 compatible = "simple-audio-amplifier"; 88 VCC-supply = <®_vcc5v0>; 89 enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */ 90 sound-name-prefix = "Speaker Amp"; 91 }; 92 93}; 94 95&codec { 96 status = "okay"; 97}; 98 99&codec_analog { 100 cpvdd-supply = <®_eldo1>; 101 status = "okay"; 102}; 103 104&cpu0 { 105 cpu-supply = <®_dcdc2>; 106}; 107 108&cpu1 { 109 cpu-supply = <®_dcdc2>; 110}; 111 112&cpu2 { 113 cpu-supply = <®_dcdc2>; 114}; 115 116&cpu3 { 117 cpu-supply = <®_dcdc2>; 118}; 119 120&dai { 121 status = "okay"; 122}; 123 124&de { 125 status = "okay"; 126}; 127 128&ehci0 { 129 phys = <&usbphy 0>; 130 phy-names = "usb"; 131 status = "okay"; 132}; 133 134&ehci1 { 135 status = "okay"; 136}; 137 138&mixer0 { 139 status = "okay"; 140}; 141 142&mmc0 { 143 pinctrl-names = "default"; 144 pinctrl-0 = <&mmc0_pins>; 145 vmmc-supply = <®_dcdc1>; 146 cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ 147 disable-wp; 148 bus-width = <4>; 149 status = "okay"; 150}; 151 152&mmc1 { 153 pinctrl-names = "default"; 154 pinctrl-0 = <&mmc1_pins>; 155 vmmc-supply = <®_dldo4>; 156 vqmmc-supply = <®_eldo1>; 157 mmc-pwrseq = <&wifi_pwrseq>; 158 bus-width = <4>; 159 non-removable; 160 status = "okay"; 161 162 rtl8723cs: wifi@1 { 163 reg = <1>; 164 }; 165}; 166 167&mmc2 { 168 pinctrl-names = "default"; 169 pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>; 170 vmmc-supply = <®_dcdc1>; 171 vqmmc-supply = <®_eldo1>; 172 bus-width = <8>; 173 non-removable; 174 cap-mmc-hw-reset; 175 mmc-hs200-1_8v; 176 status = "okay"; 177}; 178 179&ohci0 { 180 phys = <&usbphy 0>; 181 phy-names = "usb"; 182 status = "okay"; 183}; 184 185&ohci1 { 186 status = "okay"; 187}; 188 189&pio { 190 vcc-pc-supply = <®_eldo1>; 191 vcc-pd-supply = <®_dcdc1>; 192 vcc-pe-supply = <®_aldo1>; 193 vcc-pg-supply = <®_eldo1>; 194}; 195 196&pwm { 197 status = "okay"; 198}; 199 200&r_i2c { 201 clock-frequency = <100000>; 202 pinctrl-names = "default"; 203 pinctrl-0 = <&r_i2c_pl89_pins>; 204 status = "okay"; 205 206 anx6345: anx6345@38 { 207 compatible = "analogix,anx6345"; 208 reg = <0x38>; 209 reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */ 210 dvdd25-supply = <®_dldo2>; 211 dvdd12-supply = <®_fldo1>; 212 213 ports { 214 #address-cells = <1>; 215 #size-cells = <0>; 216 217 anx6345_in: port@0 { 218 reg = <0>; 219 anx6345_in_tcon0: endpoint { 220 remote-endpoint = <&tcon0_out_anx6345>; 221 }; 222 }; 223 224 anx6345_out: port@1 { 225 reg = <1>; 226 anx6345_out_edp: endpoint { 227 remote-endpoint = <&panel_edp_in>; 228 }; 229 }; 230 }; 231 }; 232}; 233 234&r_pio { 235 /* 236 * FIXME: We can't add that supply for now since it would 237 * create a circular dependency between pinctrl, the regulator 238 * and the RSB Bus. 239 * 240 * vcc-pl-supply = <®_aldo2>; 241 */ 242}; 243 244&r_rsb { 245 status = "okay"; 246 247 axp803: pmic@3a3 { 248 compatible = "x-powers,axp803"; 249 reg = <0x3a3>; 250 interrupt-parent = <&r_intc>; 251 interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 252 }; 253}; 254 255#include "axp803.dtsi" 256 257&ac_power_supply { 258 status = "okay"; 259}; 260 261&battery_power_supply { 262 status = "okay"; 263}; 264 265®_aldo1 { 266 regulator-name = "vcc-pe"; 267}; 268 269®_aldo2 { 270 regulator-always-on; 271 regulator-min-microvolt = <1800000>; 272 regulator-max-microvolt = <3300000>; 273 regulator-name = "vcc-pl"; 274}; 275 276®_aldo3 { 277 regulator-always-on; 278 regulator-min-microvolt = <2700000>; 279 regulator-max-microvolt = <3300000>; 280 regulator-name = "vcc-pll-avcc"; 281}; 282 283®_dc1sw { 284 regulator-name = "vcc-lcd"; 285}; 286 287®_dcdc1 { 288 regulator-always-on; 289 regulator-min-microvolt = <3300000>; 290 regulator-max-microvolt = <3300000>; 291 regulator-name = "vcc-3v3"; 292}; 293 294®_dcdc2 { 295 regulator-always-on; 296 regulator-min-microvolt = <1000000>; 297 regulator-max-microvolt = <1300000>; 298 regulator-name = "vdd-cpux"; 299}; 300 301/* DCDC3 is polyphased with DCDC2 */ 302 303®_dcdc5 { 304 regulator-always-on; 305 regulator-min-microvolt = <1200000>; 306 regulator-max-microvolt = <1200000>; 307 regulator-name = "vcc-dram"; 308}; 309 310®_dcdc6 { 311 regulator-always-on; 312 regulator-min-microvolt = <1100000>; 313 regulator-max-microvolt = <1100000>; 314 regulator-name = "vdd-sys"; 315}; 316 317®_dldo1 { 318 regulator-min-microvolt = <3300000>; 319 regulator-max-microvolt = <3300000>; 320 regulator-name = "vcc-hdmi"; 321}; 322 323®_dldo2 { 324 regulator-min-microvolt = <2500000>; 325 regulator-max-microvolt = <2500000>; 326 regulator-name = "vcc-edp"; 327}; 328 329®_dldo4 { 330 regulator-min-microvolt = <3300000>; 331 regulator-max-microvolt = <3300000>; 332 regulator-name = "vcc-wifi"; 333}; 334 335®_eldo1 { 336 regulator-always-on; 337 regulator-min-microvolt = <1800000>; 338 regulator-max-microvolt = <1800000>; 339 regulator-name = "cpvdd"; 340}; 341 342®_fldo1 { 343 regulator-min-microvolt = <1200000>; 344 regulator-max-microvolt = <1200000>; 345 regulator-name = "vcc-1v2-hsic"; 346}; 347 348®_fldo2 { 349 regulator-always-on; 350 regulator-min-microvolt = <1100000>; 351 regulator-max-microvolt = <1100000>; 352 regulator-name = "vdd-cpus"; 353}; 354 355®_rtc_ldo { 356 regulator-name = "vcc-rtc"; 357}; 358 359&simplefb_lcd { 360 panel-supply = <®_dc1sw>; 361 dvdd25-supply = <®_dldo2>; 362 dvdd12-supply = <®_fldo1>; 363}; 364 365&simplefb_hdmi { 366 vcc-hdmi-supply = <®_dldo1>; 367}; 368 369&sound { 370 status = "okay"; 371 simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>; 372 simple-audio-card,widgets = "Microphone", "Internal Microphone Left", 373 "Microphone", "Internal Microphone Right", 374 "Headphone", "Headphone Jack", 375 "Speaker", "Internal Speaker"; 376 simple-audio-card,routing = 377 "Left DAC", "AIF1 Slot 0 Left", 378 "Right DAC", "AIF1 Slot 0 Right", 379 "Speaker Amp INL", "LINEOUT", 380 "Speaker Amp INR", "LINEOUT", 381 "Internal Speaker", "Speaker Amp OUTL", 382 "Internal Speaker", "Speaker Amp OUTR", 383 "Headphone Jack", "HP", 384 "AIF1 Slot 0 Left ADC", "Left ADC", 385 "AIF1 Slot 0 Right ADC", "Right ADC", 386 "Internal Microphone Left", "MBIAS", 387 "MIC1", "Internal Microphone Left", 388 "Internal Microphone Right", "HBIAS", 389 "MIC2", "Internal Microphone Right"; 390}; 391 392&tcon0 { 393 pinctrl-names = "default"; 394 pinctrl-0 = <&lcd_rgb666_pins>; 395 396 status = "okay"; 397}; 398 399&tcon0_out { 400 tcon0_out_anx6345: endpoint { 401 remote-endpoint = <&anx6345_in_tcon0>; 402 }; 403}; 404 405&uart0 { 406 pinctrl-names = "default"; 407 pinctrl-0 = <&uart0_pb_pins>; 408 status = "okay"; 409}; 410 411&usb_otg { 412 dr_mode = "host"; 413}; 414 415&usbphy { 416 usb0_vbus-supply = <®_vcc5v0>; 417 usb1_vbus-supply = <®_vcc5v0>; 418 status = "okay"; 419}; 420