Merge https://gitlab.denx.de/u-boot/custodians/u-boot-clk
[oweals/u-boot.git] / arch / arm / dts / sun9i-a80-optimus.dts
index d7a20d92b1143b1a7713d998cec753a2dfada507..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>, <&led_r_pins_optimus>;
 
                /* The LED names match those found on the board */
-
                led2 {
                        label = "optimus:led2:usr";
                        gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>;
                };
        };
 
+       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";
 };
 
-&ohci0 {
-       status = "okay";
-};
-
-&ohci2 {
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins>;
+       vmmc-supply = <&reg_dcdc1>;
+       bus-width = <4>;
+       cd-gpios = <&pio 7 18 GPIO_ACTIVE_LOW>; /* PH8 */
        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>;
-       };
-};
-
-&mmc0 {
+&mmc1 {
        pinctrl-names = "default";
-       pinctrl-0 = <&mmc0_pins>, <&mmc0_cd_pin_optimus>;
-       vmmc-supply = <&reg_vcc3v0>;
+       pinctrl-0 = <&mmc1_pins>;
+       vmmc-supply = <&reg_dldo1>;
+       vqmmc-supply = <&reg_cldo3>;
+       mmc-pwrseq = <&wifi_pwrseq>;
        bus-width = <4>;
-       cd-gpios = <&pio 7 18 GPIO_ACTIVE_HIGH>; /* PH8 */
-       cd-inverted;
+       non-removable;
        status = "okay";
 };
 
+&mmc1_pins {
+       bias-pull-up;
+};
+
 &mmc2 {
        pinctrl-names = "default";
        pinctrl-0 = <&mmc2_8bit_pins>;
-       vmmc-supply = <&reg_vcc3v0>;
+       vmmc-supply = <&reg_dcdc1>;
        bus-width = <8>;
        non-removable;
        cap-mmc-hw-reset;
 
 &mmc2_8bit_pins {
        /* Increase drive strength for DDR modes */
-       allwinner,drive = <SUN4I_PINCTRL_40_MA>;
+       drive-strength = <40>;
 };
 
-&reg_usb1_vbus {
-       pinctrl-0 = <&usb1_vbus_pin_optimus>;
-       gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
+&ohci0 {
        status = "okay";
 };
 
-&r_ir {
+&ohci2 {
        status = "okay";
 };
 
-&r_pio {
-       led_r_pins_optimus: led-pins@1 {
-               allwinner,pins = "PM15";
-               allwinner,function = "gpio_out";
-               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
-               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
-       };
+&osc32k {
+       /* osc32k input is from AC100 */
+       clocks = <&ac100_rtc 0>;
+};
+
+&r_ir {
+       status = "okay";
 };
 
 &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";
+               };
+       };
 };
 
+#include "axp809.dtsi"
+
 &uart0 {
        pinctrl-names = "default";
-       pinctrl-0 = <&uart0_pins_a>;
+       pinctrl-0 = <&uart0_ph_pins>;
        status = "okay";
 };
 
 };
 
 &usbphy2 {
-       status = "okay";
+       phy-supply = <&reg_bldo4>;
+       /* Enable if HSIC peripheral is connected */
+       status = "disabled";
 };
 
 &usbphy3 {