forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
arm64: dts: meson-g12a-tanix-tx5max: add initial device tree
The Tanix TX5 Max is based on the Amlogic U200 reference design using the S905X2 chipset. Hardware specification: - 4GB LPDDR4 RAM - 32GB eMMC storage - 10/100/1000 Base-T Ethernet using External RGMII PHY - 802.11 a/b/g/b/ac + BT 4.1 sdio wireless - HDMI 2.0 (4k@60p) video - Composite video + 2-channel audio output on 3.5mm jack - S/PDIF audio output - 1x USB 3.0 - 1x USB 2.0 - 1x micro SD card slot Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
- Loading branch information
Showing
2 changed files
with
353 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
352 changes: 352 additions & 0 deletions
352
arch/arm64/boot/dts/amlogic/meson-g12a-tanix-tx5max.dts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,352 @@ | ||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||
/* | ||
* Copyright (c) 2018 BayLibre SAS. All rights reserved. | ||
*/ | ||
|
||
/dts-v1/; | ||
|
||
#include "meson-g12a.dtsi" | ||
#include "meson-g12-audio-hdmi-spdif.dtsi" | ||
#include <dt-bindings/gpio/gpio.h> | ||
#include <dt-bindings/gpio/meson-g12a-gpio.h> | ||
|
||
/ { | ||
compatible = "oranth,tx5-max", "amlogic,g12a"; | ||
model = "Tanix TX5 Max"; | ||
|
||
aliases { | ||
serial0 = &uart_AO; | ||
ethernet0 = ðmac; | ||
}; | ||
|
||
chosen { | ||
stdout-path = "serial0:115200n8"; | ||
}; | ||
memory@0 { | ||
device_type = "memory"; | ||
reg = <0x0 0x0 0x0 0x40000000>; | ||
}; | ||
|
||
cvbs-connector { | ||
compatible = "composite-video-connector"; | ||
|
||
port { | ||
cvbs_connector_in: endpoint { | ||
remote-endpoint = <&cvbs_vdac_out>; | ||
}; | ||
}; | ||
}; | ||
|
||
hdmi-connector { | ||
compatible = "hdmi-connector"; | ||
type = "a"; | ||
|
||
port { | ||
hdmi_connector_in: endpoint { | ||
remote-endpoint = <&hdmi_tx_tmds_out>; | ||
}; | ||
}; | ||
}; | ||
|
||
emmc_pwrseq: emmc-pwrseq { | ||
compatible = "mmc-pwrseq-emmc"; | ||
reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; | ||
}; | ||
|
||
sdio_pwrseq: sdio-pwrseq { | ||
compatible = "mmc-pwrseq-simple"; | ||
reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; | ||
clocks = <&wifi32k>; | ||
clock-names = "ext_clock"; | ||
}; | ||
|
||
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; | ||
}; | ||
|
||
dc_in: regulator-dc_in { | ||
compatible = "regulator-fixed"; | ||
regulator-name = "DC_IN"; | ||
regulator-min-microvolt = <5000000>; | ||
regulator-max-microvolt = <5000000>; | ||
regulator-always-on; | ||
}; | ||
|
||
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 */ | ||
}; | ||
|
||
vcc_5v: regulator-vcc_5v { | ||
compatible = "regulator-fixed"; | ||
regulator-name = "VCC_5V"; | ||
regulator-min-microvolt = <5000000>; | ||
regulator-max-microvolt = <5000000>; | ||
vin-supply = <&dc_in>; | ||
|
||
gpio = <&gpio GPIOH_8 GPIO_OPEN_DRAIN>; | ||
enable-active-low; | ||
}; | ||
|
||
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 { | ||
compatible = "pwm-regulator"; | ||
|
||
regulator-name = "VDDCPU"; | ||
regulator-min-microvolt = <721000>; | ||
regulator-max-microvolt = <1022000>; | ||
|
||
vin-supply = <&dc_in>; | ||
|
||
pwms = <&pwm_AO_cd 1 1250 0>; | ||
pwm-dutycycle-range = <100 0>; | ||
|
||
regulator-boot-on; | ||
regulator-always-on; | ||
}; | ||
|
||
wifi32k: wifi32k { | ||
compatible = "pwm-clock"; | ||
#clock-cells = <0>; | ||
clock-frequency = <32768>; | ||
pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ | ||
}; | ||
}; | ||
|
||
&cec_AO { | ||
pinctrl-0 = <&cec_ao_a_h_pins>; | ||
pinctrl-names = "default"; | ||
status = "disabled"; | ||
hdmi-phandle = <&hdmi_tx>; | ||
}; | ||
|
||
&cecb_AO { | ||
pinctrl-0 = <&cec_ao_b_h_pins>; | ||
pinctrl-names = "default"; | ||
status = "okay"; | ||
hdmi-phandle = <&hdmi_tx>; | ||
}; | ||
|
||
&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_CPU_CLK>; | ||
clock-latency = <50000>; | ||
}; | ||
|
||
&cpu2 { | ||
cpu-supply = <&vddcpu>; | ||
operating-points-v2 = <&cpu_opp_table>; | ||
clocks = <&clkc CLKID_CPU_CLK>; | ||
clock-latency = <50000>; | ||
}; | ||
|
||
&cpu3 { | ||
cpu-supply = <&vddcpu>; | ||
operating-points-v2 = <&cpu_opp_table>; | ||
clocks = <&clkc CLKID_CPU_CLK>; | ||
clock-latency = <50000>; | ||
}; | ||
|
||
&cvbs_vdac_port { | ||
cvbs_vdac_out: endpoint { | ||
remote-endpoint = <&cvbs_connector_in>; | ||
}; | ||
}; | ||
|
||
&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-tx5max"; | ||
}; | ||
|
||
&pwm_AO_cd { | ||
pinctrl-0 = <&pwm_ao_d_e_pins>; | ||
pinctrl-names = "default"; | ||
clocks = <&xtal>; | ||
clock-names = "clkin1"; | ||
status = "okay"; | ||
}; | ||
|
||
&ext_mdio { | ||
external_phy: ethernet-phy@0 { | ||
/* Realtek RTL8211F (0x001cc916) */ | ||
reg = <0>; | ||
max-speed = <1000>; | ||
eee-broken-1000t; | ||
|
||
reset-assert-us = <10000>; | ||
reset-deassert-us = <30000>; | ||
reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; | ||
|
||
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>; | ||
}; | ||
|
||
&pwm_ef { | ||
status = "okay"; | ||
pinctrl-0 = <&pwm_e_pins>; | ||
pinctrl-names = "default"; | ||
clocks = <&xtal>; | ||
clock-names = "clkin0"; | ||
}; | ||
|
||
&uart_A { | ||
status = "okay"; | ||
pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; | ||
pinctrl-names = "default"; | ||
uart-has-rtscts; | ||
|
||
bluetooth { | ||
compatible = "brcm,bcm43438-bt"; | ||
shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; | ||
max-speed = <2000000>; | ||
clocks = <&wifi32k>; | ||
clock-names = "lpo"; | ||
}; | ||
}; | ||
|
||
&uart_AO { | ||
status = "okay"; | ||
pinctrl-0 = <&uart_ao_a_pins>; | ||
pinctrl-names = "default"; | ||
}; | ||
|
||
&usb { | ||
status = "okay"; | ||
dr_mode = "host"; | ||
}; | ||
|
||
/* SDIO */ | ||
&sd_emmc_a { | ||
status = "okay"; | ||
pinctrl-0 = <&sdio_pins>; | ||
pinctrl-1 = <&sdio_clk_gate_pins>; | ||
pinctrl-names = "default", "clk-gate"; | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
|
||
bus-width = <4>; | ||
cap-sd-highspeed; | ||
sd-uhs-sdr50; | ||
max-frequency = <100000000>; | ||
|
||
non-removable; | ||
disable-wp; | ||
|
||
/* WiFi firmware requires power to be kept while in suspend */ | ||
keep-power-in-suspend; | ||
|
||
mmc-pwrseq = <&sdio_pwrseq>; | ||
|
||
vmmc-supply = <&vddao_3v3>; | ||
vqmmc-supply = <&vddao_1v8>; | ||
|
||
brcmf: wifi@1 { | ||
reg = <1>; | ||
compatible = "brcm,bcm4329-fmac"; | ||
}; | ||
}; | ||
|
||
/* 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 = <100000000>; | ||
disable-wp; | ||
|
||
cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; | ||
vmmc-supply = <&vddao_3v3>; | ||
vqmmc-supply = <&vddao_3v3>; | ||
}; | ||
|
||
/* 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; | ||
max-frequency = <100000000>; | ||
non-removable; | ||
disable-wp; | ||
|
||
mmc-pwrseq = <&emmc_pwrseq>; | ||
vmmc-supply = <&vcc_3v3>; | ||
vqmmc-supply = <&flash_1v8>; | ||
}; |