* [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14
@ 2021-09-08 14:17 Neil Armstrong
2021-09-08 14:17 ` [PATCH v2 2/9] ARM: meson: keep HW order for MMC devices Neil Armstrong
` (9 more replies)
0 siblings, 10 replies; 14+ messages in thread
From: Neil Armstrong @ 2021-09-08 14:17 UTC (permalink / raw)
To: u-boot; +Cc: u-boot-amlogic, Neil Armstrong
Import Amlogic DT changes from Linux commit 7d2a07b76933 ("Linux 5.14"),
dt-bindings clock changes and new meson-g12b-gsking-x.dts,
meson-sm1-bananapi-m5 & odroid-hc4 boards.
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
arch/arm/dts/Makefile | 3 +
arch/arm/dts/meson-axg-s400.dts | 16 +
arch/arm/dts/meson-axg.dtsi | 181 +++++
arch/arm/dts/meson-g12-common.dtsi | 31 +-
arch/arm/dts/meson-g12a-sei510.dts | 2 +-
arch/arm/dts/meson-g12b-gsking-x.dts | 133 ++++
arch/arm/dts/meson-g12b-gtking-pro.dts | 23 +-
arch/arm/dts/meson-g12b-gtking.dts | 22 +-
arch/arm/dts/meson-g12b-odroid-n2-plus.dts | 2 +-
arch/arm/dts/meson-g12b-odroid-n2.dtsi | 74 +-
arch/arm/dts/meson-g12b-w400.dtsi | 2 +-
arch/arm/dts/meson-g12b.dtsi | 4 +
arch/arm/dts/meson-gx-libretech-pc.dtsi | 2 +-
arch/arm/dts/meson-gx-p23x-q20x.dtsi | 2 +-
arch/arm/dts/meson-gx.dtsi | 7 +
arch/arm/dts/meson-gxbb-nanopi-k2.dts | 42 +-
arch/arm/dts/meson-gxbb-odroidc2.dts | 44 +-
arch/arm/dts/meson-gxl-s805x-libretech-ac.dts | 2 +-
arch/arm/dts/meson-gxl-s905x-khadas-vim.dts | 50 +-
.../dts/meson-gxl-s905x-libretech-cc-v2.dts | 6 +-
arch/arm/dts/meson-gxl-s905x-libretech-cc.dts | 2 +-
arch/arm/dts/meson-gxm-khadas-vim2.dts | 55 +-
arch/arm/dts/meson-gxm-wetek-core2.dts | 2 +-
arch/arm/dts/meson-gxm.dtsi | 20 +
arch/arm/dts/meson-khadas-vim3.dtsi | 73 +-
arch/arm/dts/meson-sm1-bananapi-m5.dts | 646 ++++++++++++++++++
arch/arm/dts/meson-sm1-khadas-vim3l.dts | 20 +-
arch/arm/dts/meson-sm1-odroid-c4.dts | 448 +-----------
arch/arm/dts/meson-sm1-odroid-hc4.dts | 140 ++++
arch/arm/dts/meson-sm1-odroid.dtsi | 449 ++++++++++++
arch/arm/dts/meson-sm1-sei610.dts | 10 +-
arch/arm/dts/meson-sm1.dtsi | 12 +-
include/dt-bindings/clock/axg-clkc.h | 26 +-
include/dt-bindings/clock/g12a-clkc.h | 2 +
34 files changed, 2030 insertions(+), 523 deletions(-)
create mode 100644 arch/arm/dts/meson-g12b-gsking-x.dts
create mode 100644 arch/arm/dts/meson-sm1-bananapi-m5.dts
create mode 100644 arch/arm/dts/meson-sm1-odroid-hc4.dts
create mode 100644 arch/arm/dts/meson-sm1-odroid.dtsi
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index fc16a57e60..f0160d2dc0 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -177,11 +177,14 @@ dtb-$(CONFIG_ARCH_MESON) += \
meson-g12a-sei510.dtb \
meson-g12b-gtking.dtb \
meson-g12b-gtking-pro.dtb \
+ meson-g12b-gsking-x.dtb \
meson-g12b-odroid-n2.dtb \
meson-g12b-odroid-n2-plus.dtb \
meson-g12b-a311d-khadas-vim3.dtb \
+ meson-sm1-bananapi-m5.dtb \
meson-sm1-khadas-vim3l.dtb \
meson-sm1-odroid-c4.dtb \
+ meson-sm1-odroid-hc4.dtb \
meson-sm1-sei610.dtb
dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
tegra20-medcom-wide.dtb \
diff --git a/arch/arm/dts/meson-axg-s400.dts b/arch/arm/dts/meson-axg-s400.dts
index cb1360ae12..359589d1df 100644
--- a/arch/arm/dts/meson-axg-s400.dts
+++ b/arch/arm/dts/meson-axg-s400.dts
@@ -441,6 +441,16 @@
status = "okay";
};
+&pcieA {
+ reset-gpios = <&gpio GPIOX_19 GPIO_ACTIVE_LOW>;
+ status = "okay";
+};
+
+&pcieB {
+ reset-gpios = <&gpio GPIOZ_10 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
+ status = "okay";
+};
+
&pwm_ab {
status = "okay";
pinctrl-0 = <&pwm_a_x20_pins>;
@@ -584,3 +594,9 @@
pinctrl-0 = <&uart_ao_a_pins>;
pinctrl-names = "default";
};
+
+&usb {
+ status = "okay";
+ dr_mode = "otg";
+ vbus-supply = <&usb_pwr>;
+};
diff --git a/arch/arm/dts/meson-axg.dtsi b/arch/arm/dts/meson-axg.dtsi
index b9efc84692..3f5254eeb4 100644
--- a/arch/arm/dts/meson-axg.dtsi
+++ b/arch/arm/dts/meson-axg.dtsi
@@ -12,6 +12,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/reset/amlogic,meson-axg-audio-arb.h>
#include <dt-bindings/reset/amlogic,meson-axg-reset.h>
+#include <dt-bindings/power/meson-axg-power.h>
/ {
compatible = "amlogic,meson-axg";
@@ -171,6 +172,98 @@
#size-cells = <2>;
ranges;
+ pcieA: pcie@f9800000 {
+ compatible = "amlogic,axg-pcie", "snps,dw-pcie";
+ reg = <0x0 0xf9800000 0x0 0x400000>,
+ <0x0 0xff646000 0x0 0x2000>,
+ <0x0 0xf9f00000 0x0 0x100000>;
+ reg-names = "elbi", "cfg", "config";
+ interrupts = <GIC_SPI 177 IRQ_TYPE_EDGE_RISING>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 0>;
+ interrupt-map = <0 0 0 0 &gic GIC_SPI 179 IRQ_TYPE_EDGE_RISING>;
+ bus-range = <0x0 0xff>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+ device_type = "pci";
+ ranges = <0x82000000 0 0xf9c00000 0x0 0xf9c00000 0 0x00300000>;
+
+ clocks = <&clkc CLKID_USB>, <&clkc CLKID_PCIE_A>, <&clkc CLKID_PCIE_CML_EN0>;
+ clock-names = "general", "pclk", "port";
+ resets = <&reset RESET_PCIE_A>, <&reset RESET_PCIE_APB>;
+ reset-names = "port", "apb";
+ num-lanes = <1>;
+ phys = <&pcie_phy>;
+ phy-names = "pcie";
+ status = "disabled";
+ };
+
+ pcieB: pcie@fa000000 {
+ compatible = "amlogic,axg-pcie", "snps,dw-pcie";
+ reg = <0x0 0xfa000000 0x0 0x400000>,
+ <0x0 0xff648000 0x0 0x2000>,
+ <0x0 0xfa400000 0x0 0x100000>;
+ reg-names = "elbi", "cfg", "config";
+ interrupts = <GIC_SPI 167 IRQ_TYPE_EDGE_RISING>;
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 0>;
+ interrupt-map = <0 0 0 0 &gic GIC_SPI 169 IRQ_TYPE_EDGE_RISING>;
+ bus-range = <0x0 0xff>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+ device_type = "pci";
+ ranges = <0x82000000 0 0xfa500000 0x0 0xfa500000 0 0x00300000>;
+
+ clocks = <&clkc CLKID_USB>, <&clkc CLKID_PCIE_B>, <&clkc CLKID_PCIE_CML_EN1>;
+ clock-names = "general", "pclk", "port";
+ resets = <&reset RESET_PCIE_B>, <&reset RESET_PCIE_APB>;
+ reset-names = "port", "apb";
+ num-lanes = <1>;
+ phys = <&pcie_phy>;
+ phy-names = "pcie";
+ status = "disabled";
+ };
+
+ usb: usb@ffe09080 {
+ compatible = "amlogic,meson-axg-usb-ctrl";
+ reg = <0x0 0xffe09080 0x0 0x20>;
+ interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ clocks = <&clkc CLKID_USB>, <&clkc CLKID_USB1_DDR_BRIDGE>;
+ clock-names = "usb_ctrl", "ddr";
+ resets = <&reset RESET_USB_OTG>;
+
+ dr_mode = "otg";
+
+ phys = <&usb2_phy1>;
+ phy-names = "usb2-phy1";
+
+ dwc2: usb@ff400000 {
+ compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
+ reg = <0x0 0xff400000 0x0 0x40000>;
+ interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clkc CLKID_USB1>;
+ clock-names = "otg";
+ phys = <&usb2_phy1>;
+ dr_mode = "peripheral";
+ g-rx-fifo-size = <192>;
+ g-np-tx-fifo-size = <128>;
+ g-tx-fifo-size = <128 128 16 16 16>;
+ };
+
+ dwc3: usb@ff500000 {
+ compatible = "snps,dwc3";
+ reg = <0x0 0xff500000 0x0 0x100000>;
+ interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+ dr_mode = "host";
+ maximum-speed = "high-speed";
+ snps,dis_u2_susphy_quirk;
+ };
+ };
+
ethmac: ethernet@ff3f0000 {
compatible = "amlogic,meson-axg-dwmac",
"snps,dwmac-3.70a",
@@ -187,9 +280,19 @@
"timing-adjustment";
rx-fifo-depth = <4096>;
tx-fifo-depth = <2048>;
+ power-domains = <&pwrc PWRC_AXG_ETHERNET_MEM_ID>;
status = "disabled";
};
+ pcie_phy: phy@ff644000 {
+ compatible = "amlogic,axg-pcie-phy";
+ reg = <0x0 0xff644000 0x0 0x1c>;
+ resets = <&reset RESET_PCIE_PHY>;
+ phys = <&mipi_pcie_analog_dphy>;
+ phy-names = "analog";
+ #phy-cells = <0>;
+ };
+
pdm: audio-controller@ff632000 {
compatible = "amlogic,axg-pdm";
reg = <0x0 0xff632000 0x0 0x34>;
@@ -1117,6 +1220,52 @@
clocks = <&xtal>;
clock-names = "xtal";
};
+
+ pwrc: power-controller {
+ compatible = "amlogic,meson-axg-pwrc";
+ #power-domain-cells = <1>;
+ amlogic,ao-sysctrl = <&sysctrl_AO>;
+ resets = <&reset RESET_VIU>,
+ <&reset RESET_VENC>,
+ <&reset RESET_VCBUS>,
+ <&reset RESET_VENCL>,
+ <&reset RESET_VID_LOCK>;
+ reset-names = "viu", "venc", "vcbus",
+ "vencl", "vid_lock";
+ clocks = <&clkc CLKID_VPU>,
+ <&clkc CLKID_VAPB>;
+ clock-names = "vpu", "vapb";
+ /*
+ * VPU clocking is provided by two identical clock paths
+ * VPU_0 and VPU_1 muxed to a single clock by a glitch
+ * free mux to safely change frequency while running.
+ * Same for VAPB but with a final gate after the glitch free mux.
+ */
+ assigned-clocks = <&clkc CLKID_VPU_0_SEL>,
+ <&clkc CLKID_VPU_0>,
+ <&clkc CLKID_VPU>, /* Glitch free mux */
+ <&clkc CLKID_VAPB_0_SEL>,
+ <&clkc CLKID_VAPB_0>,
+ <&clkc CLKID_VAPB_SEL>; /* Glitch free mux */
+ assigned-clock-parents = <&clkc CLKID_FCLK_DIV4>,
+ <0>, /* Do Nothing */
+ <&clkc CLKID_VPU_0>,
+ <&clkc CLKID_FCLK_DIV4>,
+ <0>, /* Do Nothing */
+ <&clkc CLKID_VAPB_0>;
+ assigned-clock-rates = <0>, /* Do Nothing */
+ <250000000>,
+ <0>, /* Do Nothing */
+ <0>, /* Do Nothing */
+ <250000000>,
+ <0>; /* Do Nothing */
+ };
+
+ mipi_pcie_analog_dphy: phy {
+ compatible = "amlogic,axg-mipi-pcie-analog-phy";
+ #phy-cells = <0>;
+ status = "disabled";
+ };
};
};
@@ -1129,6 +1278,19 @@
#mbox-cells = <1>;
};
+ mipi_dphy: phy@ff640000 {
+ compatible = "amlogic,axg-mipi-dphy";
+ reg = <0x0 0xff640000 0x0 0x100>;
+ clocks = <&clkc CLKID_MIPI_DSI_PHY>;
+ clock-names = "pclk";
+ resets = <&reset RESET_MIPI_PHY>;
+ reset-names = "phy";
+ phys = <&mipi_pcie_analog_dphy>;
+ phy-names = "analog";
+ #phy-cells = <0>;
+ status = "disabled";
+ };
+
audio: bus@ff642000 {
compatible = "simple-bus";
reg = <0x0 0xff642000 0x0 0x2000>;
@@ -1563,6 +1725,14 @@
};
};
+ ge2d: ge2d@ff940000 {
+ compatible = "amlogic,axg-ge2d";
+ reg = <0x0 0xff940000 0x0 0x10000>;
+ interrupts = <GIC_SPI 150 IRQ_TYPE_EDGE_RISING>;
+ clocks = <&clkc CLKID_VAPB>;
+ resets = <&reset RESET_GE2D>;
+ };
+
gic: interrupt-controller@ffc01000 {
compatible = "arm,gic-400";
reg = <0x0 0xffc01000 0 0x1000>,
@@ -1701,6 +1871,7 @@
status = "disabled";
clocks = <&xtal>, <&clkc CLKID_UART0>, <&xtal>;
clock-names = "xtal", "pclk", "baud";
+ fifo-size = <128>;
};
};
@@ -1734,6 +1905,16 @@
clock-names = "core", "clkin0", "clkin1";
resets = <&reset RESET_SD_EMMC_C>;
};
+
+ usb2_phy1: phy@9020 {
+ compatible = "amlogic,meson-gxl-usb2-phy";
+ #phy-cells = <0>;
+ reg = <0x0 0x9020 0x0 0x20>;
+ clocks = <&clkc CLKID_USB>;
+ clock-names = "phy";
+ resets = <&reset RESET_USB_OTG>;
+ reset-names = "phy";
+ };
};
sram: sram@fffc0000 {
diff --git a/arch/arm/dts/meson-g12-common.dtsi b/arch/arm/dts/meson-g12-common.dtsi
index 1e83ec5b8c..00c6f53290 100644
--- a/arch/arm/dts/meson-g12-common.dtsi
+++ b/arch/arm/dts/meson-g12-common.dtsi
@@ -17,6 +17,12 @@
#address-cells = <2>;
#size-cells = <2>;
+ aliases {
+ mmc0 = &sd_emmc_b; /* SD card */
+ mmc1 = &sd_emmc_c; /* eMMC */
+ mmc2 = &sd_emmc_a; /* SDIO */
+ };
+
chosen {
#address-cells = <2>;
#size-cells = <2>;
@@ -122,9 +128,9 @@
pcie: pcie@fc000000 {
compatible = "amlogic,g12a-pcie", "snps,dw-pcie";
- reg = <0x0 0xfc000000 0x0 0x400000
- 0x0 0xff648000 0x0 0x2000
- 0x0 0xfc400000 0x0 0x200000>;
+ reg = <0x0 0xfc000000 0x0 0x400000>,
+ <0x0 0xff648000 0x0 0x2000>,
+ <0x0 0xfc400000 0x0 0x200000>;
reg-names = "elbi", "cfg", "config";
interrupts = <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
#interrupt-cells = <1>;
@@ -134,8 +140,8 @@
#address-cells = <3>;
#size-cells = <2>;
device_type = "pci";
- ranges = <0x81000000 0 0 0x0 0xfc600000 0 0x00100000
- 0x82000000 0 0xfc700000 0x0 0xfc700000 0 0x1900000>;
+ ranges = <0x81000000 0 0 0x0 0xfc600000 0 0x00100000>,
+ <0x82000000 0 0xfc700000 0x0 0xfc700000 0 0x1900000>;
clocks = <&clkc CLKID_PCIE_PHY
&clkc CLKID_PCIE_COMB
@@ -209,7 +215,7 @@
};
ethmac: ethernet@ff3f0000 {
- compatible = "amlogic,meson-axg-dwmac",
+ compatible = "amlogic,meson-g12a-dwmac",
"snps,dwmac-3.70a",
"snps,dwmac";
reg = <0x0 0xff3f0000 0x0 0x10000>,
@@ -282,6 +288,8 @@
hwrng: rng@218 {
compatible = "amlogic,meson-rng";
reg = <0x0 0x218 0x0 0x4>;
+ clocks = <&clkc CLKID_RNG0>;
+ clock-names = "core";
};
};
@@ -2001,7 +2009,7 @@
};
};
- vrtc: rtc@0a8 {
+ vrtc: rtc@a8 {
compatible = "amlogic,meson-vrtc";
reg = <0x0 0x000a8 0x0 0x4>;
};
@@ -2179,6 +2187,12 @@
amlogic,channel-interrupts = <64 65 66 67 68 69 70 71>;
};
+ watchdog: watchdog@f0d0 {
+ compatible = "amlogic,meson-gxbb-wdt";
+ reg = <0x0 0xf0d0 0x0 0x10>;
+ clocks = <&xtal>;
+ };
+
spicc0: spi@13000 {
compatible = "amlogic,meson-g12a-spicc";
reg = <0x0 0x13000 0x0 0x44>;
@@ -2303,6 +2317,7 @@
clocks = <&xtal>, <&clkc CLKID_UART0>, <&xtal>;
clock-names = "xtal", "pclk", "baud";
status = "disabled";
+ fifo-size = <128>;
};
};
@@ -2380,7 +2395,7 @@
interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
dr_mode = "host";
snps,dis_u2_susphy_quirk;
- snps,quirk-frame-length-adjustment;
+ snps,quirk-frame-length-adjustment = <0x20>;
snps,parkmode-disable-ss-quirk;
};
};
diff --git a/arch/arm/dts/meson-g12a-sei510.dts b/arch/arm/dts/meson-g12a-sei510.dts
index b00d0468c7..81269ccc24 100644
--- a/arch/arm/dts/meson-g12a-sei510.dts
+++ b/arch/arm/dts/meson-g12a-sei510.dts
@@ -181,7 +181,7 @@
sound {
compatible = "amlogic,axg-sound-card";
- model = "G12A-SEI510";
+ model = "SEI510";
audio-aux-devs = <&tdmout_a>, <&tdmout_b>,
<&tdmin_a>, <&tdmin_b>;
audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
diff --git a/arch/arm/dts/meson-g12b-gsking-x.dts b/arch/arm/dts/meson-g12b-gsking-x.dts
new file mode 100644
index 0000000000..6c7bfacbad
--- /dev/null
+++ b/arch/arm/dts/meson-g12b-gsking-x.dts
@@ -0,0 +1,133 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 BayLibre, SAS
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ * Copyright (c) 2019 Christian Hewitt <christianshewitt@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "meson-g12b-w400.dtsi"
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
+
+/ {
+ compatible = "azw,gsking-x", "amlogic,s922x", "amlogic,g12b";
+ model = "Beelink GS-King X";
+
+ aliases {
+ rtc0 = &rtc;
+ rtc1 = &vrtc;
+ };
+
+ gpio-keys-polled {
+ compatible = "gpio-keys-polled";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ poll-interval = <100>;
+
+ power-button {
+ label = "power";
+ linux,code = <KEY_POWER>;
+ gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
+ };
+ };
+
+ sound {
+ compatible = "amlogic,axg-sound-card";
+ model = "GSKING-X";
+ audio-aux-devs = <&tdmout_a>;
+ audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 1",
+ "TDMOUT_A IN 1", "FRDDR_B OUT 1",
+ "TDMOUT_A IN 2", "FRDDR_C OUT 1",
+ "TDM_A Playback", "TDMOUT_A OUT";
+
+ assigned-clocks = <&clkc CLKID_MPLL2>,
+ <&clkc CLKID_MPLL0>,
+ <&clkc CLKID_MPLL1>;
+ assigned-clock-parents = <0>, <0>, <0>;
+ assigned-clock-rates = <294912000>,
+ <270950400>,
+ <393216000>;
+ status = "okay";
+
+ dai-link-0 {
+ sound-dai = <&frddr_a>;
+ };
+
+ dai-link-1 {
+ sound-dai = <&frddr_b>;
+ };
+
+ dai-link-2 {
+ sound-dai = <&frddr_c>;
+ };
+
+ /* 8ch hdmi interface */
+ dai-link-3 {
+ sound-dai = <&tdmif_a>;
+ dai-format = "i2s";
+ dai-tdm-slot-tx-mask-0 = <1 1>;
+ dai-tdm-slot-tx-mask-1 = <1 1>;
+ dai-tdm-slot-tx-mask-2 = <1 1>;
+ dai-tdm-slot-tx-mask-3 = <1 1>;
+ mclk-fs = <256>;
+
+ codec {
+ sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>;
+ };
+ };
+
+ dai-link-4 {
+ sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
+
+ codec {
+ sound-dai = <&hdmi_tx>;
+ };
+ };
+ };
+};
+
+&arb {
+ status = "okay";
+};
+
+&clkc_audio {
+ status = "okay";
+};
+
+&frddr_a {
+ status = "okay";
+};
+
+&frddr_b {
+ status = "okay";
+};
+
+&frddr_c {
+ status = "okay";
+};
+
+&i2c3 {
+ status = "okay";
+ pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
+ pinctrl-names = "default";
+
+ rtc: rtc@51 {
+ compatible = "nxp,pcf8563";
+ reg = <0x51>;
+ wakeup-source;
+ };
+};
+
+&tdmif_a {
+ status = "okay";
+};
+
+&tdmout_a {
+ status = "okay";
+};
+
+&tohdmitx {
+ status = "okay";
+};
diff --git a/arch/arm/dts/meson-g12b-gtking-pro.dts b/arch/arm/dts/meson-g12b-gtking-pro.dts
index f0c56a16af..707daf9278 100644
--- a/arch/arm/dts/meson-g12b-gtking-pro.dts
+++ b/arch/arm/dts/meson-g12b-gtking-pro.dts
@@ -11,9 +11,14 @@
#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
/ {
- compatible = "azw,gtking", "amlogic,g12b";
+ compatible = "azw,gtking", "amlogic,s922x", "amlogic,g12b";
model = "Beelink GT-King Pro";
+ aliases {
+ rtc0 = &rtc;
+ rtc1 = &vrtc;
+ };
+
gpio-keys-polled {
compatible = "gpio-keys-polled";
#address-cells = <1>;
@@ -30,7 +35,7 @@
leds {
compatible = "gpio-leds";
- white {
+ led-white {
label = "power:white";
gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
default-state = "on";
@@ -39,7 +44,7 @@
sound {
compatible = "amlogic,axg-sound-card";
- model = "G12B-GTKING-PRO";
+ model = "GTKING-PRO";
audio-aux-devs = <&tdmout_b>;
audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
"TDMOUT_B IN 1", "FRDDR_B OUT 1",
@@ -112,6 +117,18 @@
status = "okay";
};
+&i2c3 {
+ status = "okay";
+ pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
+ pinctrl-names = "default";
+
+ rtc: rtc@51 {
+ compatible = "nxp,pcf8563";
+ reg = <0x51>;
+ wakeup-source;
+ };
+};
+
&tdmif_b {
status = "okay";
};
diff --git a/arch/arm/dts/meson-g12b-gtking.dts b/arch/arm/dts/meson-g12b-gtking.dts
index eeb7bc5539..5d96c14490 100644
--- a/arch/arm/dts/meson-g12b-gtking.dts
+++ b/arch/arm/dts/meson-g12b-gtking.dts
@@ -11,9 +11,14 @@
#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
/ {
- compatible = "azw,gtking", "amlogic,g12b";
+ compatible = "azw,gtking", "amlogic,s922x", "amlogic,g12b";
model = "Beelink GT-King";
+ aliases {
+ rtc0 = &rtc;
+ rtc1 = &vrtc;
+ };
+
spdif_dit: audio-codec-1 {
#sound-dai-cells = <0>;
compatible = "linux,spdif-dit";
@@ -23,7 +28,7 @@
sound {
compatible = "amlogic,axg-sound-card";
- model = "G12B-GTKING";
+ model = "GTKING";
audio-aux-devs = <&tdmout_b>;
audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
"TDMOUT_B IN 1", "FRDDR_B OUT 1",
@@ -122,6 +127,19 @@
status = "okay";
};
+
+&i2c3 {
+ status = "okay";
+ pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
+ pinctrl-names = "default";
+
+ rtc: rtc@51 {
+ compatible = "nxp,pcf8563";
+ reg = <0x51>;
+ wakeup-source;
+ };
+};
+
&spdifout {
pinctrl-0 = <&spdif_out_h_pins>;
pinctrl-names = "default";
diff --git a/arch/arm/dts/meson-g12b-odroid-n2-plus.dts b/arch/arm/dts/meson-g12b-odroid-n2-plus.dts
index 5de2815ba9..ce1198ad34 100644
--- a/arch/arm/dts/meson-g12b-odroid-n2-plus.dts
+++ b/arch/arm/dts/meson-g12b-odroid-n2-plus.dts
@@ -19,7 +19,7 @@
regulator-min-microvolt = <680000>;
regulator-max-microvolt = <1040000>;
- pwms = <&pwm_AO_cd 1 1500 0>;
+ pwms = <&pwm_ab 0 1500 0>;
};
&vddcpu_b {
diff --git a/arch/arm/dts/meson-g12b-odroid-n2.dtsi b/arch/arm/dts/meson-g12b-odroid-n2.dtsi
index 6982632ae6..344573e157 100644
--- a/arch/arm/dts/meson-g12b-odroid-n2.dtsi
+++ b/arch/arm/dts/meson-g12b-odroid-n2.dtsi
@@ -13,6 +13,8 @@
aliases {
serial0 = &uart_AO;
ethernet0 = ðmac;
+ rtc0 = &rtc;
+ rtc1 = &vrtc;
};
dioo2133: audio-amplifier-0 {
@@ -40,7 +42,7 @@
leds {
compatible = "gpio-leds";
- blue {
+ led-blue {
label = "n2:blue";
gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
@@ -211,7 +213,7 @@
sound {
compatible = "amlogic,axg-sound-card";
- model = "G12B-ODROID-N2";
+ model = "ODROID-N2";
audio-widgets = "Line", "Lineout";
audio-aux-devs = <&tdmout_b>, <&tdmout_c>, <&tdmin_a>,
<&tdmin_b>, <&tdmin_c>, <&tdmin_lb>,
@@ -408,12 +410,12 @@
&ext_mdio {
external_phy: ethernet-phy@0 {
- /* Realtek RTL8211F (0x001cc916) */
+ /* Realtek RTL8211F (0x001cc916) */
reg = <0>;
max-speed = <1000>;
reset-assert-us = <10000>;
- reset-deassert-us = <30000>;
+ reset-deassert-us = <80000>;
reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
interrupt-parent = <&gpio_intc>;
@@ -444,13 +446,58 @@
};
&gpio {
+ gpio-line-names =
+ /* GPIOZ */
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ /* GPIOH */
+ "", "", "", "", "", "", "", "",
+ "",
+ /* BOOT */
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ /* GPIOC */
+ "", "", "", "", "", "", "", "",
+ /* GPIOA */
+ "PIN_44", /* GPIOA_0 */
+ "PIN_46", /* GPIOA_1 */
+ "PIN_45", /* GPIOA_2 */
+ "PIN_47", /* GPIOA_3 */
+ "PIN_26", /* GPIOA_4 */
+ "", "", "", "", "", "",
+ "PIN_42", /* GPIOA_11 */
+ "PIN_32", /* GPIOA_12 */
+ "PIN_7", /* GPIOA_13 */
+ "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_33", /* GPIOX_5 */
+ "PIN_35", /* 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_36"; /* GPIOX_19 */
/*
* WARNING: The USB Hub on the Odroid-N2 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 {
+ hog-0 {
gpio-hog;
gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>;
output-high;
@@ -478,6 +525,18 @@
linux,rc-map-name = "rc-odroid";
};
+&i2c3 {
+ status = "okay";
+ pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
+ pinctrl-names = "default";
+
+ rtc: rtc@51 {
+ compatible = "nxp,pcf8563";
+ reg = <0x51>;
+ wakeup-source;
+ };
+};
+
&pwm_ab {
pinctrl-0 = <&pwm_a_e_pins>;
pinctrl-names = "default";
@@ -494,6 +553,11 @@
status = "okay";
};
+&saradc {
+ status = "okay";
+ vref-supply = <&vddao_1v8>;
+};
+
/* SD card */
&sd_emmc_b {
status = "okay";
diff --git a/arch/arm/dts/meson-g12b-w400.dtsi b/arch/arm/dts/meson-g12b-w400.dtsi
index 2802ddbb83..feb0885047 100644
--- a/arch/arm/dts/meson-g12b-w400.dtsi
+++ b/arch/arm/dts/meson-g12b-w400.dtsi
@@ -264,7 +264,7 @@
max-speed = <1000>;
reset-assert-us = <10000>;
- reset-deassert-us = <30000>;
+ reset-deassert-us = <80000>;
reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
interrupt-parent = <&gpio_intc>;
diff --git a/arch/arm/dts/meson-g12b.dtsi b/arch/arm/dts/meson-g12b.dtsi
index 9b8548e5f6..ee8fcae9f9 100644
--- a/arch/arm/dts/meson-g12b.dtsi
+++ b/arch/arm/dts/meson-g12b.dtsi
@@ -135,3 +135,7 @@
};
};
};
+
+&mali {
+ dma-coherent;
+};
diff --git a/arch/arm/dts/meson-gx-libretech-pc.dtsi b/arch/arm/dts/meson-gx-libretech-pc.dtsi
index c2480bab8d..2d7032f41e 100644
--- a/arch/arm/dts/meson-gx-libretech-pc.dtsi
+++ b/arch/arm/dts/meson-gx-libretech-pc.dtsi
@@ -186,7 +186,7 @@
sound {
compatible = "amlogic,gx-sound-card";
- model = "GXL-LIBRETECH-S9XX-PC";
+ model = "LIBRETECH-PC";
audio-aux-devs = <&dio2133>;
audio-widgets = "Speaker", "7J4-14 LEFT",
"Speaker", "7J4-11 RIGHT";
diff --git a/arch/arm/dts/meson-gx-p23x-q20x.dtsi b/arch/arm/dts/meson-gx-p23x-q20x.dtsi
index 6b57e15aad..dafc841f7c 100644
--- a/arch/arm/dts/meson-gx-p23x-q20x.dtsi
+++ b/arch/arm/dts/meson-gx-p23x-q20x.dtsi
@@ -121,7 +121,7 @@
sound {
compatible = "amlogic,gx-sound-card";
- model = "GX-P230-Q200";
+ model = "P230-Q200";
audio-aux-devs = <&dio2133>;
audio-widgets = "Line", "Lineout";
audio-routing = "AU2 INL", "ACODEC LOLP",
diff --git a/arch/arm/dts/meson-gx.dtsi b/arch/arm/dts/meson-gx.dtsi
index 0edd137151..6b457b2c30 100644
--- a/arch/arm/dts/meson-gx.dtsi
+++ b/arch/arm/dts/meson-gx.dtsi
@@ -20,6 +20,12 @@
#address-cells = <2>;
#size-cells = <2>;
+ aliases {
+ mmc0 = &sd_emmc_b; /* SD card */
+ mmc1 = &sd_emmc_c; /* eMMC */
+ mmc2 = &sd_emmc_a; /* SDIO */
+ };
+
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
@@ -295,6 +301,7 @@
reg = <0x0 0x84c0 0x0 0x18>;
interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
status = "disabled";
+ fifo-size = <128>;
};
uart_B: serial@84dc {
diff --git a/arch/arm/dts/meson-gxbb-nanopi-k2.dts b/arch/arm/dts/meson-gxbb-nanopi-k2.dts
index 7be3e35409..7273eed529 100644
--- a/arch/arm/dts/meson-gxbb-nanopi-k2.dts
+++ b/arch/arm/dts/meson-gxbb-nanopi-k2.dts
@@ -7,6 +7,7 @@
#include "meson-gxbb.dtsi"
#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/sound/meson-aiu.h>
/ {
compatible = "friendlyarm,nanopi-k2", "amlogic,meson-gxbb";
@@ -130,6 +131,45 @@
};
};
};
+
+ sound {
+ compatible = "amlogic,gx-sound-card";
+ model = "NANOPI-K2";
+ assigned-clocks = <&clkc CLKID_MPLL0>,
+ <&clkc CLKID_MPLL1>,
+ <&clkc CLKID_MPLL2>;
+ assigned-clock-parents = <0>, <0>, <0>;
+ assigned-clock-rates = <294912000>,
+ <270950400>,
+ <393216000>;
+ status = "okay";
+
+ dai-link-0 {
+ sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
+ };
+
+ dai-link-1 {
+ sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
+ dai-format = "i2s";
+ mclk-fs = <256>;
+
+ codec-0 {
+ sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
+ };
+ };
+
+ dai-link-2 {
+ sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
+
+ codec-0 {
+ sound-dai = <&hdmi_tx>;
+ };
+ };
+ };
+};
+
+&aiu {
+ status = "okay";
};
&cec_AO {
@@ -165,7 +205,7 @@
reg = <0>;
reset-assert-us = <10000>;
- reset-deassert-us = <30000>;
+ reset-deassert-us = <80000>;
reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>;
diff --git a/arch/arm/dts/meson-gxbb-odroidc2.dts b/arch/arm/dts/meson-gxbb-odroidc2.dts
index 70fcfb7b06..201596247f 100644
--- a/arch/arm/dts/meson-gxbb-odroidc2.dts
+++ b/arch/arm/dts/meson-gxbb-odroidc2.dts
@@ -9,6 +9,7 @@
#include "meson-gxbb.dtsi"
#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/sound/meson-aiu.h>
/ {
compatible = "hardkernel,odroid-c2", "amlogic,meson-gxbb";
@@ -172,6 +173,45 @@
};
};
};
+
+ sound {
+ compatible = "amlogic,gx-sound-card";
+ model = "ODROID-C2";
+ assigned-clocks = <&clkc CLKID_MPLL0>,
+ <&clkc CLKID_MPLL1>,
+ <&clkc CLKID_MPLL2>;
+ assigned-clock-parents = <0>, <0>, <0>;
+ assigned-clock-rates = <294912000>,
+ <270950400>,
+ <393216000>;
+ status = "okay";
+
+ dai-link-0 {
+ sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
+ };
+
+ dai-link-1 {
+ sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
+ dai-format = "i2s";
+ mclk-fs = <256>;
+
+ codec-0 {
+ sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
+ };
+ };
+
+ dai-link-2 {
+ sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
+
+ codec-0 {
+ sound-dai = <&hdmi_tx>;
+ };
+ };
+ };
+};
+
+&aiu {
+ status = "okay";
};
&cec_AO {
@@ -200,7 +240,7 @@
reg = <0>;
reset-assert-us = <10000>;
- reset-deassert-us = <30000>;
+ reset-deassert-us = <80000>;
reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>;
@@ -217,7 +257,7 @@
* 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 {
+ hog-0 {
gpio-hog;
gpios = <GPIOAO_4 GPIO_ACTIVE_HIGH>;
output-high;
diff --git a/arch/arm/dts/meson-gxl-s805x-libretech-ac.dts b/arch/arm/dts/meson-gxl-s805x-libretech-ac.dts
index 9e43f4dca9..2d769203f6 100644
--- a/arch/arm/dts/meson-gxl-s805x-libretech-ac.dts
+++ b/arch/arm/dts/meson-gxl-s805x-libretech-ac.dts
@@ -118,7 +118,7 @@
sound {
compatible = "amlogic,gx-sound-card";
- model = "GXL-LIBRETECH-S805X-AC";
+ model = "LIBRETECH-AC";
audio-widgets = "Speaker", "9J5-3 LEFT",
"Speaker", "9J5-2 RIGHT";
audio-routing = "9J5-3 LEFT", "ACODEC LOLN",
diff --git a/arch/arm/dts/meson-gxl-s905x-khadas-vim.dts b/arch/arm/dts/meson-gxl-s905x-khadas-vim.dts
index 8bcdffdf55..60feac0179 100644
--- a/arch/arm/dts/meson-gxl-s905x-khadas-vim.dts
+++ b/arch/arm/dts/meson-gxl-s905x-khadas-vim.dts
@@ -5,9 +5,9 @@
/dts-v1/;
-#include <dt-bindings/input/input.h>
-
#include "meson-gxl-s905x-p212.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/sound/meson-aiu.h>
/ {
compatible = "khadas,vim", "amlogic,s905x", "amlogic,meson-gxl";
@@ -42,10 +42,10 @@
};
};
- pwmleds {
+ led-controller {
compatible = "pwm-leds";
- power {
+ led-1 {
label = "vim:red:power";
pwms = <&pwm_AO_ab 1 7812500 0>;
max-brightness = <255>;
@@ -63,6 +63,45 @@
};
};
};
+
+ sound {
+ compatible = "amlogic,gx-sound-card";
+ model = "KHADAS-VIM";
+ assigned-clocks = <&clkc CLKID_MPLL0>,
+ <&clkc CLKID_MPLL1>,
+ <&clkc CLKID_MPLL2>;
+ assigned-clock-parents = <0>, <0>, <0>;
+ assigned-clock-rates = <294912000>,
+ <270950400>,
+ <393216000>;
+ status = "okay";
+
+ dai-link-0 {
+ sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
+ };
+
+ dai-link-1 {
+ sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
+ dai-format = "i2s";
+ mclk-fs = <256>;
+
+ codec-0 {
+ sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
+ };
+ };
+
+ dai-link-2 {
+ sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
+
+ codec-0 {
+ sound-dai = <&hdmi_tx>;
+ };
+ };
+ };
+};
+
+&aiu {
+ status = "okay";
};
&cec_AO {
@@ -97,8 +136,7 @@
pinctrl-names = "default";
rtc: rtc@51 {
- /* has to be enabled manually when a battery is connected: */
- status = "disabled";
+ status = "okay";
compatible = "haoyu,hym8563";
reg = <0x51>;
#clock-cells = <0>;
diff --git a/arch/arm/dts/meson-gxl-s905x-libretech-cc-v2.dts b/arch/arm/dts/meson-gxl-s905x-libretech-cc-v2.dts
index 675eaa8796..93d8f8aff7 100644
--- a/arch/arm/dts/meson-gxl-s905x-libretech-cc-v2.dts
+++ b/arch/arm/dts/meson-gxl-s905x-libretech-cc-v2.dts
@@ -84,7 +84,6 @@
regulator-always-on;
};
-
vcck: regulator-vcck {
compatible = "regulator-fixed";
regulator-name = "VCCK";
@@ -124,7 +123,6 @@
regulator-always-on;
};
-
vddio_card: regulator-vddio-card {
compatible = "regulator-gpio";
regulator-name = "VDDIO_CARD";
@@ -161,7 +159,7 @@
sound {
compatible = "amlogic,gx-sound-card";
- model = "GXL-LIBRETECH-S905X-CC-V2";
+ model = "LIBRETECH-CC-V2";
assigned-clocks = <&clkc CLKID_MPLL0>,
<&clkc CLKID_MPLL1>,
<&clkc CLKID_MPLL2>;
@@ -195,7 +193,6 @@
};
};
-
&aiu {
status = "okay";
};
@@ -207,7 +204,6 @@
hdmi-phandle = <&hdmi_tx>;
};
-
ðmac {
status = "okay";
};
diff --git a/arch/arm/dts/meson-gxl-s905x-libretech-cc.dts b/arch/arm/dts/meson-gxl-s905x-libretech-cc.dts
index 5ae7bb6209..82bfabfbd3 100644
--- a/arch/arm/dts/meson-gxl-s905x-libretech-cc.dts
+++ b/arch/arm/dts/meson-gxl-s905x-libretech-cc.dts
@@ -135,7 +135,7 @@
sound {
compatible = "amlogic,gx-sound-card";
- model = "GXL-LIBRETECH-S905X-CC";
+ model = "LIBRETECH-CC";
audio-aux-devs = <&dio2133>;
audio-widgets = "Line", "Lineout";
audio-routing = "AU2 INL", "ACODEC LOLN",
diff --git a/arch/arm/dts/meson-gxm-khadas-vim2.dts b/arch/arm/dts/meson-gxm-khadas-vim2.dts
index bff8ec2c1c..18a4b7a6c5 100644
--- a/arch/arm/dts/meson-gxm-khadas-vim2.dts
+++ b/arch/arm/dts/meson-gxm-khadas-vim2.dts
@@ -7,9 +7,9 @@
/dts-v1/;
-#include <dt-bindings/input/input.h>
-
#include "meson-gxm.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/sound/meson-aiu.h>
/ {
compatible = "khadas,vim2", "amlogic,s912", "amlogic,meson-gxm";
@@ -81,10 +81,10 @@
};
};
- pwmleds {
+ led-controller {
compatible = "pwm-leds";
- power {
+ led-1 {
label = "vim:red:power";
pwms = <&pwm_AO_ab 1 7812500 0>;
max-brightness = <255>;
@@ -145,6 +145,45 @@
clock-frequency = <32768>;
pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
};
+
+ sound {
+ compatible = "amlogic,gx-sound-card";
+ model = "KHADAS-VIM2";
+ assigned-clocks = <&clkc CLKID_MPLL0>,
+ <&clkc CLKID_MPLL1>,
+ <&clkc CLKID_MPLL2>;
+ assigned-clock-parents = <0>, <0>, <0>;
+ assigned-clock-rates = <294912000>,
+ <270950400>,
+ <393216000>;
+ status = "okay";
+
+ dai-link-0 {
+ sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
+ };
+
+ dai-link-1 {
+ sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
+ dai-format = "i2s";
+ mclk-fs = <256>;
+
+ codec-0 {
+ sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
+ };
+ };
+
+ dai-link-2 {
+ sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
+
+ codec-0 {
+ sound-dai = <&hdmi_tx>;
+ };
+ };
+ };
+};
+
+&aiu {
+ status = "okay";
};
&cec_AO {
@@ -154,7 +193,6 @@
hdmi-phandle = <&hdmi_tx>;
};
-
&cpu_cooling_maps {
map0 {
cooling-device = <&gpio_fan THERMAL_NO_LIMIT 1>;
@@ -194,7 +232,7 @@
reg = <0>;
reset-assert-us = <10000>;
- reset-deassert-us = <30000>;
+ reset-deassert-us = <80000>;
reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>;
@@ -228,8 +266,7 @@
pinctrl-names = "default";
rtc: rtc@51 {
- /* has to be enabled manually when a battery is connected: */
- status = "disabled";
+ status = "okay";
compatible = "haoyu,hym8563";
reg = <0x51>;
#clock-cells = <0>;
@@ -341,7 +378,7 @@
#size-cells = <1>;
compatible = "winbond,w25q16", "jedec,spi-nor";
reg = <0>;
- spi-max-frequency = <3000000>;
+ spi-max-frequency = <104000000>;
};
};
diff --git a/arch/arm/dts/meson-gxm-wetek-core2.dts b/arch/arm/dts/meson-gxm-wetek-core2.dts
index ec794c134c..1e7f77f9b5 100644
--- a/arch/arm/dts/meson-gxm-wetek-core2.dts
+++ b/arch/arm/dts/meson-gxm-wetek-core2.dts
@@ -22,7 +22,7 @@
leds {
compatible = "gpio-leds";
- blue {
+ led-blue {
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_STATUS;
gpios = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
diff --git a/arch/arm/dts/meson-gxm.dtsi b/arch/arm/dts/meson-gxm.dtsi
index fe41451122..411cc312fc 100644
--- a/arch/arm/dts/meson-gxm.dtsi
+++ b/arch/arm/dts/meson-gxm.dtsi
@@ -42,11 +42,28 @@
};
};
+ cpu0: cpu@0 {
+ capacity-dmips-mhz = <1024>;
+ };
+
+ cpu1: cpu@1 {
+ capacity-dmips-mhz = <1024>;
+ };
+
+ cpu2: cpu@2 {
+ capacity-dmips-mhz = <1024>;
+ };
+
+ cpu3: cpu@3 {
+ capacity-dmips-mhz = <1024>;
+ };
+
cpu4: cpu@100 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x0 0x100>;
enable-method = "psci";
+ capacity-dmips-mhz = <1024>;
next-level-cache = <&l2>;
clocks = <&scpi_dvfs 1>;
#cooling-cells = <2>;
@@ -57,6 +74,7 @@
compatible = "arm,cortex-a53";
reg = <0x0 0x101>;
enable-method = "psci";
+ capacity-dmips-mhz = <1024>;
next-level-cache = <&l2>;
clocks = <&scpi_dvfs 1>;
#cooling-cells = <2>;
@@ -67,6 +85,7 @@
compatible = "arm,cortex-a53";
reg = <0x0 0x102>;
enable-method = "psci";
+ capacity-dmips-mhz = <1024>;
next-level-cache = <&l2>;
clocks = <&scpi_dvfs 1>;
#cooling-cells = <2>;
@@ -77,6 +96,7 @@
compatible = "arm,cortex-a53";
reg = <0x0 0x103>;
enable-method = "psci";
+ capacity-dmips-mhz = <1024>;
next-level-cache = <&l2>;
clocks = <&scpi_dvfs 1>;
#cooling-cells = <2>;
diff --git a/arch/arm/dts/meson-khadas-vim3.dtsi b/arch/arm/dts/meson-khadas-vim3.dtsi
index 7b46555ac5..3cf4ecb6d5 100644
--- a/arch/arm/dts/meson-khadas-vim3.dtsi
+++ b/arch/arm/dts/meson-khadas-vim3.dtsi
@@ -6,6 +6,7 @@
*/
#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-tohdmitx.h>
@@ -13,6 +14,8 @@
aliases {
serial0 = &uart_AO;
ethernet0 = ðmac;
+ rtc0 = &rtc;
+ rtc1 = &vrtc;
};
chosen {
@@ -41,13 +44,15 @@
compatible = "gpio-leds";
led-white {
- label = "vim3:white:sys";
+ color = <LED_COLOR_ID_WHITE>;
+ function = LED_FUNCTION_STATUS;
gpios = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
};
led-red {
- label = "vim3:red";
+ color = <LED_COLOR_ID_RED>;
+ function = LED_FUNCTION_STATUS;
gpios = <&gpio_expander 5 GPIO_ACTIVE_HIGH>;
};
};
@@ -165,12 +170,17 @@
sound {
compatible = "amlogic,axg-sound-card";
- model = "G12B-KHADAS-VIM3";
- audio-aux-devs = <&tdmout_a>;
+ model = "KHADAS-VIM3";
+ audio-aux-devs = <&tdmin_a>, <&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";
+ "TDM_A Playback", "TDMOUT_A OUT",
+ "TDMIN_A IN 0", "TDM_A Capture",
+ "TDMIN_A IN 3", "TDM_A Loopback",
+ "TODDR_A IN 0", "TDMIN_A OUT",
+ "TODDR_B IN 0", "TDMIN_A OUT",
+ "TODDR_C IN 0", "TDMIN_A OUT";
assigned-clocks = <&clkc CLKID_MPLL2>,
<&clkc CLKID_MPLL0>,
@@ -193,8 +203,20 @@
sound-dai = <&frddr_c>;
};
- /* 8ch hdmi interface */
dai-link-3 {
+ sound-dai = <&toddr_a>;
+ };
+
+ dai-link-4 {
+ sound-dai = <&toddr_b>;
+ };
+
+ dai-link-5 {
+ sound-dai = <&toddr_c>;
+ };
+
+ /* 8ch hdmi interface */
+ dai-link-6 {
sound-dai = <&tdmif_a>;
dai-format = "i2s";
dai-tdm-slot-tx-mask-0 = <1 1>;
@@ -209,7 +231,7 @@
};
/* hdmi glue */
- dai-link-4 {
+ dai-link-7 {
sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
codec {
@@ -278,12 +300,12 @@
};
ðmac {
- pinctrl-0 = <ð_pins>, <ð_rgmii_pins>;
- pinctrl-names = "default";
- status = "okay";
- phy-mode = "rgmii";
- phy-handle = <&external_phy>;
- amlogic,tx-delay-ns = <2>;
+ pinctrl-0 = <ð_pins>, <ð_rgmii_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy>;
+ amlogic,tx-delay-ns = <2>;
};
&frddr_a {
@@ -330,7 +352,7 @@
#gpio-cells = <2>;
};
- rtc@51 {
+ rtc: rtc@51 {
compatible = "haoyu,hym8563";
reg = <0x51>;
#clock-cells = <0>;
@@ -349,9 +371,9 @@
};
&pwm_ef {
- status = "okay";
- pinctrl-0 = <&pwm_e_pins>;
- pinctrl-names = "default";
+ status = "okay";
+ pinctrl-0 = <&pwm_e_pins>;
+ pinctrl-names = "default";
};
&saradc {
@@ -445,15 +467,30 @@
};
};
-
&tdmif_a {
status = "okay";
};
+&tdmin_a {
+ status = "okay";
+};
+
&tdmout_a {
status = "okay";
};
+&toddr_a {
+ status = "okay";
+};
+
+&toddr_b {
+ status = "okay";
+};
+
+&toddr_c {
+ status = "okay";
+};
+
&tohdmitx {
status = "okay";
};
diff --git a/arch/arm/dts/meson-sm1-bananapi-m5.dts b/arch/arm/dts/meson-sm1-bananapi-m5.dts
new file mode 100644
index 0000000000..effaa138b5
--- /dev/null
+++ b/arch/arm/dts/meson-sm1-bananapi-m5.dts
@@ -0,0 +1,646 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 BayLibre SAS
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ */
+
+/dts-v1/;
+
+#include "meson-sm1.dtsi"
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/input/linux-event-codes.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 = "bananapi,bpi-m5", "amlogic,sm1";
+ model = "Banana Pi BPI-M5";
+
+ adc_keys {
+ compatible = "adc-keys";
+ io-channels = <&saradc 2>;
+ io-channel-names = "buttons";
+ keyup-threshold-microvolt = <1800000>;
+
+ key {
+ label = "SW3";
+ linux,code = <BTN_3>;
+ press-threshold-microvolt = <1700000>;
+ };
+ };
+
+ aliases {
+ serial0 = &uart_AO;
+ ethernet0 = ðmac;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ /* TOFIX: handle CVBS_DET on SARADC channel 0 */
+ cvbs-connector {
+ compatible = "composite-video-connector";
+
+ port {
+ cvbs_connector_in: endpoint {
+ remote-endpoint = <&cvbs_vdac_out>;
+ };
+ };
+ };
+
+ emmc_pwrseq: emmc-pwrseq {
+ compatible = "mmc-pwrseq-emmc";
+ reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ key {
+ label = "SW1";
+ linux,code = <BTN_1>;
+ gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>;
+ interrupt-parent = <&gpio_intc>;
+ interrupts = <3 IRQ_TYPE_EDGE_BOTH>;
+ };
+ };
+
+ hdmi-connector {
+ compatible = "hdmi-connector";
+ type = "a";
+
+ port {
+ hdmi_connector_in: endpoint {
+ remote-endpoint = <&hdmi_tx_tmds_out>;
+ };
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ green {
+ color = <LED_COLOR_ID_GREEN>;
+ function = LED_FUNCTION_STATUS;
+ gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
+ };
+
+ blue {
+ color = <LED_COLOR_ID_BLUE>;
+ function = LED_FUNCTION_STATUS;
+ gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_LOW>;
+ linux,default-trigger = "heartbeat";
+ };
+ };
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x0 0x0 0x40000000>;
+ };
+
+ emmc_1v8: regulator-emmc_1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "EMMC_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ vin-supply = <&vddao_3v3>;
+ regulator-always-on;
+ };
+
+ dc_in: regulator-dc_in {
+ compatible = "regulator-fixed";
+ regulator-name = "DC_IN";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-always-on;
+ };
+
+ vddio_c: regulator-vddio_c {
+ compatible = "regulator-gpio";
+ regulator-name = "VDDIO_C";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+
+ enable-gpio = <&gpio GPIOE_2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ regulator-always-on;
+
+ gpios = <&gpio_ao GPIOAO_6 GPIO_OPEN_DRAIN>;
+ gpios-states = <1>;
+
+ states = <1800000 0>,
+ <3300000 1>;
+ };
+
+ tflash_vdd: regulator-tflash_vdd {
+ compatible = "regulator-fixed";
+ regulator-name = "TFLASH_VDD";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&dc_in>;
+ gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ 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 = <&dc_in>;
+ regulator-always-on;
+ };
+
+ vddcpu: regulator-vddcpu {
+ /*
+ * SY8120B1ABC DC/DC Regulator.
+ */
+ compatible = "pwm-regulator";
+
+ regulator-name = "VDDCPU";
+ regulator-min-microvolt = <690000>;
+ regulator-max-microvolt = <1050000>;
+
+ vin-supply = <&dc_in>;
+
+ pwms = <&pwm_AO_cd 1 1250 0>;
+ pwm-dutycycle-range = <100 0>;
+
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ /* USB Hub Power Enable */
+ vl_pwr_en: regulator-vl_pwr_en {
+ compatible = "regulator-fixed";
+ regulator-name = "VL_PWR_EN";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&dc_in>;
+
+ gpio = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ sound {
+ compatible = "amlogic,axg-sound-card";
+ model = "BPI-M5";
+ audio-widgets = "Line", "Lineout";
+ audio-aux-devs = <&tdmout_b>, <&tdmout_c>,
+ <&tdmin_a>, <&tdmin_b>, <&tdmin_c>;
+ 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",
+ "TDMOUT_C IN 0", "FRDDR_A OUT 2",
+ "TDMOUT_C IN 1", "FRDDR_B OUT 2",
+ "TDMOUT_C IN 2", "FRDDR_C OUT 2",
+ "TDM_C Playback", "TDMOUT_C OUT",
+ "TDMIN_A IN 4", "TDM_B Loopback",
+ "TDMIN_B IN 4", "TDM_B Loopback",
+ "TDMIN_C IN 4", "TDM_B Loopback",
+ "TDMIN_A IN 5", "TDM_C Loopback",
+ "TDMIN_B IN 5", "TDM_C Loopback",
+ "TDMIN_C IN 5", "TDM_C Loopback",
+ "TODDR_A IN 0", "TDMIN_A OUT",
+ "TODDR_B IN 0", "TDMIN_A OUT",
+ "TODDR_C IN 0", "TDMIN_A OUT",
+ "TODDR_A IN 1", "TDMIN_B OUT",
+ "TODDR_B IN 1", "TDMIN_B OUT",
+ "TODDR_C IN 1", "TDMIN_B OUT",
+ "TODDR_A IN 2", "TDMIN_C OUT",
+ "TODDR_B IN 2", "TDMIN_C OUT",
+ "TODDR_C IN 2", "TDMIN_C OUT",
+ "Lineout", "ACODEC LOLP",
+ "Lineout", "ACODEC LORP";
+
+ assigned-clocks = <&clkc CLKID_MPLL2>,
+ <&clkc CLKID_MPLL0>,
+ <&clkc CLKID_MPLL1>;
+ assigned-clock-parents = <0>, <0>, <0>;
+ assigned-clock-rates = <294912000>,
+ <270950400>,
+ <393216000>;
+ status = "okay";
+
+ dai-link-0 {
+ sound-dai = <&frddr_a>;
+ };
+
+ dai-link-1 {
+ sound-dai = <&frddr_b>;
+ };
+
+ dai-link-2 {
+ sound-dai = <&frddr_c>;
+ };
+
+ dai-link-3 {
+ sound-dai = <&toddr_a>;
+ };
+
+ dai-link-4 {
+ sound-dai = <&toddr_b>;
+ };
+
+ dai-link-5 {
+ sound-dai = <&toddr_c>;
+ };
+
+ /* 8ch hdmi interface */
+ dai-link-6 {
+ sound-dai = <&tdmif_b>;
+ dai-format = "i2s";
+ dai-tdm-slot-tx-mask-0 = <1 1>;
+ dai-tdm-slot-tx-mask-1 = <1 1>;
+ dai-tdm-slot-tx-mask-2 = <1 1>;
+ dai-tdm-slot-tx-mask-3 = <1 1>;
+ mclk-fs = <256>;
+
+ codec-0 {
+ sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
+ };
+
+ codec-1 {
+ sound-dai = <&toacodec TOACODEC_IN_B>;
+ };
+ };
+
+ /* i2s jack output interface */
+ dai-link-7 {
+ sound-dai = <&tdmif_c>;
+ dai-format = "i2s";
+ dai-tdm-slot-tx-mask-0 = <1 1>;
+ mclk-fs = <256>;
+
+ codec-0 {
+ sound-dai = <&tohdmitx TOHDMITX_I2S_IN_C>;
+ };
+
+ codec-1 {
+ sound-dai = <&toacodec TOACODEC_IN_C>;
+ };
+ };
+
+ /* hdmi glue */
+ dai-link-8 {
+ sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
+
+ codec {
+ sound-dai = <&hdmi_tx>;
+ };
+ };
+
+ /* acodec glue */
+ dai-link-9 {
+ sound-dai = <&toacodec TOACODEC_OUT>;
+
+ codec {
+ sound-dai = <&acodec>;
+ };
+ };
+ };
+};
+
+&acodec {
+ AVDD-supply = <&vddao_1v8>;
+ status = "okay";
+};
+
+&arb {
+ status = "okay";
+};
+
+&clkc_audio {
+ status = "okay";
+};
+
+&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>;
+};
+
+&cvbs_vdac_port {
+ cvbs_vdac_out: endpoint {
+ remote-endpoint = <&cvbs_connector_in>;
+ };
+};
+
+&ext_mdio {
+ external_phy: ethernet-phy@0 {
+ /* Realtek RTL8211F (0x001cc916) */
+ reg = <0>;
+ max-speed = <1000>;
+
+ interrupt-parent = <&gpio_intc>;
+ /* MAC_INTR on GPIOZ_14 */
+ interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
+ };
+};
+
+ðmac {
+ pinctrl-0 = <ð_pins>, <ð_rgmii_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+ phy-mode = "rgmii-txid";
+ phy-handle = <&external_phy>;
+};
+
+&frddr_a {
+ status = "okay";
+};
+
+&frddr_b {
+ status = "okay";
+};
+
+&frddr_c {
+ status = "okay";
+};
+
+&gpio {
+ gpio-line-names =
+ /* GPIOZ */
+ "ETH_MDIO", /* GPIOZ_0 */
+ "ETH_MDC", /* GPIOZ_1 */
+ "ETH_RXCLK", /* GPIOZ_2 */
+ "ETH_RX_DV", /* GPIOZ_3 */
+ "ETH_RXD0", /* GPIOZ_4 */
+ "ETH_RXD1", /* GPIOZ_5 */
+ "ETH_RXD2", /* GPIOZ_6 */
+ "ETH_RXD3", /* GPIOZ_7 */
+ "ETH_TXCLK", /* GPIOZ_8 */
+ "ETH_TXEN", /* GPIOZ_9 */
+ "ETH_TXD0", /* GPIOZ_10 */
+ "ETH_TXD1", /* GPIOZ_11 */
+ "ETH_TXD2", /* GPIOZ_12 */
+ "ETH_TXD3", /* GPIOZ_13 */
+ "ETH_INTR", /* GPIOZ_14 */
+ "ETH_NRST", /* GPIOZ_15 */
+ /* GPIOH */
+ "HDMI_SDA", /* GPIOH_0 */
+ "HDMI_SCL", /* GPIOH_1 */
+ "HDMI_HPD", /* GPIOH_2 */
+ "HDMI_CEC", /* GPIOH_3 */
+ "VL-RST_N", /* GPIOH_4 */
+ "CON1-P36", /* GPIOH_5 */
+ "VL-PWREN", /* GPIOH_6 */
+ "WiFi_3V3_1V8", /* GPIOH_7 */
+ "TFLASH_VDD_EN", /* GPIOH_8 */
+ /* BOOT */
+ "eMMC_D0", /* BOOT_0 */
+ "eMMC_D1", /* BOOT_1 */
+ "eMMC_D2", /* BOOT_2 */
+ "eMMC_D3", /* BOOT_3 */
+ "eMMC_D4", /* BOOT_4 */
+ "eMMC_D5", /* BOOT_5 */
+ "eMMC_D6", /* BOOT_6 */
+ "eMMC_D7", /* BOOT_7 */
+ "eMMC_CLK", /* BOOT_8 */
+ "",
+ "eMMC_CMD", /* BOOT_10 */
+ "",
+ "eMMC_RST#", /* BOOT_12 */
+ "eMMC_DS", /* BOOT_13 */
+ /* GPIOC */
+ "SD_D0_B", /* GPIOC_0 */
+ "SD_D1_B", /* GPIOC_1 */
+ "SD_D2_B", /* GPIOC_2 */
+ "SD_D3_B", /* GPIOC_3 */
+ "SD_CLK_B", /* GPIOC_4 */
+ "SD_CMD_B", /* GPIOC_5 */
+ "CARD_EN_DET", /* GPIOC_6 */
+ "",
+ /* GPIOA */
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "",
+ "CON1-P27", /* GPIOA_14 */
+ "CON1-P28", /* GPIOA_15 */
+ /* GPIOX */
+ "CON1-P16", /* GPIOX_0 */
+ "CON1-P18", /* GPIOX_1 */
+ "CON1-P22", /* GPIOX_2 */
+ "CON1-P11", /* GPIOX_3 */
+ "CON1-P13", /* GPIOX_4 */
+ "CON1-P07", /* GPIOX_5 */
+ "CON1-P33", /* GPIOX_6 */
+ "CON1-P15", /* GPIOX_7 */
+ "CON1-P19", /* GPIOX_8 */
+ "CON1-P21", /* GPIOX_9 */
+ "CON1-P24", /* GPIOX_10 */
+ "CON1-P23", /* GPIOX_11 */
+ "CON1-P08", /* GPIOX_12 */
+ "CON1-P10", /* GPIOX_13 */
+ "CON1-P29", /* GPIOX_14 */
+ "CON1-P31", /* GPIOX_15 */
+ "CON1-P26", /* GPIOX_16 */
+ "CON1-P03", /* GPIOX_17 */
+ "CON1-P05", /* GPIOX_18 */
+ "CON1-P32"; /* GPIOX_19 */
+
+ /*
+ * WARNING: The USB Hub on the BPI-M5 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 */
+ "DEBUG TX", /* GPIOAO_0 */
+ "DEBUG RX", /* GPIOAO_1 */
+ "SYS_LED2", /* GPIOAO_2 */
+ "UPDATE_KEY", /* GPIOAO_3 */
+ "CON1-P40", /* GPIOAO_4 */
+ "IR_IN", /* GPIOAO_5 */
+ "TF_3V3N_1V8_EN", /* GPIOAO_6 */
+ "CON1-P35", /* GPIOAO_7 */
+ "CON1-P12", /* GPIOAO_8 */
+ "CON1-P37", /* GPIOAO_9 */
+ "CON1-P38", /* GPIOAO_10 */
+ "SYS_LED", /* GPIOAO_11 */
+ /* GPIOE */
+ "VDDEE_PWM", /* GPIOE_0 */
+ "VDDCPU_PWM", /* GPIOE_1 */
+ "TF_PWR_EN"; /* GPIOE_2 */
+};
+
+&hdmi_tx {
+ status = "okay";
+ pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
+ pinctrl-names = "default";
+ hdmi-supply = <&dc_in>;
+};
+
+&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";
+};
+
+&pwm_AO_cd {
+ pinctrl-0 = <&pwm_ao_d_e_pins>;
+ pinctrl-names = "default";
+ clocks = <&xtal>;
+ clock-names = "clkin1";
+ status = "okay";
+};
+
+&saradc {
+ status = "okay";
+ vref-supply = <&vddao_1v8>;
+};
+
+/* 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;
+
+ /* TOFIX: SD card is barely usable in SDR modes */
+
+ cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
+ vmmc-supply = <&tflash_vdd>;
+ 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 = <&vddao_3v3>;
+ vqmmc-supply = <&emmc_1v8>;
+};
+
+&tdmif_b {
+ status = "okay";
+};
+
+&tdmif_c {
+ status = "okay";
+};
+
+&tdmin_a {
+ status = "okay";
+};
+
+&tdmin_b {
+ status = "okay";
+};
+
+&tdmin_c {
+ status = "okay";
+};
+
+&tdmout_b {
+ status = "okay";
+};
+
+&tdmout_c {
+ status = "okay";
+};
+
+&toacodec {
+ status = "okay";
+};
+
+&tohdmitx {
+ status = "okay";
+};
+
+&toddr_a {
+ status = "okay";
+};
+
+&toddr_b {
+ status = "okay";
+};
+
+&toddr_c {
+ status = "okay";
+};
+
+&uart_AO {
+ status = "okay";
+ pinctrl-0 = <&uart_ao_a_pins>;
+ pinctrl-names = "default";
+};
+
+&usb {
+ status = "okay";
+};
+
+&usb2_phy0 {
+ phy-supply = <&dc_in>;
+};
+
+&usb2_phy1 {
+ /* Enable the hub which is connected to this port */
+ phy-supply = <&vl_pwr_en>;
+};
diff --git a/arch/arm/dts/meson-sm1-khadas-vim3l.dts b/arch/arm/dts/meson-sm1-khadas-vim3l.dts
index 4b517ca720..f2c0981435 100644
--- a/arch/arm/dts/meson-sm1-khadas-vim3l.dts
+++ b/arch/arm/dts/meson-sm1-khadas-vim3l.dts
@@ -32,6 +32,19 @@
regulator-boot-on;
regulator-always-on;
};
+
+ sound {
+ model = "G12B-KHADAS-VIM3L";
+ 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",
+ "TDMIN_A IN 0", "TDM_A Capture",
+ "TDMIN_A IN 13", "TDM_A Loopback",
+ "TODDR_A IN 0", "TDMIN_A OUT",
+ "TODDR_B IN 0", "TDMIN_A OUT",
+ "TODDR_C IN 0", "TDMIN_A OUT";
+ };
};
&cpu0 {
@@ -89,13 +102,12 @@
status = "okay";
};
-&sd_emmc_a {
- sd-uhs-sdr50;
-};
-
&usb {
phys = <&usb2_phy0>, <&usb2_phy1>;
phy-names = "usb2-phy0", "usb2-phy1";
};
*/
+&sd_emmc_a {
+ sd-uhs-sdr50;
+};
diff --git a/arch/arm/dts/meson-sm1-odroid-c4.dts b/arch/arm/dts/meson-sm1-odroid-c4.dts
index cf5a98f0e4..8c30ce6368 100644
--- a/arch/arm/dts/meson-sm1-odroid-c4.dts
+++ b/arch/arm/dts/meson-sm1-odroid-c4.dts
@@ -5,34 +5,12 @@
/dts-v1/;
-#include "meson-sm1.dtsi"
-#include <dt-bindings/gpio/meson-g12a-gpio.h>
-#include <dt-bindings/leds/common.h>
-#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
+#include "meson-sm1-odroid.dtsi"
/ {
compatible = "hardkernel,odroid-c4", "amlogic,sm1";
model = "Hardkernel ODROID-C4";
- aliases {
- serial0 = &uart_AO;
- ethernet0 = ðmac;
- };
-
- chosen {
- stdout-path = "serial0:115200n8";
- };
-
- 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";
@@ -45,324 +23,19 @@
};
};
- 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>;
- };
- };
- };
-
sound {
- compatible = "amlogic,axg-sound-card";
- model = "SM1-ODROID-C4";
- 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";
-
- assigned-clocks = <&clkc CLKID_MPLL2>,
- <&clkc CLKID_MPLL0>,
- <&clkc CLKID_MPLL1>;
- assigned-clock-parents = <0>, <0>, <0>;
- assigned-clock-rates = <294912000>,
- <270950400>,
- <393216000>;
- status = "okay";
-
- dai-link-0 {
- sound-dai = <&frddr_a>;
- };
-
- dai-link-1 {
- sound-dai = <&frddr_b>;
- };
-
- dai-link-2 {
- sound-dai = <&frddr_c>;
- };
-
- /* 8ch hdmi interface */
- dai-link-3 {
- sound-dai = <&tdmif_b>;
- dai-format = "i2s";
- dai-tdm-slot-tx-mask-0 = <1 1>;
- dai-tdm-slot-tx-mask-1 = <1 1>;
- dai-tdm-slot-tx-mask-2 = <1 1>;
- dai-tdm-slot-tx-mask-3 = <1 1>;
- mclk-fs = <256>;
-
- codec {
- sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
- };
- };
-
- /* hdmi glue */
- dai-link-4 {
- sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
-
- codec {
- sound-dai = <&hdmi_tx>;
- };
- };
- };
-};
-
-&arb {
- status = "okay";
-};
-
-&clkc_audio {
- status = "okay";
-};
-
-&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@0 {
- /* Realtek RTL8211F (0x001cc916) */
- reg = <0>;
- max-speed = <1000>;
-
- interrupt-parent = <&gpio_intc>;
- /* MAC_INTR on GPIOZ_14 */
- interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
+ model = "ODROID-C4";
};
};
-ðmac {
- pinctrl-0 = <ð_pins>, <ð_rgmii_pins>;
- pinctrl-names = "default";
- status = "okay";
- phy-mode = "rgmii";
- phy-handle = <&external_phy>;
- amlogic,tx-delay-ns = <2>;
-};
-
-&frddr_a {
- status = "okay";
-};
-
-&frddr_b {
- status = "okay";
-};
-
-&frddr_c {
- status = "okay";
-};
-
&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 {
+ hog-0 {
gpio-hog;
gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>;
output-high;
@@ -370,121 +43,6 @@
};
};
-&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>;
-};
-
-&tdmif_b {
- status = "okay";
-};
-
-&tdmout_b {
- status = "okay";
-};
-
-&tohdmitx {
- status = "okay";
-};
-
-&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-odroid-hc4.dts b/arch/arm/dts/meson-sm1-odroid-hc4.dts
new file mode 100644
index 0000000000..f3f953225b
--- /dev/null
+++ b/arch/arm/dts/meson-sm1-odroid-hc4.dts
@@ -0,0 +1,140 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2020 Dongjin Kim <tobetter@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "meson-sm1-odroid.dtsi"
+
+/ {
+ compatible = "hardkernel,odroid-hc4", "amlogic,sm1";
+ model = "Hardkernel ODROID-HC4";
+
+ aliases {
+ rtc0 = &rtc;
+ rtc1 = &vrtc;
+ };
+
+ fan0: pwm-fan {
+ compatible = "pwm-fan";
+ #cooling-cells = <2>;
+ cooling-min-state = <0>;
+ cooling-max-state = <3>;
+ cooling-levels = <0 120 170 220>;
+ pwms = <&pwm_cd 1 40000 0>;
+ };
+
+ 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;
+ };
+
+ led-red {
+ color = <LED_COLOR_ID_RED>;
+ function = LED_FUNCTION_POWER;
+ gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>;
+ default-state = "on";
+ };
+ };
+
+ /* Powers the SATA Disk 0 regulator, which is enabled when a disk load is detected */
+ p12v_0: regulator-p12v_0 {
+ compatible = "regulator-fixed";
+ regulator-name = "P12V_0";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ vin-supply = <&main_12v>;
+
+ gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ /* Powers the SATA Disk 1 regulator, which is enabled when a disk load is detected */
+ p12v_1: regulator-p12v_1 {
+ compatible = "regulator-fixed";
+ regulator-name = "P12V_1";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ vin-supply = <&main_12v>;
+
+ gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ sound {
+ model = "ODROID-HC4";
+ };
+};
+
+&cpu_thermal {
+ cooling-maps {
+ map {
+ trip = <&cpu_passive>;
+ cooling-device = <&fan0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+ };
+ };
+};
+
+&ir {
+ linux,rc-map-name = "rc-odroid";
+};
+
+&i2c2 {
+ status = "okay";
+ pinctrl-0 = <&i2c2_sda_x_pins>, <&i2c2_sck_x_pins>;
+ pinctrl-names = "default";
+
+ rtc: rtc@51 {
+ status = "okay";
+ compatible = "nxp,pcf8563";
+ reg = <0x51>;
+ wakeup-source;
+ };
+};
+
+&pcie {
+ status = "okay";
+ reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>;
+};
+
+&pwm_cd {
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pwm_d_x6_pins>;
+};
+
+&sd_emmc_c {
+ status = "disabled";
+};
+
+&spifc {
+ status = "okay";
+ pinctrl-0 = <&nor_pins>;
+ pinctrl-names = "default";
+
+ spi-flash@0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <104000000>;
+ };
+};
+
+&usb {
+ phys = <&usb2_phy1>;
+ phy-names = "usb2-phy1";
+};
+
+&usb2_phy0 {
+ status = "disabled";
+};
diff --git a/arch/arm/dts/meson-sm1-odroid.dtsi b/arch/arm/dts/meson-sm1-odroid.dtsi
new file mode 100644
index 0000000000..fd0ad85c16
--- /dev/null
+++ b/arch/arm/dts/meson-sm1-odroid.dtsi
@@ -0,0 +1,449 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2020 Dongjin Kim <tobetter@gmail.com>
+ */
+
+#include "meson-sm1.dtsi"
+#include <dt-bindings/gpio/meson-g12a-gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
+
+/ {
+ aliases {
+ serial0 = &uart_AO;
+ ethernet0 = ðmac;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ 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>;
+ };
+
+ 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_OPEN_DRAIN>;
+ 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>;
+ vin-supply = <&vcc_5v>;
+
+ enable-gpio = <&gpio GPIOE_2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ regulator-always-on;
+
+ gpios = <&gpio_ao GPIOAO_6 GPIO_OPEN_SOURCE>;
+ 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>;
+ gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>;
+ enable-active-high;
+ };
+
+ 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;
+ };
+
+ 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>;
+ };
+ };
+ };
+
+ sound {
+ compatible = "amlogic,axg-sound-card";
+ 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";
+
+ assigned-clocks = <&clkc CLKID_MPLL2>,
+ <&clkc CLKID_MPLL0>,
+ <&clkc CLKID_MPLL1>;
+ assigned-clock-parents = <0>, <0>, <0>;
+ assigned-clock-rates = <294912000>,
+ <270950400>,
+ <393216000>;
+ status = "okay";
+
+ dai-link-0 {
+ sound-dai = <&frddr_a>;
+ };
+
+ dai-link-1 {
+ sound-dai = <&frddr_b>;
+ };
+
+ dai-link-2 {
+ sound-dai = <&frddr_c>;
+ };
+
+ /* 8ch hdmi interface */
+ dai-link-3 {
+ sound-dai = <&tdmif_b>;
+ dai-format = "i2s";
+ dai-tdm-slot-tx-mask-0 = <1 1>;
+ dai-tdm-slot-tx-mask-1 = <1 1>;
+ dai-tdm-slot-tx-mask-2 = <1 1>;
+ dai-tdm-slot-tx-mask-3 = <1 1>;
+ mclk-fs = <256>;
+
+ codec {
+ sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
+ };
+ };
+
+ /* hdmi glue */
+ dai-link-4 {
+ sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
+
+ codec {
+ sound-dai = <&hdmi_tx>;
+ };
+ };
+ };
+};
+
+&arb {
+ status = "okay";
+};
+
+&clkc_audio {
+ status = "okay";
+};
+
+&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@0 {
+ /* Realtek RTL8211F (0x001cc916) */
+ reg = <0>;
+ max-speed = <1000>;
+
+ interrupt-parent = <&gpio_intc>;
+ /* MAC_INTR on GPIOZ_14 */
+ interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
+ };
+};
+
+ðmac {
+ pinctrl-0 = <ð_pins>, <ð_rgmii_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy>;
+ amlogic,tx-delay-ns = <2>;
+};
+
+&frddr_a {
+ status = "okay";
+};
+
+&frddr_b {
+ status = "okay";
+};
+
+&frddr_c {
+ status = "okay";
+};
+
+&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 */
+};
+
+&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";
+};
+
+&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>;
+};
+
+&tdmif_b {
+ status = "okay";
+};
+
+&tdmout_b {
+ status = "okay";
+};
+
+&tohdmitx {
+ status = "okay";
+};
+
+&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>;
+};
+
diff --git a/arch/arm/dts/meson-sm1-sei610.dts b/arch/arm/dts/meson-sm1-sei610.dts
index 5ab139a34c..2194a77897 100644
--- a/arch/arm/dts/meson-sm1-sei610.dts
+++ b/arch/arm/dts/meson-sm1-sei610.dts
@@ -101,20 +101,20 @@
};
};
- leds {
+ led-controller-1 {
compatible = "gpio-leds";
- led-bluetooth {
+ led-1 {
label = "sei610:blue:bt";
gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
default-state = "off";
};
};
- pwmleds {
+ led-controller-2 {
compatible = "pwm-leds";
- power {
+ led-2 {
label = "sei610:red:power";
pwms = <&pwm_AO_ab 0 30518 0>;
max-brightness = <255>;
@@ -220,7 +220,7 @@
sound {
compatible = "amlogic,axg-sound-card";
- model = "SM1-SEI610";
+ model = "SEI610";
audio-aux-devs = <&tdmout_a>, <&tdmout_b>,
<&tdmin_a>, <&tdmin_b>;
audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0",
diff --git a/arch/arm/dts/meson-sm1.dtsi b/arch/arm/dts/meson-sm1.dtsi
index 71317f5aad..3d8b1f4f20 100644
--- a/arch/arm/dts/meson-sm1.dtsi
+++ b/arch/arm/dts/meson-sm1.dtsi
@@ -130,7 +130,7 @@
opp-microvolt = <790000>;
};
- opp-1512000000 {
+ opp-1500000000 {
opp-hz = /bits/ 64 <1500000000>;
opp-microvolt = <800000>;
};
@@ -401,6 +401,16 @@
status = "disabled";
};
+ toacodec: audio-controller@740 {
+ compatible = "amlogic,sm1-toacodec",
+ "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@744 {
compatible = "amlogic,sm1-tohdmitx",
"amlogic,g12a-tohdmitx";
diff --git a/include/dt-bindings/clock/axg-clkc.h b/include/dt-bindings/clock/axg-clkc.h
index fd1f938c38..93752ea107 100644
--- a/include/dt-bindings/clock/axg-clkc.h
+++ b/include/dt-bindings/clock/axg-clkc.h
@@ -70,7 +70,31 @@
#define CLKID_HIFI_PLL 69
#define CLKID_PCIE_CML_EN0 79
#define CLKID_PCIE_CML_EN1 80
-#define CLKID_MIPI_ENABLE 81
#define CLKID_GEN_CLK 84
+#define CLKID_VPU_0_SEL 92
+#define CLKID_VPU_0 93
+#define CLKID_VPU_1_SEL 95
+#define CLKID_VPU_1 96
+#define CLKID_VPU 97
+#define CLKID_VAPB_0_SEL 99
+#define CLKID_VAPB_0 100
+#define CLKID_VAPB_1_SEL 102
+#define CLKID_VAPB_1 103
+#define CLKID_VAPB_SEL 104
+#define CLKID_VAPB 105
+#define CLKID_VCLK 106
+#define CLKID_VCLK2 107
+#define CLKID_VCLK_DIV1 122
+#define CLKID_VCLK_DIV2 123
+#define CLKID_VCLK_DIV4 124
+#define CLKID_VCLK_DIV6 125
+#define CLKID_VCLK_DIV12 126
+#define CLKID_VCLK2_DIV1 127
+#define CLKID_VCLK2_DIV2 128
+#define CLKID_VCLK2_DIV4 129
+#define CLKID_VCLK2_DIV6 130
+#define CLKID_VCLK2_DIV12 131
+#define CLKID_CTS_ENCL 133
+#define CLKID_VDIN_MEAS 136
#endif /* __AXG_CLKC_H */
diff --git a/include/dt-bindings/clock/g12a-clkc.h b/include/dt-bindings/clock/g12a-clkc.h
index 40d49940d8..a93b58c5e1 100644
--- a/include/dt-bindings/clock/g12a-clkc.h
+++ b/include/dt-bindings/clock/g12a-clkc.h
@@ -147,5 +147,7 @@
#define CLKID_SPICC1_SCLK 261
#define CLKID_NNA_AXI_CLK 264
#define CLKID_NNA_CORE_CLK 267
+#define CLKID_MIPI_DSI_PXCLK_SEL 269
+#define CLKID_MIPI_DSI_PXCLK 270
#endif /* __G12A_CLKC_H */
--
2.25.1
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH v2 2/9] ARM: meson: keep HW order for MMC devices 2021-09-08 14:17 [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Neil Armstrong @ 2021-09-08 14:17 ` Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 3/9] ARM: meson-axg: remove local USB nodes Neil Armstrong ` (8 subsequent siblings) 9 siblings, 0 replies; 14+ messages in thread From: Neil Armstrong @ 2021-09-08 14:17 UTC (permalink / raw) To: u-boot; +Cc: u-boot-amlogic, Neil Armstrong Since Linux commmit [1], the order is fixed with aliases, in order to keep the MMC device order, set it back to HW order in U-Boot dtsi files. [1] ab547c4fb39f ("arm64: dts: amlogic: Assign a fixed index to mmc devices") Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- arch/arm/dts/meson-g12-common-u-boot.dtsi | 7 +++++++ arch/arm/dts/meson-gx-u-boot.dtsi | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/arch/arm/dts/meson-g12-common-u-boot.dtsi b/arch/arm/dts/meson-g12-common-u-boot.dtsi index 38fd3d3feb..b1f60b15c9 100644 --- a/arch/arm/dts/meson-g12-common-u-boot.dtsi +++ b/arch/arm/dts/meson-g12-common-u-boot.dtsi @@ -5,6 +5,13 @@ */ / { + /* Keep HW order from U-boot */ + aliases { + /delete-property/ mmc0; + /delete-property/ mmc1; + /delete-property/ mmc2; + }; + soc { u-boot,dm-pre-reloc; }; diff --git a/arch/arm/dts/meson-gx-u-boot.dtsi b/arch/arm/dts/meson-gx-u-boot.dtsi index 17d2cb95c1..fb6952f1d8 100644 --- a/arch/arm/dts/meson-gx-u-boot.dtsi +++ b/arch/arm/dts/meson-gx-u-boot.dtsi @@ -5,6 +5,13 @@ */ / { + /* Keep HW order from U-boot */ + aliases { + /delete-property/ mmc0; + /delete-property/ mmc1; + /delete-property/ mmc2; + }; + soc { u-boot,dm-pre-reloc; }; -- 2.25.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 3/9] ARM: meson-axg: remove local USB nodes 2021-09-08 14:17 [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 2/9] ARM: meson: keep HW order for MMC devices Neil Armstrong @ 2021-09-08 14:17 ` Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 4/9] configs: meson64: add SCSI boot target Neil Armstrong ` (7 subsequent siblings) 9 siblings, 0 replies; 14+ messages in thread From: Neil Armstrong @ 2021-09-08 14:17 UTC (permalink / raw) To: u-boot; +Cc: u-boot-amlogic, Neil Armstrong Drop the local USB nodes after Linux 5.14 sync. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- arch/arm/dts/meson-axg-s400-u-boot.dtsi | 8 ---- arch/arm/dts/meson-axg-u-boot.dtsi | 62 ------------------------- 2 files changed, 70 deletions(-) delete mode 100644 arch/arm/dts/meson-axg-u-boot.dtsi diff --git a/arch/arm/dts/meson-axg-s400-u-boot.dtsi b/arch/arm/dts/meson-axg-s400-u-boot.dtsi index 2c4b06f140..334650d610 100644 --- a/arch/arm/dts/meson-axg-s400-u-boot.dtsi +++ b/arch/arm/dts/meson-axg-s400-u-boot.dtsi @@ -3,8 +3,6 @@ * Copyright (c) 2017 Amlogic, Inc. All rights reserved. */ -#include "meson-axg-u-boot.dtsi" - /* wifi module */ &sd_emmc_b { status = "disabled"; @@ -15,12 +13,6 @@ status = "okay"; }; -&usb { - status = "okay"; - dr_mode = "otg"; - vbus-supply = <&usb_pwr>; -}; - &usb2_phy1 { phy-supply = <&vcc_5v>; }; diff --git a/arch/arm/dts/meson-axg-u-boot.dtsi b/arch/arm/dts/meson-axg-u-boot.dtsi deleted file mode 100644 index cb1c71e78c..0000000000 --- a/arch/arm/dts/meson-axg-u-boot.dtsi +++ /dev/null @@ -1,62 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -/* - * Copyright (c) 2020 BayLibre, SAS. - * Author: Neil Armstrong <narmstrong@baylibre.com> - */ - -/ { - soc { - usb: usb@ffe09080 { - compatible = "amlogic,meson-gxl-usb-ctrl"; - reg = <0x0 0xffe09080 0x0 0x20>; - interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; - #address-cells = <2>; - #size-cells = <2>; - ranges; - - clocks = <&clkc CLKID_USB>, <&clkc CLKID_USB1_DDR_BRIDGE>; - clock-names = "usb_ctrl", "ddr"; - resets = <&reset RESET_USB_OTG>; - - dr_mode = "otg"; - - phys = <&usb2_phy1>; - phy-names = "usb2-phy1"; - - dwc2: usb@ff400000 { - compatible = "amlogic,meson-g12a-usb", "snps,dwc2"; - reg = <0x0 0xff400000 0x0 0x40000>; - interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&clkc CLKID_USB1>; - clock-names = "otg"; - phys = <&usb2_phy1>; - dr_mode = "peripheral"; - g-rx-fifo-size = <192>; - g-np-tx-fifo-size = <128>; - g-tx-fifo-size = <128 128 16 16 16>; - }; - - dwc3: usb@ff500000 { - compatible = "snps,dwc3"; - reg = <0x0 0xff500000 0x0 0x100000>; - interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; - dr_mode = "host"; - maximum-speed = "high-speed"; - snps,dis_u2_susphy_quirk; - }; - }; - }; -}; - -&apb { - usb2_phy1: phy@9020 { - compatible = "amlogic,meson-gxl-usb2-phy"; - #phy-cells = <0>; - reg = <0x0 0x9020 0x0 0x20>; - clocks = <&clkc CLKID_USB>; - clock-names = "phy"; - resets = <&reset RESET_USB_OTG>; - reset-names = "phy"; - status = "okay"; - }; -}; -- 2.25.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 4/9] configs: meson64: add SCSI boot target 2021-09-08 14:17 [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 2/9] ARM: meson: keep HW order for MMC devices Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 3/9] ARM: meson-axg: remove local USB nodes Neil Armstrong @ 2021-09-08 14:17 ` Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 5/9] distro_bootcmd: run pci enum for scsi_boot just like it is done for nvme_boot Neil Armstrong ` (6 subsequent siblings) 9 siblings, 0 replies; 14+ messages in thread From: Neil Armstrong @ 2021-09-08 14:17 UTC (permalink / raw) To: u-boot; +Cc: u-boot-amlogic, Neil Armstrong, Mark Kettenis Add SCSI target to be able to boot from the SATA disks on the Odroid HC4 using an on-board AHCI PCIe controller. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Signed-off-by: Mark Kettenis <kettenis@openbsd.org> --- include/configs/meson64.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/configs/meson64.h b/include/configs/meson64.h index f9bb0240d2..08816fff1f 100644 --- a/include/configs/meson64.h +++ b/include/configs/meson64.h @@ -66,6 +66,12 @@ #define BOOT_TARGET_NVME(func) #endif +#ifdef CONFIG_CMD_SCSI + #define BOOT_TARGET_SCSI(func) func(SCSI, scsi, 0) +#else + #define BOOT_TARGET_SCSI(func) +#endif + #ifndef BOOT_TARGET_DEVICES #define BOOT_TARGET_DEVICES(func) \ func(ROMUSB, romusb, na) \ @@ -74,6 +80,7 @@ func(MMC, mmc, 2) \ BOOT_TARGET_DEVICES_USB(func) \ BOOT_TARGET_NVME(func) \ + BOOT_TARGET_SCSI(func) \ func(PXE, pxe, na) \ func(DHCP, dhcp, na) #endif -- 2.25.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 5/9] distro_bootcmd: run pci enum for scsi_boot just like it is done for nvme_boot 2021-09-08 14:17 [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Neil Armstrong ` (2 preceding siblings ...) 2021-09-08 14:17 ` [PATCH v2 4/9] configs: meson64: add SCSI boot target Neil Armstrong @ 2021-09-08 14:17 ` Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 6/9] ARM: amlogic: add support for Odroid-HC4 device Neil Armstrong ` (5 subsequent siblings) 9 siblings, 0 replies; 14+ messages in thread From: Neil Armstrong @ 2021-09-08 14:17 UTC (permalink / raw) To: u-boot; +Cc: u-boot-amlogic, Neil Armstrong, Mark Kettenis The SCSI device can be a PCIe adapter, so run pcie enum if enabled. Signed-off-by: Mark Kettenis <kettenis@openbsd.org> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- include/config_distro_bootcmd.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h index 750e9e04e8..3f724aa10f 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -226,6 +226,7 @@ "fi\0" \ \ "scsi_boot=" \ + BOOTENV_RUN_PCI_ENUM \ BOOTENV_RUN_SCSI_INIT \ BOOTENV_SHARED_BLKDEV_BODY(scsi) #define BOOTENV_DEV_SCSI BOOTENV_DEV_BLKDEV -- 2.25.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 6/9] ARM: amlogic: add support for Odroid-HC4 device 2021-09-08 14:17 [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Neil Armstrong ` (3 preceding siblings ...) 2021-09-08 14:17 ` [PATCH v2 5/9] distro_bootcmd: run pci enum for scsi_boot just like it is done for nvme_boot Neil Armstrong @ 2021-09-08 14:17 ` Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 7/9] doc: boards: amlogic: update for Odroid HC4 Neil Armstrong ` (4 subsequent siblings) 9 siblings, 0 replies; 14+ messages in thread From: Neil Armstrong @ 2021-09-08 14:17 UTC (permalink / raw) To: u-boot; +Cc: u-boot-amlogic, Neil Armstrong The Odroid-HC4 is a variant of the Odroid-C4 board but with an PCIe-SATA bridge instead of the USB3 ports. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- arch/arm/dts/meson-sm1-odroid-hc4-u-boot.dtsi | 23 +++++ configs/odroid-hc4_defconfig | 83 +++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 arch/arm/dts/meson-sm1-odroid-hc4-u-boot.dtsi create mode 100644 configs/odroid-hc4_defconfig diff --git a/arch/arm/dts/meson-sm1-odroid-hc4-u-boot.dtsi b/arch/arm/dts/meson-sm1-odroid-hc4-u-boot.dtsi new file mode 100644 index 0000000000..963bf96b25 --- /dev/null +++ b/arch/arm/dts/meson-sm1-odroid-hc4-u-boot.dtsi @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2020 BayLibre, SAS + * Author: Neil Armstrong <narmstrong@baylibre.com> + */ + +#include "meson-sm1-u-boot.dtsi" + +ðmac { + snps,reset-gpio = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; + snps,reset-delays-us = <0 10000 1000000>; + snps,reset-active-low; +}; + +/* SARADC is needed for proper board variant detection */ +&saradc { + status = "okay"; + vref-supply = <&vddao_1v8>; +}; + +&tflash_vdd { + gpio = <&gpio_ao GPIOAO_3 GPIO_OPEN_DRAIN>; +}; diff --git a/configs/odroid-hc4_defconfig b/configs/odroid-hc4_defconfig new file mode 100644 index 0000000000..aca294adba --- /dev/null +++ b/configs/odroid-hc4_defconfig @@ -0,0 +1,83 @@ +CONFIG_ARM=y +CONFIG_SYS_BOARD="odroid-n2" +CONFIG_ARCH_MESON=y +CONFIG_SYS_TEXT_BASE=0x01000000 +CONFIG_NR_DRAM_BANKS=1 +CONFIG_ENV_SIZE=0x2000 +CONFIG_DM_GPIO=y +CONFIG_DEFAULT_DEVICE_TREE="meson-sm1-odroid-hc4" +CONFIG_MESON_G12A=y +CONFIG_DEBUG_UART_BASE=0xff803000 +CONFIG_DEBUG_UART_CLOCK=24000000 +CONFIG_IDENT_STRING=" odroid-hc4" +CONFIG_DEBUG_UART=y +CONFIG_AHCI=y +CONFIG_OF_BOARD_SETUP=y +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_MISC_INIT_R=y +# CONFIG_CMD_BDI is not set +# CONFIG_CMD_IMI is not set +CONFIG_CMD_GPIO=y +# CONFIG_CMD_LOADS is not set +CONFIG_CMD_MMC=y +CONFIG_CMD_PCI=y +CONFIG_CMD_USB=y +CONFIG_CMD_USB_MASS_STORAGE=y +# CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_REGULATOR=y +CONFIG_OF_CONTROL=y +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_NET_RANDOM_ETHADDR=y +CONFIG_ADC=y +CONFIG_SARADC_MESON=y +CONFIG_SATA=y +CONFIG_SCSI_AHCI=y +CONFIG_AHCI_PCI=y +CONFIG_MMC_MESON_GX=y +CONFIG_PHY_REALTEK=y +CONFIG_DM_ETH=y +CONFIG_DM_MDIO=y +CONFIG_DM_MDIO_MUX=y +CONFIG_ETH_DESIGNWARE_MESON8B=y +CONFIG_MDIO_MUX_MESON_G12A=y +CONFIG_PCI=y +CONFIG_PCIE_DW_MESON=y +CONFIG_MESON_G12A_USB_PHY=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_MESON_G12A=y +CONFIG_POWER_DOMAIN=y +CONFIG_MESON_EE_POWER_DOMAIN=y +CONFIG_DM_REGULATOR=y +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_DM_RESET=y +CONFIG_SCSI=y +CONFIG_DM_SCSI=y +CONFIG_DEBUG_UART_ANNOUNCE=y +CONFIG_DEBUG_UART_SKIP_INIT=y +CONFIG_MESON_SERIAL=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_DWC3=y +CONFIG_USB_DWC3=y +# CONFIG_USB_DWC3_GADGET is not set +CONFIG_USB_DWC3_MESON_G12A=y +CONFIG_USB_KEYBOARD=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e +CONFIG_USB_GADGET_PRODUCT_NUM=0xfada +CONFIG_USB_GADGET_DWC2_OTG=y +CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_DM_VIDEO=y +# CONFIG_VIDEO_BPP8 is not set +# CONFIG_VIDEO_BPP16 is not set +CONFIG_SYS_WHITE_ON_BLACK=y +CONFIG_VIDEO_MESON=y +CONFIG_VIDEO_DT_SIMPLEFB=y +CONFIG_SPLASH_SCREEN=y +CONFIG_SPLASH_SCREEN_ALIGN=y +CONFIG_VIDEO_BMP_RLE8=y +CONFIG_BMP_16BPP=y +CONFIG_BMP_24BPP=y +CONFIG_BMP_32BPP=y +CONFIG_OF_LIBFDT_OVERLAY=y -- 2.25.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 7/9] doc: boards: amlogic: update for Odroid HC4 2021-09-08 14:17 [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Neil Armstrong ` (4 preceding siblings ...) 2021-09-08 14:17 ` [PATCH v2 6/9] ARM: amlogic: add support for Odroid-HC4 device Neil Armstrong @ 2021-09-08 14:17 ` Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 8/9] ARM: meson: add Beelink GS-King X board Neil Armstrong ` (3 subsequent siblings) 9 siblings, 0 replies; 14+ messages in thread From: Neil Armstrong @ 2021-09-08 14:17 UTC (permalink / raw) To: u-boot; +Cc: u-boot-amlogic, Neil Armstrong Add documentation bits for the Odroid-HC4. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- doc/board/amlogic/index.rst | 2 +- doc/board/amlogic/odroid-c4.rst | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/board/amlogic/index.rst b/doc/board/amlogic/index.rst index 8da7afddb4..af12f94fde 100644 --- a/doc/board/amlogic/index.rst +++ b/doc/board/amlogic/index.rst @@ -18,7 +18,7 @@ This matrix concerns the actual source code version. | Boards | Odroid-C2 | P212 | Khadas VIM2 | S400 | U200 | Odroid-N2 | SEI610 | | | Nanopi-K2 | Khadas-VIM | Libretech-PC | | SEI510 | Khadas-VIM3 | Khadas-VIM3L | | | P200 | LibreTech-CC v1 | WeTek Core2 | | | GT-King/Pro | Odroid-C4 | -| | P201 | LibreTech-AC v2 | | | | | | +| | P201 | LibreTech-AC v2 | | | | | Odroid-HC4 | +-------------------------------+-----------+-----------------+--------------+------------+------------+-------------+--------------+ | UART | **Yes** | **Yes** | **Yes** | **Yes** | **Yes** | **Yes** | **Yes** | +-------------------------------+-----------+-----------------+--------------+------------+------------+-------------+--------------+ diff --git a/doc/board/amlogic/odroid-c4.rst b/doc/board/amlogic/odroid-c4.rst index 5a5a8688b8..f66d60a54d 100644 --- a/doc/board/amlogic/odroid-c4.rst +++ b/doc/board/amlogic/odroid-c4.rst @@ -17,6 +17,9 @@ Co. Ltd with the following specifications: - UART serial - Infrared receiver +The ODROID-HC4 is a variant with a PCIe-SATA controller, the same commands +applies for HC4. + Schematics are available on the manufacturer website. U-Boot compilation -- 2.25.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 8/9] ARM: meson: add Beelink GS-King X board 2021-09-08 14:17 [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Neil Armstrong ` (5 preceding siblings ...) 2021-09-08 14:17 ` [PATCH v2 7/9] doc: boards: amlogic: update for Odroid HC4 Neil Armstrong @ 2021-09-08 14:17 ` Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 9/9] ARM: amlogic: add Banana Pi M5 Neil Armstrong ` (2 subsequent siblings) 9 siblings, 0 replies; 14+ messages in thread From: Neil Armstrong @ 2021-09-08 14:17 UTC (permalink / raw) To: u-boot; +Cc: u-boot-amlogic, Neil Armstrong The Beelink GS-King X is a variant of the GS King boards but with an internal USB to SATA bridge and advanced audio features. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- arch/arm/dts/meson-g12b-gsking-x-u-boot.dtsi | 7 ++ configs/beelink-gsking-x_defconfig | 70 ++++++++++++++++++++ doc/board/amlogic/index.rst | 2 +- 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 arch/arm/dts/meson-g12b-gsking-x-u-boot.dtsi create mode 100644 configs/beelink-gsking-x_defconfig diff --git a/arch/arm/dts/meson-g12b-gsking-x-u-boot.dtsi b/arch/arm/dts/meson-g12b-gsking-x-u-boot.dtsi new file mode 100644 index 0000000000..236f2468dc --- /dev/null +++ b/arch/arm/dts/meson-g12b-gsking-x-u-boot.dtsi @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2019 BayLibre, SAS. + * Author: Neil Armstrong <narmstrong@baylibre.com> + */ + +#include "meson-g12-common-u-boot.dtsi" diff --git a/configs/beelink-gsking-x_defconfig b/configs/beelink-gsking-x_defconfig new file mode 100644 index 0000000000..8a76e8829a --- /dev/null +++ b/configs/beelink-gsking-x_defconfig @@ -0,0 +1,70 @@ +CONFIG_ARM=y +CONFIG_SYS_BOARD="beelink-s922x" +CONFIG_ARCH_MESON=y +CONFIG_SYS_TEXT_BASE=0x01000000 +CONFIG_NR_DRAM_BANKS=1 +CONFIG_ENV_SIZE=0x2000 +CONFIG_DM_GPIO=y +CONFIG_DEFAULT_DEVICE_TREE="meson-g12b-gsking-x" +CONFIG_MESON_G12A=y +CONFIG_DEBUG_UART_BASE=0xff803000 +CONFIG_DEBUG_UART_CLOCK=24000000 +CONFIG_IDENT_STRING=" beelink" +CONFIG_DEBUG_UART=y +CONFIG_OF_BOARD_SETUP=y +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_MISC_INIT_R=y +# CONFIG_CMD_BDI is not set +# CONFIG_CMD_IMI is not set +CONFIG_CMD_GPIO=y +# CONFIG_CMD_LOADS is not set +CONFIG_CMD_MMC=y +CONFIG_CMD_USB=y +CONFIG_CMD_USB_MASS_STORAGE=y +# CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_REGULATOR=y +CONFIG_OF_CONTROL=y +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_NET_RANDOM_ETHADDR=y +CONFIG_MMC_MESON_GX=y +CONFIG_MTD=y +CONFIG_DM_MTD=y +CONFIG_PHY_REALTEK=y +CONFIG_DM_ETH=y +CONFIG_DM_MDIO=y +CONFIG_DM_MDIO_MUX=y +CONFIG_ETH_DESIGNWARE_MESON8B=y +CONFIG_MDIO_MUX_MESON_G12A=y +CONFIG_MESON_G12A_USB_PHY=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_MESON_G12A=y +CONFIG_POWER_DOMAIN=y +CONFIG_MESON_EE_POWER_DOMAIN=y +CONFIG_DM_REGULATOR=y +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_DM_RESET=y +CONFIG_DEBUG_UART_ANNOUNCE=y +CONFIG_DEBUG_UART_SKIP_INIT=y +CONFIG_MESON_SERIAL=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_DWC3=y +CONFIG_USB_DWC3=y +# CONFIG_USB_DWC3_GADGET is not set +CONFIG_USB_DWC3_MESON_G12A=y +CONFIG_USB_KEYBOARD=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e +CONFIG_USB_GADGET_PRODUCT_NUM=0xfada +CONFIG_USB_GADGET_DWC2_OTG=y +CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_DM_VIDEO=y +# CONFIG_VIDEO_BPP8 is not set +# CONFIG_VIDEO_BPP16 is not set +CONFIG_SYS_WHITE_ON_BLACK=y +CONFIG_VIDEO_MESON=y +CONFIG_VIDEO_DT_SIMPLEFB=y +CONFIG_SPLASH_SCREEN=y +CONFIG_SPLASH_SCREEN_ALIGN=y +CONFIG_OF_LIBFDT_OVERLAY=y diff --git a/doc/board/amlogic/index.rst b/doc/board/amlogic/index.rst index af12f94fde..de1a9ce284 100644 --- a/doc/board/amlogic/index.rst +++ b/doc/board/amlogic/index.rst @@ -18,7 +18,7 @@ This matrix concerns the actual source code version. | Boards | Odroid-C2 | P212 | Khadas VIM2 | S400 | U200 | Odroid-N2 | SEI610 | | | Nanopi-K2 | Khadas-VIM | Libretech-PC | | SEI510 | Khadas-VIM3 | Khadas-VIM3L | | | P200 | LibreTech-CC v1 | WeTek Core2 | | | GT-King/Pro | Odroid-C4 | -| | P201 | LibreTech-AC v2 | | | | | Odroid-HC4 | +| | P201 | LibreTech-AC v2 | | | | GSKing-X | Odroid-HC4 | +-------------------------------+-----------+-----------------+--------------+------------+------------+-------------+--------------+ | UART | **Yes** | **Yes** | **Yes** | **Yes** | **Yes** | **Yes** | **Yes** | +-------------------------------+-----------+-----------------+--------------+------------+------------+-------------+--------------+ -- 2.25.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 9/9] ARM: amlogic: add Banana Pi M5 2021-09-08 14:17 [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Neil Armstrong ` (6 preceding siblings ...) 2021-09-08 14:17 ` [PATCH v2 8/9] ARM: meson: add Beelink GS-King X board Neil Armstrong @ 2021-09-08 14:17 ` Neil Armstrong 2021-09-08 15:46 ` [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Tom Rini 2021-09-15 7:49 ` Vyacheslav 9 siblings, 0 replies; 14+ messages in thread From: Neil Armstrong @ 2021-09-08 14:17 UTC (permalink / raw) To: u-boot; +Cc: u-boot-amlogic, Neil Armstrong Banana Pi BPI-M5 is a credit card format SBC with the following features: - Amlogic S905X3 quad core Cortex-A55 - Mali-G31 GPU - 4GB LPDDR4 - 16GB eMMC flash - 4 USB 3.0 - 1 GbE ethernet - HDMI output - 2x LEDS - SDCard - 2.5mm Jack with Stereo Audio + CVBS - Infrared Received - ADC Button - GPIO Button - 40 pins header + 3pins debug header Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- .../arm/dts/meson-sm1-bananapi-m5-u-boot.dtsi | 13 ++++ configs/bananapi-m5_defconfig | 73 +++++++++++++++++++ doc/board/amlogic/index.rst | 1 + 3 files changed, 87 insertions(+) create mode 100644 arch/arm/dts/meson-sm1-bananapi-m5-u-boot.dtsi create mode 100644 configs/bananapi-m5_defconfig diff --git a/arch/arm/dts/meson-sm1-bananapi-m5-u-boot.dtsi b/arch/arm/dts/meson-sm1-bananapi-m5-u-boot.dtsi new file mode 100644 index 0000000000..a86fdb5668 --- /dev/null +++ b/arch/arm/dts/meson-sm1-bananapi-m5-u-boot.dtsi @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2021 BayLibre, SAS + * Author: Neil Armstrong <narmstrong@baylibre.com> + */ + +#include "meson-sm1-u-boot.dtsi" + +ðmac { + snps,reset-gpio = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; + snps,reset-delays-us = <0 10000 1000000>; + snps,reset-active-low; +}; diff --git a/configs/bananapi-m5_defconfig b/configs/bananapi-m5_defconfig new file mode 100644 index 0000000000..a088761622 --- /dev/null +++ b/configs/bananapi-m5_defconfig @@ -0,0 +1,73 @@ +CONFIG_ARM=y +CONFIG_ARCH_MESON=y +CONFIG_SYS_TEXT_BASE=0x01000000 +CONFIG_NR_DRAM_BANKS=1 +CONFIG_ENV_SIZE=0x2000 +CONFIG_DM_GPIO=y +CONFIG_DEFAULT_DEVICE_TREE="meson-sm1-bananapi-m5" +CONFIG_MESON_G12A=y +CONFIG_DEBUG_UART_BASE=0xff803000 +CONFIG_DEBUG_UART_CLOCK=24000000 +CONFIG_IDENT_STRING="bpi-m5" +CONFIG_DEBUG_UART=y +CONFIG_OF_BOARD_SETUP=y +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_MISC_INIT_R=y +# CONFIG_CMD_BDI is not set +# CONFIG_CMD_IMI is not set +CONFIG_CMD_GPIO=y +# CONFIG_CMD_LOADS is not set +CONFIG_CMD_MMC=y +CONFIG_CMD_USB=y +CONFIG_CMD_USB_MASS_STORAGE=y +# CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_REGULATOR=y +CONFIG_OF_CONTROL=y +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_NET_RANDOM_ETHADDR=y +CONFIG_ADC=y +CONFIG_SARADC_MESON=y +CONFIG_MMC_MESON_GX=y +CONFIG_PHY_REALTEK=y +CONFIG_DM_ETH=y +CONFIG_DM_MDIO=y +CONFIG_DM_MDIO_MUX=y +CONFIG_ETH_DESIGNWARE_MESON8B=y +CONFIG_MDIO_MUX_MESON_G12A=y +CONFIG_MESON_G12A_USB_PHY=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_MESON_G12A=y +CONFIG_POWER_DOMAIN=y +CONFIG_MESON_EE_POWER_DOMAIN=y +CONFIG_DM_REGULATOR=y +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_DM_RESET=y +CONFIG_DEBUG_UART_ANNOUNCE=y +CONFIG_DEBUG_UART_SKIP_INIT=y +CONFIG_MESON_SERIAL=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_DWC3=y +CONFIG_USB_DWC3=y +# CONFIG_USB_DWC3_GADGET is not set +CONFIG_USB_DWC3_MESON_G12A=y +CONFIG_USB_KEYBOARD=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e +CONFIG_USB_GADGET_PRODUCT_NUM=0xfada +CONFIG_USB_GADGET_DWC2_OTG=y +CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_DM_VIDEO=y +# CONFIG_VIDEO_BPP8 is not set +# CONFIG_VIDEO_BPP16 is not set +CONFIG_SYS_WHITE_ON_BLACK=y +CONFIG_VIDEO_MESON=y +CONFIG_VIDEO_DT_SIMPLEFB=y +CONFIG_SPLASH_SCREEN=y +CONFIG_SPLASH_SCREEN_ALIGN=y +CONFIG_VIDEO_BMP_RLE8=y +CONFIG_BMP_16BPP=y +CONFIG_BMP_24BPP=y +CONFIG_BMP_32BPP=y +CONFIG_OF_LIBFDT_OVERLAY=y diff --git a/doc/board/amlogic/index.rst b/doc/board/amlogic/index.rst index de1a9ce284..2913ab281a 100644 --- a/doc/board/amlogic/index.rst +++ b/doc/board/amlogic/index.rst @@ -19,6 +19,7 @@ This matrix concerns the actual source code version. | | Nanopi-K2 | Khadas-VIM | Libretech-PC | | SEI510 | Khadas-VIM3 | Khadas-VIM3L | | | P200 | LibreTech-CC v1 | WeTek Core2 | | | GT-King/Pro | Odroid-C4 | | | P201 | LibreTech-AC v2 | | | | GSKing-X | Odroid-HC4 | +| | | | | | | | BananaPi-M5 | +-------------------------------+-----------+-----------------+--------------+------------+------------+-------------+--------------+ | UART | **Yes** | **Yes** | **Yes** | **Yes** | **Yes** | **Yes** | **Yes** | +-------------------------------+-----------+-----------------+--------------+------------+------------+-------------+--------------+ -- 2.25.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 2021-09-08 14:17 [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Neil Armstrong ` (7 preceding siblings ...) 2021-09-08 14:17 ` [PATCH v2 9/9] ARM: amlogic: add Banana Pi M5 Neil Armstrong @ 2021-09-08 15:46 ` Tom Rini 2021-09-09 9:42 ` Neil Armstrong 2021-09-15 7:49 ` Vyacheslav 9 siblings, 1 reply; 14+ messages in thread From: Tom Rini @ 2021-09-08 15:46 UTC (permalink / raw) To: Neil Armstrong; +Cc: u-boot, u-boot-amlogic [-- Attachment #1: Type: text/plain, Size: 91218 bytes --] On Wed, Sep 08, 2021 at 04:17:20PM +0200, Neil Armstrong wrote: > Import Amlogic DT changes from Linux commit 7d2a07b76933 ("Linux 5.14"), > dt-bindings clock changes and new meson-g12b-gsking-x.dts, > meson-sm1-bananapi-m5 & odroid-hc4 boards. > > Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Given some other related email threads, I'm curious. Does this mean that everything U-Boot specific is currently in -u-boot.dtsi files? Or is there some manual syncing within the main dts files (aside from perhaps needing to #include a -u-boot.dtsi) ? Thanks! > --- > arch/arm/dts/Makefile | 3 + > arch/arm/dts/meson-axg-s400.dts | 16 + > arch/arm/dts/meson-axg.dtsi | 181 +++++ > arch/arm/dts/meson-g12-common.dtsi | 31 +- > arch/arm/dts/meson-g12a-sei510.dts | 2 +- > arch/arm/dts/meson-g12b-gsking-x.dts | 133 ++++ > arch/arm/dts/meson-g12b-gtking-pro.dts | 23 +- > arch/arm/dts/meson-g12b-gtking.dts | 22 +- > arch/arm/dts/meson-g12b-odroid-n2-plus.dts | 2 +- > arch/arm/dts/meson-g12b-odroid-n2.dtsi | 74 +- > arch/arm/dts/meson-g12b-w400.dtsi | 2 +- > arch/arm/dts/meson-g12b.dtsi | 4 + > arch/arm/dts/meson-gx-libretech-pc.dtsi | 2 +- > arch/arm/dts/meson-gx-p23x-q20x.dtsi | 2 +- > arch/arm/dts/meson-gx.dtsi | 7 + > arch/arm/dts/meson-gxbb-nanopi-k2.dts | 42 +- > arch/arm/dts/meson-gxbb-odroidc2.dts | 44 +- > arch/arm/dts/meson-gxl-s805x-libretech-ac.dts | 2 +- > arch/arm/dts/meson-gxl-s905x-khadas-vim.dts | 50 +- > .../dts/meson-gxl-s905x-libretech-cc-v2.dts | 6 +- > arch/arm/dts/meson-gxl-s905x-libretech-cc.dts | 2 +- > arch/arm/dts/meson-gxm-khadas-vim2.dts | 55 +- > arch/arm/dts/meson-gxm-wetek-core2.dts | 2 +- > arch/arm/dts/meson-gxm.dtsi | 20 + > arch/arm/dts/meson-khadas-vim3.dtsi | 73 +- > arch/arm/dts/meson-sm1-bananapi-m5.dts | 646 ++++++++++++++++++ > arch/arm/dts/meson-sm1-khadas-vim3l.dts | 20 +- > arch/arm/dts/meson-sm1-odroid-c4.dts | 448 +----------- > arch/arm/dts/meson-sm1-odroid-hc4.dts | 140 ++++ > arch/arm/dts/meson-sm1-odroid.dtsi | 449 ++++++++++++ > arch/arm/dts/meson-sm1-sei610.dts | 10 +- > arch/arm/dts/meson-sm1.dtsi | 12 +- > include/dt-bindings/clock/axg-clkc.h | 26 +- > include/dt-bindings/clock/g12a-clkc.h | 2 + > 34 files changed, 2030 insertions(+), 523 deletions(-) > create mode 100644 arch/arm/dts/meson-g12b-gsking-x.dts > create mode 100644 arch/arm/dts/meson-sm1-bananapi-m5.dts > create mode 100644 arch/arm/dts/meson-sm1-odroid-hc4.dts > create mode 100644 arch/arm/dts/meson-sm1-odroid.dtsi > > diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile > index fc16a57e60..f0160d2dc0 100644 > --- a/arch/arm/dts/Makefile > +++ b/arch/arm/dts/Makefile > @@ -177,11 +177,14 @@ dtb-$(CONFIG_ARCH_MESON) += \ > meson-g12a-sei510.dtb \ > meson-g12b-gtking.dtb \ > meson-g12b-gtking-pro.dtb \ > + meson-g12b-gsking-x.dtb \ > meson-g12b-odroid-n2.dtb \ > meson-g12b-odroid-n2-plus.dtb \ > meson-g12b-a311d-khadas-vim3.dtb \ > + meson-sm1-bananapi-m5.dtb \ > meson-sm1-khadas-vim3l.dtb \ > meson-sm1-odroid-c4.dtb \ > + meson-sm1-odroid-hc4.dtb \ > meson-sm1-sei610.dtb > dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \ > tegra20-medcom-wide.dtb \ > diff --git a/arch/arm/dts/meson-axg-s400.dts b/arch/arm/dts/meson-axg-s400.dts > index cb1360ae12..359589d1df 100644 > --- a/arch/arm/dts/meson-axg-s400.dts > +++ b/arch/arm/dts/meson-axg-s400.dts > @@ -441,6 +441,16 @@ > status = "okay"; > }; > > +&pcieA { > + reset-gpios = <&gpio GPIOX_19 GPIO_ACTIVE_LOW>; > + status = "okay"; > +}; > + > +&pcieB { > + reset-gpios = <&gpio GPIOZ_10 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; > + status = "okay"; > +}; > + > &pwm_ab { > status = "okay"; > pinctrl-0 = <&pwm_a_x20_pins>; > @@ -584,3 +594,9 @@ > pinctrl-0 = <&uart_ao_a_pins>; > pinctrl-names = "default"; > }; > + > +&usb { > + status = "okay"; > + dr_mode = "otg"; > + vbus-supply = <&usb_pwr>; > +}; > diff --git a/arch/arm/dts/meson-axg.dtsi b/arch/arm/dts/meson-axg.dtsi > index b9efc84692..3f5254eeb4 100644 > --- a/arch/arm/dts/meson-axg.dtsi > +++ b/arch/arm/dts/meson-axg.dtsi > @@ -12,6 +12,7 @@ > #include <dt-bindings/interrupt-controller/arm-gic.h> > #include <dt-bindings/reset/amlogic,meson-axg-audio-arb.h> > #include <dt-bindings/reset/amlogic,meson-axg-reset.h> > +#include <dt-bindings/power/meson-axg-power.h> > > / { > compatible = "amlogic,meson-axg"; > @@ -171,6 +172,98 @@ > #size-cells = <2>; > ranges; > > + pcieA: pcie@f9800000 { > + compatible = "amlogic,axg-pcie", "snps,dw-pcie"; > + reg = <0x0 0xf9800000 0x0 0x400000>, > + <0x0 0xff646000 0x0 0x2000>, > + <0x0 0xf9f00000 0x0 0x100000>; > + reg-names = "elbi", "cfg", "config"; > + interrupts = <GIC_SPI 177 IRQ_TYPE_EDGE_RISING>; > + #interrupt-cells = <1>; > + interrupt-map-mask = <0 0 0 0>; > + interrupt-map = <0 0 0 0 &gic GIC_SPI 179 IRQ_TYPE_EDGE_RISING>; > + bus-range = <0x0 0xff>; > + #address-cells = <3>; > + #size-cells = <2>; > + device_type = "pci"; > + ranges = <0x82000000 0 0xf9c00000 0x0 0xf9c00000 0 0x00300000>; > + > + clocks = <&clkc CLKID_USB>, <&clkc CLKID_PCIE_A>, <&clkc CLKID_PCIE_CML_EN0>; > + clock-names = "general", "pclk", "port"; > + resets = <&reset RESET_PCIE_A>, <&reset RESET_PCIE_APB>; > + reset-names = "port", "apb"; > + num-lanes = <1>; > + phys = <&pcie_phy>; > + phy-names = "pcie"; > + status = "disabled"; > + }; > + > + pcieB: pcie@fa000000 { > + compatible = "amlogic,axg-pcie", "snps,dw-pcie"; > + reg = <0x0 0xfa000000 0x0 0x400000>, > + <0x0 0xff648000 0x0 0x2000>, > + <0x0 0xfa400000 0x0 0x100000>; > + reg-names = "elbi", "cfg", "config"; > + interrupts = <GIC_SPI 167 IRQ_TYPE_EDGE_RISING>; > + #interrupt-cells = <1>; > + interrupt-map-mask = <0 0 0 0>; > + interrupt-map = <0 0 0 0 &gic GIC_SPI 169 IRQ_TYPE_EDGE_RISING>; > + bus-range = <0x0 0xff>; > + #address-cells = <3>; > + #size-cells = <2>; > + device_type = "pci"; > + ranges = <0x82000000 0 0xfa500000 0x0 0xfa500000 0 0x00300000>; > + > + clocks = <&clkc CLKID_USB>, <&clkc CLKID_PCIE_B>, <&clkc CLKID_PCIE_CML_EN1>; > + clock-names = "general", "pclk", "port"; > + resets = <&reset RESET_PCIE_B>, <&reset RESET_PCIE_APB>; > + reset-names = "port", "apb"; > + num-lanes = <1>; > + phys = <&pcie_phy>; > + phy-names = "pcie"; > + status = "disabled"; > + }; > + > + usb: usb@ffe09080 { > + compatible = "amlogic,meson-axg-usb-ctrl"; > + reg = <0x0 0xffe09080 0x0 0x20>; > + interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; > + #address-cells = <2>; > + #size-cells = <2>; > + ranges; > + > + clocks = <&clkc CLKID_USB>, <&clkc CLKID_USB1_DDR_BRIDGE>; > + clock-names = "usb_ctrl", "ddr"; > + resets = <&reset RESET_USB_OTG>; > + > + dr_mode = "otg"; > + > + phys = <&usb2_phy1>; > + phy-names = "usb2-phy1"; > + > + dwc2: usb@ff400000 { > + compatible = "amlogic,meson-g12a-usb", "snps,dwc2"; > + reg = <0x0 0xff400000 0x0 0x40000>; > + interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; > + clocks = <&clkc CLKID_USB1>; > + clock-names = "otg"; > + phys = <&usb2_phy1>; > + dr_mode = "peripheral"; > + g-rx-fifo-size = <192>; > + g-np-tx-fifo-size = <128>; > + g-tx-fifo-size = <128 128 16 16 16>; > + }; > + > + dwc3: usb@ff500000 { > + compatible = "snps,dwc3"; > + reg = <0x0 0xff500000 0x0 0x100000>; > + interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; > + dr_mode = "host"; > + maximum-speed = "high-speed"; > + snps,dis_u2_susphy_quirk; > + }; > + }; > + > ethmac: ethernet@ff3f0000 { > compatible = "amlogic,meson-axg-dwmac", > "snps,dwmac-3.70a", > @@ -187,9 +280,19 @@ > "timing-adjustment"; > rx-fifo-depth = <4096>; > tx-fifo-depth = <2048>; > + power-domains = <&pwrc PWRC_AXG_ETHERNET_MEM_ID>; > status = "disabled"; > }; > > + pcie_phy: phy@ff644000 { > + compatible = "amlogic,axg-pcie-phy"; > + reg = <0x0 0xff644000 0x0 0x1c>; > + resets = <&reset RESET_PCIE_PHY>; > + phys = <&mipi_pcie_analog_dphy>; > + phy-names = "analog"; > + #phy-cells = <0>; > + }; > + > pdm: audio-controller@ff632000 { > compatible = "amlogic,axg-pdm"; > reg = <0x0 0xff632000 0x0 0x34>; > @@ -1117,6 +1220,52 @@ > clocks = <&xtal>; > clock-names = "xtal"; > }; > + > + pwrc: power-controller { > + compatible = "amlogic,meson-axg-pwrc"; > + #power-domain-cells = <1>; > + amlogic,ao-sysctrl = <&sysctrl_AO>; > + resets = <&reset RESET_VIU>, > + <&reset RESET_VENC>, > + <&reset RESET_VCBUS>, > + <&reset RESET_VENCL>, > + <&reset RESET_VID_LOCK>; > + reset-names = "viu", "venc", "vcbus", > + "vencl", "vid_lock"; > + clocks = <&clkc CLKID_VPU>, > + <&clkc CLKID_VAPB>; > + clock-names = "vpu", "vapb"; > + /* > + * VPU clocking is provided by two identical clock paths > + * VPU_0 and VPU_1 muxed to a single clock by a glitch > + * free mux to safely change frequency while running. > + * Same for VAPB but with a final gate after the glitch free mux. > + */ > + assigned-clocks = <&clkc CLKID_VPU_0_SEL>, > + <&clkc CLKID_VPU_0>, > + <&clkc CLKID_VPU>, /* Glitch free mux */ > + <&clkc CLKID_VAPB_0_SEL>, > + <&clkc CLKID_VAPB_0>, > + <&clkc CLKID_VAPB_SEL>; /* Glitch free mux */ > + assigned-clock-parents = <&clkc CLKID_FCLK_DIV4>, > + <0>, /* Do Nothing */ > + <&clkc CLKID_VPU_0>, > + <&clkc CLKID_FCLK_DIV4>, > + <0>, /* Do Nothing */ > + <&clkc CLKID_VAPB_0>; > + assigned-clock-rates = <0>, /* Do Nothing */ > + <250000000>, > + <0>, /* Do Nothing */ > + <0>, /* Do Nothing */ > + <250000000>, > + <0>; /* Do Nothing */ > + }; > + > + mipi_pcie_analog_dphy: phy { > + compatible = "amlogic,axg-mipi-pcie-analog-phy"; > + #phy-cells = <0>; > + status = "disabled"; > + }; > }; > }; > > @@ -1129,6 +1278,19 @@ > #mbox-cells = <1>; > }; > > + mipi_dphy: phy@ff640000 { > + compatible = "amlogic,axg-mipi-dphy"; > + reg = <0x0 0xff640000 0x0 0x100>; > + clocks = <&clkc CLKID_MIPI_DSI_PHY>; > + clock-names = "pclk"; > + resets = <&reset RESET_MIPI_PHY>; > + reset-names = "phy"; > + phys = <&mipi_pcie_analog_dphy>; > + phy-names = "analog"; > + #phy-cells = <0>; > + status = "disabled"; > + }; > + > audio: bus@ff642000 { > compatible = "simple-bus"; > reg = <0x0 0xff642000 0x0 0x2000>; > @@ -1563,6 +1725,14 @@ > }; > }; > > + ge2d: ge2d@ff940000 { > + compatible = "amlogic,axg-ge2d"; > + reg = <0x0 0xff940000 0x0 0x10000>; > + interrupts = <GIC_SPI 150 IRQ_TYPE_EDGE_RISING>; > + clocks = <&clkc CLKID_VAPB>; > + resets = <&reset RESET_GE2D>; > + }; > + > gic: interrupt-controller@ffc01000 { > compatible = "arm,gic-400"; > reg = <0x0 0xffc01000 0 0x1000>, > @@ -1701,6 +1871,7 @@ > status = "disabled"; > clocks = <&xtal>, <&clkc CLKID_UART0>, <&xtal>; > clock-names = "xtal", "pclk", "baud"; > + fifo-size = <128>; > }; > }; > > @@ -1734,6 +1905,16 @@ > clock-names = "core", "clkin0", "clkin1"; > resets = <&reset RESET_SD_EMMC_C>; > }; > + > + usb2_phy1: phy@9020 { > + compatible = "amlogic,meson-gxl-usb2-phy"; > + #phy-cells = <0>; > + reg = <0x0 0x9020 0x0 0x20>; > + clocks = <&clkc CLKID_USB>; > + clock-names = "phy"; > + resets = <&reset RESET_USB_OTG>; > + reset-names = "phy"; > + }; > }; > > sram: sram@fffc0000 { > diff --git a/arch/arm/dts/meson-g12-common.dtsi b/arch/arm/dts/meson-g12-common.dtsi > index 1e83ec5b8c..00c6f53290 100644 > --- a/arch/arm/dts/meson-g12-common.dtsi > +++ b/arch/arm/dts/meson-g12-common.dtsi > @@ -17,6 +17,12 @@ > #address-cells = <2>; > #size-cells = <2>; > > + aliases { > + mmc0 = &sd_emmc_b; /* SD card */ > + mmc1 = &sd_emmc_c; /* eMMC */ > + mmc2 = &sd_emmc_a; /* SDIO */ > + }; > + > chosen { > #address-cells = <2>; > #size-cells = <2>; > @@ -122,9 +128,9 @@ > > pcie: pcie@fc000000 { > compatible = "amlogic,g12a-pcie", "snps,dw-pcie"; > - reg = <0x0 0xfc000000 0x0 0x400000 > - 0x0 0xff648000 0x0 0x2000 > - 0x0 0xfc400000 0x0 0x200000>; > + reg = <0x0 0xfc000000 0x0 0x400000>, > + <0x0 0xff648000 0x0 0x2000>, > + <0x0 0xfc400000 0x0 0x200000>; > reg-names = "elbi", "cfg", "config"; > interrupts = <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>; > #interrupt-cells = <1>; > @@ -134,8 +140,8 @@ > #address-cells = <3>; > #size-cells = <2>; > device_type = "pci"; > - ranges = <0x81000000 0 0 0x0 0xfc600000 0 0x00100000 > - 0x82000000 0 0xfc700000 0x0 0xfc700000 0 0x1900000>; > + ranges = <0x81000000 0 0 0x0 0xfc600000 0 0x00100000>, > + <0x82000000 0 0xfc700000 0x0 0xfc700000 0 0x1900000>; > > clocks = <&clkc CLKID_PCIE_PHY > &clkc CLKID_PCIE_COMB > @@ -209,7 +215,7 @@ > }; > > ethmac: ethernet@ff3f0000 { > - compatible = "amlogic,meson-axg-dwmac", > + compatible = "amlogic,meson-g12a-dwmac", > "snps,dwmac-3.70a", > "snps,dwmac"; > reg = <0x0 0xff3f0000 0x0 0x10000>, > @@ -282,6 +288,8 @@ > hwrng: rng@218 { > compatible = "amlogic,meson-rng"; > reg = <0x0 0x218 0x0 0x4>; > + clocks = <&clkc CLKID_RNG0>; > + clock-names = "core"; > }; > }; > > @@ -2001,7 +2009,7 @@ > }; > }; > > - vrtc: rtc@0a8 { > + vrtc: rtc@a8 { > compatible = "amlogic,meson-vrtc"; > reg = <0x0 0x000a8 0x0 0x4>; > }; > @@ -2179,6 +2187,12 @@ > amlogic,channel-interrupts = <64 65 66 67 68 69 70 71>; > }; > > + watchdog: watchdog@f0d0 { > + compatible = "amlogic,meson-gxbb-wdt"; > + reg = <0x0 0xf0d0 0x0 0x10>; > + clocks = <&xtal>; > + }; > + > spicc0: spi@13000 { > compatible = "amlogic,meson-g12a-spicc"; > reg = <0x0 0x13000 0x0 0x44>; > @@ -2303,6 +2317,7 @@ > clocks = <&xtal>, <&clkc CLKID_UART0>, <&xtal>; > clock-names = "xtal", "pclk", "baud"; > status = "disabled"; > + fifo-size = <128>; > }; > }; > > @@ -2380,7 +2395,7 @@ > interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; > dr_mode = "host"; > snps,dis_u2_susphy_quirk; > - snps,quirk-frame-length-adjustment; > + snps,quirk-frame-length-adjustment = <0x20>; > snps,parkmode-disable-ss-quirk; > }; > }; > diff --git a/arch/arm/dts/meson-g12a-sei510.dts b/arch/arm/dts/meson-g12a-sei510.dts > index b00d0468c7..81269ccc24 100644 > --- a/arch/arm/dts/meson-g12a-sei510.dts > +++ b/arch/arm/dts/meson-g12a-sei510.dts > @@ -181,7 +181,7 @@ > > sound { > compatible = "amlogic,axg-sound-card"; > - model = "G12A-SEI510"; > + model = "SEI510"; > audio-aux-devs = <&tdmout_a>, <&tdmout_b>, > <&tdmin_a>, <&tdmin_b>; > audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0", > diff --git a/arch/arm/dts/meson-g12b-gsking-x.dts b/arch/arm/dts/meson-g12b-gsking-x.dts > new file mode 100644 > index 0000000000..6c7bfacbad > --- /dev/null > +++ b/arch/arm/dts/meson-g12b-gsking-x.dts > @@ -0,0 +1,133 @@ > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > +/* > + * Copyright (c) 2019 BayLibre, SAS > + * Author: Neil Armstrong <narmstrong@baylibre.com> > + * Copyright (c) 2019 Christian Hewitt <christianshewitt@gmail.com> > + */ > + > +/dts-v1/; > + > +#include "meson-g12b-w400.dtsi" > +#include <dt-bindings/leds/common.h> > +#include <dt-bindings/sound/meson-g12a-tohdmitx.h> > + > +/ { > + compatible = "azw,gsking-x", "amlogic,s922x", "amlogic,g12b"; > + model = "Beelink GS-King X"; > + > + aliases { > + rtc0 = &rtc; > + rtc1 = &vrtc; > + }; > + > + gpio-keys-polled { > + compatible = "gpio-keys-polled"; > + #address-cells = <1>; > + #size-cells = <0>; > + poll-interval = <100>; > + > + power-button { > + label = "power"; > + linux,code = <KEY_POWER>; > + gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>; > + }; > + }; > + > + sound { > + compatible = "amlogic,axg-sound-card"; > + model = "GSKING-X"; > + audio-aux-devs = <&tdmout_a>; > + audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 1", > + "TDMOUT_A IN 1", "FRDDR_B OUT 1", > + "TDMOUT_A IN 2", "FRDDR_C OUT 1", > + "TDM_A Playback", "TDMOUT_A OUT"; > + > + assigned-clocks = <&clkc CLKID_MPLL2>, > + <&clkc CLKID_MPLL0>, > + <&clkc CLKID_MPLL1>; > + assigned-clock-parents = <0>, <0>, <0>; > + assigned-clock-rates = <294912000>, > + <270950400>, > + <393216000>; > + status = "okay"; > + > + dai-link-0 { > + sound-dai = <&frddr_a>; > + }; > + > + dai-link-1 { > + sound-dai = <&frddr_b>; > + }; > + > + dai-link-2 { > + sound-dai = <&frddr_c>; > + }; > + > + /* 8ch hdmi interface */ > + dai-link-3 { > + sound-dai = <&tdmif_a>; > + dai-format = "i2s"; > + dai-tdm-slot-tx-mask-0 = <1 1>; > + dai-tdm-slot-tx-mask-1 = <1 1>; > + dai-tdm-slot-tx-mask-2 = <1 1>; > + dai-tdm-slot-tx-mask-3 = <1 1>; > + mclk-fs = <256>; > + > + codec { > + sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>; > + }; > + }; > + > + dai-link-4 { > + sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; > + > + codec { > + sound-dai = <&hdmi_tx>; > + }; > + }; > + }; > +}; > + > +&arb { > + status = "okay"; > +}; > + > +&clkc_audio { > + status = "okay"; > +}; > + > +&frddr_a { > + status = "okay"; > +}; > + > +&frddr_b { > + status = "okay"; > +}; > + > +&frddr_c { > + status = "okay"; > +}; > + > +&i2c3 { > + status = "okay"; > + pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; > + pinctrl-names = "default"; > + > + rtc: rtc@51 { > + compatible = "nxp,pcf8563"; > + reg = <0x51>; > + wakeup-source; > + }; > +}; > + > +&tdmif_a { > + status = "okay"; > +}; > + > +&tdmout_a { > + status = "okay"; > +}; > + > +&tohdmitx { > + status = "okay"; > +}; > diff --git a/arch/arm/dts/meson-g12b-gtking-pro.dts b/arch/arm/dts/meson-g12b-gtking-pro.dts > index f0c56a16af..707daf9278 100644 > --- a/arch/arm/dts/meson-g12b-gtking-pro.dts > +++ b/arch/arm/dts/meson-g12b-gtking-pro.dts > @@ -11,9 +11,14 @@ > #include <dt-bindings/sound/meson-g12a-tohdmitx.h> > > / { > - compatible = "azw,gtking", "amlogic,g12b"; > + compatible = "azw,gtking", "amlogic,s922x", "amlogic,g12b"; > model = "Beelink GT-King Pro"; > > + aliases { > + rtc0 = &rtc; > + rtc1 = &vrtc; > + }; > + > gpio-keys-polled { > compatible = "gpio-keys-polled"; > #address-cells = <1>; > @@ -30,7 +35,7 @@ > leds { > compatible = "gpio-leds"; > > - white { > + led-white { > label = "power:white"; > gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>; > default-state = "on"; > @@ -39,7 +44,7 @@ > > sound { > compatible = "amlogic,axg-sound-card"; > - model = "G12B-GTKING-PRO"; > + model = "GTKING-PRO"; > audio-aux-devs = <&tdmout_b>; > audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", > "TDMOUT_B IN 1", "FRDDR_B OUT 1", > @@ -112,6 +117,18 @@ > status = "okay"; > }; > > +&i2c3 { > + status = "okay"; > + pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; > + pinctrl-names = "default"; > + > + rtc: rtc@51 { > + compatible = "nxp,pcf8563"; > + reg = <0x51>; > + wakeup-source; > + }; > +}; > + > &tdmif_b { > status = "okay"; > }; > diff --git a/arch/arm/dts/meson-g12b-gtking.dts b/arch/arm/dts/meson-g12b-gtking.dts > index eeb7bc5539..5d96c14490 100644 > --- a/arch/arm/dts/meson-g12b-gtking.dts > +++ b/arch/arm/dts/meson-g12b-gtking.dts > @@ -11,9 +11,14 @@ > #include <dt-bindings/sound/meson-g12a-tohdmitx.h> > > / { > - compatible = "azw,gtking", "amlogic,g12b"; > + compatible = "azw,gtking", "amlogic,s922x", "amlogic,g12b"; > model = "Beelink GT-King"; > > + aliases { > + rtc0 = &rtc; > + rtc1 = &vrtc; > + }; > + > spdif_dit: audio-codec-1 { > #sound-dai-cells = <0>; > compatible = "linux,spdif-dit"; > @@ -23,7 +28,7 @@ > > sound { > compatible = "amlogic,axg-sound-card"; > - model = "G12B-GTKING"; > + model = "GTKING"; > audio-aux-devs = <&tdmout_b>; > audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", > "TDMOUT_B IN 1", "FRDDR_B OUT 1", > @@ -122,6 +127,19 @@ > status = "okay"; > }; > > + > +&i2c3 { > + status = "okay"; > + pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; > + pinctrl-names = "default"; > + > + rtc: rtc@51 { > + compatible = "nxp,pcf8563"; > + reg = <0x51>; > + wakeup-source; > + }; > +}; > + > &spdifout { > pinctrl-0 = <&spdif_out_h_pins>; > pinctrl-names = "default"; > diff --git a/arch/arm/dts/meson-g12b-odroid-n2-plus.dts b/arch/arm/dts/meson-g12b-odroid-n2-plus.dts > index 5de2815ba9..ce1198ad34 100644 > --- a/arch/arm/dts/meson-g12b-odroid-n2-plus.dts > +++ b/arch/arm/dts/meson-g12b-odroid-n2-plus.dts > @@ -19,7 +19,7 @@ > regulator-min-microvolt = <680000>; > regulator-max-microvolt = <1040000>; > > - pwms = <&pwm_AO_cd 1 1500 0>; > + pwms = <&pwm_ab 0 1500 0>; > }; > > &vddcpu_b { > diff --git a/arch/arm/dts/meson-g12b-odroid-n2.dtsi b/arch/arm/dts/meson-g12b-odroid-n2.dtsi > index 6982632ae6..344573e157 100644 > --- a/arch/arm/dts/meson-g12b-odroid-n2.dtsi > +++ b/arch/arm/dts/meson-g12b-odroid-n2.dtsi > @@ -13,6 +13,8 @@ > aliases { > serial0 = &uart_AO; > ethernet0 = ðmac; > + rtc0 = &rtc; > + rtc1 = &vrtc; > }; > > dioo2133: audio-amplifier-0 { > @@ -40,7 +42,7 @@ > leds { > compatible = "gpio-leds"; > > - blue { > + led-blue { > label = "n2:blue"; > gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>; > linux,default-trigger = "heartbeat"; > @@ -211,7 +213,7 @@ > > sound { > compatible = "amlogic,axg-sound-card"; > - model = "G12B-ODROID-N2"; > + model = "ODROID-N2"; > audio-widgets = "Line", "Lineout"; > audio-aux-devs = <&tdmout_b>, <&tdmout_c>, <&tdmin_a>, > <&tdmin_b>, <&tdmin_c>, <&tdmin_lb>, > @@ -408,12 +410,12 @@ > > &ext_mdio { > external_phy: ethernet-phy@0 { > - /* Realtek RTL8211F (0x001cc916) */ > + /* Realtek RTL8211F (0x001cc916) */ > reg = <0>; > max-speed = <1000>; > > reset-assert-us = <10000>; > - reset-deassert-us = <30000>; > + reset-deassert-us = <80000>; > reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; > > interrupt-parent = <&gpio_intc>; > @@ -444,13 +446,58 @@ > }; > > &gpio { > + gpio-line-names = > + /* GPIOZ */ > + "", "", "", "", "", "", "", "", > + "", "", "", "", "", "", "", "", > + /* GPIOH */ > + "", "", "", "", "", "", "", "", > + "", > + /* BOOT */ > + "", "", "", "", "", "", "", "", > + "", "", "", "", "", "", "", "", > + /* GPIOC */ > + "", "", "", "", "", "", "", "", > + /* GPIOA */ > + "PIN_44", /* GPIOA_0 */ > + "PIN_46", /* GPIOA_1 */ > + "PIN_45", /* GPIOA_2 */ > + "PIN_47", /* GPIOA_3 */ > + "PIN_26", /* GPIOA_4 */ > + "", "", "", "", "", "", > + "PIN_42", /* GPIOA_11 */ > + "PIN_32", /* GPIOA_12 */ > + "PIN_7", /* GPIOA_13 */ > + "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_33", /* GPIOX_5 */ > + "PIN_35", /* 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_36"; /* GPIOX_19 */ > /* > * WARNING: The USB Hub on the Odroid-N2 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 { > + hog-0 { > gpio-hog; > gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>; > output-high; > @@ -478,6 +525,18 @@ > linux,rc-map-name = "rc-odroid"; > }; > > +&i2c3 { > + status = "okay"; > + pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; > + pinctrl-names = "default"; > + > + rtc: rtc@51 { > + compatible = "nxp,pcf8563"; > + reg = <0x51>; > + wakeup-source; > + }; > +}; > + > &pwm_ab { > pinctrl-0 = <&pwm_a_e_pins>; > pinctrl-names = "default"; > @@ -494,6 +553,11 @@ > status = "okay"; > }; > > +&saradc { > + status = "okay"; > + vref-supply = <&vddao_1v8>; > +}; > + > /* SD card */ > &sd_emmc_b { > status = "okay"; > diff --git a/arch/arm/dts/meson-g12b-w400.dtsi b/arch/arm/dts/meson-g12b-w400.dtsi > index 2802ddbb83..feb0885047 100644 > --- a/arch/arm/dts/meson-g12b-w400.dtsi > +++ b/arch/arm/dts/meson-g12b-w400.dtsi > @@ -264,7 +264,7 @@ > max-speed = <1000>; > > reset-assert-us = <10000>; > - reset-deassert-us = <30000>; > + reset-deassert-us = <80000>; > reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; > > interrupt-parent = <&gpio_intc>; > diff --git a/arch/arm/dts/meson-g12b.dtsi b/arch/arm/dts/meson-g12b.dtsi > index 9b8548e5f6..ee8fcae9f9 100644 > --- a/arch/arm/dts/meson-g12b.dtsi > +++ b/arch/arm/dts/meson-g12b.dtsi > @@ -135,3 +135,7 @@ > }; > }; > }; > + > +&mali { > + dma-coherent; > +}; > diff --git a/arch/arm/dts/meson-gx-libretech-pc.dtsi b/arch/arm/dts/meson-gx-libretech-pc.dtsi > index c2480bab8d..2d7032f41e 100644 > --- a/arch/arm/dts/meson-gx-libretech-pc.dtsi > +++ b/arch/arm/dts/meson-gx-libretech-pc.dtsi > @@ -186,7 +186,7 @@ > > sound { > compatible = "amlogic,gx-sound-card"; > - model = "GXL-LIBRETECH-S9XX-PC"; > + model = "LIBRETECH-PC"; > audio-aux-devs = <&dio2133>; > audio-widgets = "Speaker", "7J4-14 LEFT", > "Speaker", "7J4-11 RIGHT"; > diff --git a/arch/arm/dts/meson-gx-p23x-q20x.dtsi b/arch/arm/dts/meson-gx-p23x-q20x.dtsi > index 6b57e15aad..dafc841f7c 100644 > --- a/arch/arm/dts/meson-gx-p23x-q20x.dtsi > +++ b/arch/arm/dts/meson-gx-p23x-q20x.dtsi > @@ -121,7 +121,7 @@ > > sound { > compatible = "amlogic,gx-sound-card"; > - model = "GX-P230-Q200"; > + model = "P230-Q200"; > audio-aux-devs = <&dio2133>; > audio-widgets = "Line", "Lineout"; > audio-routing = "AU2 INL", "ACODEC LOLP", > diff --git a/arch/arm/dts/meson-gx.dtsi b/arch/arm/dts/meson-gx.dtsi > index 0edd137151..6b457b2c30 100644 > --- a/arch/arm/dts/meson-gx.dtsi > +++ b/arch/arm/dts/meson-gx.dtsi > @@ -20,6 +20,12 @@ > #address-cells = <2>; > #size-cells = <2>; > > + aliases { > + mmc0 = &sd_emmc_b; /* SD card */ > + mmc1 = &sd_emmc_c; /* eMMC */ > + mmc2 = &sd_emmc_a; /* SDIO */ > + }; > + > reserved-memory { > #address-cells = <2>; > #size-cells = <2>; > @@ -295,6 +301,7 @@ > reg = <0x0 0x84c0 0x0 0x18>; > interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>; > status = "disabled"; > + fifo-size = <128>; > }; > > uart_B: serial@84dc { > diff --git a/arch/arm/dts/meson-gxbb-nanopi-k2.dts b/arch/arm/dts/meson-gxbb-nanopi-k2.dts > index 7be3e35409..7273eed529 100644 > --- a/arch/arm/dts/meson-gxbb-nanopi-k2.dts > +++ b/arch/arm/dts/meson-gxbb-nanopi-k2.dts > @@ -7,6 +7,7 @@ > > #include "meson-gxbb.dtsi" > #include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/sound/meson-aiu.h> > > / { > compatible = "friendlyarm,nanopi-k2", "amlogic,meson-gxbb"; > @@ -130,6 +131,45 @@ > }; > }; > }; > + > + sound { > + compatible = "amlogic,gx-sound-card"; > + model = "NANOPI-K2"; > + assigned-clocks = <&clkc CLKID_MPLL0>, > + <&clkc CLKID_MPLL1>, > + <&clkc CLKID_MPLL2>; > + assigned-clock-parents = <0>, <0>, <0>; > + assigned-clock-rates = <294912000>, > + <270950400>, > + <393216000>; > + status = "okay"; > + > + dai-link-0 { > + sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>; > + }; > + > + dai-link-1 { > + sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>; > + dai-format = "i2s"; > + mclk-fs = <256>; > + > + codec-0 { > + sound-dai = <&aiu AIU_HDMI CTRL_I2S>; > + }; > + }; > + > + dai-link-2 { > + sound-dai = <&aiu AIU_HDMI CTRL_OUT>; > + > + codec-0 { > + sound-dai = <&hdmi_tx>; > + }; > + }; > + }; > +}; > + > +&aiu { > + status = "okay"; > }; > > &cec_AO { > @@ -165,7 +205,7 @@ > reg = <0>; > > reset-assert-us = <10000>; > - reset-deassert-us = <30000>; > + reset-deassert-us = <80000>; > reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; > > interrupt-parent = <&gpio_intc>; > diff --git a/arch/arm/dts/meson-gxbb-odroidc2.dts b/arch/arm/dts/meson-gxbb-odroidc2.dts > index 70fcfb7b06..201596247f 100644 > --- a/arch/arm/dts/meson-gxbb-odroidc2.dts > +++ b/arch/arm/dts/meson-gxbb-odroidc2.dts > @@ -9,6 +9,7 @@ > > #include "meson-gxbb.dtsi" > #include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/sound/meson-aiu.h> > > / { > compatible = "hardkernel,odroid-c2", "amlogic,meson-gxbb"; > @@ -172,6 +173,45 @@ > }; > }; > }; > + > + sound { > + compatible = "amlogic,gx-sound-card"; > + model = "ODROID-C2"; > + assigned-clocks = <&clkc CLKID_MPLL0>, > + <&clkc CLKID_MPLL1>, > + <&clkc CLKID_MPLL2>; > + assigned-clock-parents = <0>, <0>, <0>; > + assigned-clock-rates = <294912000>, > + <270950400>, > + <393216000>; > + status = "okay"; > + > + dai-link-0 { > + sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>; > + }; > + > + dai-link-1 { > + sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>; > + dai-format = "i2s"; > + mclk-fs = <256>; > + > + codec-0 { > + sound-dai = <&aiu AIU_HDMI CTRL_I2S>; > + }; > + }; > + > + dai-link-2 { > + sound-dai = <&aiu AIU_HDMI CTRL_OUT>; > + > + codec-0 { > + sound-dai = <&hdmi_tx>; > + }; > + }; > + }; > +}; > + > +&aiu { > + status = "okay"; > }; > > &cec_AO { > @@ -200,7 +240,7 @@ > reg = <0>; > > reset-assert-us = <10000>; > - reset-deassert-us = <30000>; > + reset-deassert-us = <80000>; > reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; > > interrupt-parent = <&gpio_intc>; > @@ -217,7 +257,7 @@ > * 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 { > + hog-0 { > gpio-hog; > gpios = <GPIOAO_4 GPIO_ACTIVE_HIGH>; > output-high; > diff --git a/arch/arm/dts/meson-gxl-s805x-libretech-ac.dts b/arch/arm/dts/meson-gxl-s805x-libretech-ac.dts > index 9e43f4dca9..2d769203f6 100644 > --- a/arch/arm/dts/meson-gxl-s805x-libretech-ac.dts > +++ b/arch/arm/dts/meson-gxl-s805x-libretech-ac.dts > @@ -118,7 +118,7 @@ > > sound { > compatible = "amlogic,gx-sound-card"; > - model = "GXL-LIBRETECH-S805X-AC"; > + model = "LIBRETECH-AC"; > audio-widgets = "Speaker", "9J5-3 LEFT", > "Speaker", "9J5-2 RIGHT"; > audio-routing = "9J5-3 LEFT", "ACODEC LOLN", > diff --git a/arch/arm/dts/meson-gxl-s905x-khadas-vim.dts b/arch/arm/dts/meson-gxl-s905x-khadas-vim.dts > index 8bcdffdf55..60feac0179 100644 > --- a/arch/arm/dts/meson-gxl-s905x-khadas-vim.dts > +++ b/arch/arm/dts/meson-gxl-s905x-khadas-vim.dts > @@ -5,9 +5,9 @@ > > /dts-v1/; > > -#include <dt-bindings/input/input.h> > - > #include "meson-gxl-s905x-p212.dtsi" > +#include <dt-bindings/input/input.h> > +#include <dt-bindings/sound/meson-aiu.h> > > / { > compatible = "khadas,vim", "amlogic,s905x", "amlogic,meson-gxl"; > @@ -42,10 +42,10 @@ > }; > }; > > - pwmleds { > + led-controller { > compatible = "pwm-leds"; > > - power { > + led-1 { > label = "vim:red:power"; > pwms = <&pwm_AO_ab 1 7812500 0>; > max-brightness = <255>; > @@ -63,6 +63,45 @@ > }; > }; > }; > + > + sound { > + compatible = "amlogic,gx-sound-card"; > + model = "KHADAS-VIM"; > + assigned-clocks = <&clkc CLKID_MPLL0>, > + <&clkc CLKID_MPLL1>, > + <&clkc CLKID_MPLL2>; > + assigned-clock-parents = <0>, <0>, <0>; > + assigned-clock-rates = <294912000>, > + <270950400>, > + <393216000>; > + status = "okay"; > + > + dai-link-0 { > + sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>; > + }; > + > + dai-link-1 { > + sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>; > + dai-format = "i2s"; > + mclk-fs = <256>; > + > + codec-0 { > + sound-dai = <&aiu AIU_HDMI CTRL_I2S>; > + }; > + }; > + > + dai-link-2 { > + sound-dai = <&aiu AIU_HDMI CTRL_OUT>; > + > + codec-0 { > + sound-dai = <&hdmi_tx>; > + }; > + }; > + }; > +}; > + > +&aiu { > + status = "okay"; > }; > > &cec_AO { > @@ -97,8 +136,7 @@ > pinctrl-names = "default"; > > rtc: rtc@51 { > - /* has to be enabled manually when a battery is connected: */ > - status = "disabled"; > + status = "okay"; > compatible = "haoyu,hym8563"; > reg = <0x51>; > #clock-cells = <0>; > diff --git a/arch/arm/dts/meson-gxl-s905x-libretech-cc-v2.dts b/arch/arm/dts/meson-gxl-s905x-libretech-cc-v2.dts > index 675eaa8796..93d8f8aff7 100644 > --- a/arch/arm/dts/meson-gxl-s905x-libretech-cc-v2.dts > +++ b/arch/arm/dts/meson-gxl-s905x-libretech-cc-v2.dts > @@ -84,7 +84,6 @@ > regulator-always-on; > }; > > - > vcck: regulator-vcck { > compatible = "regulator-fixed"; > regulator-name = "VCCK"; > @@ -124,7 +123,6 @@ > regulator-always-on; > }; > > - > vddio_card: regulator-vddio-card { > compatible = "regulator-gpio"; > regulator-name = "VDDIO_CARD"; > @@ -161,7 +159,7 @@ > > sound { > compatible = "amlogic,gx-sound-card"; > - model = "GXL-LIBRETECH-S905X-CC-V2"; > + model = "LIBRETECH-CC-V2"; > assigned-clocks = <&clkc CLKID_MPLL0>, > <&clkc CLKID_MPLL1>, > <&clkc CLKID_MPLL2>; > @@ -195,7 +193,6 @@ > }; > }; > > - > &aiu { > status = "okay"; > }; > @@ -207,7 +204,6 @@ > hdmi-phandle = <&hdmi_tx>; > }; > > - > ðmac { > status = "okay"; > }; > diff --git a/arch/arm/dts/meson-gxl-s905x-libretech-cc.dts b/arch/arm/dts/meson-gxl-s905x-libretech-cc.dts > index 5ae7bb6209..82bfabfbd3 100644 > --- a/arch/arm/dts/meson-gxl-s905x-libretech-cc.dts > +++ b/arch/arm/dts/meson-gxl-s905x-libretech-cc.dts > @@ -135,7 +135,7 @@ > > sound { > compatible = "amlogic,gx-sound-card"; > - model = "GXL-LIBRETECH-S905X-CC"; > + model = "LIBRETECH-CC"; > audio-aux-devs = <&dio2133>; > audio-widgets = "Line", "Lineout"; > audio-routing = "AU2 INL", "ACODEC LOLN", > diff --git a/arch/arm/dts/meson-gxm-khadas-vim2.dts b/arch/arm/dts/meson-gxm-khadas-vim2.dts > index bff8ec2c1c..18a4b7a6c5 100644 > --- a/arch/arm/dts/meson-gxm-khadas-vim2.dts > +++ b/arch/arm/dts/meson-gxm-khadas-vim2.dts > @@ -7,9 +7,9 @@ > > /dts-v1/; > > -#include <dt-bindings/input/input.h> > - > #include "meson-gxm.dtsi" > +#include <dt-bindings/input/input.h> > +#include <dt-bindings/sound/meson-aiu.h> > > / { > compatible = "khadas,vim2", "amlogic,s912", "amlogic,meson-gxm"; > @@ -81,10 +81,10 @@ > }; > }; > > - pwmleds { > + led-controller { > compatible = "pwm-leds"; > > - power { > + led-1 { > label = "vim:red:power"; > pwms = <&pwm_AO_ab 1 7812500 0>; > max-brightness = <255>; > @@ -145,6 +145,45 @@ > clock-frequency = <32768>; > pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ > }; > + > + sound { > + compatible = "amlogic,gx-sound-card"; > + model = "KHADAS-VIM2"; > + assigned-clocks = <&clkc CLKID_MPLL0>, > + <&clkc CLKID_MPLL1>, > + <&clkc CLKID_MPLL2>; > + assigned-clock-parents = <0>, <0>, <0>; > + assigned-clock-rates = <294912000>, > + <270950400>, > + <393216000>; > + status = "okay"; > + > + dai-link-0 { > + sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>; > + }; > + > + dai-link-1 { > + sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>; > + dai-format = "i2s"; > + mclk-fs = <256>; > + > + codec-0 { > + sound-dai = <&aiu AIU_HDMI CTRL_I2S>; > + }; > + }; > + > + dai-link-2 { > + sound-dai = <&aiu AIU_HDMI CTRL_OUT>; > + > + codec-0 { > + sound-dai = <&hdmi_tx>; > + }; > + }; > + }; > +}; > + > +&aiu { > + status = "okay"; > }; > > &cec_AO { > @@ -154,7 +193,6 @@ > hdmi-phandle = <&hdmi_tx>; > }; > > - > &cpu_cooling_maps { > map0 { > cooling-device = <&gpio_fan THERMAL_NO_LIMIT 1>; > @@ -194,7 +232,7 @@ > reg = <0>; > > reset-assert-us = <10000>; > - reset-deassert-us = <30000>; > + reset-deassert-us = <80000>; > reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; > > interrupt-parent = <&gpio_intc>; > @@ -228,8 +266,7 @@ > pinctrl-names = "default"; > > rtc: rtc@51 { > - /* has to be enabled manually when a battery is connected: */ > - status = "disabled"; > + status = "okay"; > compatible = "haoyu,hym8563"; > reg = <0x51>; > #clock-cells = <0>; > @@ -341,7 +378,7 @@ > #size-cells = <1>; > compatible = "winbond,w25q16", "jedec,spi-nor"; > reg = <0>; > - spi-max-frequency = <3000000>; > + spi-max-frequency = <104000000>; > }; > }; > > diff --git a/arch/arm/dts/meson-gxm-wetek-core2.dts b/arch/arm/dts/meson-gxm-wetek-core2.dts > index ec794c134c..1e7f77f9b5 100644 > --- a/arch/arm/dts/meson-gxm-wetek-core2.dts > +++ b/arch/arm/dts/meson-gxm-wetek-core2.dts > @@ -22,7 +22,7 @@ > leds { > compatible = "gpio-leds"; > > - blue { > + led-blue { > color = <LED_COLOR_ID_BLUE>; > function = LED_FUNCTION_STATUS; > gpios = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>; > diff --git a/arch/arm/dts/meson-gxm.dtsi b/arch/arm/dts/meson-gxm.dtsi > index fe41451122..411cc312fc 100644 > --- a/arch/arm/dts/meson-gxm.dtsi > +++ b/arch/arm/dts/meson-gxm.dtsi > @@ -42,11 +42,28 @@ > }; > }; > > + cpu0: cpu@0 { > + capacity-dmips-mhz = <1024>; > + }; > + > + cpu1: cpu@1 { > + capacity-dmips-mhz = <1024>; > + }; > + > + cpu2: cpu@2 { > + capacity-dmips-mhz = <1024>; > + }; > + > + cpu3: cpu@3 { > + capacity-dmips-mhz = <1024>; > + }; > + > cpu4: cpu@100 { > device_type = "cpu"; > compatible = "arm,cortex-a53"; > reg = <0x0 0x100>; > enable-method = "psci"; > + capacity-dmips-mhz = <1024>; > next-level-cache = <&l2>; > clocks = <&scpi_dvfs 1>; > #cooling-cells = <2>; > @@ -57,6 +74,7 @@ > compatible = "arm,cortex-a53"; > reg = <0x0 0x101>; > enable-method = "psci"; > + capacity-dmips-mhz = <1024>; > next-level-cache = <&l2>; > clocks = <&scpi_dvfs 1>; > #cooling-cells = <2>; > @@ -67,6 +85,7 @@ > compatible = "arm,cortex-a53"; > reg = <0x0 0x102>; > enable-method = "psci"; > + capacity-dmips-mhz = <1024>; > next-level-cache = <&l2>; > clocks = <&scpi_dvfs 1>; > #cooling-cells = <2>; > @@ -77,6 +96,7 @@ > compatible = "arm,cortex-a53"; > reg = <0x0 0x103>; > enable-method = "psci"; > + capacity-dmips-mhz = <1024>; > next-level-cache = <&l2>; > clocks = <&scpi_dvfs 1>; > #cooling-cells = <2>; > diff --git a/arch/arm/dts/meson-khadas-vim3.dtsi b/arch/arm/dts/meson-khadas-vim3.dtsi > index 7b46555ac5..3cf4ecb6d5 100644 > --- a/arch/arm/dts/meson-khadas-vim3.dtsi > +++ b/arch/arm/dts/meson-khadas-vim3.dtsi > @@ -6,6 +6,7 @@ > */ > > #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-tohdmitx.h> > > @@ -13,6 +14,8 @@ > aliases { > serial0 = &uart_AO; > ethernet0 = ðmac; > + rtc0 = &rtc; > + rtc1 = &vrtc; > }; > > chosen { > @@ -41,13 +44,15 @@ > compatible = "gpio-leds"; > > led-white { > - label = "vim3:white:sys"; > + color = <LED_COLOR_ID_WHITE>; > + function = LED_FUNCTION_STATUS; > gpios = <&gpio_ao GPIOAO_4 GPIO_ACTIVE_HIGH>; > linux,default-trigger = "heartbeat"; > }; > > led-red { > - label = "vim3:red"; > + color = <LED_COLOR_ID_RED>; > + function = LED_FUNCTION_STATUS; > gpios = <&gpio_expander 5 GPIO_ACTIVE_HIGH>; > }; > }; > @@ -165,12 +170,17 @@ > > sound { > compatible = "amlogic,axg-sound-card"; > - model = "G12B-KHADAS-VIM3"; > - audio-aux-devs = <&tdmout_a>; > + model = "KHADAS-VIM3"; > + audio-aux-devs = <&tdmin_a>, <&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"; > + "TDM_A Playback", "TDMOUT_A OUT", > + "TDMIN_A IN 0", "TDM_A Capture", > + "TDMIN_A IN 3", "TDM_A Loopback", > + "TODDR_A IN 0", "TDMIN_A OUT", > + "TODDR_B IN 0", "TDMIN_A OUT", > + "TODDR_C IN 0", "TDMIN_A OUT"; > > assigned-clocks = <&clkc CLKID_MPLL2>, > <&clkc CLKID_MPLL0>, > @@ -193,8 +203,20 @@ > sound-dai = <&frddr_c>; > }; > > - /* 8ch hdmi interface */ > dai-link-3 { > + sound-dai = <&toddr_a>; > + }; > + > + dai-link-4 { > + sound-dai = <&toddr_b>; > + }; > + > + dai-link-5 { > + sound-dai = <&toddr_c>; > + }; > + > + /* 8ch hdmi interface */ > + dai-link-6 { > sound-dai = <&tdmif_a>; > dai-format = "i2s"; > dai-tdm-slot-tx-mask-0 = <1 1>; > @@ -209,7 +231,7 @@ > }; > > /* hdmi glue */ > - dai-link-4 { > + dai-link-7 { > sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; > > codec { > @@ -278,12 +300,12 @@ > }; > > ðmac { > - pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; > - pinctrl-names = "default"; > - status = "okay"; > - phy-mode = "rgmii"; > - phy-handle = <&external_phy>; > - amlogic,tx-delay-ns = <2>; > + pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; > + pinctrl-names = "default"; > + status = "okay"; > + phy-mode = "rgmii"; > + phy-handle = <&external_phy>; > + amlogic,tx-delay-ns = <2>; > }; > > &frddr_a { > @@ -330,7 +352,7 @@ > #gpio-cells = <2>; > }; > > - rtc@51 { > + rtc: rtc@51 { > compatible = "haoyu,hym8563"; > reg = <0x51>; > #clock-cells = <0>; > @@ -349,9 +371,9 @@ > }; > > &pwm_ef { > - status = "okay"; > - pinctrl-0 = <&pwm_e_pins>; > - pinctrl-names = "default"; > + status = "okay"; > + pinctrl-0 = <&pwm_e_pins>; > + pinctrl-names = "default"; > }; > > &saradc { > @@ -445,15 +467,30 @@ > }; > }; > > - > &tdmif_a { > status = "okay"; > }; > > +&tdmin_a { > + status = "okay"; > +}; > + > &tdmout_a { > status = "okay"; > }; > > +&toddr_a { > + status = "okay"; > +}; > + > +&toddr_b { > + status = "okay"; > +}; > + > +&toddr_c { > + status = "okay"; > +}; > + > &tohdmitx { > status = "okay"; > }; > diff --git a/arch/arm/dts/meson-sm1-bananapi-m5.dts b/arch/arm/dts/meson-sm1-bananapi-m5.dts > new file mode 100644 > index 0000000000..effaa138b5 > --- /dev/null > +++ b/arch/arm/dts/meson-sm1-bananapi-m5.dts > @@ -0,0 +1,646 @@ > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > +/* > + * Copyright (c) 2021 BayLibre SAS > + * Author: Neil Armstrong <narmstrong@baylibre.com> > + */ > + > +/dts-v1/; > + > +#include "meson-sm1.dtsi" > +#include <dt-bindings/leds/common.h> > +#include <dt-bindings/input/linux-event-codes.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 = "bananapi,bpi-m5", "amlogic,sm1"; > + model = "Banana Pi BPI-M5"; > + > + adc_keys { > + compatible = "adc-keys"; > + io-channels = <&saradc 2>; > + io-channel-names = "buttons"; > + keyup-threshold-microvolt = <1800000>; > + > + key { > + label = "SW3"; > + linux,code = <BTN_3>; > + press-threshold-microvolt = <1700000>; > + }; > + }; > + > + aliases { > + serial0 = &uart_AO; > + ethernet0 = ðmac; > + }; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + /* TOFIX: handle CVBS_DET on SARADC channel 0 */ > + cvbs-connector { > + compatible = "composite-video-connector"; > + > + port { > + cvbs_connector_in: endpoint { > + remote-endpoint = <&cvbs_vdac_out>; > + }; > + }; > + }; > + > + emmc_pwrseq: emmc-pwrseq { > + compatible = "mmc-pwrseq-emmc"; > + reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; > + }; > + > + gpio-keys { > + compatible = "gpio-keys"; > + > + key { > + label = "SW1"; > + linux,code = <BTN_1>; > + gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>; > + interrupt-parent = <&gpio_intc>; > + interrupts = <3 IRQ_TYPE_EDGE_BOTH>; > + }; > + }; > + > + hdmi-connector { > + compatible = "hdmi-connector"; > + type = "a"; > + > + port { > + hdmi_connector_in: endpoint { > + remote-endpoint = <&hdmi_tx_tmds_out>; > + }; > + }; > + }; > + > + leds { > + compatible = "gpio-leds"; > + > + green { > + color = <LED_COLOR_ID_GREEN>; > + function = LED_FUNCTION_STATUS; > + gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>; > + }; > + > + blue { > + color = <LED_COLOR_ID_BLUE>; > + function = LED_FUNCTION_STATUS; > + gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_LOW>; > + linux,default-trigger = "heartbeat"; > + }; > + }; > + > + memory@0 { > + device_type = "memory"; > + reg = <0x0 0x0 0x0 0x40000000>; > + }; > + > + emmc_1v8: regulator-emmc_1v8 { > + compatible = "regulator-fixed"; > + regulator-name = "EMMC_1V8"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + vin-supply = <&vddao_3v3>; > + regulator-always-on; > + }; > + > + dc_in: regulator-dc_in { > + compatible = "regulator-fixed"; > + regulator-name = "DC_IN"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + regulator-always-on; > + }; > + > + vddio_c: regulator-vddio_c { > + compatible = "regulator-gpio"; > + regulator-name = "VDDIO_C"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3300000>; > + > + enable-gpio = <&gpio GPIOE_2 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + regulator-always-on; > + > + gpios = <&gpio_ao GPIOAO_6 GPIO_OPEN_DRAIN>; > + gpios-states = <1>; > + > + states = <1800000 0>, > + <3300000 1>; > + }; > + > + tflash_vdd: regulator-tflash_vdd { > + compatible = "regulator-fixed"; > + regulator-name = "TFLASH_VDD"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + vin-supply = <&dc_in>; > + gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>; > + enable-active-high; > + regulator-always-on; > + }; > + > + 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 = <&dc_in>; > + regulator-always-on; > + }; > + > + vddcpu: regulator-vddcpu { > + /* > + * SY8120B1ABC DC/DC Regulator. > + */ > + compatible = "pwm-regulator"; > + > + regulator-name = "VDDCPU"; > + regulator-min-microvolt = <690000>; > + regulator-max-microvolt = <1050000>; > + > + vin-supply = <&dc_in>; > + > + pwms = <&pwm_AO_cd 1 1250 0>; > + pwm-dutycycle-range = <100 0>; > + > + regulator-boot-on; > + regulator-always-on; > + }; > + > + /* USB Hub Power Enable */ > + vl_pwr_en: regulator-vl_pwr_en { > + compatible = "regulator-fixed"; > + regulator-name = "VL_PWR_EN"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + vin-supply = <&dc_in>; > + > + gpio = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + }; > + > + sound { > + compatible = "amlogic,axg-sound-card"; > + model = "BPI-M5"; > + audio-widgets = "Line", "Lineout"; > + audio-aux-devs = <&tdmout_b>, <&tdmout_c>, > + <&tdmin_a>, <&tdmin_b>, <&tdmin_c>; > + 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", > + "TDMOUT_C IN 0", "FRDDR_A OUT 2", > + "TDMOUT_C IN 1", "FRDDR_B OUT 2", > + "TDMOUT_C IN 2", "FRDDR_C OUT 2", > + "TDM_C Playback", "TDMOUT_C OUT", > + "TDMIN_A IN 4", "TDM_B Loopback", > + "TDMIN_B IN 4", "TDM_B Loopback", > + "TDMIN_C IN 4", "TDM_B Loopback", > + "TDMIN_A IN 5", "TDM_C Loopback", > + "TDMIN_B IN 5", "TDM_C Loopback", > + "TDMIN_C IN 5", "TDM_C Loopback", > + "TODDR_A IN 0", "TDMIN_A OUT", > + "TODDR_B IN 0", "TDMIN_A OUT", > + "TODDR_C IN 0", "TDMIN_A OUT", > + "TODDR_A IN 1", "TDMIN_B OUT", > + "TODDR_B IN 1", "TDMIN_B OUT", > + "TODDR_C IN 1", "TDMIN_B OUT", > + "TODDR_A IN 2", "TDMIN_C OUT", > + "TODDR_B IN 2", "TDMIN_C OUT", > + "TODDR_C IN 2", "TDMIN_C OUT", > + "Lineout", "ACODEC LOLP", > + "Lineout", "ACODEC LORP"; > + > + assigned-clocks = <&clkc CLKID_MPLL2>, > + <&clkc CLKID_MPLL0>, > + <&clkc CLKID_MPLL1>; > + assigned-clock-parents = <0>, <0>, <0>; > + assigned-clock-rates = <294912000>, > + <270950400>, > + <393216000>; > + status = "okay"; > + > + dai-link-0 { > + sound-dai = <&frddr_a>; > + }; > + > + dai-link-1 { > + sound-dai = <&frddr_b>; > + }; > + > + dai-link-2 { > + sound-dai = <&frddr_c>; > + }; > + > + dai-link-3 { > + sound-dai = <&toddr_a>; > + }; > + > + dai-link-4 { > + sound-dai = <&toddr_b>; > + }; > + > + dai-link-5 { > + sound-dai = <&toddr_c>; > + }; > + > + /* 8ch hdmi interface */ > + dai-link-6 { > + sound-dai = <&tdmif_b>; > + dai-format = "i2s"; > + dai-tdm-slot-tx-mask-0 = <1 1>; > + dai-tdm-slot-tx-mask-1 = <1 1>; > + dai-tdm-slot-tx-mask-2 = <1 1>; > + dai-tdm-slot-tx-mask-3 = <1 1>; > + mclk-fs = <256>; > + > + codec-0 { > + sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; > + }; > + > + codec-1 { > + sound-dai = <&toacodec TOACODEC_IN_B>; > + }; > + }; > + > + /* i2s jack output interface */ > + dai-link-7 { > + sound-dai = <&tdmif_c>; > + dai-format = "i2s"; > + dai-tdm-slot-tx-mask-0 = <1 1>; > + mclk-fs = <256>; > + > + codec-0 { > + sound-dai = <&tohdmitx TOHDMITX_I2S_IN_C>; > + }; > + > + codec-1 { > + sound-dai = <&toacodec TOACODEC_IN_C>; > + }; > + }; > + > + /* hdmi glue */ > + dai-link-8 { > + sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; > + > + codec { > + sound-dai = <&hdmi_tx>; > + }; > + }; > + > + /* acodec glue */ > + dai-link-9 { > + sound-dai = <&toacodec TOACODEC_OUT>; > + > + codec { > + sound-dai = <&acodec>; > + }; > + }; > + }; > +}; > + > +&acodec { > + AVDD-supply = <&vddao_1v8>; > + status = "okay"; > +}; > + > +&arb { > + status = "okay"; > +}; > + > +&clkc_audio { > + status = "okay"; > +}; > + > +&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>; > +}; > + > +&cvbs_vdac_port { > + cvbs_vdac_out: endpoint { > + remote-endpoint = <&cvbs_connector_in>; > + }; > +}; > + > +&ext_mdio { > + external_phy: ethernet-phy@0 { > + /* Realtek RTL8211F (0x001cc916) */ > + reg = <0>; > + max-speed = <1000>; > + > + interrupt-parent = <&gpio_intc>; > + /* MAC_INTR on GPIOZ_14 */ > + interrupts = <26 IRQ_TYPE_LEVEL_LOW>; > + }; > +}; > + > +ðmac { > + pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; > + pinctrl-names = "default"; > + status = "okay"; > + phy-mode = "rgmii-txid"; > + phy-handle = <&external_phy>; > +}; > + > +&frddr_a { > + status = "okay"; > +}; > + > +&frddr_b { > + status = "okay"; > +}; > + > +&frddr_c { > + status = "okay"; > +}; > + > +&gpio { > + gpio-line-names = > + /* GPIOZ */ > + "ETH_MDIO", /* GPIOZ_0 */ > + "ETH_MDC", /* GPIOZ_1 */ > + "ETH_RXCLK", /* GPIOZ_2 */ > + "ETH_RX_DV", /* GPIOZ_3 */ > + "ETH_RXD0", /* GPIOZ_4 */ > + "ETH_RXD1", /* GPIOZ_5 */ > + "ETH_RXD2", /* GPIOZ_6 */ > + "ETH_RXD3", /* GPIOZ_7 */ > + "ETH_TXCLK", /* GPIOZ_8 */ > + "ETH_TXEN", /* GPIOZ_9 */ > + "ETH_TXD0", /* GPIOZ_10 */ > + "ETH_TXD1", /* GPIOZ_11 */ > + "ETH_TXD2", /* GPIOZ_12 */ > + "ETH_TXD3", /* GPIOZ_13 */ > + "ETH_INTR", /* GPIOZ_14 */ > + "ETH_NRST", /* GPIOZ_15 */ > + /* GPIOH */ > + "HDMI_SDA", /* GPIOH_0 */ > + "HDMI_SCL", /* GPIOH_1 */ > + "HDMI_HPD", /* GPIOH_2 */ > + "HDMI_CEC", /* GPIOH_3 */ > + "VL-RST_N", /* GPIOH_4 */ > + "CON1-P36", /* GPIOH_5 */ > + "VL-PWREN", /* GPIOH_6 */ > + "WiFi_3V3_1V8", /* GPIOH_7 */ > + "TFLASH_VDD_EN", /* GPIOH_8 */ > + /* BOOT */ > + "eMMC_D0", /* BOOT_0 */ > + "eMMC_D1", /* BOOT_1 */ > + "eMMC_D2", /* BOOT_2 */ > + "eMMC_D3", /* BOOT_3 */ > + "eMMC_D4", /* BOOT_4 */ > + "eMMC_D5", /* BOOT_5 */ > + "eMMC_D6", /* BOOT_6 */ > + "eMMC_D7", /* BOOT_7 */ > + "eMMC_CLK", /* BOOT_8 */ > + "", > + "eMMC_CMD", /* BOOT_10 */ > + "", > + "eMMC_RST#", /* BOOT_12 */ > + "eMMC_DS", /* BOOT_13 */ > + /* GPIOC */ > + "SD_D0_B", /* GPIOC_0 */ > + "SD_D1_B", /* GPIOC_1 */ > + "SD_D2_B", /* GPIOC_2 */ > + "SD_D3_B", /* GPIOC_3 */ > + "SD_CLK_B", /* GPIOC_4 */ > + "SD_CMD_B", /* GPIOC_5 */ > + "CARD_EN_DET", /* GPIOC_6 */ > + "", > + /* GPIOA */ > + "", "", "", "", "", "", "", "", > + "", "", "", "", "", "", > + "CON1-P27", /* GPIOA_14 */ > + "CON1-P28", /* GPIOA_15 */ > + /* GPIOX */ > + "CON1-P16", /* GPIOX_0 */ > + "CON1-P18", /* GPIOX_1 */ > + "CON1-P22", /* GPIOX_2 */ > + "CON1-P11", /* GPIOX_3 */ > + "CON1-P13", /* GPIOX_4 */ > + "CON1-P07", /* GPIOX_5 */ > + "CON1-P33", /* GPIOX_6 */ > + "CON1-P15", /* GPIOX_7 */ > + "CON1-P19", /* GPIOX_8 */ > + "CON1-P21", /* GPIOX_9 */ > + "CON1-P24", /* GPIOX_10 */ > + "CON1-P23", /* GPIOX_11 */ > + "CON1-P08", /* GPIOX_12 */ > + "CON1-P10", /* GPIOX_13 */ > + "CON1-P29", /* GPIOX_14 */ > + "CON1-P31", /* GPIOX_15 */ > + "CON1-P26", /* GPIOX_16 */ > + "CON1-P03", /* GPIOX_17 */ > + "CON1-P05", /* GPIOX_18 */ > + "CON1-P32"; /* GPIOX_19 */ > + > + /* > + * WARNING: The USB Hub on the BPI-M5 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 */ > + "DEBUG TX", /* GPIOAO_0 */ > + "DEBUG RX", /* GPIOAO_1 */ > + "SYS_LED2", /* GPIOAO_2 */ > + "UPDATE_KEY", /* GPIOAO_3 */ > + "CON1-P40", /* GPIOAO_4 */ > + "IR_IN", /* GPIOAO_5 */ > + "TF_3V3N_1V8_EN", /* GPIOAO_6 */ > + "CON1-P35", /* GPIOAO_7 */ > + "CON1-P12", /* GPIOAO_8 */ > + "CON1-P37", /* GPIOAO_9 */ > + "CON1-P38", /* GPIOAO_10 */ > + "SYS_LED", /* GPIOAO_11 */ > + /* GPIOE */ > + "VDDEE_PWM", /* GPIOE_0 */ > + "VDDCPU_PWM", /* GPIOE_1 */ > + "TF_PWR_EN"; /* GPIOE_2 */ > +}; > + > +&hdmi_tx { > + status = "okay"; > + pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; > + pinctrl-names = "default"; > + hdmi-supply = <&dc_in>; > +}; > + > +&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"; > +}; > + > +&pwm_AO_cd { > + pinctrl-0 = <&pwm_ao_d_e_pins>; > + pinctrl-names = "default"; > + clocks = <&xtal>; > + clock-names = "clkin1"; > + status = "okay"; > +}; > + > +&saradc { > + status = "okay"; > + vref-supply = <&vddao_1v8>; > +}; > + > +/* 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; > + > + /* TOFIX: SD card is barely usable in SDR modes */ > + > + cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; > + vmmc-supply = <&tflash_vdd>; > + 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 = <&vddao_3v3>; > + vqmmc-supply = <&emmc_1v8>; > +}; > + > +&tdmif_b { > + status = "okay"; > +}; > + > +&tdmif_c { > + status = "okay"; > +}; > + > +&tdmin_a { > + status = "okay"; > +}; > + > +&tdmin_b { > + status = "okay"; > +}; > + > +&tdmin_c { > + status = "okay"; > +}; > + > +&tdmout_b { > + status = "okay"; > +}; > + > +&tdmout_c { > + status = "okay"; > +}; > + > +&toacodec { > + status = "okay"; > +}; > + > +&tohdmitx { > + status = "okay"; > +}; > + > +&toddr_a { > + status = "okay"; > +}; > + > +&toddr_b { > + status = "okay"; > +}; > + > +&toddr_c { > + status = "okay"; > +}; > + > +&uart_AO { > + status = "okay"; > + pinctrl-0 = <&uart_ao_a_pins>; > + pinctrl-names = "default"; > +}; > + > +&usb { > + status = "okay"; > +}; > + > +&usb2_phy0 { > + phy-supply = <&dc_in>; > +}; > + > +&usb2_phy1 { > + /* Enable the hub which is connected to this port */ > + phy-supply = <&vl_pwr_en>; > +}; > diff --git a/arch/arm/dts/meson-sm1-khadas-vim3l.dts b/arch/arm/dts/meson-sm1-khadas-vim3l.dts > index 4b517ca720..f2c0981435 100644 > --- a/arch/arm/dts/meson-sm1-khadas-vim3l.dts > +++ b/arch/arm/dts/meson-sm1-khadas-vim3l.dts > @@ -32,6 +32,19 @@ > regulator-boot-on; > regulator-always-on; > }; > + > + sound { > + model = "G12B-KHADAS-VIM3L"; > + 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", > + "TDMIN_A IN 0", "TDM_A Capture", > + "TDMIN_A IN 13", "TDM_A Loopback", > + "TODDR_A IN 0", "TDMIN_A OUT", > + "TODDR_B IN 0", "TDMIN_A OUT", > + "TODDR_C IN 0", "TDMIN_A OUT"; > + }; > }; > > &cpu0 { > @@ -89,13 +102,12 @@ > status = "okay"; > }; > > -&sd_emmc_a { > - sd-uhs-sdr50; > -}; > - > &usb { > phys = <&usb2_phy0>, <&usb2_phy1>; > phy-names = "usb2-phy0", "usb2-phy1"; > }; > */ > > +&sd_emmc_a { > + sd-uhs-sdr50; > +}; > diff --git a/arch/arm/dts/meson-sm1-odroid-c4.dts b/arch/arm/dts/meson-sm1-odroid-c4.dts > index cf5a98f0e4..8c30ce6368 100644 > --- a/arch/arm/dts/meson-sm1-odroid-c4.dts > +++ b/arch/arm/dts/meson-sm1-odroid-c4.dts > @@ -5,34 +5,12 @@ > > /dts-v1/; > > -#include "meson-sm1.dtsi" > -#include <dt-bindings/gpio/meson-g12a-gpio.h> > -#include <dt-bindings/leds/common.h> > -#include <dt-bindings/sound/meson-g12a-tohdmitx.h> > +#include "meson-sm1-odroid.dtsi" > > / { > compatible = "hardkernel,odroid-c4", "amlogic,sm1"; > model = "Hardkernel ODROID-C4"; > > - aliases { > - serial0 = &uart_AO; > - ethernet0 = ðmac; > - }; > - > - chosen { > - stdout-path = "serial0:115200n8"; > - }; > - > - 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"; > > @@ -45,324 +23,19 @@ > }; > }; > > - 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>; > - }; > - }; > - }; > - > sound { > - compatible = "amlogic,axg-sound-card"; > - model = "SM1-ODROID-C4"; > - 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"; > - > - assigned-clocks = <&clkc CLKID_MPLL2>, > - <&clkc CLKID_MPLL0>, > - <&clkc CLKID_MPLL1>; > - assigned-clock-parents = <0>, <0>, <0>; > - assigned-clock-rates = <294912000>, > - <270950400>, > - <393216000>; > - status = "okay"; > - > - dai-link-0 { > - sound-dai = <&frddr_a>; > - }; > - > - dai-link-1 { > - sound-dai = <&frddr_b>; > - }; > - > - dai-link-2 { > - sound-dai = <&frddr_c>; > - }; > - > - /* 8ch hdmi interface */ > - dai-link-3 { > - sound-dai = <&tdmif_b>; > - dai-format = "i2s"; > - dai-tdm-slot-tx-mask-0 = <1 1>; > - dai-tdm-slot-tx-mask-1 = <1 1>; > - dai-tdm-slot-tx-mask-2 = <1 1>; > - dai-tdm-slot-tx-mask-3 = <1 1>; > - mclk-fs = <256>; > - > - codec { > - sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; > - }; > - }; > - > - /* hdmi glue */ > - dai-link-4 { > - sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; > - > - codec { > - sound-dai = <&hdmi_tx>; > - }; > - }; > - }; > -}; > - > -&arb { > - status = "okay"; > -}; > - > -&clkc_audio { > - status = "okay"; > -}; > - > -&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@0 { > - /* Realtek RTL8211F (0x001cc916) */ > - reg = <0>; > - max-speed = <1000>; > - > - interrupt-parent = <&gpio_intc>; > - /* MAC_INTR on GPIOZ_14 */ > - interrupts = <26 IRQ_TYPE_LEVEL_LOW>; > + model = "ODROID-C4"; > }; > }; > > -ðmac { > - pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; > - pinctrl-names = "default"; > - status = "okay"; > - phy-mode = "rgmii"; > - phy-handle = <&external_phy>; > - amlogic,tx-delay-ns = <2>; > -}; > - > -&frddr_a { > - status = "okay"; > -}; > - > -&frddr_b { > - status = "okay"; > -}; > - > -&frddr_c { > - status = "okay"; > -}; > - > &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 { > + hog-0 { > gpio-hog; > gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>; > output-high; > @@ -370,121 +43,6 @@ > }; > }; > > -&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>; > -}; > - > -&tdmif_b { > - status = "okay"; > -}; > - > -&tdmout_b { > - status = "okay"; > -}; > - > -&tohdmitx { > - status = "okay"; > -}; > - > -&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-odroid-hc4.dts b/arch/arm/dts/meson-sm1-odroid-hc4.dts > new file mode 100644 > index 0000000000..f3f953225b > --- /dev/null > +++ b/arch/arm/dts/meson-sm1-odroid-hc4.dts > @@ -0,0 +1,140 @@ > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > +/* > + * Copyright (c) 2020 Dongjin Kim <tobetter@gmail.com> > + */ > + > +/dts-v1/; > + > +#include "meson-sm1-odroid.dtsi" > + > +/ { > + compatible = "hardkernel,odroid-hc4", "amlogic,sm1"; > + model = "Hardkernel ODROID-HC4"; > + > + aliases { > + rtc0 = &rtc; > + rtc1 = &vrtc; > + }; > + > + fan0: pwm-fan { > + compatible = "pwm-fan"; > + #cooling-cells = <2>; > + cooling-min-state = <0>; > + cooling-max-state = <3>; > + cooling-levels = <0 120 170 220>; > + pwms = <&pwm_cd 1 40000 0>; > + }; > + > + 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; > + }; > + > + led-red { > + color = <LED_COLOR_ID_RED>; > + function = LED_FUNCTION_POWER; > + gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>; > + default-state = "on"; > + }; > + }; > + > + /* Powers the SATA Disk 0 regulator, which is enabled when a disk load is detected */ > + p12v_0: regulator-p12v_0 { > + compatible = "regulator-fixed"; > + regulator-name = "P12V_0"; > + regulator-min-microvolt = <12000000>; > + regulator-max-microvolt = <12000000>; > + vin-supply = <&main_12v>; > + > + gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>; > + enable-active-high; > + regulator-always-on; > + }; > + > + /* Powers the SATA Disk 1 regulator, which is enabled when a disk load is detected */ > + p12v_1: regulator-p12v_1 { > + compatible = "regulator-fixed"; > + regulator-name = "P12V_1"; > + regulator-min-microvolt = <12000000>; > + regulator-max-microvolt = <12000000>; > + vin-supply = <&main_12v>; > + > + gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>; > + enable-active-high; > + regulator-always-on; > + }; > + > + sound { > + model = "ODROID-HC4"; > + }; > +}; > + > +&cpu_thermal { > + cooling-maps { > + map { > + trip = <&cpu_passive>; > + cooling-device = <&fan0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; > + }; > + }; > +}; > + > +&ir { > + linux,rc-map-name = "rc-odroid"; > +}; > + > +&i2c2 { > + status = "okay"; > + pinctrl-0 = <&i2c2_sda_x_pins>, <&i2c2_sck_x_pins>; > + pinctrl-names = "default"; > + > + rtc: rtc@51 { > + status = "okay"; > + compatible = "nxp,pcf8563"; > + reg = <0x51>; > + wakeup-source; > + }; > +}; > + > +&pcie { > + status = "okay"; > + reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>; > +}; > + > +&pwm_cd { > + status = "okay"; > + pinctrl-names = "default"; > + pinctrl-0 = <&pwm_d_x6_pins>; > +}; > + > +&sd_emmc_c { > + status = "disabled"; > +}; > + > +&spifc { > + status = "okay"; > + pinctrl-0 = <&nor_pins>; > + pinctrl-names = "default"; > + > + spi-flash@0 { > + #address-cells = <1>; > + #size-cells = <1>; > + compatible = "jedec,spi-nor"; > + reg = <0>; > + spi-max-frequency = <104000000>; > + }; > +}; > + > +&usb { > + phys = <&usb2_phy1>; > + phy-names = "usb2-phy1"; > +}; > + > +&usb2_phy0 { > + status = "disabled"; > +}; > diff --git a/arch/arm/dts/meson-sm1-odroid.dtsi b/arch/arm/dts/meson-sm1-odroid.dtsi > new file mode 100644 > index 0000000000..fd0ad85c16 > --- /dev/null > +++ b/arch/arm/dts/meson-sm1-odroid.dtsi > @@ -0,0 +1,449 @@ > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > +/* > + * Copyright (c) 2020 Dongjin Kim <tobetter@gmail.com> > + */ > + > +#include "meson-sm1.dtsi" > +#include <dt-bindings/gpio/meson-g12a-gpio.h> > +#include <dt-bindings/leds/common.h> > +#include <dt-bindings/sound/meson-g12a-tohdmitx.h> > + > +/ { > + aliases { > + serial0 = &uart_AO; > + ethernet0 = ðmac; > + }; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + 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>; > + }; > + > + 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_OPEN_DRAIN>; > + 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>; > + vin-supply = <&vcc_5v>; > + > + enable-gpio = <&gpio GPIOE_2 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + regulator-always-on; > + > + gpios = <&gpio_ao GPIOAO_6 GPIO_OPEN_SOURCE>; > + 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>; > + gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>; > + enable-active-high; > + }; > + > + 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; > + }; > + > + 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>; > + }; > + }; > + }; > + > + sound { > + compatible = "amlogic,axg-sound-card"; > + 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"; > + > + assigned-clocks = <&clkc CLKID_MPLL2>, > + <&clkc CLKID_MPLL0>, > + <&clkc CLKID_MPLL1>; > + assigned-clock-parents = <0>, <0>, <0>; > + assigned-clock-rates = <294912000>, > + <270950400>, > + <393216000>; > + status = "okay"; > + > + dai-link-0 { > + sound-dai = <&frddr_a>; > + }; > + > + dai-link-1 { > + sound-dai = <&frddr_b>; > + }; > + > + dai-link-2 { > + sound-dai = <&frddr_c>; > + }; > + > + /* 8ch hdmi interface */ > + dai-link-3 { > + sound-dai = <&tdmif_b>; > + dai-format = "i2s"; > + dai-tdm-slot-tx-mask-0 = <1 1>; > + dai-tdm-slot-tx-mask-1 = <1 1>; > + dai-tdm-slot-tx-mask-2 = <1 1>; > + dai-tdm-slot-tx-mask-3 = <1 1>; > + mclk-fs = <256>; > + > + codec { > + sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; > + }; > + }; > + > + /* hdmi glue */ > + dai-link-4 { > + sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; > + > + codec { > + sound-dai = <&hdmi_tx>; > + }; > + }; > + }; > +}; > + > +&arb { > + status = "okay"; > +}; > + > +&clkc_audio { > + status = "okay"; > +}; > + > +&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@0 { > + /* Realtek RTL8211F (0x001cc916) */ > + reg = <0>; > + max-speed = <1000>; > + > + interrupt-parent = <&gpio_intc>; > + /* MAC_INTR on GPIOZ_14 */ > + interrupts = <26 IRQ_TYPE_LEVEL_LOW>; > + }; > +}; > + > +ðmac { > + pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; > + pinctrl-names = "default"; > + status = "okay"; > + phy-mode = "rgmii"; > + phy-handle = <&external_phy>; > + amlogic,tx-delay-ns = <2>; > +}; > + > +&frddr_a { > + status = "okay"; > +}; > + > +&frddr_b { > + status = "okay"; > +}; > + > +&frddr_c { > + status = "okay"; > +}; > + > +&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 */ > +}; > + > +&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"; > +}; > + > +&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>; > +}; > + > +&tdmif_b { > + status = "okay"; > +}; > + > +&tdmout_b { > + status = "okay"; > +}; > + > +&tohdmitx { > + status = "okay"; > +}; > + > +&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>; > +}; > + > diff --git a/arch/arm/dts/meson-sm1-sei610.dts b/arch/arm/dts/meson-sm1-sei610.dts > index 5ab139a34c..2194a77897 100644 > --- a/arch/arm/dts/meson-sm1-sei610.dts > +++ b/arch/arm/dts/meson-sm1-sei610.dts > @@ -101,20 +101,20 @@ > }; > }; > > - leds { > + led-controller-1 { > compatible = "gpio-leds"; > > - led-bluetooth { > + led-1 { > label = "sei610:blue:bt"; > gpios = <&gpio GPIOC_7 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; > default-state = "off"; > }; > }; > > - pwmleds { > + led-controller-2 { > compatible = "pwm-leds"; > > - power { > + led-2 { > label = "sei610:red:power"; > pwms = <&pwm_AO_ab 0 30518 0>; > max-brightness = <255>; > @@ -220,7 +220,7 @@ > > sound { > compatible = "amlogic,axg-sound-card"; > - model = "SM1-SEI610"; > + model = "SEI610"; > audio-aux-devs = <&tdmout_a>, <&tdmout_b>, > <&tdmin_a>, <&tdmin_b>; > audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0", > diff --git a/arch/arm/dts/meson-sm1.dtsi b/arch/arm/dts/meson-sm1.dtsi > index 71317f5aad..3d8b1f4f20 100644 > --- a/arch/arm/dts/meson-sm1.dtsi > +++ b/arch/arm/dts/meson-sm1.dtsi > @@ -130,7 +130,7 @@ > opp-microvolt = <790000>; > }; > > - opp-1512000000 { > + opp-1500000000 { > opp-hz = /bits/ 64 <1500000000>; > opp-microvolt = <800000>; > }; > @@ -401,6 +401,16 @@ > status = "disabled"; > }; > > + toacodec: audio-controller@740 { > + compatible = "amlogic,sm1-toacodec", > + "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@744 { > compatible = "amlogic,sm1-tohdmitx", > "amlogic,g12a-tohdmitx"; > diff --git a/include/dt-bindings/clock/axg-clkc.h b/include/dt-bindings/clock/axg-clkc.h > index fd1f938c38..93752ea107 100644 > --- a/include/dt-bindings/clock/axg-clkc.h > +++ b/include/dt-bindings/clock/axg-clkc.h > @@ -70,7 +70,31 @@ > #define CLKID_HIFI_PLL 69 > #define CLKID_PCIE_CML_EN0 79 > #define CLKID_PCIE_CML_EN1 80 > -#define CLKID_MIPI_ENABLE 81 > #define CLKID_GEN_CLK 84 > +#define CLKID_VPU_0_SEL 92 > +#define CLKID_VPU_0 93 > +#define CLKID_VPU_1_SEL 95 > +#define CLKID_VPU_1 96 > +#define CLKID_VPU 97 > +#define CLKID_VAPB_0_SEL 99 > +#define CLKID_VAPB_0 100 > +#define CLKID_VAPB_1_SEL 102 > +#define CLKID_VAPB_1 103 > +#define CLKID_VAPB_SEL 104 > +#define CLKID_VAPB 105 > +#define CLKID_VCLK 106 > +#define CLKID_VCLK2 107 > +#define CLKID_VCLK_DIV1 122 > +#define CLKID_VCLK_DIV2 123 > +#define CLKID_VCLK_DIV4 124 > +#define CLKID_VCLK_DIV6 125 > +#define CLKID_VCLK_DIV12 126 > +#define CLKID_VCLK2_DIV1 127 > +#define CLKID_VCLK2_DIV2 128 > +#define CLKID_VCLK2_DIV4 129 > +#define CLKID_VCLK2_DIV6 130 > +#define CLKID_VCLK2_DIV12 131 > +#define CLKID_CTS_ENCL 133 > +#define CLKID_VDIN_MEAS 136 > > #endif /* __AXG_CLKC_H */ > diff --git a/include/dt-bindings/clock/g12a-clkc.h b/include/dt-bindings/clock/g12a-clkc.h > index 40d49940d8..a93b58c5e1 100644 > --- a/include/dt-bindings/clock/g12a-clkc.h > +++ b/include/dt-bindings/clock/g12a-clkc.h > @@ -147,5 +147,7 @@ > #define CLKID_SPICC1_SCLK 261 > #define CLKID_NNA_AXI_CLK 264 > #define CLKID_NNA_CORE_CLK 267 > +#define CLKID_MIPI_DSI_PXCLK_SEL 269 > +#define CLKID_MIPI_DSI_PXCLK 270 > > #endif /* __G12A_CLKC_H */ > -- > 2.25.1 > -- Tom [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 2021-09-08 15:46 ` [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Tom Rini @ 2021-09-09 9:42 ` Neil Armstrong 2021-09-09 11:29 ` Tom Rini 0 siblings, 1 reply; 14+ messages in thread From: Neil Armstrong @ 2021-09-09 9:42 UTC (permalink / raw) To: Tom Rini; +Cc: u-boot, u-boot-amlogic Hi Tom, On 08/09/2021 17:46, Tom Rini wrote: > On Wed, Sep 08, 2021 at 04:17:20PM +0200, Neil Armstrong wrote: > >> Import Amlogic DT changes from Linux commit 7d2a07b76933 ("Linux 5.14"), >> dt-bindings clock changes and new meson-g12b-gsking-x.dts, >> meson-sm1-bananapi-m5 & odroid-hc4 boards. >> >> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> > > Given some other related email threads, I'm curious. Does this mean > that everything U-Boot specific is currently in -u-boot.dtsi files? Or > is there some manual syncing within the main dts files (aside from > perhaps needing to #include a -u-boot.dtsi) ? Thanks! The dts, dtsi and bindings files are copied verbatim from Linux and all the U-Boot specific changes are in the -u-boot.dtsi files indeed. Is this an issue somehow ? Neil ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 2021-09-09 9:42 ` Neil Armstrong @ 2021-09-09 11:29 ` Tom Rini 0 siblings, 0 replies; 14+ messages in thread From: Tom Rini @ 2021-09-09 11:29 UTC (permalink / raw) To: Neil Armstrong; +Cc: u-boot, u-boot-amlogic [-- Attachment #1: Type: text/plain, Size: 991 bytes --] On Thu, Sep 09, 2021 at 11:42:34AM +0200, Neil Armstrong wrote: > Hi Tom, > > On 08/09/2021 17:46, Tom Rini wrote: > > On Wed, Sep 08, 2021 at 04:17:20PM +0200, Neil Armstrong wrote: > > > >> Import Amlogic DT changes from Linux commit 7d2a07b76933 ("Linux 5.14"), > >> dt-bindings clock changes and new meson-g12b-gsking-x.dts, > >> meson-sm1-bananapi-m5 & odroid-hc4 boards. > >> > >> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> > > > > Given some other related email threads, I'm curious. Does this mean > > that everything U-Boot specific is currently in -u-boot.dtsi files? Or > > is there some manual syncing within the main dts files (aside from > > perhaps needing to #include a -u-boot.dtsi) ? Thanks! > > The dts, dtsi and bindings files are copied verbatim from Linux and all > the U-Boot specific changes are in the -u-boot.dtsi files indeed. > > Is this an issue somehow ? Great, that's exactly what I was hoping to hear. -- Tom [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 2021-09-08 14:17 [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Neil Armstrong ` (8 preceding siblings ...) 2021-09-08 15:46 ` [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Tom Rini @ 2021-09-15 7:49 ` Vyacheslav 2021-09-15 8:15 ` Neil Armstrong 9 siblings, 1 reply; 14+ messages in thread From: Vyacheslav @ 2021-09-15 7:49 UTC (permalink / raw) To: u-boot-amlogic, narmstrong, u-boot 08.09.2021 17:17, Neil Armstrong via groups.io wrote: > diff --git a/arch/arm/dts/meson-axg.dtsi b/arch/arm/dts/meson-axg.dtsi > index b9efc84692..3f5254eeb4 100644 > --- a/arch/arm/dts/meson-axg.dtsi > +++ b/arch/arm/dts/meson-axg.dtsi ... > + > + usb: usb@ffe09080 { > + compatible = "amlogic,meson-axg-usb-ctrl"; > + reg = <0x0 0xffe09080 0x0 0x20>; > + interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; > + #address-cells = <2>; Hi. I have looked through the dts for axg and found that a usb node use "amlogic,meson-axg-usb-ctrl" that is not supported in uboot. In linux-kernel it exists in drivers/usb/dwc3/dwc3-meson-g12a.c In previous dts usb node used amlogic,meson-gxl-usb-ctrl and it worked good. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 2021-09-15 7:49 ` Vyacheslav @ 2021-09-15 8:15 ` Neil Armstrong 0 siblings, 0 replies; 14+ messages in thread From: Neil Armstrong @ 2021-09-15 8:15 UTC (permalink / raw) To: Vyacheslav, u-boot-amlogic, u-boot Hi, On 15/09/2021 09:49, Vyacheslav wrote: > 08.09.2021 17:17, Neil Armstrong via groups.io wrote: >> diff --git a/arch/arm/dts/meson-axg.dtsi b/arch/arm/dts/meson-axg.dtsi >> index b9efc84692..3f5254eeb4 100644 >> --- a/arch/arm/dts/meson-axg.dtsi >> +++ b/arch/arm/dts/meson-axg.dtsi > ... >> + >> + usb: usb@ffe09080 { >> + compatible = "amlogic,meson-axg-usb-ctrl"; >> + reg = <0x0 0xffe09080 0x0 0x20>; >> + interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; >> + #address-cells = <2>; > > Hi. > I have looked through the dts for axg and found that a usb node use "amlogic,meson-axg-usb-ctrl" that is not supported in uboot. In linux-kernel it exists in drivers/usb/dwc3/dwc3-meson-g12a.c > In previous dts usb node used amlogic,meson-gxl-usb-ctrl and it worked good. > You're right, "amlogic,meson-axg-usb-ctrl" is missing in the drivers/usb/dwc3/dwc3-meson-gxl.c driver I'll add and resend the serie. Neil ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2021-09-15 12:06 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-09-08 14:17 [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 2/9] ARM: meson: keep HW order for MMC devices Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 3/9] ARM: meson-axg: remove local USB nodes Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 4/9] configs: meson64: add SCSI boot target Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 5/9] distro_bootcmd: run pci enum for scsi_boot just like it is done for nvme_boot Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 6/9] ARM: amlogic: add support for Odroid-HC4 device Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 7/9] doc: boards: amlogic: update for Odroid HC4 Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 8/9] ARM: meson: add Beelink GS-King X board Neil Armstrong 2021-09-08 14:17 ` [PATCH v2 9/9] ARM: amlogic: add Banana Pi M5 Neil Armstrong 2021-09-08 15:46 ` [PATCH v2 1/9] ARM: meson: Sync Amlogic DT from Linux 5.14 Tom Rini 2021-09-09 9:42 ` Neil Armstrong 2021-09-09 11:29 ` Tom Rini 2021-09-15 7:49 ` Vyacheslav 2021-09-15 8:15 ` Neil Armstrong
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox