rockchip: rk3328: rock64 - fix gen3 SPL hang
[oweals/u-boot.git] / arch / arm / dts / sun9i-a80-optimus.dts
index 6ce4b5e8b615a64eb1ade806b4db1a899a095b17..58a199b0e4943424443043a72f1e430279fa8ea3 100644 (file)
 
 /dts-v1/;
 #include "sun9i-a80.dtsi"
-#include "sunxi-common-regulators.dtsi"
 
 #include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/pinctrl/sun4i-a10.h>
 
 / {
        model = "Merrii A80 Optimus Board";
 
        leds {
                compatible = "gpio-leds";
-               pinctrl-names = "default";
-               pinctrl-0 = <&led_pins_optimus>;
 
                /* The LED names match those found on the board */
-
                led2 {
                        label = "optimus:led2:usr";
                        gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>;
                };
 
-               /* led3 is on PM15, in R_PIO */
+               led3 {
+                       label = "optimus:led3:usr";
+                       gpios = <&r_pio 1 15 GPIO_ACTIVE_HIGH>; /* PM15 */
+               };
 
                led4 {
                        label = "optimus:led4:usr";
                };
        };
 
+       reg_usb1_vbus: usb1-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
+       };
+
        reg_usb3_vbus: usb3-vbus {
                compatible = "regulator-fixed";
                pinctrl-names = "default";
-               pinctrl-0 = <&usb3_vbus_pin_optimus>;
-               regulator-name = "usb3-vbus";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
                enable-active-high;
                gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
        };
+
+       wifi_pwrseq: wifi-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&ac100_rtc 1>;
+               clock-names = "ext_clock";
+               /* enables internal regulator and de-asserts reset */
+               reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 WL-PMU-EN */
+       };
 };
 
 &ehci0 {
 };
 
 &ehci1 {
-       status = "okay";
+       /* Enable if HSIC peripheral is connected */
+       status = "disabled";
 };
 
 &ehci2 {
        status = "okay";
 };
 
