Linux 6.7-rc7
[linux-modified.git] / arch / arm64 / boot / dts / allwinner / sun50i-a64-pinebook.dts
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         chassis-type = "laptop";
19
20         aliases {
21                 serial0 = &uart0;
22                 ethernet0 = &rtl8723cs;
23         };
24
25         backlight: backlight {
26                 compatible = "pwm-backlight";
27                 pwms = <&pwm 0 50000 0>;
28                 brightness-levels = <0 5 10 15 20 30 40 55 70 85 100>;
29                 default-brightness-level = <2>;
30                 enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */
31                 power-supply = <&reg_vbklt>;
32         };
33
34         chosen {
35                 stdout-path = "serial0:115200n8";
36         };
37
38         gpio-keys {
39                 compatible = "gpio-keys";
40
41                 lid-switch {
42                         label = "Lid Switch";
43                         gpios = <&r_pio 0 12 GPIO_ACTIVE_LOW>; /* PL12 */
44                         linux,input-type = <EV_SW>;
45                         linux,code = <SW_LID>;
46                         linux,can-disable;
47                         wakeup-source;
48                         wakeup-event-action = <EV_ACT_DEASSERTED>;
49                 };
50         };
51
52         panel_edp: panel-edp {
53                 compatible = "neweast,wjfh116008a";
54                 backlight = <&backlight>;
55                 power-supply = <&reg_dc1sw>;
56
57                 port {
58                         panel_edp_in: endpoint {
59                                 remote-endpoint = <&anx6345_out_edp>;
60                         };
61                 };
62         };
63
64         reg_vbklt: vbklt {
65                 compatible = "regulator-fixed";
66                 regulator-name = "vbklt";
67                 regulator-min-microvolt = <18000000>;
68                 regulator-max-microvolt = <18000000>;
69                 gpio = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */
70                 enable-active-high;
71         };
72
73         reg_vcc5v0: vcc5v0 {
74                 compatible = "regulator-fixed";
75                 regulator-name = "vcc5v0";
76                 regulator-min-microvolt = <5000000>;
77                 regulator-max-microvolt = <5000000>;
78                 gpio = <&axp_gpio 0 GPIO_ACTIVE_HIGH>;
79                 enable-active-high;
80         };
81
82         wifi_pwrseq: wifi_pwrseq {
83                 compatible = "mmc-pwrseq-simple";
84                 reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
85         };
86
87         speaker_amp: audio-amplifier {
88                 compatible = "simple-audio-amplifier";
89                 VCC-supply = <&reg_vcc5v0>;
90                 enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
91                 sound-name-prefix = "Speaker Amp";
92         };
93
94 };
95
96 &codec {
97         status = "okay";
98 };
99
100 &codec_analog {
101         cpvdd-supply = <&reg_eldo1>;
102         status = "okay";
103 };
104
105 &cpu0 {
106         cpu-supply = <&reg_dcdc2>;
107 };
108
109 &cpu1 {
110         cpu-supply = <&reg_dcdc2>;
111 };
112
113 &cpu2 {
114         cpu-supply = <&reg_dcdc2>;
115 };
116
117 &cpu3 {
118         cpu-supply = <&reg_dcdc2>;
119 };
120
121 &dai {
122         status = "okay";
123 };
124
125 &de {
126         status = "okay";
127 };
128
129 &ehci0 {
130         status = "okay";
131 };
132
133 &ehci1 {
134         status = "okay";
135 };
136
137 &mixer0 {
138         status = "okay";
139 };
140
141 &mmc0 {
142         pinctrl-names = "default";
143         pinctrl-0 = <&mmc0_pins>;
144         vmmc-supply = <&reg_dcdc1>;
145         cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
146         disable-wp;
147         bus-width = <4>;
148         status = "okay";
149 };
150
151 &mmc1 {
152         pinctrl-names = "default";
153         pinctrl-0 = <&mmc1_pins>;
154         vmmc-supply = <&reg_dldo4>;
155         vqmmc-supply = <&reg_eldo1>;
156         mmc-pwrseq = <&wifi_pwrseq>;
157         bus-width = <4>;
158         non-removable;
159         status = "okay";
160
161         rtl8723cs: wifi@1 {
162                 reg = <1>;
163         };
164 };
165
166 &mmc2 {
167         pinctrl-names = "default";
168         pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>;
169         vmmc-supply = <&reg_dcdc1>;
170         vqmmc-supply = <&reg_eldo1>;
171         max-frequency = <200000000>;
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         status = "okay";
181 };
182
183 &ohci1 {
184         status = "okay";
185 };
186
187 &pio {
188         vcc-pc-supply = <&reg_eldo1>;
189         vcc-pd-supply = <&reg_dcdc1>;
190         vcc-pe-supply = <&reg_aldo1>;
191         vcc-pg-supply = <&reg_eldo1>;
192 };
193
194 &pwm {
195         status = "okay";
196 };
197
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_ACTIVE_LOW>; /* PD24 */
208                 dvdd25-supply = <&reg_dldo2>;
209                 dvdd12-supply = <&reg_fldo1>;
210
211                 ports {
212                         #address-cells = <1>;
213                         #size-cells = <0>;
214
215                         anx6345_in: port@0 {
216                                 reg = <0>;
217                                 anx6345_in_tcon0: endpoint {
218                                         remote-endpoint = <&tcon0_out_anx6345>;
219                                 };
220                         };
221
222                         anx6345_out: port@1 {
223                                 reg = <1>;
224                                 anx6345_out_edp: endpoint {
225                                         remote-endpoint = <&panel_edp_in>;
226                                 };
227                         };
228                 };
229         };
230 };
231
232 &r_pio {
233         /*
234          * FIXME: We can't add that supply for now since it would
235          * create a circular dependency between pinctrl, the regulator
236          * and the RSB Bus.
237          *
238          * vcc-pl-supply = <&reg_aldo2>;
239          */
240 };
241
242 &r_rsb {
243         status = "okay";
244
245         axp803: pmic@3a3 {
246                 compatible = "x-powers,axp803";
247                 reg = <0x3a3>;
248                 interrupt-parent = <&r_intc>;
249                 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
250         };
251 };
252
253 #include "axp803.dtsi"
254
255 &ac_power_supply {
256         status = "okay";
257 };
258
259 &battery_power_supply {
260         status = "okay";
261 };
262
263 &reg_aldo1 {
264         regulator-name = "vcc-pe";
265 };
266
267 &reg_aldo2 {
268         regulator-always-on;
269         regulator-min-microvolt = <1800000>;
270         regulator-max-microvolt = <3300000>;
271         regulator-name = "vcc-pl";
272 };
273
274 &reg_aldo3 {
275         regulator-always-on;
276         regulator-min-microvolt = <2700000>;
277         regulator-max-microvolt = <3300000>;
278         regulator-name = "vcc-pll-avcc";
279 };
280
281 &reg_dc1sw {
282         regulator-name = "vcc-lcd";
283 };
284
285 &reg_dcdc1 {
286         regulator-always-on;
287         regulator-min-microvolt = <3300000>;
288         regulator-max-microvolt = <3300000>;
289         regulator-name = "vcc-3v3";
290 };
291
292 &reg_dcdc2 {
293         regulator-always-on;
294         regulator-min-microvolt = <1000000>;
295         regulator-max-microvolt = <1300000>;
296         regulator-name = "vdd-cpux";
297 };
298
299 /* DCDC3 is polyphased with DCDC2 */
300
301 &reg_dcdc5 {
302         regulator-always-on;
303         regulator-min-microvolt = <1200000>;
304         regulator-max-microvolt = <1200000>;
305         regulator-name = "vcc-dram";
306 };
307
308 &reg_dcdc6 {
309         regulator-always-on;
310         regulator-min-microvolt = <1100000>;
311         regulator-max-microvolt = <1100000>;
312         regulator-name = "vdd-sys";
313 };
314
315 &reg_dldo1 {
316         regulator-min-microvolt = <3300000>;
317         regulator-max-microvolt = <3300000>;
318         regulator-name = "vcc-hdmi";
319 };
320
321 &reg_dldo2 {
322         regulator-min-microvolt = <2500000>;
323         regulator-max-microvolt = <2500000>;
324         regulator-name = "vcc-edp";
325 };
326
327 &reg_dldo4 {
328         regulator-min-microvolt = <3300000>;
329         regulator-max-microvolt = <3300000>;
330         regulator-name = "vcc-wifi";
331 };
332
333 &reg_eldo1 {
334         regulator-always-on;
335         regulator-min-microvolt = <1800000>;
336         regulator-max-microvolt = <1800000>;
337         regulator-name = "cpvdd";
338 };
339
340 &reg_fldo1 {
341         regulator-min-microvolt = <1200000>;
342         regulator-max-microvolt = <1200000>;
343         regulator-name = "vcc-1v2-hsic";
344 };
345
346 &reg_fldo2 {
347         regulator-always-on;
348         regulator-min-microvolt = <1100000>;
349         regulator-max-microvolt = <1100000>;
350         regulator-name = "vdd-cpus";
351 };
352
353 &reg_rtc_ldo {
354         regulator-name = "vcc-rtc";
355 };
356
357 &simplefb_lcd {
358         panel-supply = <&reg_dc1sw>;
359         dvdd25-supply = <&reg_dldo2>;
360         dvdd12-supply = <&reg_fldo1>;
361 };
362
363 &simplefb_hdmi {
364         vcc-hdmi-supply = <&reg_dldo1>;
365 };
366
367 &sound {
368         status = "okay";
369         simple-audio-card,aux-devs = <&codec_analog>, <&speaker_amp>;
370         simple-audio-card,widgets = "Microphone", "Internal Microphone Left",
371                                     "Microphone", "Internal Microphone Right",
372                                     "Headphone", "Headphone Jack",
373                                     "Speaker", "Internal Speaker";
374         simple-audio-card,routing =
375                         "Left DAC", "DACL",
376                         "Right DAC", "DACR",
377                         "Speaker Amp INL", "LINEOUT",
378                         "Speaker Amp INR", "LINEOUT",
379                         "Internal Speaker", "Speaker Amp OUTL",
380                         "Internal Speaker", "Speaker Amp OUTR",
381                         "Headphone Jack", "HP",
382                         "ADCL", "Left ADC",
383                         "ADCR", "Right ADC",
384                         "Internal Microphone Left", "MBIAS",
385                         "MIC1", "Internal Microphone Left",
386                         "Internal Microphone Right", "HBIAS",
387                         "MIC2", "Internal Microphone Right";
388 };
389
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_tcon0>;
400         };
401 };
402
403 &uart0 {
404         pinctrl-names = "default";
405         pinctrl-0 = <&uart0_pb_pins>;
406         status = "okay";
407 };
408
409 &uart1 {
410         pinctrl-names = "default";
411         pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
412         uart-has-rtscts;
413         status = "okay";
414
415         bluetooth {
416                 compatible = "realtek,rtl8723cs-bt";
417                 device-wake-gpios = <&r_pio 0 5 GPIO_ACTIVE_LOW>; /* PL5 */
418                 enable-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
419                 host-wake-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
420         };
421 };
422
423 &usb_otg {
424         dr_mode = "host";
425 };
426
427 &usbphy {
428         usb0_vbus-supply = <&reg_vcc5v0>;
429         usb1_vbus-supply = <&reg_vcc5v0>;
430         status = "okay";
431 };