diff mbox series

[1/3] ARM: dts: sync amlogic G12A/G12B/SM1 DT from Linux 5.8-rc1

Message ID 20200701144310.25481-2-narmstrong@baylibre.com
State Accepted
Commit da77a787ff3083ba64f848c5957fe7d4afe93508
Headers show
Series board: amlogic: add Odroid C4 support | expand

Commit Message

Neil Armstrong July 1, 2020, 2:43 p.m. UTC
From: Christian Hewitt <christianshewitt at gmail.com>

This imports the changes and the new Odroid-C4 board from the Linux
commit b3a9e3b9622a ("Linux 5.8-rc1").

Signed-off-by: Neil Armstrong <narmstrong at baylibre.com>
---
 arch/arm/dts/Makefile                    |   1 +
 arch/arm/dts/meson-g12-common.dtsi       |  13 +-
 arch/arm/dts/meson-g12.dtsi              |  32 +-
 arch/arm/dts/meson-g12b-khadas-vim3.dtsi |  22 +-
 arch/arm/dts/meson-g12b-s922x.dtsi       |  15 +
 arch/arm/dts/meson-g12b.dtsi             |  22 ++
 arch/arm/dts/meson-khadas-vim3.dtsi      |   4 +-
 arch/arm/dts/meson-sm1-odroid-c4.dts     | 402 +++++++++++++++++++++++
 arch/arm/dts/meson-sm1-sei610.dts        |   2 +-
 arch/arm/dts/meson-sm1.dtsi              |  24 ++
 10 files changed, 501 insertions(+), 36 deletions(-)
 create mode 100644 arch/arm/dts/meson-sm1-odroid-c4.dts

Comments

Anand Moon July 2, 2020, 3:07 a.m. UTC | #1
Hi Neil,

On Wed, 1 Jul 2020 at 20:13, Neil Armstrong <narmstrong at baylibre.com> wrote:
>
> From: Christian Hewitt <christianshewitt at gmail.com>
>
> This imports the changes and the new Odroid-C4 board from the Linux
> commit b3a9e3b9622a ("Linux 5.8-rc1").
>
> Signed-off-by: Neil Armstrong <narmstrong at baylibre.com>

Please add my
Tested-by: Anand Moon <linux.amoon at gmail.com>

