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