diff options
Diffstat (limited to 'arch/arm/dts/sun9i-a80-optimus.dts')
-rw-r--r-- | arch/arm/dts/sun9i-a80-optimus.dts | 227 |
1 files changed, 175 insertions, 52 deletions
diff --git a/arch/arm/dts/sun9i-a80-optimus.dts b/arch/arm/dts/sun9i-a80-optimus.dts index 7fd22e8886..58a199b0e4 100644 --- a/arch/arm/dts/sun9i-a80-optimus.dts +++ b/arch/arm/dts/sun9i-a80-optimus.dts | |||
@@ -46,7 +46,6 @@ | |||
46 | #include "sun9i-a80.dtsi" | 46 | #include "sun9i-a80.dtsi" |
47 | 47 | ||
48 | #include <dt-bindings/gpio/gpio.h> | 48 | #include <dt-bindings/gpio/gpio.h> |
49 | #include <dt-bindings/pinctrl/sun4i-a10.h> | ||
50 | 49 | ||
51 | / { | 50 | / { |
52 | model = "Merrii A80 Optimus Board"; | 51 | model = "Merrii A80 Optimus Board"; |
@@ -63,11 +62,8 @@ | |||
63 | 62 | ||
64 | leds { | 63 | leds { |
65 | compatible = "gpio-leds"; | 64 | compatible = "gpio-leds"; |
66 | pinctrl-names = "default"; | ||
67 | pinctrl-0 = <&led_pins_optimus>, <&led_r_pins_optimus>; | ||
68 | 65 | ||
69 | /* The LED names match those found on the board */ | 66 | /* The LED names match those found on the board */ |
70 | |||
71 | led2 { | 67 | led2 { |
72 | label = "optimus:led2:usr"; | 68 | label = "optimus:led2:usr"; |
73 | gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; | 69 | gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; |
@@ -87,8 +83,6 @@ | |||
87 | reg_usb1_vbus: usb1-vbus { | 83 | reg_usb1_vbus: usb1-vbus { |
88 | compatible = "regulator-fixed"; | 84 | compatible = "regulator-fixed"; |
89 | pinctrl-names = "default"; | 85 | pinctrl-names = "default"; |
90 | pinctrl-0 = <&usb1_vbus_pin_optimus>; | ||
91 | regulator-name = "usb1-vbus"; | ||
92 | regulator-min-microvolt = <5000000>; | 86 | regulator-min-microvolt = <5000000>; |
93 | regulator-max-microvolt = <5000000>; | 87 | regulator-max-microvolt = <5000000>; |
94 | enable-active-high; | 88 | enable-active-high; |
@@ -98,13 +92,19 @@ | |||
98 | reg_usb3_vbus: usb3-vbus { | 92 | reg_usb3_vbus: usb3-vbus { |
99 | compatible = "regulator-fixed"; | 93 | compatible = "regulator-fixed"; |
100 | pinctrl-names = "default"; | 94 | pinctrl-names = "default"; |
101 | pinctrl-0 = <&usb3_vbus_pin_optimus>; | ||
102 | regulator-name = "usb3-vbus"; | ||
103 | regulator-min-microvolt = <5000000>; | 95 | regulator-min-microvolt = <5000000>; |
104 | regulator-max-microvolt = <5000000>; | 96 | regulator-max-microvolt = <5000000>; |
105 | enable-active-high; | 97 | enable-active-high; |
106 | gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ | 98 | gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ |
107 | }; | 99 | }; |
100 | |||
101 | wifi_pwrseq: wifi-pwrseq { | ||
102 | compatible = "mmc-pwrseq-simple"; | ||
103 | clocks = <&ac100_rtc 1>; | ||
104 | clock-names = "ext_clock"; | ||
105 | /* enables internal regulator and de-asserts reset */ | ||
106 | reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 WL-PMU-EN */ | ||
107 | }; | ||
108 | }; | 108 | }; |
109 | 109 | ||
110 | &ehci0 { | 110 | &ehci0 { |
@@ -112,7 +112,8 @@ | |||
112 | }; | 112 | }; |
113 | 113 | ||
114 | &ehci1 { | 114 | &ehci1 { |
115 | status = "okay"; | 115 | /* Enable if HSIC peripheral is connected */ |
116 | status = "disabled"; | ||
116 | }; | 117 | }; |
117 | 118 | ||
118 | &ehci2 { | 119 | &ehci2 { |
@@ -121,14 +122,28 @@ | |||
121 | 122 | ||
122 | &mmc0 { | 123 | &mmc0 { |
123 | pinctrl-names = "default"; | 124 | pinctrl-names = "default"; |
124 | pinctrl-0 = <&mmc0_pins>, <&mmc0_cd_pin_optimus>; | 125 | pinctrl-0 = <&mmc0_pins>; |
125 | vmmc-supply = <®_dcdc1>; | 126 | vmmc-supply = <®_dcdc1>; |
126 | bus-width = <4>; | 127 | bus-width = <4>; |
127 | cd-gpios = <&pio 7 18 GPIO_ACTIVE_HIGH>; /* PH8 */ | 128 | cd-gpios = <&pio 7 18 GPIO_ACTIVE_LOW>; /* PH8 */ |
128 | cd-inverted; | 129 | status = "okay"; |
130 | }; | ||
131 | |||
132 | &mmc1 { | ||
133 | pinctrl-names = "default"; | ||
134 | pinctrl-0 = <&mmc1_pins>; | ||
135 | vmmc-supply = <®_dldo1>; | ||
136 | vqmmc-supply = <®_cldo3>; | ||
137 | mmc-pwrseq = <&wifi_pwrseq>; | ||
138 | bus-width = <4>; | ||
139 | non-removable; | ||
129 | status = "okay"; | 140 | status = "okay"; |
130 | }; | 141 | }; |
131 | 142 | ||
143 | &mmc1_pins { | ||
144 | bias-pull-up; | ||
145 | }; | ||
146 | |||
132 | &mmc2 { | 147 | &mmc2 { |
133 | pinctrl-names = "default"; | 148 | pinctrl-names = "default"; |
134 | pinctrl-0 = <&mmc2_8bit_pins>; | 149 | pinctrl-0 = <&mmc2_8bit_pins>; |
@@ -141,7 +156,7 @@ | |||
141 | 156 | ||
142 | &mmc2_8bit_pins { | 157 | &mmc2_8bit_pins { |
143 | /* Increase drive strength for DDR modes */ | 158 | /* Increase drive strength for DDR modes */ |
144 | allwinner,drive = <SUN4I_PINCTRL_40_MA>; | 159 | drive-strength = <40>; |
145 | }; | 160 | }; |
146 | 161 | ||
147 | &ohci0 { | 162 | &ohci0 { |
@@ -152,49 +167,15 @@ | |||
152 | status = "okay"; | 167 | status = "okay"; |
153 | }; | 168 | }; |
154 | 169 | ||
155 | &pio { | 170 | &osc32k { |
156 | led_pins_optimus: led-pins@0 { | 171 | /* osc32k input is from AC100 */ |
157 | allwinner,pins = "PH0", "PH1"; | 172 | clocks = <&ac100_rtc 0>; |
158 | allwinner,function = "gpio_out"; | ||
159 | allwinner,drive = <SUN4I_PINCTRL_10_MA>; | ||
160 | allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; | ||
161 | }; | ||
162 | |||
163 | mmc0_cd_pin_optimus: mmc0_cd_pin@0 { | ||
164 | allwinner,pins = "PH18"; | ||
165 | allwinner,function = "gpio_in"; | ||
166 | allwinner,drive = <SUN4I_PINCTRL_10_MA>; | ||
167 | allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; | ||
168 | }; | ||
169 | |||
170 | usb1_vbus_pin_optimus: usb1_vbus_pin@1 { | ||
171 | allwinner,pins = "PH4"; | ||
172 | allwinner,function = "gpio_out"; | ||
173 | allwinner,drive = <SUN4I_PINCTRL_10_MA>; | ||
174 | allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; | ||
175 | }; | ||
176 | |||
177 | usb3_vbus_pin_optimus: usb3_vbus_pin@1 { | ||
178 | allwinner,pins = "PH5"; | ||
179 | allwinner,function = "gpio_out"; | ||
180 | allwinner,drive = <SUN4I_PINCTRL_10_MA>; | ||
181 | allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; | ||
182 | }; | ||
183 | }; | 173 | }; |
184 | 174 | ||
185 | &r_ir { | 175 | &r_ir { |
186 | status = "okay"; | 176 | status = "okay"; |
187 | }; | 177 | }; |
188 | 178 | ||
189 | &r_pio { | ||
190 | led_r_pins_optimus: led-pins@1 { | ||
191 | allwinner,pins = "PM15"; | ||
192 | allwinner,function = "gpio_out"; | ||
193 | allwinner,drive = <SUN4I_PINCTRL_10_MA>; | ||
194 | allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; | ||
195 | }; | ||
196 | }; | ||
197 | |||
198 | &r_rsb { | 179 | &r_rsb { |
199 | status = "okay"; | 180 | status = "okay"; |
200 | 181 | ||
@@ -320,6 +301,146 @@ | |||
320 | reg_rtc_ldo: rtc_ldo { | 301 | reg_rtc_ldo: rtc_ldo { |
321 | regulator-name = "vcc-rtc-vdd1v8-io"; | 302 | regulator-name = "vcc-rtc-vdd1v8-io"; |
322 | }; | 303 | }; |
304 | |||
305 | sw { | ||
306 | /* unused */ | ||
307 | }; | ||
308 | }; | ||
309 | }; | ||
310 | |||
311 | axp806: pmic@745 { | ||
312 | compatible = "x-powers,axp806"; | ||
313 | reg = <0x745>; | ||
314 | interrupt-parent = <&nmi_intc>; | ||
315 | interrupts = <0 IRQ_TYPE_LEVEL_LOW>; | ||
316 | interrupt-controller; | ||
317 | #interrupt-cells = <1>; | ||
318 | bldoin-supply = <®_dcdce>; | ||
319 | |||
320 | regulators { | ||
321 | reg_s_aldo1: aldo1 { | ||
322 | regulator-always-on; | ||
323 | regulator-min-microvolt = <3000000>; | ||
324 | regulator-max-microvolt = <3000000>; | ||
325 | regulator-name = "avcc"; | ||
326 | }; | ||
327 | |||
328 | aldo2 { | ||
329 | /* | ||
330 | * unused, but use a different name to | ||
331 | * avoid name clash with axp809's aldo's | ||
332 | */ | ||
333 | regulator-name = "s_aldo2"; | ||
334 | }; | ||
335 | |||
336 | aldo3 { | ||
337 | /* | ||
338 | * unused, but use a different name to | ||
339 | * avoid name clash with axp809's aldo's | ||
340 | */ | ||
341 | regulator-name = "s_aldo3"; | ||
342 | }; | ||
343 | |||
344 | reg_bldo1: bldo1 { | ||
345 | regulator-always-on; | ||
346 | regulator-min-microvolt = <1700000>; | ||
347 | regulator-max-microvolt = <1900000>; | ||
348 | regulator-name = "vcc18-efuse-adc-display-csi"; | ||
349 | }; | ||
350 | |||
351 | reg_bldo2: bldo2 { | ||
352 | regulator-always-on; | ||
353 | regulator-min-microvolt = <1700000>; | ||
354 | regulator-max-microvolt = <1900000>; | ||
355 | regulator-name = | ||
356 | "vdd18-drampll-vcc18-pll-cpvdd"; | ||
357 | }; | ||
358 | |||
359 | bldo3 { | ||
360 | /* unused */ | ||
361 | }; | ||
362 | |||
363 | reg_bldo4: bldo4 { | ||
364 | regulator-min-microvolt = <1100000>; | ||
365 | regulator-max-microvolt = <1300000>; | ||
366 | regulator-name = "vcc12-hsic"; | ||
367 | }; | ||
368 | |||
369 | reg_cldo1: cldo1 { | ||
370 | /* | ||
371 | * This was 3V in the original design, but | ||
372 | * 3.3V is the recommended supply voltage | ||
373 | * for the Ethernet PHY. | ||
374 | */ | ||
375 | regulator-min-microvolt = <3300000>; | ||
376 | regulator-max-microvolt = <3300000>; | ||
377 | regulator-name = "vcc-gmac-phy"; | ||
378 | }; | ||
379 | |||
380 | reg_cldo2: cldo2 { | ||
381 | regulator-min-microvolt = <2800000>; | ||
382 | regulator-max-microvolt = <2800000>; | ||
383 | regulator-name = "afvcc-cam"; | ||
384 | }; | ||
385 | |||
386 | reg_cldo3: cldo3 { | ||
387 | regulator-min-microvolt = <3000000>; | ||
388 | regulator-max-microvolt = <3000000>; | ||
389 | regulator-name = "vcc-io-wifi-codec-io2"; | ||
390 | }; | ||
391 | |||
392 | reg_dcdca: dcdca { | ||
393 | regulator-always-on; | ||
394 | regulator-min-microvolt = <800000>; | ||
395 | regulator-max-microvolt = <1100000>; | ||
396 | regulator-name = "vdd-cpub"; | ||
397 | }; | ||
398 | |||
399 | reg_dcdcd: dcdcd { | ||
400 | regulator-always-on; | ||
401 | regulator-min-microvolt = <800000>; | ||
402 | regulator-max-microvolt = <1100000>; | ||
403 | regulator-name = "vdd-vpu"; | ||
404 | }; | ||
405 | |||
406 | reg_dcdce: dcdce { | ||
407 | regulator-always-on; | ||
408 | regulator-min-microvolt = <2100000>; | ||
409 | regulator-max-microvolt = <2100000>; | ||
410 | regulator-name = "vcc-bldo-codec-ldoin"; | ||
411 | }; | ||
412 | |||
413 | sw { | ||
414 | /* | ||
415 | * unused, but use a different name to | ||
416 | * avoid name clash with axp809's sw | ||
417 | */ | ||
418 | regulator-name = "s_sw"; | ||
419 | }; | ||
420 | }; | ||
421 | }; | ||
422 | |||
423 | ac100: codec@e89 { | ||
424 | compatible = "x-powers,ac100"; | ||
425 | reg = <0xe89>; | ||
426 | |||
427 | ac100_codec: codec { | ||
428 | compatible = "x-powers,ac100-codec"; | ||
429 | interrupt-parent = <&r_pio>; | ||
430 | interrupts = <0 9 IRQ_TYPE_LEVEL_LOW>; /* PL9 */ | ||
431 | #clock-cells = <0>; | ||
432 | clock-output-names = "4M_adda"; | ||
433 | }; | ||
434 | |||
435 | ac100_rtc: rtc { | ||
436 | compatible = "x-powers,ac100-rtc"; | ||
437 | interrupt-parent = <&nmi_intc>; | ||
438 | interrupts = <0 IRQ_TYPE_LEVEL_LOW>; | ||
439 | clocks = <&ac100_codec>; | ||
440 | #clock-cells = <1>; | ||
441 | clock-output-names = "cko1_rtc", | ||
442 | "cko2_rtc", | ||
443 | "cko3_rtc"; | ||
323 | }; | 444 | }; |
324 | }; | 445 | }; |
325 | }; | 446 | }; |
@@ -328,7 +449,7 @@ | |||
328 | 449 | ||
329 | &uart0 { | 450 | &uart0 { |
330 | pinctrl-names = "default"; | 451 | pinctrl-names = "default"; |
331 | pinctrl-0 = <&uart0_pins_a>; | 452 | pinctrl-0 = <&uart0_ph_pins>; |
332 | status = "okay"; | 453 | status = "okay"; |
333 | }; | 454 | }; |
334 | 455 | ||
@@ -338,7 +459,9 @@ | |||
338 | }; | 459 | }; |
339 | 460 | ||
340 | &usbphy2 { | 461 | &usbphy2 { |
341 | status = "okay"; | 462 | phy-supply = <®_bldo4>; |
463 | /* Enable if HSIC peripheral is connected */ | ||
464 | status = "disabled"; | ||
342 | }; | 465 | }; |
343 | 466 | ||
344 | &usbphy3 { | 467 | &usbphy3 { |