-&i2c3 {
+&mmc0 {
        pinctrl-names = "default";
-       pinctrl-0 = <&i2c3_pins_a>;
+       pinctrl-0 = <&mmc0_pins>;
+       vmmc-supply = <&reg_dcdc1>;
+       bus-width = <4>;
+       cd-gpios = <&pio 7 18 GPIO_ACTIVE_LOW>; /* PH8 */
        status = "okay";
 };
 
-&i2c3_pins_a {
-       /* Enable internal pull-up */
-       allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+&mmc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc1_pins>;
+       vmmc-supply = <&reg_dldo1>;
+       vqmmc-supply = <&reg_cldo3>;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       bus-width = <4>;
+       non-removable;
+       status = "okay";
 };
 
-&ohci0 {
-       status = "okay";
+&mmc1_pins {
+       bias-pull-up;
 };
 
-&ohci2 {
+&mmc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc2_8bit_pins>;
+       vmmc-supply = <&reg_dcdc1>;
+       bus-width = <8>;
+       non-removable;
+       cap-mmc-hw-reset;
        status = "okay";
 };
 
-&pio {
-       led_pins_optimus: led-pins@0 {
-               allwinner,pins = "PH0", "PH1";
-               allwinner,function = "gpio_out";
-               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
-               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
-       };
-
-       mmc0_cd_pin_optimus: mmc0_cd_pin@0 {
-               allwinner,pins = "PH18";
-               allwinner,function = "gpio_in";
-               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
-               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
-       };
-
-       usb1_vbus_pin_optimus: usb1_vbus_pin@1 {
-               allwinner,pins = "PH4";
-               allwinner,function = "gpio_out";
-               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
-               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
-       };
-
-       usb3_vbus_pin_optimus: usb3_vbus_pin@1 {
-               allwinner,pins = "PH5";
-               allwinner,function = "gpio_out";
-               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
-               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
-       };
+&mmc2_8bit_pins {
+       /* Increase drive strength for DDR modes */
+       drive-strength = <40>;
 };
 
-&mmc0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&mmc0_pins>, <&mmc0_cd_pin_optimus>;
-       vmmc-supply = <&reg_vcc3v0>;
-       bus-width = <4>;
-       cd-gpios = <&pio 7 18 GPIO_ACTIVE_HIGH>; /* PH8 */
-       cd-inverted;
+&ohci0 {
        status = "okay";
 };
 
-&mmc2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&mmc2_8bit_pins>;
-       vmmc-supply = <&reg_vcc3v0>;
-       bus-width = <8>;
-       non-removable;
+&ohci2 {
        status = "okay";
 };
 
-&reg_usb1_vbus {
-       pinctrl-0 = <&usb1_vbus_pin_optimus>;
-       gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
-       status = "okay";
+&osc32k {
+       /* osc32k input is from AC100 */
+       clocks = <&ac100_rtc 0>;
 };
 
-&uart0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&uart0_pins_a>;
+&r_ir {
        status = "okay";
 };
 
-&uart4 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&uart4_pins_a>;
+&r_rsb {
        status = "okay";
+
+       axp809: pmic@3a3 {
+               reg = <0x3a3>;
+               interrupt-parent = <&nmi_intc>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+               regulators {
+                       reg_aldo1: aldo1 {
+                               /*
+                                * TODO: This should be handled by the
+                                * USB PHY driver.
+                                */
+                               regulator-always-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-name = "vcc33-usbh";
+                       };
+
+                       reg_aldo2: aldo2 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pb-io-cam";
+                       };
+
+                       aldo3 {
+                               /* unused */
+                       };
+
+                       reg_dc5ldo: dc5ldo {
+                               regulator-always-on;
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-name = "vdd-cpus-09-usbh";
+                       };
+
+                       reg_dcdc1: dcdc1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-name = "vcc-3v";
+                       };
+
+                       reg_dcdc2: dcdc2 {
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-name = "vdd-gpu";
+                       };
+
+                       reg_dcdc3: dcdc3 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-name = "vdd-cpua";
+                       };
+
+                       reg_dcdc4: dcdc4 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-name = "vdd-sys-usb0-hdmi";
+                       };
+
+                       reg_dcdc5: dcdc5 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1425000>;
+                               regulator-max-microvolt = <1575000>;
+                               regulator-name = "vcc-dram";
+                       };
+
+                       reg_dldo1: dldo1 {
+                               /*
+                                * The WiFi chip supports a wide range
+                                * (3.0 ~ 4.8V) of voltages, and so does
+                                * this regulator (3.0 ~ 4.2V), but
+                                * Allwinner SDK always sets it to 3.3V.
+                                */
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-wifi";
+                       };
+
+                       reg_dldo2: dldo2 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-name = "vcc-pl";
+                       };
+
+                       reg_eldo1: eldo1 {
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-name = "vcc-dvdd-cam";
+                       };
+
+                       reg_eldo2: eldo2 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pe";
+                       };
+
+                       reg_eldo3: eldo3 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-name = "vcc-pm-codec-io1";
+                       };
+
+                       reg_ldo_io0: ldo_io0 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-name = "vcc-pg";
+                       };
+
+                       reg_ldo_io1: ldo_io1 {
+                               regulator-min-microvolt = <2500000>;
+                               regulator-max-microvolt = <2500000>;
+                               regulator-name = "vcc-pa-gmac-2v5";
+                       };
+
+                       reg_rtc_ldo: rtc_ldo {
+                               regulator-name = "vcc-rtc-vdd1v8-io";
+                       };
+
+                       sw {
+                               /* unused */
+                       };
+               };
+       };
+
+       axp806: pmic@745 {
+               compatible = "x-powers,axp806";
+               reg = <0x745>;
+               interrupt-parent = <&nmi_intc>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-controller;
+               #interrupt-cells = <1>;
+               bldoin-supply = <&reg_dcdce>;
+
+               regulators {
+                       reg_s_aldo1: aldo1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-name = "avcc";
+                       };
+
+                       aldo2 {
+                               /*
+                                * unused, but use a different name to
+                                * avoid name clash with axp809's aldo's
+                                */
+                               regulator-name = "s_aldo2";
+                       };
+
+                       aldo3 {
+                               /*
+                                * unused, but use a different name to
+                                * avoid name clash with axp809's aldo's
+                                */
+                               regulator-name = "s_aldo3";
+                       };
+
+                       reg_bldo1: bldo1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1700000>;
+                               regulator-max-microvolt = <1900000>;
+                               regulator-name = "vcc18-efuse-adc-display-csi";
+                       };
+
+                       reg_bldo2: bldo2 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1700000>;
+                               regulator-max-microvolt = <1900000>;
+                               regulator-name =
+                                       "vdd18-drampll-vcc18-pll-cpvdd";
+                       };
+
+                       bldo3 {
+                               /* unused */
+                       };
+
+                       reg_bldo4: bldo4 {
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-name = "vcc12-hsic";
+                       };
+
+                       reg_cldo1: cldo1 {
+                               /*
+                                * This was 3V in the original design, but
+                                * 3.3V is the recommended supply voltage
+                                * for the Ethernet PHY.
+                                */
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-gmac-phy";
+                       };
+
+                       reg_cldo2: cldo2 {
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-name = "afvcc-cam";
+                       };
+
+                       reg_cldo3: cldo3 {
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-name = "vcc-io-wifi-codec-io2";
+                       };
+
+                       reg_dcdca: dcdca {
+                               regulator-always-on;
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-name = "vdd-cpub";
+                       };
+
+                       reg_dcdcd: dcdcd {
+                               regulator-always-on;
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-name = "vdd-vpu";
+                       };
+
+                       reg_dcdce: dcdce {
+                               regulator-always-on;
+                               regulator-min-microvolt = <2100000>;
+                               regulator-max-microvolt = <2100000>;
+                               regulator-name = "vcc-bldo-codec-ldoin";
+                       };
+
+                       sw {
+                               /*
+                                * unused, but use a different name to
+                                * avoid name clash with axp809's sw
+                                */
+                               regulator-name = "s_sw";
+                       };
+               };
+       };
+
+       ac100: codec@e89 {
+               compatible = "x-powers,ac100";
+               reg = <0xe89>;
+
+               ac100_codec: codec {
+                       compatible = "x-powers,ac100-codec";
+                       interrupt-parent = <&r_pio>;
+                       interrupts = <0 9 IRQ_TYPE_LEVEL_LOW>; /* PL9 */
+                       #clock-cells = <0>;
+                       clock-output-names = "4M_adda";
+               };
+
+               ac100_rtc: rtc {
+                       compatible = "x-powers,ac100-rtc";
+                       interrupt-parent = <&nmi_intc>;
+                       interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+                       clocks = <&ac100_codec>;
+                       #clock-cells = <1>;
+                       clock-output-names = "cko1_rtc",
+                                            "cko2_rtc",
+                                            "cko3_rtc";
+               };
+       };
 };
 
-&uart4_pins_a {
-       /* Enable internal pull-up */
-       allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+#include "axp809.dtsi"
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_ph_pins>;
+       status = "okay";
 };
 
 &usbphy1 {
 };
 
 &usbphy2 {
-       status = "okay";
+       phy-supply = <&reg_bldo4>;
+       /* Enable if HSIC peripheral is connected */
+       status = "disabled";
 };
 
 &usbphy3 {