> ---
>  arch/arm/dts/Makefile                    |   1 +
>  arch/arm/dts/meson-g12-common.dtsi       |  13 +-
>  arch/arm/dts/meson-g12.dtsi              |  32 +-
>  arch/arm/dts/meson-g12b-khadas-vim3.dtsi |  22 +-
>  arch/arm/dts/meson-g12b-s922x.dtsi       |  15 +
>  arch/arm/dts/meson-g12b.dtsi             |  22 ++
>  arch/arm/dts/meson-khadas-vim3.dtsi      |   4 +-
>  arch/arm/dts/meson-sm1-odroid-c4.dts     | 402 +++++++++++++++++++++++
>  arch/arm/dts/meson-sm1-sei610.dts        |   2 +-
>  arch/arm/dts/meson-sm1.dtsi              |  24 ++
>  10 files changed, 501 insertions(+), 36 deletions(-)
>  create mode 100644 arch/arm/dts/meson-sm1-odroid-c4.dts
>
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 9900b44274..b7c2754010 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -161,6 +161,7 @@ dtb-$(CONFIG_ARCH_MESON) += \
>         meson-g12b-odroid-n2.dtb \
>         meson-g12b-a311d-khadas-vim3.dtb \
>         meson-sm1-khadas-vim3l.dtb \
> +       meson-sm1-odroid-c4.dtb \
>         meson-sm1-sei610.dtb
>  dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
>         tegra20-medcom-wide.dtb \
> diff --git a/arch/arm/dts/meson-g12-common.dtsi b/arch/arm/dts/meson-g12-common.dtsi
> index 0882ea215b..593a006f4b 100644
> --- a/arch/arm/dts/meson-g12-common.dtsi
> +++ b/arch/arm/dts/meson-g12-common.dtsi
> @@ -250,6 +250,17 @@
>                                 };
>                         };
>
> +                       acodec: audio-controller at 32000 {
> +                               compatible = "amlogic,t9015";
> +                               reg = <0x0 0x32000 0x0 0x14>;
> +                               #sound-dai-cells = <0>;
> +                               sound-name-prefix = "ACODEC";
> +                               clocks = <&clkc CLKID_AUDIO_CODEC>;
> +                               clock-names = "pclk";
> +                               resets = <&reset RESET_AUDIO_CODEC>;
> +                               status = "disabled";
> +                       };
> +
>                         periphs: bus at 34400 {
>                                 compatible = "simple-bus";
>                                 reg = <0x0 0x34400 0x0 0x400>;
> @@ -2319,7 +2330,7 @@
>                                 reg = <0x0 0xff400000 0x0 0x40000>;
>                                 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
>                                 clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
> -                               clock-names = "ddr";
> +                               clock-names = "otg";
>                                 phys = <&usb2_phy1>;
>                                 phy-names = "usb2-phy";
>                                 dr_mode = "peripheral";
> diff --git a/arch/arm/dts/meson-g12.dtsi b/arch/arm/dts/meson-g12.dtsi
> index 55d39020ec..6a1f4dcf64 100644
> --- a/arch/arm/dts/meson-g12.dtsi
> +++ b/arch/arm/dts/meson-g12.dtsi
> @@ -343,6 +343,15 @@
>                         status = "disabled";
>                 };
>
> +               toacodec: audio-controller at 740 {
> +                       compatible = "amlogic,g12a-toacodec";
> +                       reg = <0x0 0x740 0x0 0x4>;
> +                       #sound-dai-cells = <1>;
> +                       sound-name-prefix = "TOACODEC";
> +                       resets = <&clkc_audio AUD_RESET_TOACODEC>;
> +                       status = "disabled";
> +               };
> +
>                 tohdmitx: audio-controller at 744 {
>                         compatible = "amlogic,g12a-tohdmitx";
>                         reg = <0x0 0x744 0x0 0x4>;
> @@ -354,29 +363,6 @@
>         };
>  };
>
> -&cpu_thermal {
> -       cooling-maps {
> -               map0 {
> -                       trip = <&cpu_passive>;
> -                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> -                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> -                                        <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> -                                        <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> -                                        <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> -                                        <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> -               };
> -               map1 {
> -                       trip = <&cpu_hot>;
> -                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> -                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> -                                        <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> -                                        <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> -                                        <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> -                                        <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> -               };
> -       };
> -};
> -
>  &ethmac {
>         power-domains = <&pwrc PWRC_G12A_ETH_ID>;
>  };
> diff --git a/arch/arm/dts/meson-g12b-khadas-vim3.dtsi b/arch/arm/dts/meson-g12b-khadas-vim3.dtsi
> index c33e85fbda..224c890d32 100644
> --- a/arch/arm/dts/meson-g12b-khadas-vim3.dtsi
> +++ b/arch/arm/dts/meson-g12b-khadas-vim3.dtsi
> @@ -51,11 +51,11 @@
>         sound {
>                 compatible = "amlogic,axg-sound-card";
>                 model = "G12B-KHADAS-VIM3";
> -               audio-aux-devs = <&tdmout_b>;
> -               audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
> -                               "TDMOUT_B IN 1", "FRDDR_B OUT 1",
> -                               "TDMOUT_B IN 2", "FRDDR_C OUT 1",
> -                               "TDM_B Playback", "TDMOUT_B OUT";
> +               audio-aux-devs = <&tdmout_a>;
> +               audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
> +                               "TDMOUT_A IN 1", "FRDDR_B OUT 0",
> +                               "TDMOUT_A IN 2", "FRDDR_C OUT 0",
> +                               "TDM_A Playback", "TDMOUT_A OUT";
>
>                 assigned-clocks = <&clkc CLKID_MPLL2>,
>                                   <&clkc CLKID_MPLL0>,
> @@ -80,7 +80,7 @@
>
>                 /* 8ch hdmi interface */
>                 dai-link-3 {
> -                       sound-dai = <&tdmif_b>;
> +                       sound-dai = <&tdmif_a>;
>                         dai-format = "i2s";
>                         dai-tdm-slot-tx-mask-0 = <1 1>;
>                         dai-tdm-slot-tx-mask-1 = <1 1>;
> @@ -89,7 +89,7 @@
>                         mclk-fs = <256>;
>
>                         codec {
> -                               sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
> +                               sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
>                         };
>                 };
>
> @@ -154,6 +154,10 @@
>         clock-latency = <50000>;
>  };
>
> +&frddr_a {
> +       status = "okay";
> +};
> +
>  &frddr_b {
>         status = "okay";
>  };
> @@ -178,11 +182,11 @@
>         status = "okay";
>  };
>
> -&tdmif_b {
> +&tdmif_a {
>         status = "okay";
>  };
>
> -&tdmout_b {
> +&tdmout_a {
>         status = "okay";
>  };
>
> diff --git a/arch/arm/dts/meson-g12b-s922x.dtsi b/arch/arm/dts/meson-g12b-s922x.dtsi
> index 046cc332d0..1e5d0ee5d5 100644
> --- a/arch/arm/dts/meson-g12b-s922x.dtsi
> +++ b/arch/arm/dts/meson-g12b-s922x.dtsi
> @@ -65,6 +65,11 @@
>                         opp-hz = /bits/ 64 <1896000000>;
>                         opp-microvolt = <981000>;
>                 };
> +
> +               opp-1992000000 {
> +                       opp-hz = /bits/ 64 <1992000000>;
> +                       opp-microvolt = <1001000>;
> +               };
>         };
>
>         cpub_opp_table_1: opp-table-1 {
> @@ -120,5 +125,15 @@
>                         opp-hz = /bits/ 64 <1704000000>;
>                         opp-microvolt = <891000>;
>                 };
> +
> +               opp-1800000000 {
> +                       opp-hz = /bits/ 64 <1800000000>;
> +                       opp-microvolt = <981000>;
> +               };
> +
> +               opp-1908000000 {
> +                       opp-hz = /bits/ 64 <1908000000>;
> +                       opp-microvolt = <1022000>;
> +               };
>         };
>  };
> diff --git a/arch/arm/dts/meson-g12b.dtsi b/arch/arm/dts/meson-g12b.dtsi
> index 6dbc396804..9b8548e5f6 100644
> --- a/arch/arm/dts/meson-g12b.dtsi
> +++ b/arch/arm/dts/meson-g12b.dtsi
> @@ -113,3 +113,25 @@
>         compatible = "amlogic,g12b-clkc";
>  };
>
> +&cpu_thermal {
> +       cooling-maps {
> +               map0 {
> +                       trip = <&cpu_passive>;
> +                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                        <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                        <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                        <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                        <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +               };
> +               map1 {
> +                       trip = <&cpu_hot>;
> +                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                        <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                        <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                        <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                        <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +               };
> +       };
> +};
> diff --git a/arch/arm/dts/meson-khadas-vim3.dtsi b/arch/arm/dts/meson-khadas-vim3.dtsi
> index 094ecf2222..1ef1e3672b 100644
> --- a/arch/arm/dts/meson-khadas-vim3.dtsi
> +++ b/arch/arm/dts/meson-khadas-vim3.dtsi
> @@ -39,13 +39,13 @@
>         leds {
>                 compatible = "gpio-leds";
>
> -               white {
> +               led-white {
>                         label = "vim3:white:sys";
>                         gpios = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_LOW>;
>                         linux,default-trigger = "heartbeat";
>                 };
>
> -               red {
> +               led-red {
>                         label = "vim3:red";
>                         gpios = <&gpio_expander 5 GPIO_ACTIVE_LOW>;
>                 };
> diff --git a/arch/arm/dts/meson-sm1-odroid-c4.dts b/arch/arm/dts/meson-sm1-odroid-c4.dts
> new file mode 100644
> index 0000000000..00d90b30f8
> --- /dev/null
> +++ b/arch/arm/dts/meson-sm1-odroid-c4.dts
> @@ -0,0 +1,402 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (c) 2020 Dongjin Kim <tobetter at gmail.com>
> + */
> +
> +/dts-v1/;
> +
> +#include "meson-sm1.dtsi"
> +#include <dt-bindings/gpio/meson-g12a-gpio.h>
> +#include <dt-bindings/leds/common.h>
> +
> +/ {
> +       compatible = "hardkernel,odroid-c4", "amlogic,sm1";
> +       model = "Hardkernel ODROID-C4";
> +
> +       aliases {
> +               serial0 = &uart_AO;
> +               ethernet0 = &ethmac;
> +       };
> +
> +       chosen {
> +               stdout-path = "serial0:115200n8";
> +       };
> +
> +       memory at 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>;
> +                       function = LED_FUNCTION_STATUS;
> +                       gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
> +                       linux,default-trigger = "heartbeat";
> +                       panic-indicator;
> +               };
> +       };
> +
> +       tflash_vdd: regulator-tflash_vdd {
> +               compatible = "regulator-fixed";
> +
> +               regulator-name = "TFLASH_VDD";
> +               regulator-min-microvolt = <3300000>;
> +               regulator-max-microvolt = <3300000>;
> +
> +               gpio = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
> +               enable-active-high;
> +               regulator-always-on;
> +       };
> +
> +       tf_io: gpio-regulator-tf_io {
> +               compatible = "regulator-gpio";
> +
> +               regulator-name = "TF_IO";
> +               regulator-min-microvolt = <1800000>;
> +               regulator-max-microvolt = <3300000>;
> +
> +               gpios = <&gpio_ao GPIOAO_6 GPIO_ACTIVE_HIGH>;
> +               gpios-states = <0>;
> +
> +               states = <3300000 0>,
> +                        <1800000 1>;
> +       };
> +
> +       flash_1v8: regulator-flash_1v8 {
> +               compatible = "regulator-fixed";
> +               regulator-name = "FLASH_1V8";
> +               regulator-min-microvolt = <1800000>;
> +               regulator-max-microvolt = <1800000>;
> +               vin-supply = <&vcc_3v3>;
> +               regulator-always-on;
> +       };
> +
> +       main_12v: regulator-main_12v {
> +               compatible = "regulator-fixed";
> +               regulator-name = "12V";
> +               regulator-min-microvolt = <12000000>;
> +               regulator-max-microvolt = <12000000>;
> +               regulator-always-on;
> +       };
> +
> +       vcc_5v: regulator-vcc_5v {
> +               compatible = "regulator-fixed";
> +               regulator-name = "5V";
> +               regulator-min-microvolt = <5000000>;
> +               regulator-max-microvolt = <5000000>;
> +               regulator-always-on;
> +               vin-supply = <&main_12v>;
> +       };
> +
> +       vcc_1v8: regulator-vcc_1v8 {
> +               compatible = "regulator-fixed";
> +               regulator-name = "VCC_1V8";
> +               regulator-min-microvolt = <1800000>;
> +               regulator-max-microvolt = <1800000>;
> +               vin-supply = <&vcc_3v3>;
> +               regulator-always-on;
> +       };
> +
> +       vcc_3v3: regulator-vcc_3v3 {
> +               compatible = "regulator-fixed";
> +               regulator-name = "VCC_3V3";
> +               regulator-min-microvolt = <3300000>;
> +               regulator-max-microvolt = <3300000>;
> +               vin-supply = <&vddao_3v3>;
> +               regulator-always-on;
> +               /* FIXME: actually controlled by VDDCPU_B_EN */
> +       };
> +
> +       vddcpu: regulator-vddcpu {
> +               /*
> +                * MP8756GD Regulator.
> +                */
> +               compatible = "pwm-regulator";
> +
> +               regulator-name = "VDDCPU";
> +               regulator-min-microvolt = <721000>;
> +               regulator-max-microvolt = <1022000>;
> +
> +               vin-supply = <&main_12v>;
> +
> +               pwms = <&pwm_AO_cd 1 1250 0>;
> +               pwm-dutycycle-range = <100 0>;
> +
> +               regulator-boot-on;
> +               regulator-always-on;
> +       };
> +
> +       hub_5v: regulator-hub_5v {
> +               compatible = "regulator-fixed";
> +               regulator-name = "HUB_5V";
> +               regulator-min-microvolt = <5000000>;
> +               regulator-max-microvolt = <5000000>;
> +               vin-supply = <&vcc_5v>;
> +
> +               /* Connected to the Hub CHIPENABLE, LOW sets low power state */
> +               gpio = <&gpio GPIOH_4 GPIO_ACTIVE_HIGH>;
> +               enable-active-high;
> +       };
> +
> +       usb_pwr_en: regulator-usb_pwr_en {
> +               compatible = "regulator-fixed";
> +               regulator-name = "USB_PWR_EN";
> +               regulator-min-microvolt = <5000000>;
> +               regulator-max-microvolt = <5000000>;
> +               vin-supply = <&vcc_5v>;
> +
> +               /* Connected to the microUSB port power enable */
> +               gpio = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
> +               enable-active-high;
> +       };
> +
> +       vddao_1v8: regulator-vddao_1v8 {
> +               compatible = "regulator-fixed";
> +               regulator-name = "VDDAO_1V8";
> +               regulator-min-microvolt = <1800000>;
> +               regulator-max-microvolt = <1800000>;
> +               vin-supply = <&vddao_3v3>;
> +               regulator-always-on;
> +       };
> +
> +       vddao_3v3: regulator-vddao_3v3 {
> +               compatible = "regulator-fixed";
> +               regulator-name = "VDDAO_3V3";
> +               regulator-min-microvolt = <3300000>;
> +               regulator-max-microvolt = <3300000>;
> +               vin-supply = <&main_12v>;
> +               regulator-always-on;
> +       };
> +
> +       hdmi-connector {
> +               compatible = "hdmi-connector";
> +               type = "a";
> +
> +               port {
> +                       hdmi_connector_in: endpoint {
> +                               remote-endpoint = <&hdmi_tx_tmds_out>;
> +                       };
> +               };
> +       };
> +};
> +
> +&cpu0 {
> +       cpu-supply = <&vddcpu>;
> +       operating-points-v2 = <&cpu_opp_table>;
> +       clocks = <&clkc CLKID_CPU_CLK>;
> +       clock-latency = <50000>;
> +};
> +
> +&cpu1 {
> +       cpu-supply = <&vddcpu>;
> +       operating-points-v2 = <&cpu_opp_table>;
> +       clocks = <&clkc CLKID_CPU1_CLK>;
> +       clock-latency = <50000>;
> +};
> +
> +&cpu2 {
> +       cpu-supply = <&vddcpu>;
> +       operating-points-v2 = <&cpu_opp_table>;
> +       clocks = <&clkc CLKID_CPU2_CLK>;
> +       clock-latency = <50000>;
> +};
> +
> +&cpu3 {
> +       cpu-supply = <&vddcpu>;
> +       operating-points-v2 = <&cpu_opp_table>;
> +       clocks = <&clkc CLKID_CPU3_CLK>;
> +       clock-latency = <50000>;
> +};
> +
> +&ext_mdio {
> +       external_phy: ethernet-phy at 0 {
> +               /* Realtek RTL8211F (0x001cc916) */
> +               reg = <0>;
> +               max-speed = <1000>;
> +
> +               interrupt-parent = <&gpio_intc>;
> +               /* MAC_INTR on GPIOZ_14 */
> +               interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
> +       };
> +};
> +
> +&ethmac {
> +       pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
> +       pinctrl-names = "default";
> +       status = "okay";
> +       phy-mode = "rgmii";
> +       phy-handle = <&external_phy>;
> +       amlogic,tx-delay-ns = <2>;
> +};
> +
> +&gpio {
> +       gpio-line-names =
> +               /* GPIOZ */
> +               "", "", "", "", "", "", "", "",
> +               "", "", "", "", "", "", "", "",
> +               /* GPIOH */
> +               "", "", "", "", "",
> +               "PIN_36", /* GPIOH_5 */
> +               "PIN_26", /* GPIOH_6 */
> +               "PIN_32", /* GPIOH_7 */
> +               "",
> +               /* BOOT */
> +               "", "", "", "", "", "", "", "",
> +               "", "", "", "", "", "", "", "",
> +               /* GPIOC */
> +               "", "", "", "", "", "", "", "",
> +               /* GPIOA */
> +               "", "", "", "", "", "", "", "",
> +               "", "", "", "", "", "",
> +               "PIN_27", /* GPIOA_14 */
> +               "PIN_28", /* GPIOA_15 */
> +               /* GPIOX */
> +               "PIN_16", /* GPIOX_0 */
> +               "PIN_18", /* GPIOX_1 */
> +               "PIN_22", /* GPIOX_2 */
> +               "PIN_11", /* GPIOX_3 */
> +               "PIN_13", /* GPIOX_4 */
> +               "PIN_7",  /* GPIOX_5 */
> +               "PIN_33", /* GPIOX_6 */
> +               "PIN_15", /* GPIOX_7 */
> +               "PIN_19", /* GPIOX_8 */
> +               "PIN_21", /* GPIOX_9 */
> +               "PIN_24", /* GPIOX_10 */
> +               "PIN_23", /* GPIOX_11 */
> +               "PIN_8",  /* GPIOX_12 */
> +               "PIN_10", /* GPIOX_13 */
> +               "PIN_29", /* GPIOX_14 */
> +               "PIN_31", /* GPIOX_15 */
> +               "PIN_12", /* GPIOX_16 */
> +               "PIN_3",  /* GPIOX_17 */
> +               "PIN_5",  /* GPIOX_18 */
> +               "PIN_35"; /* GPIOX_19 */
> +
> +       /*
> +        * WARNING: The USB Hub on the Odroid-C4 needs a reset signal
> +        * to be turned high in order to be detected by the USB Controller
> +        * This signal should be handled by a USB specific power sequence
> +        * in order to reset the Hub when USB bus is powered down.
> +        */
> +       usb-hub {
> +               gpio-hog;
> +               gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>;
> +               output-high;
> +               line-name = "usb-hub-reset";
> +       };
> +};
> +
> +&gpio_ao {
> +       gpio-line-names =
> +               /* GPIOAO */
> +               "", "", "", "",
> +               "PIN_47", /* GPIOAO_4 */
> +               "", "",
> +               "PIN_45", /* GPIOAO_7 */
> +               "PIN_46", /* GPIOAO_8 */
> +               "PIN_44", /* GPIOAO_9 */
> +               "PIN_42", /* GPIOAO_10 */
> +               "",
> +               /* GPIOE */
> +               "", "", "";
> +};
> +
> +&hdmi_tx {
> +       status = "okay";
> +       pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
> +       pinctrl-names = "default";
> +       hdmi-supply = <&vcc_5v>;
> +};
> +
> +&hdmi_tx_tmds_port {
> +       hdmi_tx_tmds_out: endpoint {
> +               remote-endpoint = <&hdmi_connector_in>;
> +       };
> +};
> +
> +&ir {
> +       status = "okay";
> +       pinctrl-0 = <&remote_input_ao_pins>;
> +       pinctrl-names = "default";
> +       linux,rc-map-name = "rc-odroid";
> +};
> +
> +&pwm_AO_cd {
> +       pinctrl-0 = <&pwm_ao_d_e_pins>;
> +       pinctrl-names = "default";
> +       clocks = <&xtal>;
> +       clock-names = "clkin1";
> +       status = "okay";
> +};
> +
> +&saradc {
> +       status = "okay";
> +};
> +
> +/* 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 = <200000000>;
> +       sd-uhs-sdr12;
> +       sd-uhs-sdr25;
> +       sd-uhs-sdr50;
> +       sd-uhs-sdr104;
> +       disable-wp;
> +
> +       cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
> +       vmmc-supply = <&tflash_vdd>;
> +       vqmmc-supply = <&tf_io>;
> +};
> +
> +/* 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_3v3>;
> +       vqmmc-supply = <&flash_1v8>;
> +};
> +
> +&uart_AO {
> +       status = "okay";
> +       pinctrl-0 = <&uart_ao_a_pins>;
> +       pinctrl-names = "default";
> +};
> +
> +&usb {
> +       status = "okay";
> +       vbus-supply = <&usb_pwr_en>;
> +};
> +
> +&usb2_phy0 {
> +       phy-supply = <&vcc_5v>;
> +};
> +
> +&usb2_phy1 {
> +       /* Enable the hub which is connected to this port */
> +       phy-supply = <&hub_5v>;
> +};
> diff --git a/arch/arm/dts/meson-sm1-sei610.dts b/arch/arm/dts/meson-sm1-sei610.dts
> index dfb2438851..5ab139a34c 100644
> --- a/arch/arm/dts/meson-sm1-sei610.dts
> +++ b/arch/arm/dts/meson-sm1-sei610.dts
> @@ -104,7 +104,7 @@
>         leds {
>                 compatible = "gpio-leds";
>
> -               bluetooth {
> +               led-bluetooth {
>                         label = "sei610:blue:bt";
>                         gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
>                         default-state = "off";
> diff --git a/arch/arm/dts/meson-sm1.dtsi b/arch/arm/dts/meson-sm1.dtsi
> index d4ec735fb1..71317f5aad 100644
> --- a/arch/arm/dts/meson-sm1.dtsi
> +++ b/arch/arm/dts/meson-sm1.dtsi
> @@ -56,6 +56,7 @@
>                         reg = <0x0 0x0>;
>                         enable-method = "psci";
>                         next-level-cache = <&l2>;
> +                       #cooling-cells = <2>;
>                 };
>
>                 cpu1: cpu at 1 {
> @@ -64,6 +65,7 @@
>                         reg = <0x0 0x1>;
>                         enable-method = "psci";
>                         next-level-cache = <&l2>;
> +                       #cooling-cells = <2>;
>                 };
>
>                 cpu2: cpu at 2 {
> @@ -72,6 +74,7 @@
>                         reg = <0x0 0x2>;
>                         enable-method = "psci";
>                         next-level-cache = <&l2>;
> +                       #cooling-cells = <2>;
>                 };
>
>                 cpu3: cpu at 3 {
> @@ -80,6 +83,7 @@
>                         reg = <0x0 0x3>;
>                         enable-method = "psci";
>                         next-level-cache = <&l2>;
> +                       #cooling-cells = <2>;
>                 };
>
>                 l2: l2-cache0 {
> @@ -466,6 +470,26 @@
>         compatible = "amlogic,sm1-clkc";
>  };
>
> +&cpu_thermal {
> +       cooling-maps {
> +               map0 {
> +                       trip = <&cpu_passive>;
> +                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                       <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                       <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                       <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +               };
> +
> +               map1 {
> +                       trip = <&cpu_hot>;
> +                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                       <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                       <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                       <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +               };
> +       };
> +};
> +
>  &ethmac {
>         power-domains = <&pwrc PWRC_SM1_ETH_ID>;
>  };
> --
> 2.22.0
>
diff mbox series

Patch

diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 9900b44274..b7c2754010 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -161,6 +161,7 @@  dtb-$(CONFIG_ARCH_MESON) += \
 	meson-g12b-odroid-n2.dtb \
 	meson-g12b-a311d-khadas-vim3.dtb \
 	meson-sm1-khadas-vim3l.dtb \
+	meson-sm1-odroid-c4.dtb \
 	meson-sm1-sei610.dtb
 dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
 	tegra20-medcom-wide.dtb \
diff --git a/arch/arm/dts/meson-g12-common.dtsi b/arch/arm/dts/meson-g12-common.dtsi
index 0882ea215b..593a006f4b 100644
--- a/arch/arm/dts/meson-g12-common.dtsi
+++ b/arch/arm/dts/meson-g12-common.dtsi
@@ -250,6 +250,17 @@ 
 				};
 			};
 
+			acodec: audio-controller at 32000 {
+				compatible = "amlogic,t9015";
+				reg = <0x0 0x32000 0x0 0x14>;
+				#sound-dai-cells = <0>;
+				sound-name-prefix = "ACODEC";
+				clocks = <&clkc CLKID_AUDIO_CODEC>;
+				clock-names = "pclk";
+				resets = <&reset RESET_AUDIO_CODEC>;
+				status = "disabled";
+			};
+
 			periphs: bus at 34400 {
 				compatible = "simple-bus";
 				reg = <0x0 0x34400 0x0 0x400>;
@@ -2319,7 +2330,7 @@ 
 				reg = <0x0 0xff400000 0x0 0x40000>;
 				interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
-				clock-names = "ddr";
+				clock-names = "otg";
 				phys = <&usb2_phy1>;
 				phy-names = "usb2-phy";
 				dr_mode = "peripheral";
diff --git a/arch/arm/dts/meson-g12.dtsi b/arch/arm/dts/meson-g12.dtsi
index 55d39020ec..6a1f4dcf64 100644
--- a/arch/arm/dts/meson-g12.dtsi
+++ b/arch/arm/dts/meson-g12.dtsi
@@ -343,6 +343,15 @@ 
 			status = "disabled";
 		};
 
+		toacodec: audio-controller at 740 {
+			compatible = "amlogic,g12a-toacodec";
+			reg = <0x0 0x740 0x0 0x4>;
+			#sound-dai-cells = <1>;
+			sound-name-prefix = "TOACODEC";
+			resets = <&clkc_audio AUD_RESET_TOACODEC>;
+			status = "disabled";
+		};
+
 		tohdmitx: audio-controller at 744 {
 			compatible = "amlogic,g12a-tohdmitx";
 			reg = <0x0 0x744 0x0 0x4>;
@@ -354,29 +363,6 @@ 
 	};
 };
 
-&cpu_thermal {
-	cooling-maps {
-		map0 {
-			trip = <&cpu_passive>;
-			cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-					 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-					 <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-					 <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-					 <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-					 <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-		};
-		map1 {
-			trip = <&cpu_hot>;
-			cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-					 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-					 <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-					 <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-					 <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-					 <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-		};
-	};
-};
-
 &ethmac {
 	power-domains = <&pwrc PWRC_G12A_ETH_ID>;
 };
diff --git a/arch/arm/dts/meson-g12b-khadas-vim3.dtsi b/arch/arm/dts/meson-g12b-khadas-vim3.dtsi
index c33e85fbda..224c890d32 100644
--- a/arch/arm/dts/meson-g12b-khadas-vim3.dtsi
+++ b/arch/arm/dts/meson-g12b-khadas-vim3.dtsi
@@ -51,11 +51,11 @@ 
 	sound {
 		compatible = "amlogic,axg-sound-card";
 		model = "G12B-KHADAS-VIM3";
-		audio-aux-devs = <&tdmout_b>;
-		audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
-				"TDMOUT_B IN 1", "FRDDR_B OUT 1",
-				"TDMOUT_B IN 2", "FRDDR_C OUT 1",
-				"TDM_B Playback", "TDMOUT_B OUT";
+		audio-aux-devs = <&tdmout_a>;
+		audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
+				"TDMOUT_A IN 1", "FRDDR_B OUT 0",
+				"TDMOUT_A IN 2", "FRDDR_C OUT 0",
+				"TDM_A Playback", "TDMOUT_A OUT";
 
 		assigned-clocks = <&clkc CLKID_MPLL2>,
 				  <&clkc CLKID_MPLL0>,
@@ -80,7 +80,7 @@ 
 
 		/* 8ch hdmi interface */
 		dai-link-3 {
-			sound-dai = <&tdmif_b>;
+			sound-dai = <&tdmif_a>;
 			dai-format = "i2s";
 			dai-tdm-slot-tx-mask-0 = <1 1>;
 			dai-tdm-slot-tx-mask-1 = <1 1>;
@@ -89,7 +89,7 @@ 
 			mclk-fs = <256>;
 
 			codec {
-				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
+				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
 			};
 		};
 
@@ -154,6 +154,10 @@ 
 	clock-latency = <50000>;
 };
 
+&frddr_a {
+	status = "okay";
+};
+
 &frddr_b {
 	status = "okay";
 };
@@ -178,11 +182,11 @@ 
 	status = "okay";
 };
 
-&tdmif_b {
+&tdmif_a {
 	status = "okay";
 };
 
-&tdmout_b {
+&tdmout_a {
 	status = "okay";
 };
 
diff --git a/arch/arm/dts/meson-g12b-s922x.dtsi b/arch/arm/dts/meson-g12b-s922x.dtsi
index 046cc332d0..1e5d0ee5d5 100644
--- a/arch/arm/dts/meson-g12b-s922x.dtsi
+++ b/arch/arm/dts/meson-g12b-s922x.dtsi
@@ -65,6 +65,11 @@ 
 			opp-hz = /bits/ 64 <1896000000>;
 			opp-microvolt = <981000>;
 		};
+
+		opp-1992000000 {
+			opp-hz = /bits/ 64 <1992000000>;
+			opp-microvolt = <1001000>;
+		};
 	};
 
 	cpub_opp_table_1: opp-table-1 {
@@ -120,5 +125,15 @@ 
 			opp-hz = /bits/ 64 <1704000000>;
 			opp-microvolt = <891000>;
 		};
+
+		opp-1800000000 {
+			opp-hz = /bits/ 64 <1800000000>;
+			opp-microvolt = <981000>;
+		};
+
+		opp-1908000000 {
+			opp-hz = /bits/ 64 <1908000000>;
+			opp-microvolt = <1022000>;
+		};
 	};
 };
diff --git a/arch/arm/dts/meson-g12b.dtsi b/arch/arm/dts/meson-g12b.dtsi
index 6dbc396804..9b8548e5f6 100644
--- a/arch/arm/dts/meson-g12b.dtsi
+++ b/arch/arm/dts/meson-g12b.dtsi
@@ -113,3 +113,25 @@ 
 	compatible = "amlogic,g12b-clkc";
 };
 
+&cpu_thermal {
+	cooling-maps {
+		map0 {
+			trip = <&cpu_passive>;
+			cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					 <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					 <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					 <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					 <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+		};
+		map1 {
+			trip = <&cpu_hot>;
+			cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					 <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					 <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					 <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					 <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+		};
+	};
+};
diff --git a/arch/arm/dts/meson-khadas-vim3.dtsi b/arch/arm/dts/meson-khadas-vim3.dtsi
index 094ecf2222..1ef1e3672b 100644
--- a/arch/arm/dts/meson-khadas-vim3.dtsi
+++ b/arch/arm/dts/meson-khadas-vim3.dtsi
@@ -39,13 +39,13 @@ 
 	leds {
 		compatible = "gpio-leds";
 
-		white {
+		led-white {
 			label = "vim3:white:sys";
 			gpios = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_LOW>;
 			linux,default-trigger = "heartbeat";
 		};
 
-		red {
+		led-red {
 			label = "vim3:red";
 			gpios = <&gpio_expander 5 GPIO_ACTIVE_LOW>;
 		};
diff --git a/arch/arm/dts/meson-sm1-odroid-c4.dts b/arch/arm/dts/meson-sm1-odroid-c4.dts
new file mode 100644
index 0000000000..00d90b30f8
--- /dev/null
+++ b/arch/arm/dts/meson-sm1-odroid-c4.dts
@@ -0,0 +1,402 @@ 
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2020 Dongjin Kim <tobetter at gmail.com>
+ */
+
+/dts-v1/;
+
+#include "meson-sm1.dtsi"
+#include <dt-bindings/gpio/meson-g12a-gpio.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+	compatible = "hardkernel,odroid-c4", "amlogic,sm1";
+	model = "Hardkernel ODROID-C4";
+
+	aliases {
+		serial0 = &uart_AO;
+		ethernet0 = &ethmac;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	memory at 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>;
+			function = LED_FUNCTION_STATUS;
+			gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "heartbeat";
+			panic-indicator;
+		};
+	};
+
+	tflash_vdd: regulator-tflash_vdd {
+		compatible = "regulator-fixed";
+
+		regulator-name = "TFLASH_VDD";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+
+		gpio = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+		regulator-always-on;
+	};
+
+	tf_io: gpio-regulator-tf_io {
+		compatible = "regulator-gpio";
+
+		regulator-name = "TF_IO";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <3300000>;
+
+		gpios = <&gpio_ao GPIOAO_6 GPIO_ACTIVE_HIGH>;
+		gpios-states = <0>;
+
+		states = <3300000 0>,
+			 <1800000 1>;
+	};
+
+	flash_1v8: regulator-flash_1v8 {
+		compatible = "regulator-fixed";
+		regulator-name = "FLASH_1V8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		vin-supply = <&vcc_3v3>;
+		regulator-always-on;
+	};
+
+	main_12v: regulator-main_12v {
+		compatible = "regulator-fixed";
+		regulator-name = "12V";
+		regulator-min-microvolt = <12000000>;
+		regulator-max-microvolt = <12000000>;
+		regulator-always-on;
+	};
+
+	vcc_5v: regulator-vcc_5v {
+		compatible = "regulator-fixed";
+		regulator-name = "5V";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-always-on;
+		vin-supply = <&main_12v>;
+	};
+
+	vcc_1v8: regulator-vcc_1v8 {
+		compatible = "regulator-fixed";
+		regulator-name = "VCC_1V8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		vin-supply = <&vcc_3v3>;
+		regulator-always-on;
+	};
+
+	vcc_3v3: regulator-vcc_3v3 {
+		compatible = "regulator-fixed";
+		regulator-name = "VCC_3V3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&vddao_3v3>;
+		regulator-always-on;
+		/* FIXME: actually controlled by VDDCPU_B_EN */
+	};
+
+	vddcpu: regulator-vddcpu {
+		/*
+		 * MP8756GD Regulator.
+		 */
+		compatible = "pwm-regulator";
+
+		regulator-name = "VDDCPU";
+		regulator-min-microvolt = <721000>;
+		regulator-max-microvolt = <1022000>;
+
+		vin-supply = <&main_12v>;
+
+		pwms = <&pwm_AO_cd 1 1250 0>;
+		pwm-dutycycle-range = <100 0>;
+
+		regulator-boot-on;
+		regulator-always-on;
+	};
+
+	hub_5v: regulator-hub_5v {
+		compatible = "regulator-fixed";
+		regulator-name = "HUB_5V";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		vin-supply = <&vcc_5v>;
+
+		/* Connected to the Hub CHIPENABLE, LOW sets low power state */
+		gpio = <&gpio GPIOH_4 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+
+	usb_pwr_en: regulator-usb_pwr_en {
+		compatible = "regulator-fixed";
+		regulator-name = "USB_PWR_EN";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		vin-supply = <&vcc_5v>;
+
+		/* Connected to the microUSB port power enable */
+		gpio = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+
+	vddao_1v8: regulator-vddao_1v8 {
+		compatible = "regulator-fixed";
+		regulator-name = "VDDAO_1V8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		vin-supply = <&vddao_3v3>;
+		regulator-always-on;
+	};
+
+	vddao_3v3: regulator-vddao_3v3 {
+		compatible = "regulator-fixed";
+		regulator-name = "VDDAO_3V3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&main_12v>;
+		regulator-always-on;
+	};
+
+	hdmi-connector {
+		compatible = "hdmi-connector";
+		type = "a";
+
+		port {
+			hdmi_connector_in: endpoint {
+				remote-endpoint = <&hdmi_tx_tmds_out>;
+			};
+		};
+	};
+};
+
+&cpu0 {
+	cpu-supply = <&vddcpu>;
+	operating-points-v2 = <&cpu_opp_table>;
+	clocks = <&clkc CLKID_CPU_CLK>;
+	clock-latency = <50000>;
+};
+
+&cpu1 {
+	cpu-supply = <&vddcpu>;
+	operating-points-v2 = <&cpu_opp_table>;
+	clocks = <&clkc CLKID_CPU1_CLK>;
+	clock-latency = <50000>;
+};
+
+&cpu2 {
+	cpu-supply = <&vddcpu>;
+	operating-points-v2 = <&cpu_opp_table>;
+	clocks = <&clkc CLKID_CPU2_CLK>;
+	clock-latency = <50000>;
+};
+
+&cpu3 {
+	cpu-supply = <&vddcpu>;
+	operating-points-v2 = <&cpu_opp_table>;
+	clocks = <&clkc CLKID_CPU3_CLK>;
+	clock-latency = <50000>;
+};
+
+&ext_mdio {
+	external_phy: ethernet-phy at 0 {
+		/* Realtek RTL8211F (0x001cc916) */
+		reg = <0>;
+		max-speed = <1000>;
+
+		interrupt-parent = <&gpio_intc>;
+		/* MAC_INTR on GPIOZ_14 */
+		interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
+	};
+};
+
+&ethmac {
+	pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+	phy-mode = "rgmii";
+	phy-handle = <&external_phy>;
+	amlogic,tx-delay-ns = <2>;
+};
+
+&gpio {
+	gpio-line-names =
+		/* GPIOZ */
+		"", "", "", "", "", "", "", "",
+		"", "", "", "", "", "", "", "",
+		/* GPIOH */
+		"", "", "", "", "",
+		"PIN_36", /* GPIOH_5 */
+		"PIN_26", /* GPIOH_6 */
+		"PIN_32", /* GPIOH_7 */
+		"",
+		/* BOOT */
+		"", "", "", "", "", "", "", "",
+		"", "", "", "", "", "", "", "",
+		/* GPIOC */
+		"", "", "", "", "", "", "", "",
+		/* GPIOA */
+		"", "", "", "", "", "", "", "",
+		"", "", "", "", "", "",
+		"PIN_27", /* GPIOA_14 */
+		"PIN_28", /* GPIOA_15 */
+		/* GPIOX */
+		"PIN_16", /* GPIOX_0 */
+		"PIN_18", /* GPIOX_1 */
+		"PIN_22", /* GPIOX_2 */
+		"PIN_11", /* GPIOX_3 */
+		"PIN_13", /* GPIOX_4 */
+		"PIN_7",  /* GPIOX_5 */
+		"PIN_33", /* GPIOX_6 */
+		"PIN_15", /* GPIOX_7 */
+		"PIN_19", /* GPIOX_8 */
+		"PIN_21", /* GPIOX_9 */
+		"PIN_24", /* GPIOX_10 */
+		"PIN_23", /* GPIOX_11 */
+		"PIN_8",  /* GPIOX_12 */
+		"PIN_10", /* GPIOX_13 */
+		"PIN_29", /* GPIOX_14 */
+		"PIN_31", /* GPIOX_15 */
+		"PIN_12", /* GPIOX_16 */
+		"PIN_3",  /* GPIOX_17 */
+		"PIN_5",  /* GPIOX_18 */
+		"PIN_35"; /* GPIOX_19 */
+
+	/*
+	 * WARNING: The USB Hub on the Odroid-C4 needs a reset signal
+	 * to be turned high in order to be detected by the USB Controller
+	 * This signal should be handled by a USB specific power sequence
+	 * in order to reset the Hub when USB bus is powered down.
+	 */
+	usb-hub {
+		gpio-hog;
+		gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>;
+		output-high;
+		line-name = "usb-hub-reset";
+	};
+};
+
+&gpio_ao {
+	gpio-line-names =
+		/* GPIOAO */
+		"", "", "", "",
+		"PIN_47", /* GPIOAO_4 */
+		"", "",
+		"PIN_45", /* GPIOAO_7 */
+		"PIN_46", /* GPIOAO_8 */
+		"PIN_44", /* GPIOAO_9 */
+		"PIN_42", /* GPIOAO_10 */
+		"",
+		/* GPIOE */
+		"", "", "";
+};
+
+&hdmi_tx {
+	status = "okay";
+	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
+	pinctrl-names = "default";
+	hdmi-supply = <&vcc_5v>;
+};
+
+&hdmi_tx_tmds_port {
+	hdmi_tx_tmds_out: endpoint {
+		remote-endpoint = <&hdmi_connector_in>;
+	};
+};
+
+&ir {
+	status = "okay";
+	pinctrl-0 = <&remote_input_ao_pins>;
+	pinctrl-names = "default";
+	linux,rc-map-name = "rc-odroid";
+};
+
+&pwm_AO_cd {
+	pinctrl-0 = <&pwm_ao_d_e_pins>;
+	pinctrl-names = "default";
+	clocks = <&xtal>;
+	clock-names = "clkin1";
+	status = "okay";
+};
+
+&saradc {
+	status = "okay";
+};
+
+/* 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 = <200000000>;
+	sd-uhs-sdr12;
+	sd-uhs-sdr25;
+	sd-uhs-sdr50;
+	sd-uhs-sdr104;
+	disable-wp;
+
+	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
+	vmmc-supply = <&tflash_vdd>;
+	vqmmc-supply = <&tf_io>;
+};
+
+/* 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_3v3>;
+	vqmmc-supply = <&flash_1v8>;
+};
+
+&uart_AO {
+	status = "okay";
+	pinctrl-0 = <&uart_ao_a_pins>;
+	pinctrl-names = "default";
+};
+
+&usb {
+	status = "okay";
+	vbus-supply = <&usb_pwr_en>;
+};
+
+&usb2_phy0 {
+	phy-supply = <&vcc_5v>;
+};
+
+&usb2_phy1 {
+	/* Enable the hub which is connected to this port */
+	phy-supply = <&hub_5v>;
+};
diff --git a/arch/arm/dts/meson-sm1-sei610.dts b/arch/arm/dts/meson-sm1-sei610.dts
index dfb2438851..5ab139a34c 100644
--- a/arch/arm/dts/meson-sm1-sei610.dts
+++ b/arch/arm/dts/meson-sm1-sei610.dts
@@ -104,7 +104,7 @@ 
 	leds {
 		compatible = "gpio-leds";
 
-		bluetooth {
+		led-bluetooth {
 			label = "sei610:blue:bt";
 			gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
 			default-state = "off";
diff --git a/arch/arm/dts/meson-sm1.dtsi b/arch/arm/dts/meson-sm1.dtsi
index d4ec735fb1..71317f5aad 100644
--- a/arch/arm/dts/meson-sm1.dtsi
+++ b/arch/arm/dts/meson-sm1.dtsi
@@ -56,6 +56,7 @@ 
 			reg = <0x0 0x0>;
 			enable-method = "psci";
 			next-level-cache = <&l2>;
+			#cooling-cells = <2>;
 		};
 
 		cpu1: cpu at 1 {
@@ -64,6 +65,7 @@ 
 			reg = <0x0 0x1>;
 			enable-method = "psci";
 			next-level-cache = <&l2>;
+			#cooling-cells = <2>;
 		};
 
 		cpu2: cpu at 2 {
@@ -72,6 +74,7 @@ 
 			reg = <0x0 0x2>;
 			enable-method = "psci";
 			next-level-cache = <&l2>;
+			#cooling-cells = <2>;
 		};
 
 		cpu3: cpu at 3 {
@@ -80,6 +83,7 @@ 
 			reg = <0x0 0x3>;
 			enable-method = "psci";
 			next-level-cache = <&l2>;
+			#cooling-cells = <2>;
 		};
 
 		l2: l2-cache0 {
@@ -466,6 +470,26 @@ 
 	compatible = "amlogic,sm1-clkc";
 };
 
+&cpu_thermal {
+	cooling-maps {
+		map0 {
+			trip = <&cpu_passive>;
+			cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					<&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					<&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+		};
+
+		map1 {
+			trip = <&cpu_hot>;
+			cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					<&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+					<&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+		};
+	};
+};
+
 &ethmac {
 	power-domains = <&pwrc PWRC_SM1_ETH_ID>;
 };