armbian-build/patch/kernel/archive/meson64-6.12/dt/meson-sm1-jethome-jethub-j2...

711 lines
14 KiB
Plaintext

// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2024 JetHome
* Author: Viacheslav Bocharov <adeep@lexina.in>
*
* JetHub D2 rev 1.3
*/
/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>
/ {
compatible = "jethome,jethub-j200", "amlogic,sm1";
model = "JetHome JetHub D2";
aliases {
serial0 = &uart_AO;
ethernet0 = &ethmac;
rtc0 = &rtc;
rtc1 = &vrtc;
};
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-gpios = <&gpio_ao GPIOE_2 GPIO_OPEN_DRAIN>;
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;
};
vddcpu: regulator-vddcpu {
/*
* MP8756GD Regulator.
*/
compatible = "pwm-regulator";
regulator-name = "VDDCPU";
regulator-min-microvolt = <721000>;
regulator-max-microvolt = <1022000>;
pwm-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 internal USB-Hub */
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 = "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>;
/* 8ch hdmi interface */
dai-link-0 {
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-1 {
sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
codec {
sound-dai = <&hdmi_tx>;
};
};
};
meson64-reboot {
compatible = "meson64,reboot";
sys_reset = <0x84000009>;
sys_poweroff = <0x84000008>;
sd-vqen = <&gpio GPIOE_2 GPIO_ACTIVE_HIGH>;
sd-vqsw = <&gpio_ao GPIOAO_6 GPIO_ACTIVE_HIGH>;
sd-vmmc = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
};
leds {
compatible = "gpio-leds";
led-green {
color = <LED_COLOR_ID_GREEN>;
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 GPIOH_5 GPIO_ACTIVE_HIGH>;
default-state = "off";
};
};
sound {
model = "JETHUB-D2";
};
};
&arb {
status = "okay";
};
&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>;
};
&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>;
reset-assert-us = <10000>;
reset-deassert-us = <80000>;
reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
interrupt-parent = <&gpio_intc>;
/* MAC_INTR on GPIOZ_14 */
interrupts = <IRQID_GPIOZ_14 IRQ_TYPE_LEVEL_LOW>;
};
};
&ethmac {
pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
pinctrl-names = "default";
status = "okay";
phy-mode = "rgmii";
phy-handle = <&external_phy>;
amlogic,tx-delay-ns = <2>;
};
&gpio {
gpio-line-names =
/* GPIOZ */
"", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "",
/* GPIOH */
"HDMITX_SDA", /* GPIOH_0 */
"HDMITX_SCL", /* GPIOH_1 */
"HDMITX_HPD_IN", /* GPIOH_2 */
"AO_CEC_A", /* GPIOH_3 */
"HUB_RESET", /* GPIOH_4 */
"LED_RED", /* GPIOH_5 */
"I2C_SDA_MODULES", /* GPIOH_6 */
"I2C_SCL_MODULES", /* GPIOH_7 */
"5V_EN", /* GPIOH_8 */
/* BOOT */
"", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "",
/* GPIOC */
"", "", "", "", "", "", "", "",
/* GPIOA */
"", "", "", "", "", "", "", "",
"", "", "", "", "", "",
"I2C_SDA_SYSBUS", /* GPIOA_14 */
"I2C_SCL_SYSBUS", /* GPIOA_15 */
/* GPIOX */
"", "", "", "", "", "", /* GPIOX_0 - GPIOX_5 */
"RS485_TX", /* GPIOX_6 */
"RS485_RX", /* GPIOX_7 */
"", "", "", "", "", "", /* GPIOX_8 - GPIOX_13 */
"", "", /* GPIOX_14 - GPIOX_15 */
"GPIO_EXPANDER_INT", /* GPIOX_16 */
"I2C_SDA_LCDBUS", /* GPIOX_17 */
"I2C_SCL_LCDBUS", /* GPIOX_18 */
""; /* GPIOX_19 */
/*
* WARNING: The USB Hub needs a reset signal to be turned low in
* order to be detected by the USB Controller. This signal should
* be handled by a USB specific power sequence to reset the Hub
* when the USB bus is powered down.
*/
usb-hub-hog {
gpio-hog;
gpios = <GPIOH_4 GPIO_ACTIVE_LOW>;
output-low;
line-name = "usb-hub-reset";
};
};
&gpio_ao {
gpio-line-names =
/* GPIOAO */
"CONSOLE_TX", /* GPIOAO_0 */
"CONSOLE_RX", /* GPIOAO_1 */
"USB_OTG_PWR_EN", /* GPIOAO_2 */
"TFLASH_VDD_EN", /* GPIOAO_3 */
"MCU_RESET", /* GPIOAO_4 */
"POWER_GOOD", /* GPIOAO_5 */
"TF_3V3N_1V8_EN", /* GPIOAO_6 */
"MCU_BOOT", /* GPIOAO_7 */
"MCU_UART_TX", /* GPIOAO_8 */
"MCU_UART_RX", /* GPIOAO_9 */
"BUTTON_USR", /* GPIOAO_10 */
"LED_GREEN", /* GPIOAO_11 */
/* GPIOE */
"VDDEE_PWM", "VDDCPU_PWM", "TF_PWR_EN";
};
&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>;
};
};
&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>;
};
&spifc {
status = "disabled";
pinctrl-0 = <&nor_pins>;
pinctrl-names = "default";
clock-frequency = <400000>;
flash: nor-flash@0 {
compatible = "sst,w25q256", "jedec,spi-nor";
#address-cells = <1>;
#size-cells = <1>;
reg = <0>;
spi-max-frequency = <30000000>;
};
};
&tdmif_b {
status = "okay";
};
&tdmout_b {
status = "okay";
};
&tohdmitx {
status = "okay";
};
&uart_AO {
status = "okay";
pinctrl-0 = <&uart_ao_a_pins>;
pinctrl-names = "default";
};
&uart_AO_B {
status = "okay";
pinctrl-0 = <&uart_ao_b_8_9_pins>;
pinctrl-names = "default";
};
&uart_B {
status = "okay";
pinctrl-0 = <&uart_b_pins>;
pinctrl-names = "default";
clock-frequency = <400000>;
};
&usb {
status = "okay";
vbus-supply = <&usb_pwr_en>;
};
&usb2_phy0 {
phy-supply = <&vcc_5v>;
};
/* I2C for modules */
&i2c1 {
status = "okay";
pinctrl-0 = <&i2c1_sda_h6_pins>, <&i2c1_sck_h7_pins>;
pinctrl-names = "default";
clock-frequency = <400000>;
/* GPIO expander */
u9: gpio@22 {
compatible = "nxp,pca9535";
reg = <0x22>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
interrupt-parent = <&gpio_intc>;
interrupts = <IRQID_GPIOX_16 IRQ_TYPE_LEVEL_LOW>;
gpio-line-names =
"RELAY_1", "RELAY_2",
"", "",
"UXM1_RESET", "UXM1_BOOT",
"UXM2_RESET", "UXM2_BOOT",
"DIN_1", "DIN_2", "DIN_3",
"","","","","";
};
/* 1-wire */
w1: onewire@18 {
compatible = "maxim,ds2482";
reg = <0x18>;
};
};
/* I2C for lcd/etc */
&i2c2 {
status = "okay";
pinctrl-0 = <&i2c2_sda_x_pins>, <&i2c2_sck_x_pins>;
pinctrl-names = "default";
clock-frequency = <400000>;
};
/* I2C_EE_M3: I2C for CPU board */
&i2c3 {
status = "okay";
pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
pinctrl-names = "default";
clock-frequency = <400000>;
/* I2C for rtc */
rtc: rtc@51 {
status = "okay";
compatible = "nxp,pcf8563";
reg = <0x51>;
wakeup-source;
};
/* FRAM on base board */
fram: eeprom@52 {
compatible = "atmel,24c64";
reg = <0x52>;
pagesize = <0x20>;
label = "fram";
address-width = <0x10>;
vcc-supply = <&vddao_3v3>;
};
/* EEPROM on CPU board */
eepromc: eeprom@54 {
compatible = "atmel,24c64";
reg = <0x54>;
pagesize = <0x20>;
label = "eepromc";
address-width = <0x10>;
vcc-supply = <&vddao_3v3>;
};
/* EEPROM on base board */
eeprompd: eeprom@56 {
compatible = "atmel,24c64";
reg = <0x56>;
pagesize = <0x20>;
label = "eeprompd";
address-width = <0x10>;
vcc-supply = <&vddao_3v3>;
};
/* EEPROM on power module */
eeprompm: eeprom@57 {
compatible = "atmel,24c64";
reg = <0x57>;
pagesize = <0x20>;
label = "eeprompm";
address-width = <0x10>;
vcc-supply = <&vddao_3v3>;
};
/* temperature sensors */
temp1: tmp102@48 {
compatible = "ti,tmp102";
reg = <0x48>;
};
temp2: tmp102@49 {
compatible = "ti,tmp102";
reg = <0x49>;
};
};
&efuse {
eth_mac: eth-mac@0 {
reg = <0x0 0x6>;
};
bt_mac: bt-mac@6 {
reg = <0x6 0x6>;
};
wifi_mac: wifi-mac@c {
reg = <0xc 0x6>;
};
bid: bid@12 {
reg = <0x12 0x20>;
};
sn: sn@32 {
reg = <0x32 0x20>;
};
};
&cpu_thermal {
trips {
cpu_passive: cpu-passive {
temperature = <70000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "passive";
};
cpu_hot: cpu-hot {
temperature = <85000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "hot";
};
cpu_critical: cpu-critical {
temperature = <90000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "critical";
};
};
cooling-maps {
map0 {
trip = <&cpu_passive>;
cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
map1 {
trip = <&cpu_hot>;
cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
<&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
};
&ddr_thermal {
trips {
ddr_passive: ddr-passive {
temperature = <70000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "passive";
};
ddr_critical: ddr-critical {
temperature = <85000>; /* millicelsius */
hysteresis = <2000>; /* millicelsius */
type = "critical";
};
};
};