ARM: dts: sync Amlogic ARM64 DT from v6.2-rc1
authorNeil Armstrong <neil.armstrong@linaro.org>
Thu, 19 Jan 2023 13:44:17 +0000 (14:44 +0100)
committerNeil Armstrong <neil.armstrong@linaro.org>
Fri, 20 Jan 2023 15:27:40 +0000 (16:27 +0100)
This syncs the Amlogic G12A, G12B & SM1 base DT + the
Odroid Go Ultra DT from Linux v6.2-rc1 from commmit [1].

[1] 1b929c02afd3 ("Linux 6.2-rc1")

Link: https://lore.kernel.org/r/20230119-u-boot-odroid-go-ultra-v1-1-f96bab9db396@linaro.org
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
arch/arm/dts/Makefile
arch/arm/dts/meson-g12-common.dtsi
arch/arm/dts/meson-g12a.dtsi
arch/arm/dts/meson-g12b-odroid-go-ultra.dts [new file with mode: 0644]
arch/arm/dts/meson-g12b.dtsi
arch/arm/dts/meson-sm1.dtsi

index b3baaf4..e8650dc 100644 (file)
@@ -198,6 +198,7 @@ dtb-$(CONFIG_ARCH_MESON) += \
        meson-g12b-gtking.dtb \
        meson-g12b-gtking-pro.dtb \
        meson-g12b-gsking-x.dtb \
+       meson-g12b-odroid-go-ultra.dtb \
        meson-g12b-odroid-n2.dtb \
        meson-g12b-odroid-n2-plus.dtb \
        meson-sm1-bananapi-m5.dtb \
index 00c6f53..9dbd508 100644 (file)
@@ -58,7 +58,7 @@
                secure-monitor = <&sm>;
        };
 
-       gpu_opp_table: gpu-opp-table {
+       gpu_opp_table: opp-table-gpu {
                compatible = "operating-points-v2";
 
                opp-124999998 {
                        no-map;
                };
 
+               /* 32 MiB reserved for ARM Trusted Firmware (BL32) */
+               secmon_reserved_bl32: secmon@5300000 {
+                       reg = <0x0 0x05300000 0x0 0x2000000>;
+                       no-map;
+               };
+
                linux,cma {
                        compatible = "shared-dma-pool";
                        reusable;
                        status = "disabled";
                };
 
-               thermal-zones {
-                       cpu_thermal: cpu-thermal {
-                               polling-delay = <1000>;
-                               polling-delay-passive = <100>;
-                               thermal-sensors = <&cpu_temp>;
-
-                               trips {
-                                       cpu_passive: cpu-passive {
-                                               temperature = <85000>; /* millicelsius */
-                                               hysteresis = <2000>; /* millicelsius */
-                                               type = "passive";
-                                       };
-
-                                       cpu_hot: cpu-hot {
-                                               temperature = <95000>; /* millicelsius */
-                                               hysteresis = <2000>; /* millicelsius */
-                                               type = "hot";
-                                       };
-
-                                       cpu_critical: cpu-critical {
-                                               temperature = <110000>; /* millicelsius */
-                                               hysteresis = <2000>; /* millicelsius */
-                                               type = "critical";
-                                       };
-                               };
-                       };
-
-                       ddr_thermal: ddr-thermal {
-                               polling-delay = <1000>;
-                               polling-delay-passive = <100>;
-                               thermal-sensors = <&ddr_temp>;
-
-                               trips {
-                                       ddr_passive: ddr-passive {
-                                               temperature = <85000>; /* millicelsius */
-                                               hysteresis = <2000>; /* millicelsius */
-                                               type = "passive";
-                                       };
-
-                                       ddr_critical: ddr-critical {
-                                               temperature = <110000>; /* millicelsius */
-                                               hysteresis = <2000>; /* millicelsius */
-                                               type = "critical";
-                                       };
-                               };
-
-                               cooling-maps {
-                                       map {
-                                               trip = <&ddr_passive>;
-                                               cooling-device = <&mali THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-                                       };
-                               };
-                       };
-               };
-
                ethmac: ethernet@ff3f0000 {
                        compatible = "amlogic,meson-g12a-dwmac",
                                     "snps,dwmac-3.70a",
                                                };
                                        };
 
+                                       pwm_f_z_pins: pwm-f-z {
+                                               mux {
+                                                       groups = "pwm_f_z";
+                                                       function = "pwm_f";
+                                                       bias-disable;
+                                               };
+                                       };
+
+                                       pwm_f_a_pins: pwm-f-a {
+                                               mux {
+                                                       groups = "pwm_f_a";
+                                                       function = "pwm_f";
+                                                       bias-disable;
+                                               };
+                                       };
+
                                        pwm_f_x_pins: pwm-f-x {
                                                mux {
                                                        groups = "pwm_f_x";
                        };
                };
 
+               pmu: pmu@ff638000 {
+                       reg = <0x0 0xff638000 0x0 0x100>,
+                             <0x0 0xff638c00 0x0 0x100>;
+                       interrupts = <GIC_SPI 52 IRQ_TYPE_EDGE_RISING>;
+               };
+
                aobus: bus@ff800000 {
                        compatible = "simple-bus";
                        reg = <0x0 0xff800000 0x0 0x100000>;
                                                };
                                        };
 
+                                       uart_ao_b_2_3_pins: uart-ao-b-2-3 {
+                                               mux {
+                                                       groups = "uart_ao_b_tx_2",
+                                                                "uart_ao_b_rx_3";
+                                                       function = "uart_ao_b";
+                                                       bias-disable;
+                                               };
+                                       };
+
+                                       uart_ao_b_8_9_pins: uart-ao-b-8-9 {
+                                               mux {
+                                                       groups = "uart_ao_b_tx_8",
+                                                                "uart_ao_b_rx_9";
+                                                       function = "uart_ao_b";
+                                                       bias-disable;
+                                               };
+                                       };
+
+                                       uart_ao_b_cts_rts_pins: uart-ao-b-cts-rts {
+                                               mux {
+                                                       groups = "uart_ao_b_cts",
+                                                                "uart_ao_b_rts";
+                                                       function = "uart_ao_b";
+                                                       bias-disable;
+                                               };
+                                       };
+
                                        pwm_a_e_pins: pwm-a-e {
                                                mux {
                                                        groups = "pwm_a_e";
                };
        };
 
+       thermal-zones {
+               cpu_thermal: cpu-thermal {
+                       polling-delay = <1000>;
+                       polling-delay-passive = <100>;
+                       thermal-sensors = <&cpu_temp>;
+
+                       trips {
+                               cpu_passive: cpu-passive {
+                                       temperature = <85000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "passive";
+                               };
+
+                               cpu_hot: cpu-hot {
+                                       temperature = <95000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "hot";
+                               };
+
+                               cpu_critical: cpu-critical {
+                                       temperature = <110000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               ddr_thermal: ddr-thermal {
+                       polling-delay = <1000>;
+                       polling-delay-passive = <100>;
+                       thermal-sensors = <&ddr_temp>;
+
+                       trips {
+                               ddr_passive: ddr-passive {
+                                       temperature = <85000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "passive";
+                               };
+
+                               ddr_critical: ddr-critical {
+                                       temperature = <110000>; /* millicelsius */
+                                       hysteresis = <2000>; /* millicelsius */
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map {
+                                       trip = <&ddr_passive>;
+                                       cooling-device = <&mali THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+       };
+
        timer {
                compatible = "arm,armv8-timer";
                interrupts = <GIC_PPI 13
index fb0ab27..7677764 100644 (file)
@@ -50,6 +50,7 @@
 
                l2: l2-cache0 {
                        compatible = "cache";
+                       cache-level = <2>;
                };
        };
 
                };
        };
 };
+
+&pmu {
+       compatible = "amlogic,g12a-ddr-pmu";
+};
diff --git a/arch/arm/dts/meson-g12b-odroid-go-ultra.dts b/arch/arm/dts/meson-g12b-odroid-go-ultra.dts
new file mode 100644 (file)
index 0000000..1e40709
--- /dev/null
@@ -0,0 +1,722 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2022 Neil Armstrong <neil.armstrong@linaro.org>
+ */
+
+/dts-v1/;
+
+#include "meson-g12b-s922x.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/gpio/meson-g12a-gpio.h>
+#include <dt-bindings/sound/meson-g12a-toacodec.h>
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
+
+/ {
+       compatible = "hardkernel,odroid-go-ultra", "amlogic,s922x", "amlogic,g12b";
+       model = "Hardkernel ODROID-GO-Ultra";
+
+       aliases {
+               serial0 = &uart_AO;
+               rtc0 = &vrtc;
+       };
+
+       adc-joystick-left {
+               compatible = "adc-joystick";
+               io-channels = <&saradc 2>, <&saradc 3>;
+               poll-interval = <10>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               axis@0 {
+                       reg = <0>;
+                       linux,code = <ABS_Y>;
+                       abs-range = <3150 950>;
+                       abs-fuzz = <32>;
+                       abs-flat = <64>;
+               };
+               axis@1 {
+                       reg = <1>;
+                       linux,code = <ABS_X>;
+                       abs-range = <700 2900>;
+                       abs-fuzz = <32>;
+                       abs-flat = <64>;
+               };
+       };
+
+       adc-joystick-right {
+               compatible = "adc-joystick";
+               io-channels = <&saradc 0>, <&saradc 1>;
+               poll-interval = <10>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               axis@0 {
+                       reg = <0>;
+                       linux,code = <ABS_RY>;
+                       abs-range = <3150 950>;
+                       abs-fuzz = <32>;
+                       abs-flat = <64>;
+               };
+               axis@1 {
+                       reg = <1>;
+                       linux,code = <ABS_RX>;
+                       abs-range = <800 3000>;
+                       abs-fuzz = <32>;
+                       abs-flat = <64>;
+               };
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       codec_clk: codec-clk {
+               compatible = "fixed-clock";
+               clock-frequency = <12288000>;
+               clock-output-names = "codec_clk";
+               #clock-cells = <0>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys-polled";
+               poll-interval = <10>;
+               pinctrl-0 = <&keypad_gpio_pins>;
+               pinctrl-names = "default";
+
+               volume-up-button {
+                       label = "VOLUME-UP";
+                       linux,code = <KEY_VOLUMEUP>;
+                       gpios = <&gpio GPIOX_8 GPIO_ACTIVE_LOW>;
+               };
+               volume-down-button {
+                       label = "VOLUME-DOWN";
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       gpios = <&gpio GPIOX_9 GPIO_ACTIVE_LOW>;
+               };
+               dpad-up-button {
+                       label = "DPAD-UP";
+                       linux,code = <BTN_DPAD_UP>;
+                       gpios = <&gpio GPIOX_0 GPIO_ACTIVE_LOW>;
+               };
+               dpad-down-button {
+                       label = "DPAD-DOWN";
+                       linux,code = <BTN_DPAD_DOWN>;
+                       gpios = <&gpio GPIOX_1 GPIO_ACTIVE_LOW>;
+               };
+               dpad-left-button {
+                       label = "DPAD-LEFT";
+                       linux,code = <BTN_DPAD_LEFT>;
+                       gpios = <&gpio GPIOX_2 GPIO_ACTIVE_LOW>;
+               };
+               dpad-right-button {
+                       label = "DPAD-RIGHT";
+                       linux,code = <BTN_DPAD_RIGHT>;
+                       gpios = <&gpio GPIOX_3 GPIO_ACTIVE_LOW>;
+               };
+               a-button {
+                       label = "A";
+                       linux,code = <BTN_EAST>;
+                       gpios = <&gpio GPIOX_4 GPIO_ACTIVE_LOW>;
+               };
+               b-button {
+                       label = "B";
+                       linux,code = <BTN_SOUTH>;
+                       gpios = <&gpio GPIOX_5 GPIO_ACTIVE_LOW>;
+               };
+               y-button {
+                       label = "Y";
+                       linux,code = <BTN_WEST>;
+                       gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
+               };
+               x-button {
+                       label = "X";
+                       linux,code = <BTN_NORTH>;
+                       gpios = <&gpio GPIOX_7 GPIO_ACTIVE_LOW>;
+               };
+               f1-button {
+                       label = "F1";
+                       linux,code = <BTN_TRIGGER_HAPPY1>;
+                       gpios = <&gpio GPIOX_17 GPIO_ACTIVE_LOW>;
+               };
+               f2-button {
+                       label = "F2";
+                       linux,code = <BTN_TRIGGER_HAPPY2>;
+                       gpios = <&gpio GPIOX_10 GPIO_ACTIVE_LOW>;
+               };
+               f3-button {
+                       label = "F3";
+                       linux,code = <BTN_TRIGGER_HAPPY3>;
+                       gpios = <&gpio GPIOX_11 GPIO_ACTIVE_LOW>;
+               };
+               f4-button {
+                       label = "F4";
+                       linux,code = <BTN_TRIGGER_HAPPY4>;
+                       gpios = <&gpio GPIOX_12 GPIO_ACTIVE_LOW>;
+               };
+               f5-button {
+                       label = "F5";
+                       linux,code = <BTN_TRIGGER_HAPPY5>;
+                       gpios = <&gpio GPIOX_13 GPIO_ACTIVE_LOW>;
+               };
+               f6-button {
+                       label = "F6";
+                       linux,code = <BTN_TRIGGER_HAPPY6>;
+                       gpios = <&gpio GPIOX_16 GPIO_ACTIVE_LOW>;
+               };
+               top-left-button {
+                       label = "TOP Left";
+                       linux,code = <BTN_TL>;
+                       gpios = <&gpio GPIOX_14 GPIO_ACTIVE_LOW>;
+               };
+               top-left2-button {
+                       label = "TOP Left 2";
+                       linux,code = <BTN_TL2>;
+                       gpios = <&gpio GPIOX_19 GPIO_ACTIVE_LOW>;
+               };
+               top-right-button {
+                       label = "TOP Right";
+                       linux,code = <BTN_TR>;
+                       gpios = <&gpio GPIOX_15 GPIO_ACTIVE_LOW>;
+               };
+               top-right2-button {
+                       label = "TOP Right 2";
+                       linux,code = <BTN_TR2>;
+                       gpios = <&gpio GPIOX_18 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x40000000>;
+       };
+
+       emmc_pwrseq: emmc-pwrseq {
+               compatible = "mmc-pwrseq-emmc";
+               reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-blue {
+                       color = <LED_COLOR_ID_BLUE>;
+                       gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       vdd_sys: regulator-vdd-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_SYS";
+               regulator-min-microvolt = <3800000>;
+               regulator-max-microvolt = <3800000>;
+               regulator-always-on;
+       };
+
+       sound {
+               compatible = "amlogic,axg-sound-card";
+               model = "Odroid GO Ultra";
+               audio-widgets = "Microphone", "Mic Jack",
+                               "Headphone", "Headphones",
+                               "Speaker", "Internal Speakers";
+               audio-aux-devs = <&tdmout_b>, <&tdmin_b>, <&speaker_amp>;
+               audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
+                               "TDM_B Playback", "TDMOUT_B OUT",
+                               "TDMIN_B IN 1", "TDM_B Capture",
+                               "TDMIN_B IN 4", "TDM_B Loopback",
+                               "TODDR_A IN 1", "TDMIN_B OUT",
+                               "MICL", "Mic Jack",
+                               "Headphones", "HPOL",
+                               "Headphones", "HPOR",
+                               "Speaker Amplifier INL", "HPOL",
+                               "Speaker Amplifier INR", "HPOR",
+                               "Internal Speakers", "Speaker Amplifier OUTL",
+                               "Internal Speakers", "Speaker Amplifier OUTR";
+
+               assigned-clocks = <&clkc CLKID_MPLL2>,
+                                 <&clkc CLKID_MPLL0>,
+                                 <&clkc CLKID_MPLL1>;
+               assigned-clock-parents = <0>, <0>, <0>;
+               assigned-clock-rates = <294912000>,
+                                      <270950400>,
+                                      <393216000>;
+
+               dai-link-0 {
+                       sound-dai = <&frddr_a>;
+               };
+
+               dai-link-1 {
+                       sound-dai = <&toddr_a>;
+               };
+
+               dai-link-2 {
+                       sound-dai = <&tdmif_b>;
+                       dai-format = "i2s";
+                       dai-tdm-slot-tx-mask-0 = <1 1>;
+                       mclk-fs = <256>;
+
+                       codec-0 {
+                               sound-dai = <&rk817>;
+                       };
+               };
+       };
+
+       speaker_amp: speaker-amplifier {
+               compatible = "simple-audio-amplifier";
+               sound-name-prefix = "Speaker Amplifier";
+               VCC-supply = <&hp_5v>;
+       };
+};
+
+&arb {
+       status = "okay";
+};
+
+&cpu0 {
+       cpu-supply = <&vddcpu_b>;
+       operating-points-v2 = <&cpu_opp_table_0>;
+       clocks = <&clkc CLKID_CPU_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu1 {
+       cpu-supply = <&vddcpu_b>;
+       operating-points-v2 = <&cpu_opp_table_0>;
+       clocks = <&clkc CLKID_CPU_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu100 {
+       cpu-supply = <&vddcpu_a>;
+       operating-points-v2 = <&cpub_opp_table_1>;
+       clocks = <&clkc CLKID_CPUB_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu101 {
+       cpu-supply = <&vddcpu_a>;
+       operating-points-v2 = <&cpub_opp_table_1>;
+       clocks = <&clkc CLKID_CPUB_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu102 {
+       cpu-supply = <&vddcpu_a>;
+       operating-points-v2 = <&cpub_opp_table_1>;
+       clocks = <&clkc CLKID_CPUB_CLK>;
+       clock-latency = <50000>;
+};
+
+&cpu103 {
+       cpu-supply = <&vddcpu_a>;
+       operating-points-v2 = <&cpub_opp_table_1>;
+       clocks = <&clkc CLKID_CPUB_CLK>;
+       clock-latency = <50000>;
+};
+
+/* RK817 only supports 12.5mV steps, round up the values */
+&cpu_opp_table_0 {
+       opp-1000000000 {
+               opp-microvolt = <737500>;
+       };
+       opp-1200000000 {
+               opp-microvolt = <737500>;
+       };
+       opp-1398000000 {
+               opp-microvolt = <762500>;
+       };
+       opp-1512000000 {
+               opp-microvolt = <800000>;
+       };
+       opp-1608000000 {
+               opp-microvolt = <837500>;
+       };
+       opp-1704000000 {
+               opp-microvolt = <862500>;
+       };
+       opp-1896000000 {
+               opp-microvolt = <987500>;
+       };
+       opp-1992000000 {
+               opp-microvolt = <1012500>;
+       };
+};
+
+/* RK818 only supports 12.5mV steps, round up the values */
+&cpub_opp_table_1 {
+       opp-1000000000 {
+               opp-microvolt = <775000>;
+       };
+       opp-1200000000 {
+               opp-microvolt = <775000>;
+       };
+       opp-1398000000 {
+               opp-microvolt = <800000>;
+       };
+       opp-1512000000 {
+               opp-microvolt = <825000>;
+       };
+       opp-1608000000 {
+               opp-microvolt = <862500>;
+       };
+       opp-1704000000 {
+               opp-microvolt = <900000>;
+       };
+       opp-1800000000 {
+               opp-microvolt = <987500>;
+       };
+       opp-1908000000 {
+               opp-microvolt = <1025000>;
+       };
+};
+
+&i2c_AO {
+       status = "okay";
+       pinctrl-0 = <&i2c_ao_sck_pins>, <&i2c_ao_sda_pins>;
+       pinctrl-names = "default";
+
+       rk818: pmic@1c {
+               compatible = "rockchip,rk818";
+               reg = <0x1c>;
+               interrupt-parent = <&gpio_intc>;
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>; /* GPIOAO_7 */
+
+               vcc1-supply = <&vdd_sys>;
+               vcc2-supply = <&vdd_sys>;
+               vcc3-supply = <&vdd_sys>;
+               vcc4-supply = <&vdd_sys>;
+               vcc6-supply = <&vdd_sys>;
+               vcc7-supply = <&vcc_2v3>;
+               vcc8-supply = <&vcc_2v3>;
+               vcc9-supply = <&vddao_3v3>;
+               boost-supply = <&vdd_sys>;
+               switch-supply = <&vdd_sys>;
+
+               regulators {
+                       vddcpu_a: DCDC_REG1 {
+                               regulator-name = "vddcpu_a";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <775000>;
+                               regulator-max-microvolt = <1025000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <775000>;
+                               };
+                       };
+
+                       vdd_ee: DCDC_REG2 {
+                               regulator-name = "vdd_ee";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <875000>;
+                               regulator-max-microvolt = <1250000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <875000>;
+                               };
+                       };
+
+                       vddq_1v1: DCDC_REG3 {
+                               regulator-name = "vddq_1v1";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vddao_3v3: DCDC_REG4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vddao_3v3";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       hp_5v: DCDC_BOOST {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "hp_5v";
+                               regulator-min-microvolt = <5000000>;
+                               regulator-max-microvolt = <5000000>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vddio_ao1v8: LDO_REG5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vddio_ao1v8";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vddq_1v8: LDO_REG7 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vddq_1v8";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vddio_c: LDO_REG9 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vddio_c";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vcc_sd: SWITCH_REG {
+                               regulator-name = "vcc_sd";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       OTG_SWITCH {
+                               regulator-name = "otg_switch";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c3 {
+       status = "okay";
+       pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
+       pinctrl-names = "default";
+
+       rk817: pmic@20 {
+               compatible = "rockchip,rk817";
+               reg = <0x20>;
+               interrupt-parent = <&gpio_intc>;
+
+               interrupts = <5 IRQ_TYPE_LEVEL_LOW>; /* GPIOAO_5 */
+
+               vcc1-supply = <&vdd_sys>;
+               vcc2-supply = <&vdd_sys>;
+               vcc3-supply = <&vdd_sys>;
+               vcc4-supply = <&vdd_sys>;
+               vcc5-supply = <&vdd_sys>;
+               vcc6-supply = <&vdd_sys>;
+               vcc7-supply = <&vdd_sys>;
+               vcc8-supply = <&vdd_sys>;
+               vcc9-supply = <&rk817_boost>;
+
+               #sound-dai-cells = <0>;
+               clocks = <&codec_clk>;
+               clock-names = "mclk";
+
+               #clock-cells = <1>;
+
+               regulators {
+                       vddcpu_b: DCDC_REG2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <737500>;
+                               regulator-max-microvolt = <1012500>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-initial-mode = <0x2>;
+                               regulator-name = "vddcpu_b";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1000000>;
+                               };
+                       };
+
+                       vcc_2v3: DCDC_REG3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <2300000>;
+                               regulator-max-microvolt = <2400000>;
+                               regulator-initial-mode = <0x2>;
+                               regulator-name = "vcc_2v3";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       LDO_REG4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vdd_codec";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_lcd: LDO_REG8 {
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc_lcd";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       rk817_boost: BOOST {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <5000000>;
+                               regulator-max-microvolt = <5400000>;
+                               regulator-name = "rk817_boost";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       usb_host: OTG_SWITCH {
+                               regulator-name = "usb_host";
+                               regulator-min-microvolt = <5000000>;
+                               regulator-max-microvolt = <5000000>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+};
+
+&clkc_audio {
+       status = "okay";
+};
+
+&eth_phy {
+       status = "disabled";
+};
+
+&frddr_a {
+       status = "okay";
+};
+
+&periphs_pinctrl {
+       keypad_gpio_pins: keypad-gpio {
+               mux {
+                       groups = "GPIOX_0", "GPIOX_1", "GPIOX_2", "GPIOX_3",
+                                "GPIOX_4", "GPIOX_5", "GPIOX_6", "GPIOX_7",
+                                "GPIOX_8", "GPIOX_9", "GPIOX_10", "GPIOX_11",
+                                "GPIOX_12", "GPIOX_13", "GPIOX_14",  "GPIOX_15",
+                                "GPIOX_16", "GPIOX_17", "GPIOX_18",  "GPIOX_19";
+                       function = "gpio_periphs";
+                       bias-pull-up;
+                       output-disable;
+               };
+       };
+};
+
+&saradc {
+       status = "okay";
+       vref-supply = <&vddio_ao1v8>;
+};
+
+/* SD card */
+&sd_emmc_b {
+       status = "okay";
+       pinctrl-0 = <&sdcard_c_pins>;
+       pinctrl-1 = <&sdcard_clk_gate_c_pins>;
+       pinctrl-names = "default", "clk-gate";
+
+       bus-width = <4>;
+       cap-sd-highspeed;
+       max-frequency = <50000000>;
+       disable-wp;
+
+       cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
+       vmmc-supply = <&vcc_sd>;
+       vqmmc-supply = <&vddio_c>;
+
+};
+
+/* eMMC */
+&sd_emmc_c {
+       status = "okay";
+       pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
+       pinctrl-1 = <&emmc_clk_gate_pins>;
+       pinctrl-names = "default", "clk-gate";
+
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       mmc-ddr-1_8v;
+       mmc-hs200-1_8v;
+       max-frequency = <200000000>;
+       disable-wp;
+
+       mmc-pwrseq = <&emmc_pwrseq>;
+       vmmc-supply = <&vcc_sd>;
+       vqmmc-supply = <&vddio_ao1v8>;
+};
+
+
+&tdmif_b {
+       pinctrl-0 = <&tdm_b_dout0_pins>, <&tdm_b_fs_pins>, <&tdm_b_sclk_pins>, <&tdm_b_din1_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD1>,
+                         <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD1>;
+       assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_B_SCLK>,
+                                <&clkc_audio AUD_CLKID_MST_B_LRCLK>;
+       assigned-clock-rates = <0>, <0>;
+};
+
+&tdmin_b {
+       status = "okay";
+};
+
+&tdmout_b {
+       status = "okay";
+};
+
+&toddr_a {
+       status = "okay";
+};
+
+&uart_AO {
+       status = "okay";
+       pinctrl-0 = <&uart_ao_a_pins>;
+       pinctrl-names = "default";
+};
+
+&usb {
+       status = "okay";
+       dr_mode = "peripheral";
+};
+
+&usb2_phy0 {
+       status = "okay";
+};
+
+&usb2_phy1 {
+       status = "okay";
+       phy-supply = <&usb_host>;
+};
index ee8fcae..75ff00f 100644 (file)
 
                l2: l2-cache0 {
                        compatible = "cache";
+                       cache-level = <2>;
                };
        };
 };
 &mali {
        dma-coherent;
 };
+
+&pmu {
+       compatible = "amlogic,g12b-ddr-pmu";
+};
index 3d8b1f4..56ca0ba 100644 (file)
@@ -88,6 +88,7 @@
 
                l2: l2-cache0 {
                        compatible = "cache";
+                       cache-level = <2>;
                };
        };
 
                compatible = "operating-points-v2";
                opp-shared;
 
-               opp-100000000 {
-                       opp-hz = /bits/ 64 <100000000>;
-                       opp-microvolt = <730000>;
-               };
-
-               opp-250000000 {
-                       opp-hz = /bits/ 64 <250000000>;
-                       opp-microvolt = <730000>;
-               };
-
-               opp-500000000 {
-                       opp-hz = /bits/ 64 <500000000>;
-                       opp-microvolt = <730000>;
-               };
-
-               opp-667000000 {
-                       opp-hz = /bits/ 64 <666666666>;
-                       opp-microvolt = <750000>;
-               };
-
                opp-1000000000 {
                        opp-hz = /bits/ 64 <1000000000>;
                        opp-microvolt = <770000>;
                        status = "disabled";
                };
 
+               spdifin: audio-controller@400 {
+                       compatible = "amlogic,g12a-spdifin",
+                                    "amlogic,axg-spdifin";
+                       reg = <0x0 0x400 0x0 0x30>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SPDIFIN";
+                       interrupts = <GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&clkc_audio AUD_CLKID_SPDIFIN>,
+                       <&clkc_audio AUD_CLKID_SPDIFIN_CLK>;
+                       clock-names = "pclk", "refclk";
+                       resets = <&clkc_audio AUD_RESET_SPDIFIN>;
+                       status = "disabled";
+               };
+
+               spdifout_a: audio-controller@480 {
+                       compatible = "amlogic,g12a-spdifout",
+                                    "amlogic,axg-spdifout";
+                       reg = <0x0 0x480 0x0 0x50>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SPDIFOUT_A";
+                       clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>,
+                       <&clkc_audio AUD_CLKID_SPDIFOUT_CLK>;
+                       clock-names = "pclk", "mclk";
+                       resets = <&clkc_audio AUD_RESET_SPDIFOUT>;
+                       status = "disabled";
+               };
+
                tdmout_a: audio-controller@500 {
                        compatible = "amlogic,sm1-tdmout";
                        reg = <0x0 0x500 0x0 0x40>;
        power-domains = <&pwrc PWRC_SM1_PCIE_ID>;
 };
 
+&pmu {
+       compatible = "amlogic,sm1-ddr-pmu";
+};
+
 &pwrc {
        compatible = "amlogic,meson-sm1-pwrc";
 };