forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
arm64: dts: rockchip: rk3328: Add Radxa ROCK Pi E
Radxa ROCK Pi E is a router oriented SBC based on Rockchip's RK3328 SoC. As the official wiki page puts it, "E for Ethernets". It features the RK3328 SoC, gigabit and fast Ethernet RJ45 ports, both directly served by Ethernet controllers in the SoC, a USB 3.0 host port, a power-only USB type-C port, a 3.5mm headphone jack for audio output, two LEDs, a 40-pin Raspberry Pi style GPIO header, and optional WiFi+BT and PoE header. The board comes in multiple configurations, differing in the amount of onboard RAM, the level of WiFi+BT (none, 802.11n 2.4GHz, or 802.11ac 2.4 GHz & 5 GHz), and whether PoE is supported or not. These variants can all share the same device tree. The USB 2.0 OTG controller is available on the 40-pin header. This is not enabled in the device tree, since it is possible to use it in a host-only configuration, or in OTG mode with an extra pin from the header as the ID pin. The device tree is based on the one of the Rock64, with various parts modified to match the ROCK Pi E, and some parts updated to newer styles, such as the gmac2io node's mdio sub-node. Add a new device tree file for the new board. The voltages for the adc-keys were selected to have some tolerances for resistor variances and the ADC itself also causing voltage drops. Since the recover button is the only button on the adc line, this should not cause any issues. Signed-off-by: Chen-Yu Tsai <wens@csie.org> Link: https://lore.kernel.org/r/20210117100710.4857-4-wens@kernel.org Signed-off-by: Heiko Stuebner <heiko@sntech.de>
- Loading branch information
Showing
2 changed files
with
383 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
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,382 @@ | ||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||
/* | ||
* (C) Copyright 2020 Chen-Yu Tsai <wens@csie.org> | ||
* | ||
* Based on ./rk3328-rock64.dts, which is | ||
* | ||
* Copyright (c) 2017 PINE64 | ||
*/ | ||
|
||
/dts-v1/; | ||
|
||
#include <dt-bindings/gpio/gpio.h> | ||
#include <dt-bindings/input/input.h> | ||
#include <dt-bindings/leds/common.h> | ||
#include <dt-bindings/pinctrl/rockchip.h> | ||
|
||
#include "rk3328.dtsi" | ||
|
||
/ { | ||
model = "Radxa ROCK Pi E"; | ||
compatible = "radxa,rockpi-e", "rockchip,rk3328"; | ||
|
||
chosen { | ||
stdout-path = "serial2:1500000n8"; | ||
}; | ||
|
||
adc-keys { | ||
compatible = "adc-keys"; | ||
io-channels = <&saradc 0>; | ||
io-channel-names = "buttons"; | ||
keyup-threshold-microvolt = <1750000>; | ||
|
||
/* This button is unpopulated out of the factory. */ | ||
button-recovery { | ||
label = "Recovery"; | ||
linux,code = <KEY_VENDOR>; | ||
press-threshold-microvolt = <10000>; | ||
}; | ||
}; | ||
|
||
gmac_clkin: external-gmac-clock { | ||
compatible = "fixed-clock"; | ||
clock-frequency = <125000000>; | ||
clock-output-names = "gmac_clkin"; | ||
#clock-cells = <0>; | ||
}; | ||
|
||
leds { | ||
compatible = "gpio-leds"; | ||
pinctrl-0 = <&led_pin>; | ||
pinctrl-names = "default"; | ||
|
||
led-0 { | ||
color = <LED_COLOR_ID_BLUE>; | ||
gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>; | ||
linux,default-trigger = "heartbeat"; | ||
}; | ||
}; | ||
|
||
vcc_sd: sdmmc-regulator { | ||
compatible = "regulator-fixed"; | ||
gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>; | ||
pinctrl-names = "default"; | ||
pinctrl-0 = <&sdmmc0m1_pin>; | ||
regulator-name = "vcc_sd"; | ||
regulator-boot-on; | ||
vin-supply = <&vcc_io>; | ||
}; | ||
|
||
vcc_host_5v: vcc-host-5v-regulator { | ||
compatible = "regulator-fixed"; | ||
gpio = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>; | ||
pinctrl-names = "default"; | ||
pinctrl-0 = <&usb30_host_drv>; | ||
enable-active-high; | ||
regulator-name = "vcc_host_5v"; | ||
regulator-always-on; | ||
regulator-boot-on; | ||
vin-supply = <&vcc_sys>; | ||
}; | ||
|
||
vcc_sys: vcc-sys { | ||
compatible = "regulator-fixed"; | ||
regulator-name = "vcc_sys"; | ||
regulator-always-on; | ||
regulator-boot-on; | ||
regulator-min-microvolt = <5000000>; | ||
regulator-max-microvolt = <5000000>; | ||
}; | ||
|
||
vcc_wifi: vcc-wifi-regulator { | ||
compatible = "regulator-fixed"; | ||
gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>; | ||
pinctrl-names = "default"; | ||
pinctrl-0 = <&wifi_en>; | ||
regulator-name = "vcc_wifi"; | ||
regulator-always-on; | ||
regulator-boot-on; | ||
vin-supply = <&vcc_io>; | ||
}; | ||
}; | ||
|
||
&analog_sound { | ||
status = "okay"; | ||
}; | ||
|
||
&codec { | ||
status = "okay"; | ||
}; | ||
|
||
&cpu0 { | ||
cpu-supply = <&vdd_arm>; | ||
}; | ||
|
||
&cpu1 { | ||
cpu-supply = <&vdd_arm>; | ||
}; | ||
|
||
&cpu2 { | ||
cpu-supply = <&vdd_arm>; | ||
}; | ||
|
||
&cpu3 { | ||
cpu-supply = <&vdd_arm>; | ||
}; | ||
|
||
&emmc { | ||
bus-width = <8>; | ||
cap-mmc-highspeed; | ||
mmc-ddr-1_8v; | ||
mmc-hs200-1_8v; | ||
non-removable; | ||
pinctrl-names = "default"; | ||
pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_bus8>; | ||
vmmc-supply = <&vcc_io>; | ||
vqmmc-supply = <&vcc18_emmc>; | ||
status = "okay"; | ||
}; | ||
|
||
&gmac2io { | ||
assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>; | ||
assigned-clock-parents = <&gmac_clkin>, <&gmac_clkin>; | ||
clock_in_out = "input"; | ||
phy-handle = <&rtl8211e>; | ||
phy-mode = "rgmii"; | ||
phy-supply = <&vcc_io>; | ||
pinctrl-names = "default"; | ||
pinctrl-0 = <&rgmiim1_pins>; | ||
snps,aal; | ||
snps,rxpbl = <0x4>; | ||
snps,txpbl = <0x4>; | ||
tx_delay = <0x26>; | ||
rx_delay = <0x11>; | ||
status = "okay"; | ||
|
||
mdio { | ||
compatible = "snps,dwmac-mdio"; | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
|
||
rtl8211e: ethernet-phy@1 { | ||
reg = <1>; | ||
pinctrl-0 = <ð_phy_int_pin>, <ð_phy_reset_pin>; | ||
pinctrl-names = "default"; | ||
interrupt-parent = <&gpio1>; | ||
interrupts = <24 IRQ_TYPE_LEVEL_LOW>; | ||
reset-assert-us = <10000>; | ||
reset-deassert-us = <50000>; | ||
reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>; | ||
}; | ||
}; | ||
}; | ||
|
||
&gmac2phy { | ||
pinctrl-names = "default"; | ||
pinctrl-0 = <&fephyled_linkm1>, <&fephyled_rxm1>; | ||
status = "okay"; | ||
}; | ||
|
||
&i2c1 { | ||
status = "okay"; | ||
|
||
rk805: pmic@18 { | ||
compatible = "rockchip,rk805"; | ||
reg = <0x18>; | ||
interrupt-parent = <&gpio2>; | ||
interrupts = <6 IRQ_TYPE_LEVEL_LOW>; | ||
#clock-cells = <1>; | ||
clock-output-names = "xin32k", "rk805-clkout2"; | ||
gpio-controller; | ||
#gpio-cells = <2>; | ||
pinctrl-names = "default"; | ||
pinctrl-0 = <&pmic_int_l>; | ||
rockchip,system-power-controller; | ||
wakeup-source; | ||
|
||
vcc1-supply = <&vcc_sys>; | ||
vcc2-supply = <&vcc_sys>; | ||
vcc3-supply = <&vcc_sys>; | ||
vcc4-supply = <&vcc_sys>; | ||
vcc5-supply = <&vcc_io>; | ||
vcc6-supply = <&vcc_sys>; | ||
|
||
regulators { | ||
vdd_log: DCDC_REG1 { | ||
regulator-name = "vdd_log"; | ||
regulator-always-on; | ||
regulator-boot-on; | ||
regulator-min-microvolt = <712500>; | ||
regulator-max-microvolt = <1450000>; | ||
regulator-ramp-delay = <12500>; | ||
|
||
regulator-state-mem { | ||
regulator-on-in-suspend; | ||
regulator-suspend-microvolt = <1000000>; | ||
}; | ||
}; | ||
|
||
vdd_arm: DCDC_REG2 { | ||
regulator-name = "vdd_arm"; | ||
regulator-always-on; | ||
regulator-boot-on; | ||
regulator-min-microvolt = <712500>; | ||
regulator-max-microvolt = <1450000>; | ||
regulator-ramp-delay = <12500>; | ||
|
||
regulator-state-mem { | ||
regulator-on-in-suspend; | ||
regulator-suspend-microvolt = <950000>; | ||
}; | ||
}; | ||
|
||
vcc_ddr: DCDC_REG3 { | ||
regulator-name = "vcc_ddr"; | ||
regulator-always-on; | ||
regulator-boot-on; | ||
|
||
regulator-state-mem { | ||
regulator-on-in-suspend; | ||
}; | ||
}; | ||
|
||
vcc_io: DCDC_REG4 { | ||
regulator-name = "vcc_io"; | ||
regulator-always-on; | ||
regulator-boot-on; | ||
regulator-min-microvolt = <3300000>; | ||
regulator-max-microvolt = <3300000>; | ||
|
||
regulator-state-mem { | ||
regulator-on-in-suspend; | ||
regulator-suspend-microvolt = <3300000>; | ||
}; | ||
}; | ||
|
||
vcc_18: LDO_REG1 { | ||
regulator-name = "vcc_18"; | ||
regulator-always-on; | ||
regulator-boot-on; | ||
regulator-min-microvolt = <1800000>; | ||
regulator-max-microvolt = <1800000>; | ||
|
||
regulator-state-mem { | ||
regulator-on-in-suspend; | ||
regulator-suspend-microvolt = <1800000>; | ||
}; | ||
}; | ||
|
||
vcc18_emmc: LDO_REG2 { | ||
regulator-name = "vcc18_emmc"; | ||
regulator-always-on; | ||
regulator-boot-on; | ||
regulator-min-microvolt = <1800000>; | ||
regulator-max-microvolt = <1800000>; | ||
|
||
regulator-state-mem { | ||
regulator-on-in-suspend; | ||
regulator-suspend-microvolt = <1800000>; | ||
}; | ||
}; | ||
|
||
vdd_10: LDO_REG3 { | ||
regulator-name = "vdd_10"; | ||
regulator-always-on; | ||
regulator-boot-on; | ||
regulator-min-microvolt = <1000000>; | ||
regulator-max-microvolt = <1000000>; | ||
|
||
regulator-state-mem { | ||
regulator-on-in-suspend; | ||
regulator-suspend-microvolt = <1000000>; | ||
}; | ||
}; | ||
}; | ||
}; | ||
}; | ||
|
||
&i2s1 { | ||
status = "okay"; | ||
}; | ||
|
||
&io_domains { | ||
pmuio-supply = <&vcc_io>; | ||
vccio1-supply = <&vcc_io>; | ||
vccio2-supply = <&vcc18_emmc>; | ||
vccio3-supply = <&vcc_io>; | ||
vccio4-supply = <&vcc_io>; | ||
vccio5-supply = <&vcc_io>; | ||
vccio6-supply = <&vcc_io>; | ||
status = "okay"; | ||
}; | ||
|
||
&pinctrl { | ||
ephy { | ||
eth_phy_int_pin: eth-phy-int-pin { | ||
rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_down>; | ||
}; | ||
|
||
eth_phy_reset_pin: eth-phy-reset-pin { | ||
rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>; | ||
}; | ||
}; | ||
|
||
leds { | ||
led_pin: led-pin { | ||
rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; | ||
}; | ||
}; | ||
|
||
pmic { | ||
pmic_int_l: pmic-int-l { | ||
rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>; | ||
}; | ||
}; | ||
|
||
usb3 { | ||
usb30_host_drv: usb30-host-drv { | ||
rockchip,pins = <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>; | ||
}; | ||
}; | ||
|
||
wifi { | ||
wifi_en: wifi-en { | ||
rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; | ||
}; | ||
}; | ||
}; | ||
|
||
&sdmmc { | ||
bus-width = <4>; | ||
cap-sd-highspeed; | ||
disable-wp; | ||
pinctrl-names = "default"; | ||
pinctrl-0 = <&sdmmc0_clk>, <&sdmmc0_cmd>, <&sdmmc0_dectn>, <&sdmmc0_bus4>; | ||
vmmc-supply = <&vcc_sd>; | ||
status = "okay"; | ||
}; | ||
|
||
&saradc { | ||
vref-supply = <&vcc_18>; | ||
status = "okay"; | ||
}; | ||
|
||
&tsadc { | ||
status = "okay"; | ||
}; | ||
|
||
&u2phy { | ||
status = "okay"; | ||
}; | ||
|
||
&u2phy_host { | ||
status = "okay"; | ||
}; | ||
|
||
&uart2 { | ||
status = "okay"; | ||
}; | ||
|
||
&usb_host0_ehci { | ||
status = "okay"; | ||
}; |