sun50i-a64-amarula-relic.dts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  2. /*
  3. * Copyright (C) 2018 Amarula Solutions B.V.
  4. * Author: Jagan Teki <jagan@amarulasolutions.com>
  5. */
  6. /dts-v1/;
  7. #include "sun50i-a64.dtsi"
  8. #include <dt-bindings/gpio/gpio.h>
  9. / {
  10. model = "Amarula A64-Relic";
  11. compatible = "amarula,a64-relic", "allwinner,sun50i-a64";
  12. aliases {
  13. serial0 = &uart0;
  14. };
  15. chosen {
  16. stdout-path = "serial0:115200n8";
  17. };
  18. wifi_pwrseq: wifi-pwrseq {
  19. compatible = "mmc-pwrseq-simple";
  20. clocks = <&rtc 1>;
  21. clock-names = "ext_clock";
  22. reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* WL-PMU-EN: PL2 */
  23. };
  24. };
  25. &ehci0 {
  26. status = "okay";
  27. };
  28. &mmc1 {
  29. pinctrl-names = "default";
  30. pinctrl-0 = <&mmc1_pins>;
  31. vmmc-supply = <&reg_dcdc1>;
  32. /*
  33. * Schematic shows both dldo4 and eldo1 connected for vcc-io-wifi, but
  34. * dldo4 connection shows DNP(Do Not Populate) and eldo1 connected with
  35. * 0Ohm register to vcc-io-wifi so eldo1 is used.
  36. */
  37. vqmmc-supply = <&reg_eldo1>;
  38. mmc-pwrseq = <&wifi_pwrseq>;
  39. bus-width = <4>;
  40. non-removable;
  41. status = "okay";
  42. brcmf: wifi@1 {
  43. reg = <1>;
  44. compatible = "brcm,bcm4329-fmac";
  45. interrupt-parent = <&r_pio>;
  46. interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* WL-WAKE-AP: PL3 */
  47. interrupt-names = "host-wake";
  48. };
  49. };
  50. &mmc2 {
  51. pinctrl-names = "default";
  52. pinctrl-0 = <&mmc2_pins>;
  53. vmmc-supply = <&reg_dcdc1>;
  54. bus-width = <8>;
  55. non-removable;
  56. cap-mmc-hw-reset;
  57. status = "okay";
  58. };
  59. &ohci0 {
  60. status = "okay";
  61. };
  62. &r_rsb {
  63. status = "okay";
  64. axp803: pmic@3a3 {
  65. compatible = "x-powers,axp803";
  66. reg = <0x3a3>;
  67. interrupt-parent = <&r_intc>;
  68. interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
  69. x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */
  70. };
  71. };
  72. #include "axp803.dtsi"
  73. &reg_aldo1 {
  74. regulator-always-on;
  75. regulator-min-microvolt = <2800000>;
  76. regulator-max-microvolt = <2800000>;
  77. regulator-name = "avdd-csi";
  78. };
  79. &reg_aldo2 {
  80. regulator-always-on;
  81. regulator-min-microvolt = <1800000>;
  82. regulator-max-microvolt = <3300000>;
  83. regulator-name = "vcc-pl";
  84. };
  85. &reg_aldo3 {
  86. regulator-always-on;
  87. regulator-min-microvolt = <3000000>;
  88. regulator-max-microvolt = <3000000>;
  89. regulator-name = "vcc-pll-avcc";
  90. };
  91. &reg_dcdc1 {
  92. regulator-always-on;
  93. regulator-min-microvolt = <3300000>;
  94. regulator-max-microvolt = <3300000>;
  95. regulator-name = "vcc-3v3";
  96. };
  97. &reg_dcdc2 {
  98. regulator-always-on;
  99. regulator-min-microvolt = <1040000>;
  100. regulator-max-microvolt = <1300000>;
  101. regulator-name = "vdd-cpux";
  102. };
  103. /* DCDC3 is polyphased with DCDC2 */
  104. &reg_dcdc5 {
  105. regulator-always-on;
  106. regulator-min-microvolt = <1500000>;
  107. regulator-max-microvolt = <1500000>;
  108. regulator-name = "vcc-dram";
  109. };
  110. &reg_dcdc6 {
  111. regulator-always-on;
  112. regulator-min-microvolt = <1100000>;
  113. regulator-max-microvolt = <1100000>;
  114. regulator-name = "vdd-sys";
  115. };
  116. &reg_dldo1 {
  117. regulator-min-microvolt = <3300000>;
  118. regulator-max-microvolt = <3300000>;
  119. regulator-name = "vcc-hdmi-dsi-sensor";
  120. };
  121. &reg_dldo2 {
  122. regulator-min-microvolt = <3300000>;
  123. regulator-max-microvolt = <3300000>;
  124. regulator-name = "vcc-mipi";
  125. };
  126. &reg_dldo3 {
  127. regulator-min-microvolt = <2800000>;
  128. regulator-max-microvolt = <2800000>;
  129. regulator-name = "dovdd-csi";
  130. };
  131. &reg_dldo4 {
  132. regulator-min-microvolt = <3300000>;
  133. regulator-max-microvolt = <3300000>;
  134. regulator-name = "vcc-wifi-io";
  135. };
  136. &reg_drivevbus {
  137. regulator-name = "usb0-vbus";
  138. status = "okay";
  139. };
  140. &reg_eldo1 {
  141. regulator-always-on;
  142. regulator-min-microvolt = <1800000>;
  143. regulator-max-microvolt = <1800000>;
  144. regulator-name = "cpvdd";
  145. };
  146. &reg_eldo3 {
  147. regulator-min-microvolt = <1800000>;
  148. regulator-max-microvolt = <1800000>;
  149. regulator-name = "dvdd-csi";
  150. };
  151. &reg_fldo1 {
  152. regulator-min-microvolt = <1200000>;
  153. regulator-max-microvolt = <1200000>;
  154. regulator-name = "vcc-1v2-hsic";
  155. };
  156. /*
  157. * The A64 chip cannot work without this regulator off, although
  158. * it seems to be only driving the AR100 core.
  159. * Maybe we don't still know well about CPUs domain.
  160. */
  161. &reg_fldo2 {
  162. regulator-always-on;
  163. regulator-min-microvolt = <1100000>;
  164. regulator-max-microvolt = <1100000>;
  165. regulator-name = "vdd-cpus";
  166. };
  167. &reg_rtc_ldo {
  168. regulator-name = "vcc-rtc";
  169. };
  170. &uart0 {
  171. pinctrl-names = "default";
  172. pinctrl-0 = <&uart0_pins_a>;
  173. status = "okay";
  174. };
  175. &usb_otg {
  176. dr_mode = "otg";
  177. status = "okay";
  178. };
  179. &usbphy {
  180. usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
  181. usb0_vbus-supply = <&reg_drivevbus>;
  182. status = "okay";
  183. };