mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-09-20 22:52:00 +00:00
Merge tag 'u-boot-rockchip-20210812' of https://source.denx.de/u-boot/custodians/u-boot-rockchip
- Add Rockchip SFC driver support; - DTS sync from kernel; - emmc hs400 support for rk3399; - Fix for spinore bootdevice and MMC boot order;
This commit is contained in:
commit
0704305528
63 changed files with 3343 additions and 1251 deletions
|
@ -1801,7 +1801,7 @@ config ARCH_STM32MP
|
||||||
config ARCH_ROCKCHIP
|
config ARCH_ROCKCHIP
|
||||||
bool "Support Rockchip SoCs"
|
bool "Support Rockchip SoCs"
|
||||||
select BLK
|
select BLK
|
||||||
select BINMAN if SPL_OPTEE
|
select BINMAN if SPL_OPTEE || (SPL && !ARM64)
|
||||||
select DM
|
select DM
|
||||||
select DM_GPIO
|
select DM_GPIO
|
||||||
select DM_I2C
|
select DM_I2C
|
||||||
|
|
|
@ -960,6 +960,18 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sfc: sfc@ff3a0000 {
|
||||||
|
compatible = "rockchip,sfc";
|
||||||
|
reg = <0x0 0xff3a0000 0x0 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&cru SCLK_SFC>, <&cru HCLK_SFC>;
|
||||||
|
clock-names = "clk_sfc", "hclk_sfc";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&sfc_clk &sfc_cs &sfc_bus4>;
|
||||||
|
power-domains = <&power PX30_PD_MMC_NAND>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
gpu: gpu@ff400000 {
|
gpu: gpu@ff400000 {
|
||||||
compatible = "rockchip,px30-mali", "arm,mali-bifrost";
|
compatible = "rockchip,px30-mali", "arm,mali-bifrost";
|
||||||
reg = <0x0 0xff400000 0x0 0x4000>;
|
reg = <0x0 0xff400000 0x0 0x4000>;
|
||||||
|
@ -1926,6 +1938,32 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
serial_flash {
|
||||||
|
sfc_bus4: sfc-bus4 {
|
||||||
|
rockchip,pins =
|
||||||
|
<1 RK_PA0 3 &pcfg_pull_none>,
|
||||||
|
<1 RK_PA1 3 &pcfg_pull_none>,
|
||||||
|
<1 RK_PA2 3 &pcfg_pull_none>,
|
||||||
|
<1 RK_PA3 3 &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
|
||||||
|
sfc_bus2: sfc-bus2 {
|
||||||
|
rockchip,pins =
|
||||||
|
<1 RK_PA0 3 &pcfg_pull_none>,
|
||||||
|
<1 RK_PA1 3 &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
|
||||||
|
sfc_cs: sfc-cs {
|
||||||
|
rockchip,pins =
|
||||||
|
<1 RK_PA4 3 &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
|
||||||
|
sfc_clk: sfc-clk {
|
||||||
|
rockchip,pins =
|
||||||
|
<1 RK_PB1 3 &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
lcdc {
|
lcdc {
|
||||||
lcdc_rgb_dclk_pin: lcdc-rgb-dclk-pin {
|
lcdc_rgb_dclk_pin: lcdc-rgb-dclk-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
|
|
|
@ -5,12 +5,36 @@
|
||||||
|
|
||||||
#include "rk3188-u-boot.dtsi"
|
#include "rk3188-u-boot.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
chosen {
|
||||||
|
/* stdout-path = &uart2; */
|
||||||
|
stdout-path = "serial2:115200n8";
|
||||||
|
};
|
||||||
|
|
||||||
|
config {
|
||||||
|
u-boot,boot-led = "rock:red:power";
|
||||||
|
u-boot,dm-pre-reloc;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&cru {
|
&cru {
|
||||||
u-boot,dm-spl;
|
u-boot,dm-spl;
|
||||||
};
|
};
|
||||||
|
|
||||||
&pinctrl {
|
&dmc {
|
||||||
u-boot,dm-spl;
|
rockchip,pctl-timing = <0x12c 0xc8 0x1f4 0x1e 0x4e 0x4 0x69 0x6
|
||||||
|
0x3 0x0 0x6 0x5 0xc 0x10 0x6 0x4
|
||||||
|
0x4 0x5 0x4 0x200 0x3 0xa 0x40 0x0
|
||||||
|
0x1 0x5 0x5 0x3 0xc 0x1e 0x100 0x0
|
||||||
|
0x4 0x0>;
|
||||||
|
rockchip,phy-timing = <0x208c6690 0x690878 0x10022a00
|
||||||
|
0x220 0x40 0x0 0x0>;
|
||||||
|
rockchip,sdram-params = <0x24716310 0 2 300000000 3 9 0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&emmc {
|
||||||
|
fifo-mode;
|
||||||
|
max-frequency = <16000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&mmc0 {
|
&mmc0 {
|
||||||
|
@ -23,18 +47,16 @@
|
||||||
max-frequency = <16000000>;
|
max-frequency = <16000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&emmc {
|
&pinctrl {
|
||||||
fifo-mode;
|
|
||||||
max-frequency = <16000000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&uart2 {
|
|
||||||
status = "okay";
|
|
||||||
u-boot,dm-spl;
|
u-boot,dm-spl;
|
||||||
};
|
};
|
||||||
|
|
||||||
&timer3 {
|
&timer3 {
|
||||||
compatible = "rockchip,rk3368-timer", "rockchip,rk3288-timer";
|
compatible = "rockchip,rk3368-timer", "rockchip,rk3288-timer";
|
||||||
u-boot,dm-spl;
|
|
||||||
clock-frequency = <24000000>;
|
clock-frequency = <24000000>;
|
||||||
|
u-boot,dm-spl;
|
||||||
|
};
|
||||||
|
|
||||||
|
&uart2 {
|
||||||
|
u-boot,dm-spl;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0+ OR X11
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2013 Heiko Stuebner <heiko@sntech.de>
|
* Copyright (c) 2013 Heiko Stuebner <heiko@sntech.de>
|
||||||
*/
|
*/
|
||||||
|
@ -12,17 +12,11 @@
|
||||||
model = "Radxa Rock";
|
model = "Radxa Rock";
|
||||||
compatible = "radxa,rock", "rockchip,rk3188";
|
compatible = "radxa,rock", "rockchip,rk3188";
|
||||||
|
|
||||||
chosen {
|
aliases {
|
||||||
/* stdout-path = &uart2; */
|
mmc0 = &mmc0;
|
||||||
stdout-path = "serial2:115200n8";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config {
|
memory@60000000 {
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
u-boot,boot-led = "rock:red:power";
|
|
||||||
};
|
|
||||||
|
|
||||||
memory {
|
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x60000000 0x80000000>;
|
reg = <0x60000000 0x80000000>;
|
||||||
};
|
};
|
||||||
|
@ -32,7 +26,7 @@
|
||||||
autorepeat;
|
autorepeat;
|
||||||
|
|
||||||
power {
|
power {
|
||||||
gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
|
||||||
linux,code = <KEY_POWER>;
|
linux,code = <KEY_POWER>;
|
||||||
label = "GPIO Key Power";
|
label = "GPIO Key Power";
|
||||||
linux,input-type = <1>;
|
linux,input-type = <1>;
|
||||||
|
@ -44,21 +38,21 @@
|
||||||
gpio-leds {
|
gpio-leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
green {
|
green_led: led-0 {
|
||||||
label = "rock:green:user1";
|
label = "rock:green:user1";
|
||||||
gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_LOW>;
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
|
|
||||||
blue {
|
blue_led: led-1 {
|
||||||
label = "rock:blue:user2";
|
label = "rock:blue:user2";
|
||||||
gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>;
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
|
|
||||||
sleep {
|
sleep_led: led-2 {
|
||||||
label = "rock:red:power";
|
label = "rock:red:power";
|
||||||
gpios = <&gpio0 15 0>;
|
gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -80,7 +74,7 @@
|
||||||
|
|
||||||
ir_recv: gpio-ir-receiver {
|
ir_recv: gpio-ir-receiver {
|
||||||
compatible = "gpio-ir-receiver";
|
compatible = "gpio-ir-receiver";
|
||||||
gpios = <&gpio0 10 1>;
|
gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&ir_recv_pin>;
|
pinctrl-0 = <&ir_recv_pin>;
|
||||||
};
|
};
|
||||||
|
@ -88,7 +82,7 @@
|
||||||
vcc_otg: usb-otg-regulator {
|
vcc_otg: usb-otg-regulator {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>;
|
gpio = <&gpio2 RK_PD7 GPIO_ACTIVE_HIGH>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&otg_vbus_drv>;
|
pinctrl-0 = <&otg_vbus_drv>;
|
||||||
regulator-name = "otg-vbus";
|
regulator-name = "otg-vbus";
|
||||||
|
@ -103,7 +97,7 @@
|
||||||
regulator-name = "sdmmc-supply";
|
regulator-name = "sdmmc-supply";
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
gpio = <&gpio3 1 GPIO_ACTIVE_LOW>;
|
gpio = <&gpio3 RK_PA1 GPIO_ACTIVE_LOW>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sdmmc_pwr>;
|
pinctrl-0 = <&sdmmc_pwr>;
|
||||||
startup-delay-us = <100000>;
|
startup-delay-us = <100000>;
|
||||||
|
@ -113,7 +107,7 @@
|
||||||
vcc_host: usb-host-regulator {
|
vcc_host: usb-host-regulator {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
gpio = <&gpio0 3 GPIO_ACTIVE_HIGH>;
|
gpio = <&gpio0 RK_PA3 GPIO_ACTIVE_HIGH>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&host_vbus_drv>;
|
pinctrl-0 = <&host_vbus_drv>;
|
||||||
regulator-name = "host-pwr";
|
regulator-name = "host-pwr";
|
||||||
|
@ -132,17 +126,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&dmc {
|
|
||||||
rockchip,pctl-timing = <0x12c 0xc8 0x1f4 0x1e 0x4e 0x4 0x69 0x6
|
|
||||||
0x3 0x0 0x6 0x5 0xc 0x10 0x6 0x4
|
|
||||||
0x4 0x5 0x4 0x200 0x3 0xa 0x40 0x0
|
|
||||||
0x1 0x5 0x5 0x3 0xc 0x1e 0x100 0x0
|
|
||||||
0x4 0x0>;
|
|
||||||
rockchip,phy-timing = <0x208c6690 0x690878 0x10022a00
|
|
||||||
0x220 0x40 0x0 0x0>;
|
|
||||||
rockchip,sdram-params = <0x24716310 0 2 300000000 3 9 0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&emac {
|
&emac {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
@ -155,12 +138,28 @@
|
||||||
phy0: ethernet-phy@0 {
|
phy0: ethernet-phy@0 {
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
interrupt-parent = <&gpio3>;
|
interrupt-parent = <&gpio3>;
|
||||||
interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <RK_PD2 IRQ_TYPE_LEVEL_LOW>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&cpu0 {
|
&cpu0 {
|
||||||
cpu0-supply = <&vdd_arm>;
|
cpu-supply = <&vdd_arm>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu1 {
|
||||||
|
cpu-supply = <&vdd_arm>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu2 {
|
||||||
|
cpu-supply = <&vdd_arm>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu3 {
|
||||||
|
cpu-supply = <&vdd_arm>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpu {
|
||||||
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
|
@ -171,7 +170,7 @@
|
||||||
compatible = "haoyu,hym8563";
|
compatible = "haoyu,hym8563";
|
||||||
reg = <0x51>;
|
reg = <0x51>;
|
||||||
interrupt-parent = <&gpio0>;
|
interrupt-parent = <&gpio0>;
|
||||||
interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
|
interrupts = <RK_PB5 IRQ_TYPE_EDGE_FALLING>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&rtc_int>;
|
pinctrl-0 = <&rtc_int>;
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
|
@ -283,7 +282,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&mmc0 {
|
&mmc0 {
|
||||||
num-slots = <1>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>;
|
pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>;
|
||||||
|
@ -314,40 +312,40 @@
|
||||||
|
|
||||||
act8846 {
|
act8846 {
|
||||||
act8846_dvs0_ctl: act8846-dvs0-ctl {
|
act8846_dvs0_ctl: act8846-dvs0-ctl {
|
||||||
rockchip,pins = <RK_GPIO3 27 RK_FUNC_GPIO &pcfg_output_low>;
|
rockchip,pins = <3 RK_PD3 RK_FUNC_GPIO &pcfg_output_low>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
hym8563 {
|
hym8563 {
|
||||||
rtc_int: rtc-int {
|
rtc_int: rtc-int {
|
||||||
rockchip,pins = <RK_GPIO0 0 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
lan8720a {
|
lan8720a {
|
||||||
phy_int: phy-int {
|
phy_int: phy-int {
|
||||||
rockchip,pins = <RK_GPIO3 26 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ir-receiver {
|
ir-receiver {
|
||||||
ir_recv_pin: ir-recv-pin {
|
ir_recv_pin: ir-recv-pin {
|
||||||
rockchip,pins = <RK_GPIO0 10 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sd0 {
|
sd0 {
|
||||||
sdmmc_pwr: sdmmc-pwr {
|
sdmmc_pwr: sdmmc-pwr {
|
||||||
rockchip,pins = <RK_GPIO3 1 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
usb {
|
usb {
|
||||||
host_vbus_drv: host-vbus-drv {
|
host_vbus_drv: host-vbus-drv {
|
||||||
rockchip,pins = <0 3 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
otg_vbus_drv: otg-vbus-drv {
|
otg_vbus_drv: otg-vbus-drv {
|
||||||
rockchip,pins = <2 31 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <2 RK_PD7 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -364,6 +362,10 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&uart2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
&uart3 {
|
&uart3 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,3 +4,16 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "rockchip-u-boot.dtsi"
|
#include "rockchip-u-boot.dtsi"
|
||||||
|
|
||||||
|
&global_timer {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio0 {
|
||||||
|
compatible = "rockchip,gpio-bank";
|
||||||
|
};
|
||||||
|
|
||||||
|
&pmu {
|
||||||
|
compatible = "rockchip,rk3188-pmu", "syscon", "simple-mfd";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0+ OR X11
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2013 MundoReader S.L.
|
* Copyright (c) 2013 MundoReader S.L.
|
||||||
* Author: Heiko Stuebner <heiko@sntech.de>
|
* Author: Heiko Stuebner <heiko@sntech.de>
|
||||||
|
@ -7,7 +7,9 @@
|
||||||
#include <dt-bindings/gpio/gpio.h>
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
#include <dt-bindings/pinctrl/rockchip.h>
|
#include <dt-bindings/pinctrl/rockchip.h>
|
||||||
#include <dt-bindings/clock/rk3188-cru.h>
|
#include <dt-bindings/clock/rk3188-cru.h>
|
||||||
|
#include <dt-bindings/power/rk3188-power.h>
|
||||||
#include "rk3xxx.dtsi"
|
#include "rk3xxx.dtsi"
|
||||||
|
#include "rk3xxx-u-boot.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "rockchip,rk3188";
|
compatible = "rockchip,rk3188";
|
||||||
|
@ -22,40 +24,82 @@
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
next-level-cache = <&L2>;
|
next-level-cache = <&L2>;
|
||||||
reg = <0x0>;
|
reg = <0x0>;
|
||||||
operating-points = <
|
|
||||||
/* kHz uV */
|
|
||||||
1608000 1350000
|
|
||||||
1416000 1250000
|
|
||||||
1200000 1150000
|
|
||||||
1008000 1075000
|
|
||||||
816000 975000
|
|
||||||
600000 950000
|
|
||||||
504000 925000
|
|
||||||
312000 875000
|
|
||||||
>;
|
|
||||||
clock-latency = <40000>;
|
clock-latency = <40000>;
|
||||||
clocks = <&cru ARMCLK>;
|
clocks = <&cru ARMCLK>;
|
||||||
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
|
resets = <&cru SRST_CORE0>;
|
||||||
};
|
};
|
||||||
cpu@1 {
|
cpu1: cpu@1 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
next-level-cache = <&L2>;
|
next-level-cache = <&L2>;
|
||||||
reg = <0x1>;
|
reg = <0x1>;
|
||||||
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
|
resets = <&cru SRST_CORE1>;
|
||||||
};
|
};
|
||||||
cpu@2 {
|
cpu2: cpu@2 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
next-level-cache = <&L2>;
|
next-level-cache = <&L2>;
|
||||||
reg = <0x2>;
|
reg = <0x2>;
|
||||||
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
|
resets = <&cru SRST_CORE2>;
|
||||||
};
|
};
|
||||||
cpu@3 {
|
cpu3: cpu@3 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
next-level-cache = <&L2>;
|
next-level-cache = <&L2>;
|
||||||
reg = <0x3>;
|
reg = <0x3>;
|
||||||
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
|
resets = <&cru SRST_CORE3>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cpu0_opp_table: opp_table0 {
|
||||||
|
compatible = "operating-points-v2";
|
||||||
|
opp-shared;
|
||||||
|
|
||||||
|
opp-312000000 {
|
||||||
|
opp-hz = /bits/ 64 <312000000>;
|
||||||
|
opp-microvolt = <875000>;
|
||||||
|
clock-latency-ns = <40000>;
|
||||||
|
};
|
||||||
|
opp-504000000 {
|
||||||
|
opp-hz = /bits/ 64 <504000000>;
|
||||||
|
opp-microvolt = <925000>;
|
||||||
|
};
|
||||||
|
opp-600000000 {
|
||||||
|
opp-hz = /bits/ 64 <600000000>;
|
||||||
|
opp-microvolt = <950000>;
|
||||||
|
opp-suspend;
|
||||||
|
};
|
||||||
|
opp-816000000 {
|
||||||
|
opp-hz = /bits/ 64 <816000000>;
|
||||||
|
opp-microvolt = <975000>;
|
||||||
|
};
|
||||||
|
opp-1008000000 {
|
||||||
|
opp-hz = /bits/ 64 <1008000000>;
|
||||||
|
opp-microvolt = <1075000>;
|
||||||
|
};
|
||||||
|
opp-1200000000 {
|
||||||
|
opp-hz = /bits/ 64 <1200000000>;
|
||||||
|
opp-microvolt = <1150000>;
|
||||||
|
};
|
||||||
|
opp-1416000000 {
|
||||||
|
opp-hz = /bits/ 64 <1416000000>;
|
||||||
|
opp-microvolt = <1250000>;
|
||||||
|
};
|
||||||
|
opp-1608000000 {
|
||||||
|
opp-hz = /bits/ 64 <1608000000>;
|
||||||
|
opp-microvolt = <1350000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
display-subsystem {
|
||||||
|
compatible = "rockchip,display-subsystem";
|
||||||
|
ports = <&vop0_out>, <&vop1_out>;
|
||||||
|
};
|
||||||
|
|
||||||
sram: sram@10080000 {
|
sram: sram@10080000 {
|
||||||
compatible = "mmio-sram";
|
compatible = "mmio-sram";
|
||||||
reg = <0x10080000 0x8000>;
|
reg = <0x10080000 0x8000>;
|
||||||
|
@ -69,20 +113,69 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vop0: vop@1010c000 {
|
||||||
|
compatible = "rockchip,rk3188-vop";
|
||||||
|
reg = <0x1010c000 0x1000>;
|
||||||
|
interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&cru ACLK_LCDC0>, <&cru DCLK_LCDC0>, <&cru HCLK_LCDC0>;
|
||||||
|
clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
|
||||||
|
power-domains = <&power RK3188_PD_VIO>;
|
||||||
|
resets = <&cru SRST_LCDC0_AXI>, <&cru SRST_LCDC0_AHB>, <&cru SRST_LCDC0_DCLK>;
|
||||||
|
reset-names = "axi", "ahb", "dclk";
|
||||||
|
status = "disabled";
|
||||||
|
|
||||||
|
vop0_out: port {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vop1: vop@1010e000 {
|
||||||
|
compatible = "rockchip,rk3188-vop";
|
||||||
|
reg = <0x1010e000 0x1000>;
|
||||||
|
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&cru ACLK_LCDC1>, <&cru DCLK_LCDC1>, <&cru HCLK_LCDC1>;
|
||||||
|
clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
|
||||||
|
power-domains = <&power RK3188_PD_VIO>;
|
||||||
|
resets = <&cru SRST_LCDC1_AXI>, <&cru SRST_LCDC1_AHB>, <&cru SRST_LCDC1_DCLK>;
|
||||||
|
reset-names = "axi", "ahb", "dclk";
|
||||||
|
status = "disabled";
|
||||||
|
|
||||||
|
vop1_out: port {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
timer3: timer@2000e000 {
|
||||||
|
compatible = "rockchip,rk3188-timer", "rockchip,rk3288-timer";
|
||||||
|
reg = <0x2000e000 0x20>;
|
||||||
|
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&cru PCLK_TIMER3>, <&cru SCLK_TIMER3>;
|
||||||
|
clock-names = "pclk", "timer";
|
||||||
|
};
|
||||||
|
|
||||||
|
timer6: timer@200380a0 {
|
||||||
|
compatible = "rockchip,rk3188-timer", "rockchip,rk3288-timer";
|
||||||
|
reg = <0x200380a0 0x20>;
|
||||||
|
interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&cru PCLK_TIMER0>, <&cru SCLK_TIMER6>;
|
||||||
|
clock-names = "pclk", "timer";
|
||||||
|
};
|
||||||
|
|
||||||
i2s0: i2s@1011a000 {
|
i2s0: i2s@1011a000 {
|
||||||
compatible = "rockchip,rk3188-i2s", "rockchip,rk3066-i2s";
|
compatible = "rockchip,rk3188-i2s", "rockchip,rk3066-i2s";
|
||||||
reg = <0x1011a000 0x2000>;
|
reg = <0x1011a000 0x2000>;
|
||||||
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&i2s0_bus>;
|
pinctrl-0 = <&i2s0_bus>;
|
||||||
|
clocks = <&cru SCLK_I2S0>, <&cru HCLK_I2S0>;
|
||||||
|
clock-names = "i2s_clk", "i2s_hclk";
|
||||||
dmas = <&dmac1_s 6>, <&dmac1_s 7>;
|
dmas = <&dmac1_s 6>, <&dmac1_s 7>;
|
||||||
dma-names = "tx", "rx";
|
dma-names = "tx", "rx";
|
||||||
clock-names = "i2s_hclk", "i2s_clk";
|
|
||||||
clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>;
|
|
||||||
rockchip,playback-channels = <2>;
|
rockchip,playback-channels = <2>;
|
||||||
rockchip,capture-channels = <2>;
|
rockchip,capture-channels = <2>;
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -90,8 +183,8 @@
|
||||||
compatible = "rockchip,rk3188-spdif", "rockchip,rk3066-spdif";
|
compatible = "rockchip,rk3188-spdif", "rockchip,rk3066-spdif";
|
||||||
reg = <0x1011e000 0x2000>;
|
reg = <0x1011e000 0x2000>;
|
||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
clock-names = "hclk", "mclk";
|
clocks = <&cru SCLK_SPDIF>, <&cru HCLK_SPDIF>;
|
||||||
clocks = <&cru HCLK_SPDIF>, <&cru SCLK_SPDIF>;
|
clock-names = "mclk", "hclk";
|
||||||
dmas = <&dmac1_s 8>;
|
dmas = <&dmac1_s 8>;
|
||||||
dma-names = "tx";
|
dma-names = "tx";
|
||||||
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@ -110,7 +203,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
efuse: efuse@20010000 {
|
efuse: efuse@20010000 {
|
||||||
compatible = "rockchip,rockchip-efuse";
|
compatible = "rockchip,rk3188-efuse";
|
||||||
reg = <0x20010000 0x4000>;
|
reg = <0x20010000 0x4000>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
@ -122,36 +215,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
timer3: timer@2000e000 {
|
|
||||||
compatible = "rockchip,rk3188-timer", "rockchip,rk3288-timer";
|
|
||||||
reg = <0x2000e000 0x20>;
|
|
||||||
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
};
|
|
||||||
|
|
||||||
usbphy: phy {
|
|
||||||
compatible = "rockchip,rk3188-usb-phy", "rockchip,rk3288-usb-phy";
|
|
||||||
rockchip,grf = <&grf>;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
status = "disabled";
|
|
||||||
|
|
||||||
usbphy0: usb-phy@10c {
|
|
||||||
#phy-cells = <0>;
|
|
||||||
reg = <0x10c>;
|
|
||||||
clocks = <&cru SCLK_OTGPHY0>;
|
|
||||||
clock-names = "phyclk";
|
|
||||||
#clock-cells = <0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
usbphy1: usb-phy@11c {
|
|
||||||
#phy-cells = <0>;
|
|
||||||
reg = <0x11c>;
|
|
||||||
clocks = <&cru SCLK_OTGPHY1>;
|
|
||||||
clock-names = "phyclk";
|
|
||||||
#clock-cells = <0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
pinctrl: pinctrl {
|
pinctrl: pinctrl {
|
||||||
compatible = "rockchip,rk3188-pinctrl";
|
compatible = "rockchip,rk3188-pinctrl";
|
||||||
rockchip,grf = <&grf>;
|
rockchip,grf = <&grf>;
|
||||||
|
@ -162,7 +225,7 @@
|
||||||
ranges;
|
ranges;
|
||||||
|
|
||||||
gpio0: gpio0@2000a000 {
|
gpio0: gpio0@2000a000 {
|
||||||
compatible = "rockchip,gpio-bank";
|
compatible = "rockchip,rk3188-gpio-bank0";
|
||||||
reg = <0x2000a000 0x100>;
|
reg = <0x2000a000 0x100>;
|
||||||
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&cru PCLK_GPIO0>;
|
clocks = <&cru PCLK_GPIO0>;
|
||||||
|
@ -227,15 +290,15 @@
|
||||||
|
|
||||||
emmc {
|
emmc {
|
||||||
emmc_clk: emmc-clk {
|
emmc_clk: emmc-clk {
|
||||||
rockchip,pins = <RK_GPIO0 24 RK_FUNC_2 &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PD0 2 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
emmc_cmd: emmc-cmd {
|
emmc_cmd: emmc-cmd {
|
||||||
rockchip,pins = <RK_GPIO0 26 RK_FUNC_2 &pcfg_pull_up>;
|
rockchip,pins = <0 RK_PD2 2 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
|
|
||||||
emmc_rst: emmc-rst {
|
emmc_rst: emmc-rst {
|
||||||
rockchip,pins = <RK_GPIO0 27 RK_FUNC_2 &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PD3 2 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -248,246 +311,291 @@
|
||||||
|
|
||||||
emac {
|
emac {
|
||||||
emac_xfer: emac-xfer {
|
emac_xfer: emac-xfer {
|
||||||
rockchip,pins = <RK_GPIO3 16 RK_FUNC_2 &pcfg_pull_none>, /* tx_en */
|
rockchip,pins = <3 RK_PC0 2 &pcfg_pull_none>, /* tx_en */
|
||||||
<RK_GPIO3 17 RK_FUNC_2 &pcfg_pull_none>, /* txd1 */
|
<3 RK_PC1 2 &pcfg_pull_none>, /* txd1 */
|
||||||
<RK_GPIO3 18 RK_FUNC_2 &pcfg_pull_none>, /* txd0 */
|
<3 RK_PC2 2 &pcfg_pull_none>, /* txd0 */
|
||||||
<RK_GPIO3 19 RK_FUNC_2 &pcfg_pull_none>, /* rxd0 */
|
<3 RK_PC3 2 &pcfg_pull_none>, /* rxd0 */
|
||||||
<RK_GPIO3 20 RK_FUNC_2 &pcfg_pull_none>, /* rxd1 */
|
<3 RK_PC4 2 &pcfg_pull_none>, /* rxd1 */
|
||||||
<RK_GPIO3 21 RK_FUNC_2 &pcfg_pull_none>, /* mac_clk */
|
<3 RK_PC5 2 &pcfg_pull_none>, /* mac_clk */
|
||||||
<RK_GPIO3 22 RK_FUNC_2 &pcfg_pull_none>, /* rx_err */
|
<3 RK_PC6 2 &pcfg_pull_none>, /* rx_err */
|
||||||
<RK_GPIO3 23 RK_FUNC_2 &pcfg_pull_none>; /* crs_dvalid */
|
<3 RK_PC7 2 &pcfg_pull_none>; /* crs_dvalid */
|
||||||
};
|
};
|
||||||
|
|
||||||
emac_mdio: emac-mdio {
|
emac_mdio: emac-mdio {
|
||||||
rockchip,pins = <RK_GPIO3 24 RK_FUNC_2 &pcfg_pull_none>,
|
rockchip,pins = <3 RK_PD0 2 &pcfg_pull_none>,
|
||||||
<RK_GPIO3 25 RK_FUNC_2 &pcfg_pull_none>;
|
<3 RK_PD1 2 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c0 {
|
i2c0 {
|
||||||
i2c0_xfer: i2c0-xfer {
|
i2c0_xfer: i2c0-xfer {
|
||||||
rockchip,pins = <RK_GPIO1 24 RK_FUNC_1 &pcfg_pull_none>,
|
rockchip,pins = <1 RK_PD0 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO1 25 RK_FUNC_1 &pcfg_pull_none>;
|
<1 RK_PD1 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c1 {
|
i2c1 {
|
||||||
i2c1_xfer: i2c1-xfer {
|
i2c1_xfer: i2c1-xfer {
|
||||||
rockchip,pins = <RK_GPIO1 26 RK_FUNC_1 &pcfg_pull_none>,
|
rockchip,pins = <1 RK_PD2 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO1 27 RK_FUNC_1 &pcfg_pull_none>;
|
<1 RK_PD3 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c2 {
|
i2c2 {
|
||||||
i2c2_xfer: i2c2-xfer {
|
i2c2_xfer: i2c2-xfer {
|
||||||
rockchip,pins = <RK_GPIO1 28 RK_FUNC_1 &pcfg_pull_none>,
|
rockchip,pins = <1 RK_PD4 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO1 29 RK_FUNC_1 &pcfg_pull_none>;
|
<1 RK_PD5 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c3 {
|
i2c3 {
|
||||||
i2c3_xfer: i2c3-xfer {
|
i2c3_xfer: i2c3-xfer {
|
||||||
rockchip,pins = <RK_GPIO3 14 RK_FUNC_2 &pcfg_pull_none>,
|
rockchip,pins = <3 RK_PB6 2 &pcfg_pull_none>,
|
||||||
<RK_GPIO3 15 RK_FUNC_2 &pcfg_pull_none>;
|
<3 RK_PB7 2 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c4 {
|
i2c4 {
|
||||||
i2c4_xfer: i2c4-xfer {
|
i2c4_xfer: i2c4-xfer {
|
||||||
rockchip,pins = <RK_GPIO1 30 RK_FUNC_1 &pcfg_pull_none>,
|
rockchip,pins = <1 RK_PD6 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO1 31 RK_FUNC_1 &pcfg_pull_none>;
|
<1 RK_PD7 1 &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
lcdc1 {
|
||||||
|
lcdc1_dclk: lcdc1-dclk {
|
||||||
|
rockchip,pins = <2 RK_PD0 1 &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
|
||||||
|
lcdc1_den: lcdc1-den {
|
||||||
|
rockchip,pins = <2 RK_PD1 1 &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
|
||||||
|
lcdc1_hsync: lcdc1-hsync {
|
||||||
|
rockchip,pins = <2 RK_PD2 1 &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
|
||||||
|
lcdc1_vsync: lcdc1-vsync {
|
||||||
|
rockchip,pins = <2 RK_PD3 1 &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
|
||||||
|
lcdc1_rgb24: ldcd1-rgb24 {
|
||||||
|
rockchip,pins = <2 RK_PA0 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PA1 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PA2 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PA3 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PA4 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PA5 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PA6 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PA7 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PB0 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PB1 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PB2 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PB3 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PB4 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PB5 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PB6 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PB7 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PC0 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PC1 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PC2 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PC3 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PC4 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PC5 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PC6 1 &pcfg_pull_none>,
|
||||||
|
<2 RK_PC7 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pwm0 {
|
pwm0 {
|
||||||
pwm0_out: pwm0-out {
|
pwm0_out: pwm0-out {
|
||||||
rockchip,pins = <RK_GPIO3 27 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PD3 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pwm1 {
|
pwm1 {
|
||||||
pwm1_out: pwm1-out {
|
pwm1_out: pwm1-out {
|
||||||
rockchip,pins = <RK_GPIO3 28 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PD4 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pwm2 {
|
pwm2 {
|
||||||
pwm2_out: pwm2-out {
|
pwm2_out: pwm2-out {
|
||||||
rockchip,pins = <RK_GPIO3 29 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PD5 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pwm3 {
|
pwm3 {
|
||||||
pwm3_out: pwm3-out {
|
pwm3_out: pwm3-out {
|
||||||
rockchip,pins = <RK_GPIO3 30 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PD6 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
spi0 {
|
spi0 {
|
||||||
spi0_clk: spi0-clk {
|
spi0_clk: spi0-clk {
|
||||||
rockchip,pins = <RK_GPIO1 6 RK_FUNC_2 &pcfg_pull_up>;
|
rockchip,pins = <1 RK_PA6 2 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
spi0_cs0: spi0-cs0 {
|
spi0_cs0: spi0-cs0 {
|
||||||
rockchip,pins = <RK_GPIO1 7 RK_FUNC_2 &pcfg_pull_up>;
|
rockchip,pins = <1 RK_PA7 2 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
spi0_tx: spi0-tx {
|
spi0_tx: spi0-tx {
|
||||||
rockchip,pins = <RK_GPIO1 5 RK_FUNC_2 &pcfg_pull_up>;
|
rockchip,pins = <1 RK_PA5 2 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
spi0_rx: spi0-rx {
|
spi0_rx: spi0-rx {
|
||||||
rockchip,pins = <RK_GPIO1 4 RK_FUNC_2 &pcfg_pull_up>;
|
rockchip,pins = <1 RK_PA4 2 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
spi0_cs1: spi0-cs1 {
|
spi0_cs1: spi0-cs1 {
|
||||||
rockchip,pins = <RK_GPIO1 15 RK_FUNC_1 &pcfg_pull_up>;
|
rockchip,pins = <1 RK_PB7 1 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
spi1 {
|
spi1 {
|
||||||
spi1_clk: spi1-clk {
|
spi1_clk: spi1-clk {
|
||||||
rockchip,pins = <RK_GPIO0 30 RK_FUNC_1 &pcfg_pull_up>;
|
rockchip,pins = <0 RK_PD6 1 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
spi1_cs0: spi1-cs0 {
|
spi1_cs0: spi1-cs0 {
|
||||||
rockchip,pins = <RK_GPIO0 31 RK_FUNC_1 &pcfg_pull_up>;
|
rockchip,pins = <0 RK_PD7 1 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
spi1_rx: spi1-rx {
|
spi1_rx: spi1-rx {
|
||||||
rockchip,pins = <RK_GPIO0 28 RK_FUNC_1 &pcfg_pull_up>;
|
rockchip,pins = <0 RK_PD4 1 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
spi1_tx: spi1-tx {
|
spi1_tx: spi1-tx {
|
||||||
rockchip,pins = <RK_GPIO0 29 RK_FUNC_1 &pcfg_pull_up>;
|
rockchip,pins = <0 RK_PD5 1 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
spi1_cs1: spi1-cs1 {
|
spi1_cs1: spi1-cs1 {
|
||||||
rockchip,pins = <RK_GPIO1 14 RK_FUNC_2 &pcfg_pull_up>;
|
rockchip,pins = <1 RK_PB6 2 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
uart0 {
|
uart0 {
|
||||||
uart0_xfer: uart0-xfer {
|
uart0_xfer: uart0-xfer {
|
||||||
rockchip,pins = <RK_GPIO1 0 RK_FUNC_1 &pcfg_pull_up>,
|
rockchip,pins = <1 RK_PA0 1 &pcfg_pull_up>,
|
||||||
<RK_GPIO1 1 RK_FUNC_1 &pcfg_pull_none>;
|
<1 RK_PA1 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
uart0_cts: uart0-cts {
|
uart0_cts: uart0-cts {
|
||||||
rockchip,pins = <RK_GPIO1 2 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PA2 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
uart0_rts: uart0-rts {
|
uart0_rts: uart0-rts {
|
||||||
rockchip,pins = <RK_GPIO1 3 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PA3 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1 {
|
uart1 {
|
||||||
uart1_xfer: uart1-xfer {
|
uart1_xfer: uart1-xfer {
|
||||||
rockchip,pins = <RK_GPIO1 4 RK_FUNC_1 &pcfg_pull_up>,
|
rockchip,pins = <1 RK_PA4 1 &pcfg_pull_up>,
|
||||||
<RK_GPIO1 5 RK_FUNC_1 &pcfg_pull_none>;
|
<1 RK_PA5 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1_cts: uart1-cts {
|
uart1_cts: uart1-cts {
|
||||||
rockchip,pins = <RK_GPIO1 6 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PA6 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1_rts: uart1-rts {
|
uart1_rts: uart1-rts {
|
||||||
rockchip,pins = <RK_GPIO1 7 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PA7 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
uart2 {
|
uart2 {
|
||||||
uart2_xfer: uart2-xfer {
|
uart2_xfer: uart2-xfer {
|
||||||
rockchip,pins = <RK_GPIO1 8 RK_FUNC_1 &pcfg_pull_up>,
|
rockchip,pins = <1 RK_PB0 1 &pcfg_pull_up>,
|
||||||
<RK_GPIO1 9 RK_FUNC_1 &pcfg_pull_none>;
|
<1 RK_PB1 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
/* no rts / cts for uart2 */
|
/* no rts / cts for uart2 */
|
||||||
};
|
};
|
||||||
|
|
||||||
uart3 {
|
uart3 {
|
||||||
uart3_xfer: uart3-xfer {
|
uart3_xfer: uart3-xfer {
|
||||||
rockchip,pins = <RK_GPIO1 10 RK_FUNC_1 &pcfg_pull_up>,
|
rockchip,pins = <1 RK_PB2 1 &pcfg_pull_up>,
|
||||||
<RK_GPIO1 11 RK_FUNC_1 &pcfg_pull_none>;
|
<1 RK_PB3 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
uart3_cts: uart3-cts {
|
uart3_cts: uart3-cts {
|
||||||
rockchip,pins = <RK_GPIO1 12 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PB4 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
uart3_rts: uart3-rts {
|
uart3_rts: uart3-rts {
|
||||||
rockchip,pins = <RK_GPIO1 13 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PB5 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sd0 {
|
sd0 {
|
||||||
sd0_clk: sd0-clk {
|
sd0_clk: sd0-clk {
|
||||||
rockchip,pins = <RK_GPIO3 2 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PA2 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sd0_cmd: sd0-cmd {
|
sd0_cmd: sd0-cmd {
|
||||||
rockchip,pins = <RK_GPIO3 3 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PA3 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sd0_cd: sd0-cd {
|
sd0_cd: sd0-cd {
|
||||||
rockchip,pins = <RK_GPIO3 8 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PB0 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sd0_wp: sd0-wp {
|
sd0_wp: sd0-wp {
|
||||||
rockchip,pins = <RK_GPIO3 9 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PB1 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sd0_pwr: sd0-pwr {
|
sd0_pwr: sd0-pwr {
|
||||||
rockchip,pins = <RK_GPIO3 1 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PA1 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sd0_bus1: sd0-bus-width1 {
|
sd0_bus1: sd0-bus-width1 {
|
||||||
rockchip,pins = <RK_GPIO3 4 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PA4 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sd0_bus4: sd0-bus-width4 {
|
sd0_bus4: sd0-bus-width4 {
|
||||||
rockchip,pins = <RK_GPIO3 4 RK_FUNC_1 &pcfg_pull_none>,
|
rockchip,pins = <3 RK_PA4 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO3 5 RK_FUNC_1 &pcfg_pull_none>,
|
<3 RK_PA5 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO3 6 RK_FUNC_1 &pcfg_pull_none>,
|
<3 RK_PA6 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO3 7 RK_FUNC_1 &pcfg_pull_none>;
|
<3 RK_PA7 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sd1 {
|
sd1 {
|
||||||
sd1_clk: sd1-clk {
|
sd1_clk: sd1-clk {
|
||||||
rockchip,pins = <RK_GPIO3 21 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PC5 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sd1_cmd: sd1-cmd {
|
sd1_cmd: sd1-cmd {
|
||||||
rockchip,pins = <RK_GPIO3 16 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PC0 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sd1_cd: sd1-cd {
|
sd1_cd: sd1-cd {
|
||||||
rockchip,pins = <RK_GPIO3 22 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PC6 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sd1_wp: sd1-wp {
|
sd1_wp: sd1-wp {
|
||||||
rockchip,pins = <RK_GPIO3 23 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PC7 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sd1_bus1: sd1-bus-width1 {
|
sd1_bus1: sd1-bus-width1 {
|
||||||
rockchip,pins = <RK_GPIO3 17 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PC1 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sd1_bus4: sd1-bus-width4 {
|
sd1_bus4: sd1-bus-width4 {
|
||||||
rockchip,pins = <RK_GPIO3 17 RK_FUNC_1 &pcfg_pull_none>,
|
rockchip,pins = <3 RK_PC1 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO3 18 RK_FUNC_1 &pcfg_pull_none>,
|
<3 RK_PC2 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO3 19 RK_FUNC_1 &pcfg_pull_none>,
|
<3 RK_PC3 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO3 20 RK_FUNC_1 &pcfg_pull_none>;
|
<3 RK_PC4 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
i2s0 {
|
i2s0 {
|
||||||
i2s0_bus: i2s0-bus {
|
i2s0_bus: i2s0-bus {
|
||||||
rockchip,pins = <RK_GPIO1 16 RK_FUNC_1 &pcfg_pull_none>,
|
rockchip,pins = <1 RK_PC0 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO1 17 RK_FUNC_1 &pcfg_pull_none>,
|
<1 RK_PC1 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO1 18 RK_FUNC_1 &pcfg_pull_none>,
|
<1 RK_PC2 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO1 19 RK_FUNC_1 &pcfg_pull_none>,
|
<1 RK_PC3 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO1 20 RK_FUNC_1 &pcfg_pull_none>,
|
<1 RK_PC4 1 &pcfg_pull_none>,
|
||||||
<RK_GPIO1 21 RK_FUNC_1 &pcfg_pull_none>;
|
<1 RK_PC5 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
spdif {
|
spdif {
|
||||||
spdif_tx: spdif-tx {
|
spdif_tx: spdif-tx {
|
||||||
rockchip,pins = <RK_GPIO1 14 RK_FUNC_1 &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PB6 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -498,15 +606,65 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&global_timer {
|
&global_timer {
|
||||||
interrupts = <GIC_PPI 11 0xf04>;
|
interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
|
||||||
};
|
status = "disabled";
|
||||||
|
|
||||||
&grf {
|
|
||||||
compatible = "rockchip,rk3188-grf", "syscon";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&local_timer {
|
&local_timer {
|
||||||
interrupts = <GIC_PPI 13 0xf04>;
|
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpu {
|
||||||
|
compatible = "rockchip,rk3188-mali", "arm,mali-400";
|
||||||
|
interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
interrupt-names = "gp",
|
||||||
|
"gpmmu",
|
||||||
|
"pp0",
|
||||||
|
"ppmmu0",
|
||||||
|
"pp1",
|
||||||
|
"ppmmu1",
|
||||||
|
"pp2",
|
||||||
|
"ppmmu2",
|
||||||
|
"pp3",
|
||||||
|
"ppmmu3";
|
||||||
|
power-domains = <&power RK3188_PD_GPU>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&grf {
|
||||||
|
compatible = "rockchip,rk3188-grf", "syscon", "simple-mfd";
|
||||||
|
|
||||||
|
usbphy: usbphy {
|
||||||
|
compatible = "rockchip,rk3188-usb-phy",
|
||||||
|
"rockchip,rk3288-usb-phy";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
status = "disabled";
|
||||||
|
|
||||||
|
usbphy0: usb-phy@10c {
|
||||||
|
reg = <0x10c>;
|
||||||
|
clocks = <&cru SCLK_OTGPHY0>;
|
||||||
|
clock-names = "phyclk";
|
||||||
|
#clock-cells = <0>;
|
||||||
|
#phy-cells = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
usbphy1: usb-phy@11c {
|
||||||
|
reg = <0x11c>;
|
||||||
|
clocks = <&cru SCLK_OTGPHY1>;
|
||||||
|
clock-names = "phyclk";
|
||||||
|
#clock-cells = <0>;
|
||||||
|
#phy-cells = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c0 {
|
&i2c0 {
|
||||||
|
@ -540,7 +698,52 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&pmu {
|
&pmu {
|
||||||
compatible = "rockchip,rk3188-pmu", "syscon";
|
power: power-controller {
|
||||||
|
compatible = "rockchip,rk3188-power-controller";
|
||||||
|
#power-domain-cells = <1>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
power-domain@RK3188_PD_VIO {
|
||||||
|
reg = <RK3188_PD_VIO>;
|
||||||
|
clocks = <&cru ACLK_LCDC0>,
|
||||||
|
<&cru ACLK_LCDC1>,
|
||||||
|
<&cru DCLK_LCDC0>,
|
||||||
|
<&cru DCLK_LCDC1>,
|
||||||
|
<&cru HCLK_LCDC0>,
|
||||||
|
<&cru HCLK_LCDC1>,
|
||||||
|
<&cru SCLK_CIF0>,
|
||||||
|
<&cru ACLK_CIF0>,
|
||||||
|
<&cru HCLK_CIF0>,
|
||||||
|
<&cru ACLK_IPP>,
|
||||||
|
<&cru HCLK_IPP>,
|
||||||
|
<&cru ACLK_RGA>,
|
||||||
|
<&cru HCLK_RGA>;
|
||||||
|
pm_qos = <&qos_lcdc0>,
|
||||||
|
<&qos_lcdc1>,
|
||||||
|
<&qos_cif0>,
|
||||||
|
<&qos_ipp>,
|
||||||
|
<&qos_rga>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
power-domain@RK3188_PD_VIDEO {
|
||||||
|
reg = <RK3188_PD_VIDEO>;
|
||||||
|
clocks = <&cru ACLK_VDPU>,
|
||||||
|
<&cru ACLK_VEPU>,
|
||||||
|
<&cru HCLK_VDPU>,
|
||||||
|
<&cru HCLK_VEPU>;
|
||||||
|
pm_qos = <&qos_vpu>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
power-domain@RK3188_PD_GPU {
|
||||||
|
reg = <RK3188_PD_GPU>;
|
||||||
|
clocks = <&cru ACLK_GPU>;
|
||||||
|
pm_qos = <&qos_gpu>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&pwm0 {
|
&pwm0 {
|
||||||
|
@ -599,6 +802,11 @@
|
||||||
pinctrl-0 = <&uart3_xfer>;
|
pinctrl-0 = <&uart3_xfer>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&vpu {
|
||||||
|
compatible = "rockchip,rk3188-vpu", "rockchip,rk3066-vpu";
|
||||||
|
power-domains = <&power RK3188_PD_VIDEO>;
|
||||||
|
};
|
||||||
|
|
||||||
&wdt {
|
&wdt {
|
||||||
compatible = "rockchip,rk3188-wdt", "snps,dw-wdt";
|
compatible = "rockchip,rk3188-wdt", "snps,dw-wdt";
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,6 +7,15 @@
|
||||||
chosen {
|
chosen {
|
||||||
u-boot,spl-boot-order = &sdmmc;
|
u-boot,spl-boot-order = &sdmmc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
i2c0 = &i2c0;
|
||||||
|
i2c1 = &i2c1;
|
||||||
|
mmc0 = &sdmmc;
|
||||||
|
serial1 = &uart1;
|
||||||
|
serial2 = &uart2;
|
||||||
|
spi0 = &sfc;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&cru {
|
&cru {
|
||||||
|
@ -57,6 +66,14 @@
|
||||||
u-boot,spl-fifo-mode;
|
u-boot,spl-fifo-mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&sfc {
|
||||||
|
u-boot,dm-pre-reloc;
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi_flash {
|
||||||
|
u-boot,dm-pre-reloc;
|
||||||
|
};
|
||||||
|
|
||||||
&uart1 {
|
&uart1 {
|
||||||
clock-frequency = <24000000>;
|
clock-frequency = <24000000>;
|
||||||
u-boot,dm-pre-reloc;
|
u-boot,dm-pre-reloc;
|
||||||
|
|
|
@ -617,6 +617,22 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&sfc {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&sfc_clk &sfc_cs &sfc_bus2>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
spi_flash: xt25f128b@0 {
|
||||||
|
compatible = "jedec,spi-nor";
|
||||||
|
reg = <0>;
|
||||||
|
spi-max-frequency = <108000000>;
|
||||||
|
spi-rx-bus-width = <2>;
|
||||||
|
spi-tx-bus-width = <2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&tsadc {
|
&tsadc {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,6 +10,12 @@
|
||||||
model = "Rockchip RK3328 EVB";
|
model = "Rockchip RK3328 EVB";
|
||||||
compatible = "rockchip,rk3328-evb", "rockchip,rk3328";
|
compatible = "rockchip,rk3328-evb", "rockchip,rk3328";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdmmc;
|
||||||
|
mmc1 = &sdio;
|
||||||
|
mmc2 = &emmc;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
stdout-path = "serial2:1500000n8";
|
||||||
};
|
};
|
||||||
|
@ -41,7 +47,7 @@
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
gpio = <&gpio0 30 GPIO_ACTIVE_LOW>;
|
gpio = <&gpio0 30 GPIO_ACTIVE_LOW>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sdmmc0m1_gpio>;
|
pinctrl-0 = <&sdmmc0m1_pin>;
|
||||||
regulator-name = "vcc_sd";
|
regulator-name = "vcc_sd";
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
|
@ -70,6 +76,18 @@
|
||||||
cpu-supply = <&vdd_arm>;
|
cpu-supply = <&vdd_arm>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu1 {
|
||||||
|
cpu-supply = <&vdd_arm>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu2 {
|
||||||
|
cpu-supply = <&vdd_arm>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu3 {
|
||||||
|
cpu-supply = <&vdd_arm>;
|
||||||
|
};
|
||||||
|
|
||||||
&emmc {
|
&emmc {
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
cap-mmc-highspeed;
|
cap-mmc-highspeed;
|
||||||
|
@ -82,11 +100,10 @@
|
||||||
&gmac2phy {
|
&gmac2phy {
|
||||||
phy-supply = <&vcc_phy>;
|
phy-supply = <&vcc_phy>;
|
||||||
clock_in_out = "output";
|
clock_in_out = "output";
|
||||||
assigned-clocks = <&cru SCLK_MAC2PHY_SRC>;
|
|
||||||
assigned-clock-rate = <50000000>;
|
assigned-clock-rate = <50000000>;
|
||||||
assigned-clocks = <&cru SCLK_MAC2PHY>;
|
assigned-clocks = <&cru SCLK_MAC2PHY>;
|
||||||
assigned-clock-parents = <&cru SCLK_MAC2PHY_SRC>;
|
assigned-clock-parents = <&cru SCLK_MAC2PHY_SRC>;
|
||||||
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
u-boot,dm-spl;
|
u-boot,dm-spl;
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdmmc0m1_gpio {
|
&sdmmc0m1_pin {
|
||||||
u-boot,dm-spl;
|
u-boot,dm-spl;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,11 @@
|
||||||
model = "FriendlyElec NanoPi R2S";
|
model = "FriendlyElec NanoPi R2S";
|
||||||
compatible = "friendlyarm,nanopi-r2s", "rockchip,rk3328";
|
compatible = "friendlyarm,nanopi-r2s", "rockchip,rk3328";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
ethernet1 = &rtl8153;
|
||||||
|
mmc0 = &sdmmc;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
stdout-path = "serial2:1500000n8";
|
||||||
};
|
};
|
||||||
|
@ -50,6 +55,7 @@
|
||||||
sys_led: led-1 {
|
sys_led: led-1 {
|
||||||
gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
|
||||||
label = "nanopi-r2s:red:sys";
|
label = "nanopi-r2s:red:sys";
|
||||||
|
default-state = "on";
|
||||||
};
|
};
|
||||||
|
|
||||||
wan_led: led-2 {
|
wan_led: led-2 {
|
||||||
|
@ -71,15 +77,15 @@
|
||||||
regulator-settling-time-us = <5000>;
|
regulator-settling-time-us = <5000>;
|
||||||
regulator-type = "voltage";
|
regulator-type = "voltage";
|
||||||
startup-delay-us = <2000>;
|
startup-delay-us = <2000>;
|
||||||
states = <1800000 0x1
|
states = <1800000 0x1>,
|
||||||
3300000 0x0>;
|
<3300000 0x0>;
|
||||||
vin-supply = <&vcc_io_33>;
|
vin-supply = <&vcc_io_33>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vcc_sd: sdmmc-regulator {
|
vcc_sd: sdmmc-regulator {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
||||||
pinctrl-0 = <&sdmmc0m1_gpio>;
|
pinctrl-0 = <&sdmmc0m1_pin>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
regulator-name = "vcc_sd";
|
regulator-name = "vcc_sd";
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
|
@ -96,6 +102,18 @@
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
regulator-max-microvolt = <5000000>;
|
regulator-max-microvolt = <5000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vdd_5v_lan: vdd-5v-lan {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
enable-active-high;
|
||||||
|
gpio = <&gpio2 RK_PC6 GPIO_ACTIVE_HIGH>;
|
||||||
|
pinctrl-0 = <&lan_vdd_pin>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
regulator-name = "vdd_5v_lan";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
vin-supply = <&vdd_5v>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&cpu0 {
|
&cpu0 {
|
||||||
|
@ -114,6 +132,10 @@
|
||||||
cpu-supply = <&vdd_arm>;
|
cpu-supply = <&vdd_arm>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&display_subsystem {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
&gmac2io {
|
&gmac2io {
|
||||||
assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
|
assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
|
||||||
assigned-clock-parents = <&gmac_clk>, <&gmac_clk>;
|
assigned-clock-parents = <&gmac_clk>, <&gmac_clk>;
|
||||||
|
@ -134,8 +156,6 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
rtl8211e: ethernet-phy@1 {
|
rtl8211e: ethernet-phy@1 {
|
||||||
compatible = "ethernet-phy-id001c.c915",
|
|
||||||
"ethernet-phy-ieee802.3-c22";
|
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
pinctrl-0 = <ð_phy_reset_pin>;
|
pinctrl-0 = <ð_phy_reset_pin>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@ -282,7 +302,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ethernet-phy {
|
gmac2io {
|
||||||
eth_phy_reset_pin: eth-phy-reset-pin {
|
eth_phy_reset_pin: eth-phy-reset-pin {
|
||||||
rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
|
rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
|
@ -302,6 +322,12 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
lan {
|
||||||
|
lan_vdd_pin: lan-vdd-pin {
|
||||||
|
rockchip,pins = <2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
pmic {
|
pmic {
|
||||||
pmic_int_l: pmic-int-l {
|
pmic_int_l: pmic-int-l {
|
||||||
rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
@ -361,6 +387,19 @@
|
||||||
dr_mode = "host";
|
dr_mode = "host";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&usbdrd3 {
|
||||||
|
dr_mode = "host";
|
||||||
|
status = "okay";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
/* Second port is for USB 3.0 */
|
||||||
|
rtl8153: device@2 {
|
||||||
|
compatible = "usbbda,8153";
|
||||||
|
reg = <2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&usb_host0_ehci {
|
&usb_host0_ehci {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
u-boot,dm-spl;
|
u-boot,dm-spl;
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdmmc0m1_gpio {
|
&sdmmc0m1_pin {
|
||||||
u-boot,dm-spl;
|
u-boot,dm-spl;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,11 @@
|
||||||
model = "Firefly roc-rk3328-cc";
|
model = "Firefly roc-rk3328-cc";
|
||||||
compatible = "firefly,roc-rk3328-cc", "rockchip,rk3328";
|
compatible = "firefly,roc-rk3328-cc", "rockchip,rk3328";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdmmc;
|
||||||
|
mmc1 = &emmc;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
stdout-path = "serial2:1500000n8";
|
||||||
};
|
};
|
||||||
|
@ -34,7 +39,7 @@
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sdmmc0m1_gpio>;
|
pinctrl-0 = <&sdmmc0m1_pin>;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-name = "vcc_sd";
|
regulator-name = "vcc_sd";
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
|
@ -45,8 +50,8 @@
|
||||||
vcc_sdio: sdmmcio-regulator {
|
vcc_sdio: sdmmcio-regulator {
|
||||||
compatible = "regulator-gpio";
|
compatible = "regulator-gpio";
|
||||||
gpios = <&grf_gpio 0 GPIO_ACTIVE_HIGH>;
|
gpios = <&grf_gpio 0 GPIO_ACTIVE_HIGH>;
|
||||||
states = <1800000 0x1
|
states = <1800000 0x1>,
|
||||||
3300000 0x0>;
|
<3300000 0x0>;
|
||||||
regulator-name = "vcc_sdio";
|
regulator-name = "vcc_sdio";
|
||||||
regulator-type = "voltage";
|
regulator-type = "voltage";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
|
@ -86,7 +91,7 @@
|
||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
power {
|
power_led: led-0 {
|
||||||
label = "firefly:blue:power";
|
label = "firefly:blue:power";
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
gpios = <&rk805 1 GPIO_ACTIVE_LOW>;
|
gpios = <&rk805 1 GPIO_ACTIVE_LOW>;
|
||||||
|
@ -94,7 +99,7 @@
|
||||||
mode = <0x23>;
|
mode = <0x23>;
|
||||||
};
|
};
|
||||||
|
|
||||||
user {
|
user_led: led-1 {
|
||||||
label = "firefly:yellow:user";
|
label = "firefly:yellow:user";
|
||||||
linux,default-trigger = "mmc1";
|
linux,default-trigger = "mmc1";
|
||||||
gpios = <&rk805 0 GPIO_ACTIVE_LOW>;
|
gpios = <&rk805 0 GPIO_ACTIVE_LOW>;
|
||||||
|
@ -104,6 +109,14 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&analog_sound {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&codec {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
&cpu0 {
|
&cpu0 {
|
||||||
cpu-supply = <&vdd_arm>;
|
cpu-supply = <&vdd_arm>;
|
||||||
};
|
};
|
||||||
|
@ -161,6 +174,10 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&hdmi_sound {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
@ -270,6 +287,14 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&i2s0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2s1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
&io_domains {
|
&io_domains {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
@ -334,6 +359,12 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&usb20_otg {
|
&usb20_otg {
|
||||||
|
dr_mode = "host";
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usbdrd3 {
|
||||||
|
dr_mode = "host";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
u-boot,dm-spl;
|
u-boot,dm-spl;
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdmmc0m1_gpio {
|
&sdmmc0m1_pin {
|
||||||
u-boot,dm-spl;
|
u-boot,dm-spl;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&usb_host0_xhci {
|
&usb_host0_xhci {
|
||||||
vbus-supply = <&vcc5v0_host_xhci>;
|
vbus-supply = <&vcc_host_5v>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,56 +1,116 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0+
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
/*
|
/*
|
||||||
* (C) Copyright 2020 Radxa
|
* (C) Copyright 2020 Chen-Yu Tsai <wens@csie.org>
|
||||||
|
*
|
||||||
|
* Based on ./rk3328-rock64.dts, which is
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 PINE64
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/dts-v1/;
|
/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"
|
#include "rk3328.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "Radxa Rockpi E";
|
model = "Radxa ROCK Pi E";
|
||||||
compatible = "radxa,rock-pi-e", "rockchip,rk3328";
|
compatible = "radxa,rockpi-e", "rockchip,rk3328";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdmmc;
|
||||||
|
mmc1 = &emmc;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
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 {
|
gmac_clkin: external-gmac-clock {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
clock-frequency = <125000000>;
|
clock-frequency = <125000000>;
|
||||||
clock-output-names = "gmac_clkin";
|
clock-output-names = "gmac_clkin";
|
||||||
#clock-cells = <0>;
|
#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 {
|
vcc_sd: sdmmc-regulator {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sdmmc0m1_gpio>;
|
pinctrl-0 = <&sdmmc0m1_pin>;
|
||||||
regulator-name = "vcc_sd";
|
regulator-name = "vcc_sd";
|
||||||
regulator-always-on;
|
regulator-boot-on;
|
||||||
regulator-boot-on;
|
vin-supply = <&vcc_io>;
|
||||||
regulator-min-microvolt = <3300000>;
|
|
||||||
regulator-max-microvolt = <3300000>;
|
|
||||||
vin-supply = <&vcc_io>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
vcc5v0_host_xhci: vcc5v0-host-xhci-drv {
|
vcc_host_5v: vcc-host-5v-regulator {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
enable-active-high;
|
gpio = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>;
|
||||||
regulator-name = "vcc5v0_host_xhci";
|
pinctrl-names = "default";
|
||||||
gpio = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>;
|
pinctrl-0 = <&usb30_host_drv>;
|
||||||
regulator-min-microvolt = <5000000>;
|
enable-active-high;
|
||||||
regulator-max-microvolt = <5000000>;
|
regulator-name = "vcc_host_5v";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
vin-supply = <&vcc_sys>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vcc_sys: vcc-sys {
|
vcc_sys: vcc-sys {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "vcc_sys";
|
regulator-name = "vcc_sys";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
regulator-max-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 {
|
&cpu0 {
|
||||||
|
@ -72,13 +132,11 @@
|
||||||
&emmc {
|
&emmc {
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
cap-mmc-highspeed;
|
cap-mmc-highspeed;
|
||||||
|
mmc-ddr-1_8v;
|
||||||
mmc-hs200-1_8v;
|
mmc-hs200-1_8v;
|
||||||
supports-emmc;
|
|
||||||
disable-wp;
|
|
||||||
non-removable;
|
non-removable;
|
||||||
num-slots = <1>;
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
|
pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_bus8>;
|
||||||
vmmc-supply = <&vcc_io>;
|
vmmc-supply = <&vcc_io>;
|
||||||
vqmmc-supply = <&vcc18_emmc>;
|
vqmmc-supply = <&vcc18_emmc>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
@ -88,165 +146,233 @@
|
||||||
assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
|
assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
|
||||||
assigned-clock-parents = <&gmac_clkin>, <&gmac_clkin>;
|
assigned-clock-parents = <&gmac_clkin>, <&gmac_clkin>;
|
||||||
clock_in_out = "input";
|
clock_in_out = "input";
|
||||||
phy-supply = <&vcc_io>;
|
phy-handle = <&rtl8211e>;
|
||||||
phy-mode = "rgmii";
|
phy-mode = "rgmii";
|
||||||
|
phy-supply = <&vcc_io>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&rgmiim1_pins>;
|
pinctrl-0 = <&rgmiim1_pins>;
|
||||||
snps,force_thresh_dma_mode;
|
snps,aal;
|
||||||
snps,reset-gpio = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
|
snps,rxpbl = <0x4>;
|
||||||
snps,reset-active-low;
|
snps,txpbl = <0x4>;
|
||||||
snps,reset-delays-us = <0 10000 50000>;
|
|
||||||
tx_delay = <0x26>;
|
tx_delay = <0x26>;
|
||||||
rx_delay = <0x11>;
|
rx_delay = <0x11>;
|
||||||
status = "okay";
|
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 {
|
||||||
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c1 {
|
&i2c1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
rk805: rk805@18 {
|
rk805: pmic@18 {
|
||||||
compatible = "rockchip,rk805";
|
compatible = "rockchip,rk805";
|
||||||
status = "okay";
|
reg = <0x18>;
|
||||||
reg = <0x18>;
|
interrupt-parent = <&gpio2>;
|
||||||
interrupt-parent = <&gpio2>;
|
interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
|
#clock-cells = <1>;
|
||||||
#clock-cells = <1>;
|
clock-output-names = "xin32k", "rk805-clkout2";
|
||||||
clock-output-names = "xin32k", "rk805-clkout2";
|
gpio-controller;
|
||||||
pinctrl-names = "default";
|
#gpio-cells = <2>;
|
||||||
pinctrl-0 = <&pmic_int_l>;
|
pinctrl-names = "default";
|
||||||
rockchip,system-power-controller;
|
pinctrl-0 = <&pmic_int_l>;
|
||||||
wakeup-source;
|
rockchip,system-power-controller;
|
||||||
|
wakeup-source;
|
||||||
|
|
||||||
vcc1-supply = <&vcc_sys>;
|
vcc1-supply = <&vcc_sys>;
|
||||||
vcc2-supply = <&vcc_sys>;
|
vcc2-supply = <&vcc_sys>;
|
||||||
vcc3-supply = <&vcc_sys>;
|
vcc3-supply = <&vcc_sys>;
|
||||||
vcc4-supply = <&vcc_sys>;
|
vcc4-supply = <&vcc_sys>;
|
||||||
vcc5-supply = <&vcc_io>;
|
vcc5-supply = <&vcc_io>;
|
||||||
vcc6-supply = <&vcc_sys>;
|
vcc6-supply = <&vcc_sys>;
|
||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
vdd_logic: DCDC_REG1 {
|
vdd_log: DCDC_REG1 {
|
||||||
regulator-name = "vdd_logic";
|
regulator-name = "vdd_log";
|
||||||
regulator-min-microvolt = <712500>;
|
regulator-always-on;
|
||||||
regulator-max-microvolt = <1450000>;
|
regulator-boot-on;
|
||||||
regulator-ramp-delay = <12500>;
|
regulator-min-microvolt = <712500>;
|
||||||
regulator-always-on;
|
regulator-max-microvolt = <1450000>;
|
||||||
regulator-boot-on;
|
regulator-ramp-delay = <12500>;
|
||||||
regulator-state-mem {
|
|
||||||
regulator-on-in-suspend;
|
|
||||||
regulator-suspend-microvolt = <1000000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
vdd_arm: DCDC_REG2 {
|
regulator-state-mem {
|
||||||
regulator-name = "vdd_arm";
|
regulator-on-in-suspend;
|
||||||
regulator-min-microvolt = <712500>;
|
regulator-suspend-microvolt = <1000000>;
|
||||||
regulator-max-microvolt = <1450000>;
|
};
|
||||||
regulator-ramp-delay = <12500>;
|
};
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-state-mem {
|
|
||||||
regulator-on-in-suspend;
|
|
||||||
regulator-suspend-microvolt = <950000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
vcc_ddr: DCDC_REG3 {
|
vdd_arm: DCDC_REG2 {
|
||||||
regulator-name = "vcc_ddr";
|
regulator-name = "vdd_arm";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-state-mem {
|
regulator-min-microvolt = <712500>;
|
||||||
regulator-on-in-suspend;
|
regulator-max-microvolt = <1450000>;
|
||||||
};
|
regulator-ramp-delay = <12500>;
|
||||||
};
|
|
||||||
|
|
||||||
vcc_io: DCDC_REG4 {
|
regulator-state-mem {
|
||||||
regulator-name = "vcc_io";
|
regulator-on-in-suspend;
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-suspend-microvolt = <950000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
};
|
||||||
regulator-always-on;
|
};
|
||||||
regulator-boot-on;
|
|
||||||
regulator-state-mem {
|
|
||||||
regulator-on-in-suspend;
|
|
||||||
regulator-suspend-microvolt = <3300000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
vcc_18: LDO_REG1 {
|
vcc_ddr: DCDC_REG3 {
|
||||||
regulator-name = "vcc_18";
|
regulator-name = "vcc_ddr";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-always-on;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-boot-on;
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-state-mem {
|
|
||||||
regulator-on-in-suspend;
|
|
||||||
regulator-suspend-microvolt = <1800000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
vcc18_emmc: LDO_REG2 {
|
regulator-state-mem {
|
||||||
regulator-name = "vcc18_emmc";
|
regulator-on-in-suspend;
|
||||||
regulator-min-microvolt = <1800000>;
|
};
|
||||||
regulator-max-microvolt = <1800000>;
|
};
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-state-mem {
|
|
||||||
regulator-on-in-suspend;
|
|
||||||
regulator-suspend-microvolt = <1800000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
vdd_10: LDO_REG3 {
|
vcc_io: DCDC_REG4 {
|
||||||
regulator-name = "vdd_10";
|
regulator-name = "vcc_io";
|
||||||
regulator-min-microvolt = <1000000>;
|
regulator-always-on;
|
||||||
regulator-max-microvolt = <1000000>;
|
regulator-boot-on;
|
||||||
regulator-always-on;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-boot-on;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-state-mem {
|
|
||||||
regulator-on-in-suspend;
|
regulator-state-mem {
|
||||||
regulator-suspend-microvolt = <1000000>;
|
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>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&io_domains {
|
&i2s1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&io_domains {
|
||||||
|
pmuio-supply = <&vcc_io>;
|
||||||
vccio1-supply = <&vcc_io>;
|
vccio1-supply = <&vcc_io>;
|
||||||
vccio2-supply = <&vcc18_emmc>;
|
vccio2-supply = <&vcc18_emmc>;
|
||||||
vccio3-supply = <&vcc_io>;
|
vccio3-supply = <&vcc_io>;
|
||||||
vccio4-supply = <&vcc_io>;
|
vccio4-supply = <&vcc_io>;
|
||||||
vccio5-supply = <&vcc_io>;
|
vccio5-supply = <&vcc_io>;
|
||||||
vccio6-supply = <&vcc_io>;
|
vccio6-supply = <&vcc_io>;
|
||||||
pmuio-supply = <&vcc_io>;
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&pinctrl {
|
&pinctrl {
|
||||||
pmic {
|
ephy {
|
||||||
pmic_int_l: pmic-int-l {
|
eth_phy_int_pin: eth-phy-int-pin {
|
||||||
rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
|
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 {
|
&sdmmc {
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cap-mmc-highspeed;
|
|
||||||
cap-sd-highspeed;
|
cap-sd-highspeed;
|
||||||
card-detect-delay = <200>;
|
|
||||||
disable-wp;
|
disable-wp;
|
||||||
max-frequency = <150000000>;
|
|
||||||
num-slots = <1>;
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_dectn &sdmmc0_bus4>;
|
pinctrl-0 = <&sdmmc0_clk>, <&sdmmc0_cmd>, <&sdmmc0_dectn>, <&sdmmc0_bus4>;
|
||||||
supports-sd;
|
|
||||||
vmmc-supply = <&vcc_sd>;
|
vmmc-supply = <&vcc_sd>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&saradc {
|
&saradc {
|
||||||
|
vref-supply = <&vcc_18>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&tsadc {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&u2phy {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&u2phy_host {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -254,14 +380,11 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&usb20_otg {
|
&usbdrd3 {
|
||||||
|
dr_mode = "host";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&usb_host0_ehci {
|
&usb_host0_ehci {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&usb_host0_ohci {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
u-boot,dm-spl;
|
u-boot,dm-spl;
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdmmc0m1_gpio {
|
&sdmmc0m1_pin {
|
||||||
u-boot,dm-spl;
|
u-boot,dm-spl;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,11 @@
|
||||||
model = "Pine64 Rock64";
|
model = "Pine64 Rock64";
|
||||||
compatible = "pine64,rock64", "rockchip,rk3328";
|
compatible = "pine64,rock64", "rockchip,rk3328";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdmmc;
|
||||||
|
mmc1 = &emmc;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
stdout-path = "serial2:1500000n8";
|
||||||
};
|
};
|
||||||
|
@ -25,7 +30,7 @@
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sdmmc0m1_gpio>;
|
pinctrl-0 = <&sdmmc0m1_pin>;
|
||||||
regulator-name = "vcc_sd";
|
regulator-name = "vcc_sd";
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
|
@ -73,45 +78,43 @@
|
||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
power {
|
power_led: led-0 {
|
||||||
gpios = <&rk805 1 GPIO_ACTIVE_LOW>;
|
gpios = <&rk805 1 GPIO_ACTIVE_LOW>;
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
};
|
};
|
||||||
|
|
||||||
standby {
|
standby_led: led-1 {
|
||||||
gpios = <&rk805 0 GPIO_ACTIVE_LOW>;
|
gpios = <&rk805 0 GPIO_ACTIVE_LOW>;
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sound {
|
spdif_sound: spdif-sound {
|
||||||
compatible = "audio-graph-card";
|
compatible = "simple-audio-card";
|
||||||
label = "rockchip,rk3328";
|
simple-audio-card,name = "SPDIF";
|
||||||
dais = <&i2s1_p0
|
|
||||||
&spdif_p0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
spdif-dit {
|
simple-audio-card,cpu {
|
||||||
compatible = "linux,spdif-dit";
|
sound-dai = <&spdif>;
|
||||||
#sound-dai-cells = <0>;
|
};
|
||||||
|
|
||||||
port {
|
simple-audio-card,codec {
|
||||||
dit_p0_0: endpoint {
|
sound-dai = <&spdif_dit>;
|
||||||
remote-endpoint = <&spdif_p0_0>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
spdif_dit: spdif-dit {
|
||||||
|
compatible = "linux,spdif-dit";
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&analog_sound {
|
||||||
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&codec {
|
&codec {
|
||||||
mute-gpios = <&grf_gpio 0 GPIO_ACTIVE_LOW>;
|
mute-gpios = <&grf_gpio 0 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
port@0 {
|
|
||||||
codec_p0_0: endpoint {
|
|
||||||
remote-endpoint = <&i2s1_p0_0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&cpu0 {
|
&cpu0 {
|
||||||
|
@ -163,6 +166,10 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&hdmi_sound {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
&hdmiphy {
|
&hdmiphy {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -278,16 +285,12 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&i2s0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
&i2s1 {
|
&i2s1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
i2s1_p0: port {
|
|
||||||
i2s1_p0_0: endpoint {
|
|
||||||
dai-format = "i2s";
|
|
||||||
mclk-fs = <256>;
|
|
||||||
remote-endpoint = <&codec_p0_0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&io_domains {
|
&io_domains {
|
||||||
|
@ -337,12 +340,6 @@
|
||||||
&spdif {
|
&spdif {
|
||||||
pinctrl-0 = <&spdifm0_tx>;
|
pinctrl-0 = <&spdifm0_tx>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
spdif_p0: port {
|
|
||||||
spdif_p0_0: endpoint {
|
|
||||||
remote-endpoint = <&dit_p0_0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&spi0 {
|
&spi0 {
|
||||||
|
@ -384,6 +381,11 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&usbdrd3 {
|
||||||
|
dr_mode = "host";
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
&usb_host0_ehci {
|
&usb_host0_ehci {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -142,23 +142,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
amba: bus {
|
|
||||||
compatible = "simple-bus";
|
|
||||||
#address-cells = <2>;
|
|
||||||
#size-cells = <2>;
|
|
||||||
ranges;
|
|
||||||
|
|
||||||
dmac: dmac@ff1f0000 {
|
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
|
||||||
reg = <0x0 0xff1f0000 0x0 0x4000>;
|
|
||||||
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
|
|
||||||
<GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
clocks = <&cru ACLK_DMAC>;
|
|
||||||
clock-names = "apb_pclk";
|
|
||||||
#dma-cells = <1>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
analog_sound: analog-sound {
|
analog_sound: analog-sound {
|
||||||
compatible = "simple-audio-card";
|
compatible = "simple-audio-card";
|
||||||
simple-audio-card,format = "i2s";
|
simple-audio-card,format = "i2s";
|
||||||
|
@ -305,7 +288,7 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
grf_gpio: grf-gpio {
|
grf_gpio: gpio {
|
||||||
compatible = "rockchip,rk3328-grf-gpio";
|
compatible = "rockchip,rk3328-grf-gpio";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
|
@ -317,15 +300,18 @@
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
pd_hevc@RK3328_PD_HEVC {
|
power-domain@RK3328_PD_HEVC {
|
||||||
reg = <RK3328_PD_HEVC>;
|
reg = <RK3328_PD_HEVC>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_video@RK3328_PD_VIDEO {
|
power-domain@RK3328_PD_VIDEO {
|
||||||
reg = <RK3328_PD_VIDEO>;
|
reg = <RK3328_PD_VIDEO>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_vpu@RK3328_PD_VPU {
|
power-domain@RK3328_PD_VPU {
|
||||||
reg = <RK3328_PD_VPU>;
|
reg = <RK3328_PD_VPU>;
|
||||||
clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
|
clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -452,7 +438,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
wdt: watchdog@ff1a0000 {
|
wdt: watchdog@ff1a0000 {
|
||||||
compatible = "snps,dw-wdt";
|
compatible = "rockchip,rk3328-wdt", "snps,dw-wdt";
|
||||||
reg = <0x0 0xff1a0000 0x0 0x100>;
|
reg = <0x0 0xff1a0000 0x0 0x100>;
|
||||||
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&cru PCLK_WDT>;
|
clocks = <&cru PCLK_WDT>;
|
||||||
|
@ -503,6 +489,17 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dmac: dmac@ff1f0000 {
|
||||||
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
|
reg = <0x0 0xff1f0000 0x0 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
arm,pl330-periph-burst;
|
||||||
|
clocks = <&cru ACLK_DMAC>;
|
||||||
|
clock-names = "apb_pclk";
|
||||||
|
#dma-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
thermal-zones {
|
thermal-zones {
|
||||||
soc_thermal: soc-thermal {
|
soc_thermal: soc-thermal {
|
||||||
polling-delay-passive = <20>;
|
polling-delay-passive = <20>;
|
||||||
|
@ -552,9 +549,9 @@
|
||||||
clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
|
clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
|
||||||
clock-names = "tsadc", "apb_pclk";
|
clock-names = "tsadc", "apb_pclk";
|
||||||
pinctrl-names = "init", "default", "sleep";
|
pinctrl-names = "init", "default", "sleep";
|
||||||
pinctrl-0 = <&otp_gpio>;
|
pinctrl-0 = <&otp_pin>;
|
||||||
pinctrl-1 = <&otp_out>;
|
pinctrl-1 = <&otp_out>;
|
||||||
pinctrl-2 = <&otp_gpio>;
|
pinctrl-2 = <&otp_pin>;
|
||||||
resets = <&cru SRST_TSADC>;
|
resets = <&cru SRST_TSADC>;
|
||||||
reset-names = "tsadc-apb";
|
reset-names = "tsadc-apb";
|
||||||
rockchip,grf = <&grf>;
|
rockchip,grf = <&grf>;
|
||||||
|
@ -822,7 +819,7 @@
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
u2phy: usb2-phy@100 {
|
u2phy: usb2phy@100 {
|
||||||
compatible = "rockchip,rk3328-usb2phy";
|
compatible = "rockchip,rk3328-usb2phy";
|
||||||
reg = <0x100 0x10>;
|
reg = <0x100 0x10>;
|
||||||
clocks = <&xin24m>;
|
clocks = <&xin24m>;
|
||||||
|
@ -922,11 +919,12 @@
|
||||||
"mac_clk_tx", "clk_mac_ref",
|
"mac_clk_tx", "clk_mac_ref",
|
||||||
"aclk_mac", "pclk_mac",
|
"aclk_mac", "pclk_mac",
|
||||||
"clk_macphy";
|
"clk_macphy";
|
||||||
resets = <&cru SRST_GMAC2PHY_A>, <&cru SRST_MACPHY>;
|
resets = <&cru SRST_GMAC2PHY_A>;
|
||||||
reset-names = "stmmaceth", "mac-phy";
|
reset-names = "stmmaceth";
|
||||||
phy-mode = "rmii";
|
phy-mode = "rmii";
|
||||||
phy-handle = <&phy>;
|
phy-handle = <&phy>;
|
||||||
snps,txpbl = <0x4>;
|
snps,txpbl = <0x4>;
|
||||||
|
clock_in_out = "output";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
mdio {
|
mdio {
|
||||||
|
@ -934,7 +932,7 @@
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
phy: phy@0 {
|
phy: ethernet-phy@0 {
|
||||||
compatible = "ethernet-phy-id1234.d400", "ethernet-phy-ieee802.3-c22";
|
compatible = "ethernet-phy-id1234.d400", "ethernet-phy-ieee802.3-c22";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
clocks = <&cru SCLK_MAC2PHY_OUT>;
|
clocks = <&cru SCLK_MAC2PHY_OUT>;
|
||||||
|
@ -966,6 +964,25 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
usbdrd3: usb@ff600000 {
|
||||||
|
compatible = "rockchip,rk3328-dwc3", "snps,dwc3";
|
||||||
|
reg = <0x0 0xff600000 0x0 0x100000>;
|
||||||
|
interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&cru SCLK_USB3OTG_REF>, <&cru SCLK_USB3OTG_SUSPEND>,
|
||||||
|
<&cru ACLK_USB3OTG>;
|
||||||
|
clock-names = "ref_clk", "suspend_clk",
|
||||||
|
"bus_clk";
|
||||||
|
dr_mode = "otg";
|
||||||
|
phy_type = "utmi_wide";
|
||||||
|
snps,dis-del-phy-power-chg-quirk;
|
||||||
|
snps,dis_enblslpm_quirk;
|
||||||
|
snps,dis-tx-ipgap-linecheck-quirk;
|
||||||
|
snps,dis-u2-freeclk-exists-quirk;
|
||||||
|
snps,dis_u2_susphy_quirk;
|
||||||
|
snps,dis_u3_susphy_quirk;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* U-boot Specific Change
|
* U-boot Specific Change
|
||||||
*
|
*
|
||||||
|
@ -1163,7 +1180,7 @@
|
||||||
rockchip,pins = <0 RK_PA5 2 &pcfg_pull_none>,
|
rockchip,pins = <0 RK_PA5 2 &pcfg_pull_none>,
|
||||||
<0 RK_PA6 2 &pcfg_pull_none>;
|
<0 RK_PA6 2 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
i2c3_gpio: i2c3-gpio {
|
i2c3_pins: i2c3-pins {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>,
|
<0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>,
|
||||||
<0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
<0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
@ -1234,7 +1251,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
tsadc {
|
tsadc {
|
||||||
otp_gpio: otp-gpio {
|
otp_pin: otp-pin {
|
||||||
rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1245,8 +1262,8 @@
|
||||||
|
|
||||||
uart0 {
|
uart0 {
|
||||||
uart0_xfer: uart0-xfer {
|
uart0_xfer: uart0-xfer {
|
||||||
rockchip,pins = <1 RK_PB1 1 &pcfg_pull_up>,
|
rockchip,pins = <1 RK_PB1 1 &pcfg_pull_none>,
|
||||||
<1 RK_PB0 1 &pcfg_pull_none>;
|
<1 RK_PB0 1 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
|
|
||||||
uart0_cts: uart0-cts {
|
uart0_cts: uart0-cts {
|
||||||
|
@ -1257,15 +1274,15 @@
|
||||||
rockchip,pins = <1 RK_PB2 1 &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PB2 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
uart0_rts_gpio: uart0-rts-gpio {
|
uart0_rts_pin: uart0-rts-pin {
|
||||||
rockchip,pins = <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1 {
|
uart1 {
|
||||||
uart1_xfer: uart1-xfer {
|
uart1_xfer: uart1-xfer {
|
||||||
rockchip,pins = <3 RK_PA4 4 &pcfg_pull_up>,
|
rockchip,pins = <3 RK_PA4 4 &pcfg_pull_none>,
|
||||||
<3 RK_PA6 4 &pcfg_pull_none>;
|
<3 RK_PA6 4 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1_cts: uart1-cts {
|
uart1_cts: uart1-cts {
|
||||||
|
@ -1276,22 +1293,22 @@
|
||||||
rockchip,pins = <3 RK_PA5 4 &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PA5 4 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1_rts_gpio: uart1-rts-gpio {
|
uart1_rts_pin: uart1-rts-pin {
|
||||||
rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
uart2-0 {
|
uart2-0 {
|
||||||
uart2m0_xfer: uart2m0-xfer {
|
uart2m0_xfer: uart2m0-xfer {
|
||||||
rockchip,pins = <1 RK_PA0 2 &pcfg_pull_up>,
|
rockchip,pins = <1 RK_PA0 2 &pcfg_pull_none>,
|
||||||
<1 RK_PA1 2 &pcfg_pull_none>;
|
<1 RK_PA1 2 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
uart2-1 {
|
uart2-1 {
|
||||||
uart2m1_xfer: uart2m1-xfer {
|
uart2m1_xfer: uart2m1-xfer {
|
||||||
rockchip,pins = <2 RK_PA0 1 &pcfg_pull_up>,
|
rockchip,pins = <2 RK_PA0 1 &pcfg_pull_none>,
|
||||||
<2 RK_PA1 1 &pcfg_pull_none>;
|
<2 RK_PA1 1 &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1502,7 +1519,7 @@
|
||||||
rockchip,pins = <2 RK_PA7 1 &pcfg_pull_up_4ma>;
|
rockchip,pins = <2 RK_PA7 1 &pcfg_pull_up_4ma>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sdmmc0m0_gpio: sdmmc0m0-gpio {
|
sdmmc0m0_pin: sdmmc0m0-pin {
|
||||||
rockchip,pins = <2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up_4ma>;
|
rockchip,pins = <2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up_4ma>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1512,7 +1529,7 @@
|
||||||
rockchip,pins = <0 RK_PD6 3 &pcfg_pull_up_4ma>;
|
rockchip,pins = <0 RK_PD6 3 &pcfg_pull_up_4ma>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sdmmc0m1_gpio: sdmmc0m1-gpio {
|
sdmmc0m1_pin: sdmmc0m1-pin {
|
||||||
rockchip,pins = <0 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up_4ma>;
|
rockchip,pins = <0 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up_4ma>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1545,7 +1562,7 @@
|
||||||
<1 RK_PA3 1 &pcfg_pull_up_8ma>;
|
<1 RK_PA3 1 &pcfg_pull_up_8ma>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sdmmc0_gpio: sdmmc0-gpio {
|
sdmmc0_pins: sdmmc0-pins {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
|
<1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
|
||||||
<1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
|
<1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
|
||||||
|
@ -1587,7 +1604,7 @@
|
||||||
<3 RK_PA7 3 &pcfg_pull_up_4ma>;
|
<3 RK_PA7 3 &pcfg_pull_up_4ma>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sdmmc0ext_gpio: sdmmc0ext-gpio {
|
sdmmc0ext_pins: sdmmc0ext-pins {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<3 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
|
<3 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
|
||||||
<3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
|
<3 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
|
||||||
|
@ -1632,7 +1649,7 @@
|
||||||
<1 RK_PC1 1 &pcfg_pull_up_8ma>;
|
<1 RK_PC1 1 &pcfg_pull_up_8ma>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sdmmc1_gpio: sdmmc1-gpio {
|
sdmmc1_pins: sdmmc1-pins {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
|
<1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
|
||||||
<1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
|
<1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up_4ma>,
|
||||||
|
@ -1826,7 +1843,7 @@
|
||||||
tsadc_int: tsadc-int {
|
tsadc_int: tsadc-int {
|
||||||
rockchip,pins = <2 RK_PB5 2 &pcfg_pull_none>;
|
rockchip,pins = <2 RK_PB5 2 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
tsadc_gpio: tsadc-gpio {
|
tsadc_pin: tsadc-pin {
|
||||||
rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,43 +1,6 @@
|
||||||
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2016 Andreas Färber
|
* Copyright (c) 2016 Andreas Färber
|
||||||
*
|
|
||||||
* This file is dual-licensed: you can use it either under the terms
|
|
||||||
* of the GPL or the X11 license, at your option. Note that this dual
|
|
||||||
* licensing only applies to this file, and not this project as a
|
|
||||||
* whole.
|
|
||||||
*
|
|
||||||
* a) This file is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This file is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* Or, alternatively,
|
|
||||||
*
|
|
||||||
* b) Permission is hereby granted, free of charge, to any person
|
|
||||||
* obtaining a copy of this software and associated documentation
|
|
||||||
* files (the "Software"), to deal in the Software without
|
|
||||||
* restriction, including without limitation the rights to use,
|
|
||||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
* sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following
|
|
||||||
* conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be
|
|
||||||
* included in all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
@ -48,6 +11,10 @@
|
||||||
model = "GeekBox";
|
model = "GeekBox";
|
||||||
compatible = "geekbuying,geekbox", "rockchip,rk3368";
|
compatible = "geekbuying,geekbox", "rockchip,rk3368";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &emmc;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:115200n8";
|
stdout-path = "serial2:115200n8";
|
||||||
};
|
};
|
||||||
|
@ -66,7 +33,7 @@
|
||||||
|
|
||||||
ir: ir-receiver {
|
ir: ir-receiver {
|
||||||
compatible = "gpio-ir-receiver";
|
compatible = "gpio-ir-receiver";
|
||||||
gpios = <&gpio3 30 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_LOW>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&ir_int>;
|
pinctrl-0 = <&ir_int>;
|
||||||
};
|
};
|
||||||
|
@ -77,7 +44,7 @@
|
||||||
pinctrl-0 = <&pwr_key>;
|
pinctrl-0 = <&pwr_key>;
|
||||||
|
|
||||||
power {
|
power {
|
||||||
gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>;
|
||||||
label = "GPIO Power";
|
label = "GPIO Power";
|
||||||
linux,code = <KEY_POWER>;
|
linux,code = <KEY_POWER>;
|
||||||
wakeup-source;
|
wakeup-source;
|
||||||
|
@ -87,14 +54,14 @@
|
||||||
leds: gpio-leds {
|
leds: gpio-leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
blue {
|
blue_led: led-0 {
|
||||||
gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_HIGH>;
|
||||||
label = "geekbox:blue:led";
|
label = "geekbox:blue:led";
|
||||||
default-state = "on";
|
default-state = "on";
|
||||||
};
|
};
|
||||||
|
|
||||||
red {
|
red_led: led-1 {
|
||||||
gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio2 RK_PA3 GPIO_ACTIVE_HIGH>;
|
||||||
label = "geekbox:red:led";
|
label = "geekbox:red:led";
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
|
@ -115,10 +82,7 @@
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
cap-mmc-highspeed;
|
cap-mmc-highspeed;
|
||||||
clock-frequency = <150000000>;
|
clock-frequency = <150000000>;
|
||||||
disable-wp;
|
|
||||||
keep-power-in-suspend;
|
|
||||||
non-removable;
|
non-removable;
|
||||||
num-slots = <1>;
|
|
||||||
vmmc-supply = <&vcc_io>;
|
vmmc-supply = <&vcc_io>;
|
||||||
vqmmc-supply = <&vcc18_flash>;
|
vqmmc-supply = <&vcc18_flash>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@ -147,7 +111,7 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pmic_int>, <&pmic_sleep>;
|
pinctrl-0 = <&pmic_int>, <&pmic_sleep>;
|
||||||
interrupt-parent = <&gpio0>;
|
interrupt-parent = <&gpio0>;
|
||||||
interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>;
|
||||||
rockchip,system-power-controller;
|
rockchip,system-power-controller;
|
||||||
vcc1-supply = <&vcc_sys>;
|
vcc1-supply = <&vcc_sys>;
|
||||||
vcc2-supply = <&vcc_sys>;
|
vcc2-supply = <&vcc_sys>;
|
||||||
|
@ -258,8 +222,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
vcc_sd: SWITCH_REG1 {
|
vcc_sd: SWITCH_REG1 {
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-name = "vcc_sd";
|
regulator-name = "vcc_sd";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -275,23 +237,23 @@
|
||||||
&pinctrl {
|
&pinctrl {
|
||||||
ir {
|
ir {
|
||||||
ir_int: ir-int {
|
ir_int: ir-int {
|
||||||
rockchip,pins = <3 30 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
keys {
|
keys {
|
||||||
pwr_key: pwr-key {
|
pwr_key: pwr-key {
|
||||||
rockchip,pins = <0 2 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pmic {
|
pmic {
|
||||||
pmic_sleep: pmic-sleep {
|
pmic_sleep: pmic-sleep {
|
||||||
rockchip,pins = <0 0 RK_FUNC_2 &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA0 2 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pmic_int: pmic-int {
|
pmic_int: pmic-int {
|
||||||
rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,6 +10,10 @@
|
||||||
model = "Theobroma Systems RK3368-uQ7 Baseboard";
|
model = "Theobroma Systems RK3368-uQ7 Baseboard";
|
||||||
compatible = "tsd,rk3368-lion-haikou", "rockchip,rk3368";
|
compatible = "tsd,rk3368-lion-haikou", "rockchip,rk3368";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc1 = &sdmmc;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial0:115200n8";
|
stdout-path = "serial0:115200n8";
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,6 +7,10 @@
|
||||||
#include "rk3368.dtsi"
|
#include "rk3368.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
aliases {
|
||||||
|
mmc0 = &emmc;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial0:115200n8";
|
stdout-path = "serial0:115200n8";
|
||||||
};
|
};
|
||||||
|
@ -150,7 +154,6 @@
|
||||||
assigned-clocks = <&cru SCLK_MAC>;
|
assigned-clocks = <&cru SCLK_MAC>;
|
||||||
assigned-clock-parents = <&ext_gmac>;
|
assigned-clock-parents = <&ext_gmac>;
|
||||||
clock_in_out = "input";
|
clock_in_out = "input";
|
||||||
phy-handle = <&phy0>;
|
|
||||||
phy-supply = <&vcc33_io>;
|
phy-supply = <&vcc33_io>;
|
||||||
phy-mode = "rgmii";
|
phy-mode = "rgmii";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@ -161,22 +164,6 @@
|
||||||
tx_delay = <0x10>;
|
tx_delay = <0x10>;
|
||||||
rx_delay = <0x10>;
|
rx_delay = <0x10>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
mdio {
|
|
||||||
compatible = "snps,dwmac-mdio";
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
/* Microsemi VSC8531-02 */
|
|
||||||
phy0: phy@0 {
|
|
||||||
compatible = "ethernet-phy-id0007.0570";
|
|
||||||
reg = <0>;
|
|
||||||
vsc8531,clk-out-frequency = <125000000>;
|
|
||||||
vsc8531,edge-slowdown = <7>;
|
|
||||||
vsc8531,led-0-mode = <1>;
|
|
||||||
vsc8531,led-1-mode = <2>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c0 {
|
&i2c0 {
|
||||||
|
|
|
@ -1,43 +1,6 @@
|
||||||
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2017 Rockchip Electronics Co., Ltd
|
* Copyright (c) 2016 Fuzhou Rockchip Electronics Co., Ltd
|
||||||
*
|
|
||||||
* This file is dual-licensed: you can use it either under the terms
|
|
||||||
* of the GPL or the X11 license, at your option. Note that this dual
|
|
||||||
* licensing only applies to this file, and not this project as a
|
|
||||||
* whole.
|
|
||||||
*
|
|
||||||
* a) This file is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU General Public License as
|
|
||||||
* published by the Free Software Foundation; either version 2 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This file is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* Or, alternatively,
|
|
||||||
*
|
|
||||||
* b) Permission is hereby granted, free of charge, to any person
|
|
||||||
* obtaining a copy of this software and associated documentation
|
|
||||||
* files (the "Software"), to deal in the Software without
|
|
||||||
* restriction, including without limitation the rights to use,
|
|
||||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
* sell copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following
|
|
||||||
* conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be
|
|
||||||
* included in all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
@ -45,30 +8,21 @@
|
||||||
#include <dt-bindings/input/input.h>
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "PX5 EVB";
|
model = "Rockchip PX5 EVB";
|
||||||
compatible = "rockchip,px5-evb", "rockchip,px5", "rockchip,rk3368";
|
compatible = "rockchip,px5-evb", "rockchip,px5", "rockchip,rk3368";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdmmc;
|
||||||
|
mmc1 = &emmc;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial4:115200n8";
|
stdout-path = "serial4:115200n8";
|
||||||
};
|
};
|
||||||
|
|
||||||
memory@0 {
|
memory@0 {
|
||||||
device_type = "memory";
|
|
||||||
reg = <0x0 0x0 0x0 0x40000000>;
|
reg = <0x0 0x0 0x0 0x40000000>;
|
||||||
};
|
device_type = "memory";
|
||||||
|
|
||||||
ext_gmac: gmac-clk {
|
|
||||||
compatible = "fixed-clock";
|
|
||||||
clock-frequency = <125000000>;
|
|
||||||
clock-output-names = "ext_gmac";
|
|
||||||
#clock-cells = <0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ir: ir-receiver {
|
|
||||||
compatible = "gpio-ir-receiver";
|
|
||||||
gpios = <&gpio3 30 GPIO_ACTIVE_LOW>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&ir_int>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
keys: gpio-keys {
|
keys: gpio-keys {
|
||||||
|
@ -77,29 +31,13 @@
|
||||||
pinctrl-0 = <&pwr_key>;
|
pinctrl-0 = <&pwr_key>;
|
||||||
|
|
||||||
power {
|
power {
|
||||||
gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>;
|
||||||
label = "GPIO Power";
|
label = "GPIO Power";
|
||||||
linux,code = <KEY_POWER>;
|
linux,code = <KEY_POWER>;
|
||||||
wakeup-source;
|
wakeup-source;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
leds: gpio-leds {
|
|
||||||
compatible = "gpio-leds";
|
|
||||||
|
|
||||||
blue {
|
|
||||||
gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
|
|
||||||
label = "geekbox:blue:led";
|
|
||||||
default-state = "on";
|
|
||||||
};
|
|
||||||
|
|
||||||
red {
|
|
||||||
gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
|
|
||||||
label = "geekbox:red:led";
|
|
||||||
default-state = "off";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
vcc_sys: vcc-sys-regulator {
|
vcc_sys: vcc-sys-regulator {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "vcc_sys";
|
regulator-name = "vcc_sys";
|
||||||
|
@ -115,27 +53,14 @@
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
cap-mmc-highspeed;
|
cap-mmc-highspeed;
|
||||||
clock-frequency = <150000000>;
|
clock-frequency = <150000000>;
|
||||||
disable-wp;
|
mmc-hs200-1_8v;
|
||||||
keep-power-in-suspend;
|
no-sdio;
|
||||||
|
no-sd;
|
||||||
non-removable;
|
non-removable;
|
||||||
num-slots = <1>;
|
|
||||||
vmmc-supply = <&vcc_io>;
|
|
||||||
vqmmc-supply = <&vcc18_flash>;
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_bus8>;
|
pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_bus8>;
|
||||||
};
|
vmmc-supply = <&vcc_io>;
|
||||||
|
vqmmc-supply = <&vcc18_flash>;
|
||||||
&gmac {
|
|
||||||
status = "okay";
|
|
||||||
phy-supply = <&vcc_lan>;
|
|
||||||
phy-mode = "rgmii";
|
|
||||||
clock_in_out = "input";
|
|
||||||
assigned-clocks = <&cru SCLK_MAC>;
|
|
||||||
assigned-clock-parents = <&ext_gmac>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&rgmii_pins>;
|
|
||||||
tx_delay = <0x30>;
|
|
||||||
rx_delay = <0x10>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c0 {
|
&i2c0 {
|
||||||
|
@ -144,10 +69,10 @@
|
||||||
rk808: pmic@1b {
|
rk808: pmic@1b {
|
||||||
compatible = "rockchip,rk808";
|
compatible = "rockchip,rk808";
|
||||||
reg = <0x1b>;
|
reg = <0x1b>;
|
||||||
|
interrupt-parent = <&gpio0>;
|
||||||
|
interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pmic_int>, <&pmic_sleep>;
|
pinctrl-0 = <&pmic_int>, <&pmic_sleep>;
|
||||||
interrupt-parent = <&gpio0>;
|
|
||||||
interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
|
|
||||||
rockchip,system-power-controller;
|
rockchip,system-power-controller;
|
||||||
vcc1-supply = <&vcc_sys>;
|
vcc1-supply = <&vcc_sys>;
|
||||||
vcc2-supply = <&vcc_sys>;
|
vcc2-supply = <&vcc_sys>;
|
||||||
|
@ -202,12 +127,12 @@
|
||||||
regulator-name = "vcc18_flash";
|
regulator-name = "vcc18_flash";
|
||||||
};
|
};
|
||||||
|
|
||||||
vcc33_lcd: LDO_REG2 {
|
vcca_33: LDO_REG2 {
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-name = "vcc33_lcd";
|
regulator-name = "vcca_33";
|
||||||
};
|
};
|
||||||
|
|
||||||
vdd_10: LDO_REG3 {
|
vdd_10: LDO_REG3 {
|
||||||
|
@ -218,11 +143,10 @@
|
||||||
regulator-name = "vdd_10";
|
regulator-name = "vdd_10";
|
||||||
};
|
};
|
||||||
|
|
||||||
vcca_18: LDO_REG4 {
|
avdd_33: LDO_REG4 {
|
||||||
regulator-boot-on;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-name = "avdd_33";
|
||||||
regulator-name = "vcca_18";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
vccio_sd: LDO_REG5 {
|
vccio_sd: LDO_REG5 {
|
||||||
|
@ -258,46 +182,76 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
vcc_sd: SWITCH_REG1 {
|
vcc_sd: SWITCH_REG1 {
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-name = "vcc_sd";
|
regulator-name = "vcc_sd";
|
||||||
};
|
};
|
||||||
|
|
||||||
vcc_lan: SWITCH_REG2 {
|
vcc33_lcd: SWITCH_REG2 {
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-name = "vcc_lan";
|
regulator-name = "vcc33_lcd";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&pinctrl {
|
&i2c1 {
|
||||||
ir {
|
status = "okay";
|
||||||
ir_int: ir-int {
|
|
||||||
rockchip,pins = <3 30 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
accelerometer@18 {
|
||||||
|
compatible = "bosch,bma250";
|
||||||
|
reg = <0x18>;
|
||||||
|
interrupt-parent = <&gpio2>;
|
||||||
|
interrupts = <RK_PC1 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c2 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
gsl1680: touchscreen@40 {
|
||||||
|
compatible = "silead,gsl1680";
|
||||||
|
reg = <0x40>;
|
||||||
|
interrupt-parent = <&gpio3>;
|
||||||
|
interrupts = <RK_PD4 IRQ_TYPE_EDGE_FALLING>;
|
||||||
|
power-gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>;
|
||||||
|
touchscreen-size-x = <800>;
|
||||||
|
touchscreen-size-y = <1280>;
|
||||||
|
silead,max-fingers = <5>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&pinctrl {
|
||||||
keys {
|
keys {
|
||||||
pwr_key: pwr-key {
|
pwr_key: pwr-key {
|
||||||
rockchip,pins = <0 2 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pmic {
|
pmic {
|
||||||
pmic_sleep: pmic-sleep {
|
pmic_sleep: pmic-sleep {
|
||||||
rockchip,pins = <0 0 RK_FUNC_2 &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA0 2 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pmic_int: pmic-int {
|
pmic_int: pmic-int {
|
||||||
rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&saradc {
|
&sdmmc {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
bus-width = <4>;
|
||||||
|
cap-mmc-highspeed;
|
||||||
|
cap-sd-highspeed;
|
||||||
|
card-detect-delay = <200>;
|
||||||
|
no-sdio;
|
||||||
|
sd-uhs-sdr12;
|
||||||
|
sd-uhs-sdr25;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_bus4>, <&sdmmc_cd>;
|
||||||
|
rockchip,default-sample-phase = <90>;
|
||||||
|
vmmc-supply = <&vcc_sd>;
|
||||||
|
vqmmc-supply = <&vccio_sd>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&tsadc {
|
&tsadc {
|
||||||
|
|
|
@ -136,37 +136,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
amba: bus {
|
|
||||||
compatible = "simple-bus";
|
|
||||||
#address-cells = <2>;
|
|
||||||
#size-cells = <2>;
|
|
||||||
ranges;
|
|
||||||
|
|
||||||
dmac_peri: dma-controller@ff250000 {
|
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
|
||||||
reg = <0x0 0xff250000 0x0 0x4000>;
|
|
||||||
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
|
|
||||||
<GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
#dma-cells = <1>;
|
|
||||||
arm,pl330-broken-no-flushp;
|
|
||||||
arm,pl330-periph-burst;
|
|
||||||
clocks = <&cru ACLK_DMAC_PERI>;
|
|
||||||
clock-names = "apb_pclk";
|
|
||||||
};
|
|
||||||
|
|
||||||
dmac_bus: dma-controller@ff600000 {
|
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
|
||||||
reg = <0x0 0xff600000 0x0 0x4000>;
|
|
||||||
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
|
|
||||||
<GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
#dma-cells = <1>;
|
|
||||||
arm,pl330-broken-no-flushp;
|
|
||||||
arm,pl330-periph-burst;
|
|
||||||
clocks = <&cru ACLK_DMAC_BUS>;
|
|
||||||
clock-names = "apb_pclk";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
arm-pmu {
|
arm-pmu {
|
||||||
compatible = "arm,armv8-pmuv3";
|
compatible = "arm,armv8-pmuv3";
|
||||||
interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
@ -399,8 +368,20 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dmac_peri: dma-controller@ff250000 {
|
||||||
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
|
reg = <0x0 0xff250000 0x0 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
arm,pl330-broken-no-flushp;
|
||||||
|
arm,pl330-periph-burst;
|
||||||
|
clocks = <&cru ACLK_DMAC_PERI>;
|
||||||
|
clock-names = "apb_pclk";
|
||||||
|
};
|
||||||
|
|
||||||
thermal-zones {
|
thermal-zones {
|
||||||
cpu {
|
cpu_thermal: cpu-thermal {
|
||||||
polling-delay-passive = <100>; /* milliseconds */
|
polling-delay-passive = <100>; /* milliseconds */
|
||||||
polling-delay = <5000>; /* milliseconds */
|
polling-delay = <5000>; /* milliseconds */
|
||||||
|
|
||||||
|
@ -444,7 +425,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
gpu {
|
gpu_thermal: gpu-thermal {
|
||||||
polling-delay-passive = <100>; /* milliseconds */
|
polling-delay-passive = <100>; /* milliseconds */
|
||||||
polling-delay = <5000>; /* milliseconds */
|
polling-delay = <5000>; /* milliseconds */
|
||||||
|
|
||||||
|
@ -532,6 +513,18 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dmac_bus: dma-controller@ff600000 {
|
||||||
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
|
reg = <0x0 0xff600000 0x0 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
arm,pl330-broken-no-flushp;
|
||||||
|
arm,pl330-periph-burst;
|
||||||
|
clocks = <&cru ACLK_DMAC_BUS>;
|
||||||
|
clock-names = "apb_pclk";
|
||||||
|
};
|
||||||
|
|
||||||
i2c0: i2c@ff650000 {
|
i2c0: i2c@ff650000 {
|
||||||
compatible = "rockchip,rk3368-i2c", "rockchip,rk3288-i2c";
|
compatible = "rockchip,rk3368-i2c", "rockchip,rk3288-i2c";
|
||||||
reg = <0x0 0xff650000 0x0 0x1000>;
|
reg = <0x0 0xff650000 0x0 0x1000>;
|
||||||
|
@ -565,7 +558,6 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pwm0_pin>;
|
pinctrl-0 = <&pwm0_pin>;
|
||||||
clocks = <&cru PCLK_PWM1>;
|
clocks = <&cru PCLK_PWM1>;
|
||||||
clock-names = "pwm";
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -576,7 +568,6 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pwm1_pin>;
|
pinctrl-0 = <&pwm1_pin>;
|
||||||
clocks = <&cru PCLK_PWM1>;
|
clocks = <&cru PCLK_PWM1>;
|
||||||
clock-names = "pwm";
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -585,7 +576,6 @@
|
||||||
reg = <0x0 0xff680020 0x0 0x10>;
|
reg = <0x0 0xff680020 0x0 0x10>;
|
||||||
#pwm-cells = <3>;
|
#pwm-cells = <3>;
|
||||||
clocks = <&cru PCLK_PWM1>;
|
clocks = <&cru PCLK_PWM1>;
|
||||||
clock-names = "pwm";
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -596,7 +586,6 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pwm3_pin>;
|
pinctrl-0 = <&pwm3_pin>;
|
||||||
clocks = <&cru PCLK_PWM1>;
|
clocks = <&cru PCLK_PWM1>;
|
||||||
clock-names = "pwm";
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -675,6 +664,8 @@
|
||||||
compatible = "rockchip,rk3368-timer", "rockchip,rk3288-timer";
|
compatible = "rockchip,rk3368-timer", "rockchip,rk3288-timer";
|
||||||
reg = <0x0 0xff810000 0x0 0x20>;
|
reg = <0x0 0xff810000 0x0 0x20>;
|
||||||
interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&cru PCLK_TIMER0>, <&cru SCLK_TIMER00>;
|
||||||
|
clock-names = "pclk", "timer";
|
||||||
};
|
};
|
||||||
|
|
||||||
spdif: spdif@ff880000 {
|
spdif: spdif@ff880000 {
|
||||||
|
|
|
@ -11,6 +11,10 @@
|
||||||
model = "Rockchip RK3399 Evaluation Board";
|
model = "Rockchip RK3399 Evaluation Board";
|
||||||
compatible = "rockchip,rk3399-evb", "rockchip,rk3399";
|
compatible = "rockchip,rk3399-evb", "rockchip,rk3399";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
backlight: backlight {
|
backlight: backlight {
|
||||||
compatible = "pwm-backlight";
|
compatible = "pwm-backlight";
|
||||||
brightness-levels = <
|
brightness-levels = <
|
||||||
|
|
|
@ -27,42 +27,43 @@
|
||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&user_led1>, <&user_led2>, <&user_led3>,
|
pinctrl-0 = <&user_led1_pin>, <&user_led2_pin>,
|
||||||
<&user_led4>, <&wlan_led>, <&bt_led>;
|
<&user_led3_pin>, <&user_led4_pin>,
|
||||||
|
<&wlan_led_pin>, <&bt_led_pin>;
|
||||||
|
|
||||||
user_led1 {
|
user_led1: led-1 {
|
||||||
label = "red:user1";
|
label = "red:user1";
|
||||||
gpios = <&gpio4 25 0>;
|
gpios = <&gpio4 25 0>;
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
};
|
};
|
||||||
|
|
||||||
user_led2 {
|
user_led2: led-2 {
|
||||||
label = "red:user2";
|
label = "red:user2";
|
||||||
gpios = <&gpio4 26 0>;
|
gpios = <&gpio4 26 0>;
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
};
|
};
|
||||||
|
|
||||||
user_led3 {
|
user_led3: led-3 {
|
||||||
label = "red:user3";
|
label = "red:user3";
|
||||||
gpios = <&gpio4 30 0>;
|
gpios = <&gpio4 30 0>;
|
||||||
linux,default-trigger = "mmc1";
|
linux,default-trigger = "mmc1";
|
||||||
};
|
};
|
||||||
|
|
||||||
user_led4 {
|
user_led4: led-4 {
|
||||||
label = "red:user4";
|
label = "red:user4";
|
||||||
gpios = <&gpio1 0 0>;
|
gpios = <&gpio1 0 0>;
|
||||||
panic-indicator;
|
panic-indicator;
|
||||||
linux,default-trigger = "none";
|
linux,default-trigger = "none";
|
||||||
};
|
};
|
||||||
|
|
||||||
wlan_active_led {
|
wlan_active_led: led-5 {
|
||||||
label = "red:wlan";
|
label = "red:wlan";
|
||||||
gpios = <&gpio1 1 0>;
|
gpios = <&gpio1 1 0>;
|
||||||
linux,default-trigger = "phy0tx";
|
linux,default-trigger = "phy0tx";
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
|
|
||||||
bt_active_led {
|
bt_active_led: led-6 {
|
||||||
label = "red:bt";
|
label = "red:bt";
|
||||||
gpios = <&gpio1 4 0>;
|
gpios = <&gpio1 4 0>;
|
||||||
linux,default-trigger = "hci0-power";
|
linux,default-trigger = "hci0-power";
|
||||||
|
@ -114,32 +115,32 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
user_led1: user_led1 {
|
user_led1_pin: user-led1-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
|
<4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
user_led2: user_led2 {
|
user_led2_pin: user-led2-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
|
<4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
user_led3: user_led3 {
|
user_led3_pin: user-led3-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
|
<4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
user_led4: user_led4 {
|
user_led4_pin: user-led4-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
|
<1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
wlan_led: wlan_led {
|
wlan_led_pin: wlan-led-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
|
<1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
bt_led: bt_led {
|
bt_led_pin: bt-led-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
|
<1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
#include <dt-bindings/input/linux-event-codes.h>
|
#include <dt-bindings/input/linux-event-codes.h>
|
||||||
#include <dt-bindings/pwm/pwm.h>
|
#include <dt-bindings/pwm/pwm.h>
|
||||||
|
#include <dt-bindings/usb/pd.h>
|
||||||
#include "rk3399.dtsi"
|
#include "rk3399.dtsi"
|
||||||
#include "rk3399-opp.dtsi"
|
#include "rk3399-opp.dtsi"
|
||||||
|
|
||||||
|
@ -13,6 +14,12 @@
|
||||||
model = "Firefly-RK3399 Board";
|
model = "Firefly-RK3399 Board";
|
||||||
compatible = "firefly,firefly-rk3399", "rockchip,rk3399";
|
compatible = "firefly,firefly-rk3399", "rockchip,rk3399";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdio0;
|
||||||
|
mmc1 = &sdmmc;
|
||||||
|
mmc2 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
stdout-path = "serial2:1500000n8";
|
||||||
};
|
};
|
||||||
|
@ -88,18 +95,25 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ir-receiver {
|
||||||
|
compatible = "gpio-ir-receiver";
|
||||||
|
gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_LOW>;
|
||||||
|
pinctrl-0 = <&ir_int>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&work_led_gpio>, <&diy_led_gpio>;
|
pinctrl-0 = <&work_led_pin>, <&diy_led_pin>;
|
||||||
|
|
||||||
work-led {
|
work_led: led-0 {
|
||||||
label = "work";
|
label = "work";
|
||||||
default-state = "on";
|
default-state = "on";
|
||||||
gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
diy-led {
|
diy_led: led-1 {
|
||||||
label = "diy";
|
label = "diy";
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
|
||||||
|
@ -145,6 +159,23 @@
|
||||||
reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
|
reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sound-dit {
|
||||||
|
compatible = "audio-graph-card";
|
||||||
|
label = "SPDIF";
|
||||||
|
dais = <&spdif_p0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
spdif-dit {
|
||||||
|
compatible = "linux,spdif-dit";
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
dit_p0_0: endpoint {
|
||||||
|
remote-endpoint = <&spdif_p0_0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
/* switched by pmic_sleep */
|
/* switched by pmic_sleep */
|
||||||
vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 {
|
vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
|
@ -190,6 +221,17 @@
|
||||||
vin-supply = <&vcc_sys>;
|
vin-supply = <&vcc_sys>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vcc5v0_typec: vcc5v0-typec-regulator {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
enable-active-high;
|
||||||
|
gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&vcc5v0_typec_en>;
|
||||||
|
regulator-name = "vcc5v0_typec";
|
||||||
|
regulator-always-on;
|
||||||
|
vin-supply = <&vcc_sys>;
|
||||||
|
};
|
||||||
|
|
||||||
vcc_sys: vcc-sys {
|
vcc_sys: vcc-sys {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "vcc_sys";
|
regulator-name = "vcc_sys";
|
||||||
|
@ -515,6 +557,53 @@
|
||||||
i2c-scl-falling-time-ns = <20>;
|
i2c-scl-falling-time-ns = <20>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
fusb0: typec-portc@22 {
|
||||||
|
compatible = "fcs,fusb302";
|
||||||
|
reg = <0x22>;
|
||||||
|
interrupt-parent = <&gpio1>;
|
||||||
|
interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&fusb0_int>;
|
||||||
|
vbus-supply = <&vcc5v0_typec>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
connector {
|
||||||
|
compatible = "usb-c-connector";
|
||||||
|
data-role = "host";
|
||||||
|
label = "USB-C";
|
||||||
|
op-sink-microwatt = <1000000>;
|
||||||
|
power-role = "dual";
|
||||||
|
sink-pdos =
|
||||||
|
<PDO_FIXED(5000, 2500, PDO_FIXED_USB_COMM)>;
|
||||||
|
source-pdos =
|
||||||
|
<PDO_FIXED(5000, 1400, PDO_FIXED_USB_COMM)>;
|
||||||
|
try-power-role = "sink";
|
||||||
|
|
||||||
|
ports {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
|
||||||
|
usbc_hs: endpoint {
|
||||||
|
remote-endpoint =
|
||||||
|
<&u2phy0_typec_hs>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
|
||||||
|
usbc_ss: endpoint {
|
||||||
|
remote-endpoint =
|
||||||
|
<&tcphy0_typec_ss>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
accelerometer@68 {
|
accelerometer@68 {
|
||||||
compatible = "invensense,mpu6500";
|
compatible = "invensense,mpu6500";
|
||||||
reg = <0x68>;
|
reg = <0x68>;
|
||||||
|
@ -572,12 +661,34 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fusb302x {
|
||||||
|
fusb0_int: fusb0-int {
|
||||||
|
rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ir {
|
||||||
|
ir_int: ir-int {
|
||||||
|
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
lcd-panel {
|
lcd-panel {
|
||||||
lcd_panel_reset: lcd-panel-reset {
|
lcd_panel_reset: lcd-panel-reset {
|
||||||
rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
leds {
|
||||||
|
work_led_pin: work-led-pin {
|
||||||
|
rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
|
||||||
|
diy_led_pin: diy-led-pin {
|
||||||
|
rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
pcie {
|
pcie {
|
||||||
pcie_pwr_en: pcie-pwr-en {
|
pcie_pwr_en: pcie-pwr-en {
|
||||||
rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
@ -589,30 +700,34 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
pmic {
|
pmic {
|
||||||
vsel1_gpio: vsel1-gpio {
|
pmic_int_l: pmic-int-l {
|
||||||
|
rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vsel1_pin: vsel1-pin {
|
||||||
rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
|
rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vsel2_gpio: vsel2-gpio {
|
vsel2_pin: vsel2-pin {
|
||||||
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sdio-pwrseq {
|
|
||||||
wifi_enable_h: wifi-enable-h {
|
|
||||||
rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
rt5640 {
|
rt5640 {
|
||||||
rt5640_hpcon: rt5640-hpcon {
|
rt5640_hpcon: rt5640-hpcon {
|
||||||
rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pmic {
|
sdio-pwrseq {
|
||||||
pmic_int_l: pmic-int-l {
|
wifi_enable_h: wifi-enable-h {
|
||||||
rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
usb-typec {
|
||||||
|
vcc5v0_typec_en: vcc5v0_typec_en {
|
||||||
|
rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -627,16 +742,6 @@
|
||||||
rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
|
||||||
work_led_gpio: work_led-gpio {
|
|
||||||
rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
||||||
};
|
|
||||||
|
|
||||||
diy_led_gpio: diy_led-gpio {
|
|
||||||
rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&pwm0 {
|
&pwm0 {
|
||||||
|
@ -704,10 +809,29 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&spdif {
|
||||||
|
pinctrl-0 = <&spdif_bus_1>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
spdif_p0: port {
|
||||||
|
spdif_p0_0: endpoint {
|
||||||
|
remote-endpoint = <&dit_p0_0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&tcphy0 {
|
&tcphy0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&tcphy0_usb3 {
|
||||||
|
port {
|
||||||
|
tcphy0_typec_ss: endpoint {
|
||||||
|
remote-endpoint = <&usbc_ss>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&tcphy1 {
|
&tcphy1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -731,6 +855,12 @@
|
||||||
phy-supply = <&vcc5v0_host>;
|
phy-supply = <&vcc5v0_host>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
port {
|
||||||
|
u2phy0_typec_hs: endpoint {
|
||||||
|
remote-endpoint = <&usbc_hs>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&u2phy1 {
|
&u2phy1 {
|
||||||
|
|
|
@ -10,6 +10,11 @@
|
||||||
#include "rk3399-op1-opp.dtsi"
|
#include "rk3399-op1-opp.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdmmc;
|
||||||
|
mmc1 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:115200n8";
|
stdout-path = "serial2:115200n8";
|
||||||
};
|
};
|
||||||
|
@ -247,8 +252,8 @@
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
enable-gpio = <&gpio2 2 GPIO_ACTIVE_HIGH>;
|
enable-gpio = <&gpio2 2 GPIO_ACTIVE_HIGH>;
|
||||||
gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
|
||||||
states = <1800000 0x1
|
states = <1800000 0x1>,
|
||||||
3000000 0x0>;
|
<3000000 0x0>;
|
||||||
|
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <3000000>;
|
regulator-max-microvolt = <3000000>;
|
||||||
|
@ -342,6 +347,7 @@
|
||||||
cpu-supply = <&ppvar_bigcpu>;
|
cpu-supply = <&ppvar_bigcpu>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
&cru {
|
&cru {
|
||||||
assigned-clocks =
|
assigned-clocks =
|
||||||
<&cru PLL_GPLL>, <&cru PLL_CPLL>,
|
<&cru PLL_GPLL>, <&cru PLL_CPLL>,
|
||||||
|
@ -515,7 +521,7 @@ ap_i2c_audio: &i2c8 {
|
||||||
* configured as SDMMC and not JTAG.
|
* configured as SDMMC and not JTAG.
|
||||||
*/
|
*/
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_cd_gpio
|
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_cd_pin
|
||||||
&sdmmc_bus4>;
|
&sdmmc_bus4>;
|
||||||
|
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
|
@ -766,7 +772,7 @@ ap_i2c_audio: &i2c8 {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* This is where we actually hook up CD; has external pull */
|
/* This is where we actually hook up CD; has external pull */
|
||||||
sdmmc_cd_gpio: sdmmc-cd-gpio {
|
sdmmc_cd_pin: sdmmc-cd-pin {
|
||||||
rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,6 +11,12 @@
|
||||||
#include "rk3399-opp.dtsi"
|
#include "rk3399-opp.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdio0;
|
||||||
|
mmc1 = &sdmmc;
|
||||||
|
mmc2 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
stdout-path = "serial2:1500000n8";
|
||||||
};
|
};
|
||||||
|
@ -138,18 +144,26 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ir-receiver {
|
||||||
|
compatible = "gpio-ir-receiver";
|
||||||
|
gpios = <&gpio1 RK_PB6 GPIO_ACTIVE_LOW>;
|
||||||
|
linux,rc-map-name = "rc-khadas";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&ir_rx>;
|
||||||
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sys_led_gpio>, <&user_led_gpio>;
|
pinctrl-0 = <&sys_led_pin>, <&user_led_pin>;
|
||||||
|
|
||||||
sys-led {
|
sys_led: led-0 {
|
||||||
label = "sys_led";
|
label = "sys_led";
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
user-led {
|
user_led: led-1 {
|
||||||
label = "user_led";
|
label = "user_led";
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
gpios = <&gpio4 RK_PD0 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio4 RK_PD0 GPIO_ACTIVE_HIGH>;
|
||||||
|
@ -585,12 +599,18 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ir {
|
||||||
|
ir_rx: ir-rx {
|
||||||
|
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
sys_led_gpio: sys_led-gpio {
|
sys_led_pin: sys-led-pin {
|
||||||
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
user_led_gpio: user_led-gpio {
|
user_led_pin: user-led-pin {
|
||||||
rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -690,6 +710,16 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&spi1 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
spiflash: flash@0 {
|
||||||
|
compatible = "winbond,w25q128fw", "jedec,spi-nor";
|
||||||
|
reg = <0>;
|
||||||
|
spi-max-frequency = <104000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&tcphy0 {
|
&tcphy0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,6 +13,12 @@
|
||||||
model = "Leez RK3399 P710";
|
model = "Leez RK3399 P710";
|
||||||
compatible = "leez,p710", "rockchip,rk3399";
|
compatible = "leez,p710", "rockchip,rk3399";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdio0;
|
||||||
|
mmc1 = &sdmmc;
|
||||||
|
mmc2 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
stdout-path = "serial2:1500000n8";
|
||||||
};
|
};
|
||||||
|
@ -341,7 +347,7 @@
|
||||||
reg = <0x40>;
|
reg = <0x40>;
|
||||||
fcs,suspend-voltage-selector = <1>;
|
fcs,suspend-voltage-selector = <1>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&vsel1_gpio>;
|
pinctrl-0 = <&vsel1_pin>;
|
||||||
regulator-name = "vdd_cpu_b";
|
regulator-name = "vdd_cpu_b";
|
||||||
regulator-min-microvolt = <712500>;
|
regulator-min-microvolt = <712500>;
|
||||||
regulator-max-microvolt = <1500000>;
|
regulator-max-microvolt = <1500000>;
|
||||||
|
@ -360,7 +366,7 @@
|
||||||
reg = <0x41>;
|
reg = <0x41>;
|
||||||
fcs,suspend-voltage-selector = <1>;
|
fcs,suspend-voltage-selector = <1>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&vsel2_gpio>;
|
pinctrl-0 = <&vsel2_pin>;
|
||||||
regulator-name = "vdd_gpu";
|
regulator-name = "vdd_gpu";
|
||||||
regulator-min-microvolt = <712500>;
|
regulator-min-microvolt = <712500>;
|
||||||
regulator-max-microvolt = <1500000>;
|
regulator-max-microvolt = <1500000>;
|
||||||
|
@ -447,11 +453,11 @@
|
||||||
rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vsel1_gpio: vsel1-gpio {
|
vsel1_pin: vsel1-pin {
|
||||||
rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
|
rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vsel2_gpio: vsel2-gpio {
|
vsel2_pin: vsel2-pin {
|
||||||
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -95,6 +95,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&pcie0 {
|
&pcie0 {
|
||||||
|
ep-gpios = <&gpio2 RK_PA4 GPIO_ACTIVE_HIGH>;
|
||||||
num-lanes = <4>;
|
num-lanes = <4>;
|
||||||
vpcie3v3-supply = <&vcc3v3_sys>;
|
vpcie3v3-supply = <&vcc3v3_sys>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2016 Fuzhou Rockchip Electronics Co., Ltd
|
* FriendlyElec NanoPC-T4 board device tree source
|
||||||
*
|
*
|
||||||
* Copyright (c) 2018 FriendlyElec Computer Tech. Co., Ltd.
|
* Copyright (c) 2020 FriendlyElec Computer Tech. Co., Ltd.
|
||||||
* (http://www.friendlyarm.com)
|
* (http://www.friendlyarm.com)
|
||||||
*
|
*
|
||||||
* Copyright (c) 2018 Collabora Ltd.
|
* Copyright (c) 2018 Collabora Ltd.
|
||||||
* Copyright (c) 2019 Arm Ltd.
|
*
|
||||||
* Copyright (C) 2020 Xiaobo <peterwillcn@gmail.com>
|
* Copyright (c) 2020 Jensen Huang <jensenhuang@friendlyarm.com>
|
||||||
|
* Copyright (c) 2020 Marty Jones <mj8263788@gmail.com>
|
||||||
|
* Copyright (c) 2021 Tianling Shen <cnsztl@gmail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
@ -17,8 +19,41 @@
|
||||||
model = "FriendlyElec NanoPi R4S";
|
model = "FriendlyElec NanoPi R4S";
|
||||||
compatible = "friendlyarm,nanopi-r4s", "rockchip,rk3399";
|
compatible = "friendlyarm,nanopi-r4s", "rockchip,rk3399";
|
||||||
|
|
||||||
aliases {
|
/delete-node/ display-subsystem;
|
||||||
ethernet1 = &r8169;
|
|
||||||
|
gpio-leds {
|
||||||
|
pinctrl-0 = <&lan_led_pin>, <&sys_led_pin>, <&wan_led_pin>;
|
||||||
|
|
||||||
|
/delete-node/ led-0;
|
||||||
|
|
||||||
|
lan_led: led-lan {
|
||||||
|
gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
|
||||||
|
label = "green:lan";
|
||||||
|
};
|
||||||
|
|
||||||
|
sys_led: led-sys {
|
||||||
|
gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
|
||||||
|
label = "red:power";
|
||||||
|
default-state = "on";
|
||||||
|
};
|
||||||
|
|
||||||
|
wan_led: led-wan {
|
||||||
|
gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
|
||||||
|
label = "green:wan";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio-keys {
|
||||||
|
pinctrl-0 = <&reset_button_pin>;
|
||||||
|
|
||||||
|
/delete-node/ power;
|
||||||
|
|
||||||
|
reset {
|
||||||
|
debounce-interval = <50>;
|
||||||
|
gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>;
|
||||||
|
label = "reset";
|
||||||
|
linux,code = <KEY_RESTART>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
vdd_5v: vdd-5v {
|
vdd_5v: vdd-5v {
|
||||||
|
@ -27,84 +62,44 @@
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
fan: pwm-fan {
|
|
||||||
compatible = "pwm-fan";
|
|
||||||
cooling-levels = <0 12 18 255>;
|
|
||||||
#cooling-cells = <2>;
|
|
||||||
fan-supply = <&vdd_5v>;
|
|
||||||
pwms = <&pwm1 0 50000 0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&cpu_thermal {
|
|
||||||
trips {
|
|
||||||
cpu_warm: cpu_warm {
|
|
||||||
temperature = <55000>;
|
|
||||||
hysteresis = <2000>;
|
|
||||||
type = "active";
|
|
||||||
};
|
|
||||||
|
|
||||||
cpu_hot: cpu_hot {
|
|
||||||
temperature = <65000>;
|
|
||||||
hysteresis = <2000>;
|
|
||||||
type = "active";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
cooling-maps {
|
|
||||||
map2 {
|
|
||||||
trip = <&cpu_warm>;
|
|
||||||
cooling-device = <&fan THERMAL_NO_LIMIT 1>;
|
|
||||||
};
|
|
||||||
|
|
||||||
map3 {
|
|
||||||
trip = <&cpu_hot>;
|
|
||||||
cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&emmc_phy {
|
&emmc_phy {
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
&fusb0 {
|
&i2c4 {
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
&leds {
|
|
||||||
lan_led: led-1 {
|
|
||||||
gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
|
|
||||||
label = "nanopi-r4s:green:lan";
|
|
||||||
};
|
|
||||||
|
|
||||||
wan_led: led-2 {
|
|
||||||
gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
|
|
||||||
label = "nanopi-r4s:green:wan";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&leds_gpio {
|
|
||||||
rockchip,pins =
|
|
||||||
<0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>,
|
|
||||||
<1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>,
|
|
||||||
<1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&pcie0 {
|
&pcie0 {
|
||||||
max-link-speed = <1>;
|
max-link-speed = <1>;
|
||||||
num-lanes = <1>;
|
num-lanes = <1>;
|
||||||
vpcie3v3-supply = <&vcc3v3_sys>;
|
vpcie3v3-supply = <&vcc3v3_sys>;
|
||||||
|
};
|
||||||
|
|
||||||
pcie@0 {
|
&pinctrl {
|
||||||
reg = <0x00000000 0 0 0 0>;
|
gpio-leds {
|
||||||
#address-cells = <3>;
|
/delete-node/ status-led-pin;
|
||||||
#size-cells = <2>;
|
|
||||||
|
|
||||||
r8169: pcie@0,0 {
|
lan_led_pin: lan-led-pin {
|
||||||
reg = <0x000000 0 0 0 0>;
|
rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
};
|
||||||
|
|
||||||
|
sys_led_pin: sys-led-pin {
|
||||||
|
rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
|
||||||
|
wan_led_pin: wan-led-pin {
|
||||||
|
rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
rockchip-key {
|
||||||
|
/delete-node/ power-key;
|
||||||
|
|
||||||
|
reset_button_pin: reset-button-pin {
|
||||||
|
rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -117,10 +112,6 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdmmc {
|
|
||||||
host-index-min = <1>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&u2phy0_host {
|
&u2phy0_host {
|
||||||
phy-supply = <&vdd_5v>;
|
phy-supply = <&vdd_5v>;
|
||||||
};
|
};
|
||||||
|
@ -129,6 +120,10 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&uart0 {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
&usbdrd_dwc3_0 {
|
&usbdrd_dwc3_0 {
|
||||||
dr_mode = "host";
|
dr_mode = "host";
|
||||||
};
|
};
|
||||||
|
|
|
@ -17,6 +17,12 @@
|
||||||
#include "rk3399-opp.dtsi"
|
#include "rk3399-opp.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdio0;
|
||||||
|
mmc1 = &sdmmc;
|
||||||
|
mmc2 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
stdout-path = "serial2:1500000n8";
|
||||||
};
|
};
|
||||||
|
@ -117,9 +123,9 @@
|
||||||
leds: gpio-leds {
|
leds: gpio-leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&leds_gpio>;
|
pinctrl-0 = <&status_led_pin>;
|
||||||
|
|
||||||
status {
|
status_led: led-0 {
|
||||||
gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
|
||||||
label = "status_led";
|
label = "status_led";
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
|
@ -182,7 +188,7 @@
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
rtl8211e: phy@1 {
|
rtl8211e: ethernet-phy@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
interrupt-parent = <&gpio3>;
|
interrupt-parent = <&gpio3>;
|
||||||
interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
@ -504,8 +510,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&pcie0 {
|
&pcie0 {
|
||||||
ep-gpios = <&gpio2 RK_PA4 GPIO_ACTIVE_HIGH>;
|
|
||||||
max-link-speed = <2>;
|
|
||||||
num-lanes = <2>;
|
num-lanes = <2>;
|
||||||
vpcie0v9-supply = <&vcca0v9_s3>;
|
vpcie0v9-supply = <&vcca0v9_s3>;
|
||||||
vpcie1v8-supply = <&vcca1v8_s3>;
|
vpcie1v8-supply = <&vcca1v8_s3>;
|
||||||
|
@ -520,12 +524,12 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio-leds {
|
gpio-leds {
|
||||||
leds_gpio: leds-gpio {
|
status_led_pin: status-led-pin {
|
||||||
rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
phy {
|
gmac {
|
||||||
phy_intb: phy-intb {
|
phy_intb: phy-intb {
|
||||||
rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,28 +10,28 @@
|
||||||
|
|
||||||
opp00 {
|
opp00 {
|
||||||
opp-hz = /bits/ 64 <408000000>;
|
opp-hz = /bits/ 64 <408000000>;
|
||||||
opp-microvolt = <800000>;
|
opp-microvolt = <825000 825000 1250000>;
|
||||||
clock-latency-ns = <40000>;
|
clock-latency-ns = <40000>;
|
||||||
};
|
};
|
||||||
opp01 {
|
opp01 {
|
||||||
opp-hz = /bits/ 64 <600000000>;
|
opp-hz = /bits/ 64 <600000000>;
|
||||||
opp-microvolt = <800000>;
|
opp-microvolt = <825000 825000 1250000>;
|
||||||
};
|
};
|
||||||
opp02 {
|
opp02 {
|
||||||
opp-hz = /bits/ 64 <816000000>;
|
opp-hz = /bits/ 64 <816000000>;
|
||||||
opp-microvolt = <850000>;
|
opp-microvolt = <850000 850000 1250000>;
|
||||||
};
|
};
|
||||||
opp03 {
|
opp03 {
|
||||||
opp-hz = /bits/ 64 <1008000000>;
|
opp-hz = /bits/ 64 <1008000000>;
|
||||||
opp-microvolt = <925000>;
|
opp-microvolt = <925000 925000 1250000>;
|
||||||
};
|
};
|
||||||
opp04 {
|
opp04 {
|
||||||
opp-hz = /bits/ 64 <1200000000>;
|
opp-hz = /bits/ 64 <1200000000>;
|
||||||
opp-microvolt = <1000000>;
|
opp-microvolt = <1000000 1000000 1250000>;
|
||||||
};
|
};
|
||||||
opp05 {
|
opp05 {
|
||||||
opp-hz = /bits/ 64 <1416000000>;
|
opp-hz = /bits/ 64 <1416000000>;
|
||||||
opp-microvolt = <1125000>;
|
opp-microvolt = <1125000 1125000 1250000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -41,36 +41,36 @@
|
||||||
|
|
||||||
opp00 {
|
opp00 {
|
||||||
opp-hz = /bits/ 64 <408000000>;
|
opp-hz = /bits/ 64 <408000000>;
|
||||||
opp-microvolt = <800000>;
|
opp-microvolt = <825000 825000 1250000>;
|
||||||
clock-latency-ns = <40000>;
|
clock-latency-ns = <40000>;
|
||||||
};
|
};
|
||||||
opp01 {
|
opp01 {
|
||||||
opp-hz = /bits/ 64 <600000000>;
|
opp-hz = /bits/ 64 <600000000>;
|
||||||
opp-microvolt = <800000>;
|
opp-microvolt = <825000 825000 1250000>;
|
||||||
};
|
};
|
||||||
opp02 {
|
opp02 {
|
||||||
opp-hz = /bits/ 64 <816000000>;
|
opp-hz = /bits/ 64 <816000000>;
|
||||||
opp-microvolt = <825000>;
|
opp-microvolt = <825000 825000 1250000>;
|
||||||
};
|
};
|
||||||
opp03 {
|
opp03 {
|
||||||
opp-hz = /bits/ 64 <1008000000>;
|
opp-hz = /bits/ 64 <1008000000>;
|
||||||
opp-microvolt = <875000>;
|
opp-microvolt = <875000 875000 1250000>;
|
||||||
};
|
};
|
||||||
opp04 {
|
opp04 {
|
||||||
opp-hz = /bits/ 64 <1200000000>;
|
opp-hz = /bits/ 64 <1200000000>;
|
||||||
opp-microvolt = <950000>;
|
opp-microvolt = <950000 950000 1250000>;
|
||||||
};
|
};
|
||||||
opp05 {
|
opp05 {
|
||||||
opp-hz = /bits/ 64 <1416000000>;
|
opp-hz = /bits/ 64 <1416000000>;
|
||||||
opp-microvolt = <1025000>;
|
opp-microvolt = <1025000 1025000 1250000>;
|
||||||
};
|
};
|
||||||
opp06 {
|
opp06 {
|
||||||
opp-hz = /bits/ 64 <1608000000>;
|
opp-hz = /bits/ 64 <1608000000>;
|
||||||
opp-microvolt = <1100000>;
|
opp-microvolt = <1100000 1100000 1250000>;
|
||||||
};
|
};
|
||||||
opp07 {
|
opp07 {
|
||||||
opp-hz = /bits/ 64 <1800000000>;
|
opp-hz = /bits/ 64 <1800000000>;
|
||||||
opp-microvolt = <1200000>;
|
opp-microvolt = <1200000 1200000 1250000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -79,27 +79,27 @@
|
||||||
|
|
||||||
opp00 {
|
opp00 {
|
||||||
opp-hz = /bits/ 64 <200000000>;
|
opp-hz = /bits/ 64 <200000000>;
|
||||||
opp-microvolt = <800000>;
|
opp-microvolt = <825000 825000 1150000>;
|
||||||
};
|
};
|
||||||
opp01 {
|
opp01 {
|
||||||
opp-hz = /bits/ 64 <297000000>;
|
opp-hz = /bits/ 64 <297000000>;
|
||||||
opp-microvolt = <800000>;
|
opp-microvolt = <825000 825000 1150000>;
|
||||||
};
|
};
|
||||||
opp02 {
|
opp02 {
|
||||||
opp-hz = /bits/ 64 <400000000>;
|
opp-hz = /bits/ 64 <400000000>;
|
||||||
opp-microvolt = <825000>;
|
opp-microvolt = <825000 825000 1150000>;
|
||||||
};
|
};
|
||||||
opp03 {
|
opp03 {
|
||||||
opp-hz = /bits/ 64 <500000000>;
|
opp-hz = /bits/ 64 <500000000>;
|
||||||
opp-microvolt = <875000>;
|
opp-microvolt = <875000 875000 1150000>;
|
||||||
};
|
};
|
||||||
opp04 {
|
opp04 {
|
||||||
opp-hz = /bits/ 64 <600000000>;
|
opp-hz = /bits/ 64 <600000000>;
|
||||||
opp-microvolt = <925000>;
|
opp-microvolt = <925000 925000 1150000>;
|
||||||
};
|
};
|
||||||
opp05 {
|
opp05 {
|
||||||
opp-hz = /bits/ 64 <800000000>;
|
opp-hz = /bits/ 64 <800000000>;
|
||||||
opp-microvolt = <1100000>;
|
opp-microvolt = <1100000 1100000 1150000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
#include "dt-bindings/pwm/pwm.h"
|
#include "dt-bindings/pwm/pwm.h"
|
||||||
#include "dt-bindings/input/input.h"
|
#include "dt-bindings/input/input.h"
|
||||||
|
#include "dt-bindings/usb/pd.h"
|
||||||
#include "rk3399.dtsi"
|
#include "rk3399.dtsi"
|
||||||
#include "rk3399-opp.dtsi"
|
#include "rk3399-opp.dtsi"
|
||||||
|
|
||||||
|
@ -14,6 +15,12 @@
|
||||||
model = "Orange Pi RK3399 Board";
|
model = "Orange Pi RK3399 Board";
|
||||||
compatible = "rockchip,rk3399-orangepi", "rockchip,rk3399";
|
compatible = "rockchip,rk3399-orangepi", "rockchip,rk3399";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdio0;
|
||||||
|
mmc1 = &sdmmc;
|
||||||
|
mmc2 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
stdout-path = "serial2:1500000n8";
|
||||||
};
|
};
|
||||||
|
@ -214,7 +221,7 @@
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
rtl8211e: phy@1 {
|
rtl8211e: ethernet-phy@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
interrupt-parent = <&gpio3>;
|
interrupt-parent = <&gpio3>;
|
||||||
interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
@ -531,6 +538,43 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&chg_cc_int_l>;
|
pinctrl-0 = <&chg_cc_int_l>;
|
||||||
vbus-supply = <&vbus_typec>;
|
vbus-supply = <&vbus_typec>;
|
||||||
|
|
||||||
|
typec_con: connector {
|
||||||
|
compatible = "usb-c-connector";
|
||||||
|
data-role = "host";
|
||||||
|
label = "USB-C";
|
||||||
|
op-sink-microwatt = <1000000>;
|
||||||
|
power-role = "dual";
|
||||||
|
sink-pdos =
|
||||||
|
<PDO_FIXED(5000, 2500, PDO_FIXED_USB_COMM)>;
|
||||||
|
source-pdos =
|
||||||
|
<PDO_FIXED(5000, 1400, PDO_FIXED_USB_COMM)>;
|
||||||
|
try-power-role = "sink";
|
||||||
|
|
||||||
|
ports {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
typec_hs: endpoint {
|
||||||
|
remote-endpoint = <&u2phy0_typec_hs>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
typec_ss: endpoint {
|
||||||
|
remote-endpoint = <&tcphy0_typec_ss>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
port@2 {
|
||||||
|
reg = <2>;
|
||||||
|
typec_dp: endpoint {
|
||||||
|
remote-endpoint = <&tcphy0_typec_dp>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -554,7 +598,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
phy {
|
gmac {
|
||||||
phy_intb: phy-intb {
|
phy_intb: phy-intb {
|
||||||
rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
|
@ -717,6 +761,22 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&tcphy0_dp {
|
||||||
|
port {
|
||||||
|
tcphy0_typec_dp: endpoint {
|
||||||
|
remote-endpoint = <&typec_dp>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&tcphy0_usb3 {
|
||||||
|
port {
|
||||||
|
tcphy0_typec_ss: endpoint {
|
||||||
|
remote-endpoint = <&typec_ss>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&tcphy1 {
|
&tcphy1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -739,6 +799,12 @@
|
||||||
phy-supply = <&vcc5v0_host>;
|
phy-supply = <&vcc5v0_host>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
port {
|
||||||
|
u2phy0_typec_hs: endpoint {
|
||||||
|
remote-endpoint = <&typec_hs>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&u2phy1 {
|
&u2phy1 {
|
||||||
|
@ -799,7 +865,7 @@
|
||||||
|
|
||||||
&usbdrd_dwc3_0 {
|
&usbdrd_dwc3_0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
dr_mode = "otg";
|
dr_mode = "host";
|
||||||
};
|
};
|
||||||
|
|
||||||
&usbdrd3_1 {
|
&usbdrd3_1 {
|
||||||
|
|
|
@ -18,6 +18,12 @@
|
||||||
model = "Pine64 Pinebook Pro";
|
model = "Pine64 Pinebook Pro";
|
||||||
compatible = "pine64,pinebook-pro", "rockchip,rk3399";
|
compatible = "pine64,pinebook-pro", "rockchip,rk3399";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdio0;
|
||||||
|
mmc1 = &sdmmc;
|
||||||
|
mmc2 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
stdout-path = "serial2:1500000n8";
|
||||||
};
|
};
|
||||||
|
@ -28,12 +34,19 @@
|
||||||
pwms = <&pwm0 0 740740 0>;
|
pwms = <&pwm0 0 740740 0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bat: battery {
|
||||||
|
compatible = "simple-battery";
|
||||||
|
charge-full-design-microamp-hours = <9800000>;
|
||||||
|
voltage-max-design-microvolt = <4350000>;
|
||||||
|
voltage-min-design-microvolt = <3000000>;
|
||||||
|
};
|
||||||
|
|
||||||
edp_panel: edp-panel {
|
edp_panel: edp-panel {
|
||||||
compatible = "boe,nv140fhmn49";
|
compatible = "boe,nv140fhmn49";
|
||||||
backlight = <&backlight>;
|
backlight = <&backlight>;
|
||||||
enable-gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
|
enable-gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&panel_en_gpio>;
|
pinctrl-0 = <&panel_en_pin>;
|
||||||
power-supply = <&vcc3v3_panel>;
|
power-supply = <&vcc3v3_panel>;
|
||||||
|
|
||||||
ports {
|
ports {
|
||||||
|
@ -60,7 +73,7 @@
|
||||||
gpio-key-lid {
|
gpio-key-lid {
|
||||||
compatible = "gpio-keys";
|
compatible = "gpio-keys";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&lidbtn_gpio>;
|
pinctrl-0 = <&lidbtn_pin>;
|
||||||
|
|
||||||
lid {
|
lid {
|
||||||
debounce-interval = <20>;
|
debounce-interval = <20>;
|
||||||
|
@ -76,7 +89,7 @@
|
||||||
gpio-key-power {
|
gpio-key-power {
|
||||||
compatible = "gpio-keys";
|
compatible = "gpio-keys";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pwrbtn_gpio>;
|
pinctrl-0 = <&pwrbtn_pin>;
|
||||||
|
|
||||||
power {
|
power {
|
||||||
debounce-interval = <20>;
|
debounce-interval = <20>;
|
||||||
|
@ -90,9 +103,9 @@
|
||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pwrled_gpio &slpled_gpio>;
|
pinctrl-0 = <&pwr_led_pin &slp_led_pin>;
|
||||||
|
|
||||||
green-led {
|
green_led: led-0 {
|
||||||
color = <LED_COLOR_ID_GREEN>;
|
color = <LED_COLOR_ID_GREEN>;
|
||||||
default-state = "on";
|
default-state = "on";
|
||||||
function = LED_FUNCTION_POWER;
|
function = LED_FUNCTION_POWER;
|
||||||
|
@ -100,7 +113,7 @@
|
||||||
label = "green:power";
|
label = "green:power";
|
||||||
};
|
};
|
||||||
|
|
||||||
red-led {
|
red_led: led-1 {
|
||||||
color = <LED_COLOR_ID_RED>;
|
color = <LED_COLOR_ID_RED>;
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
function = LED_FUNCTION_STANDBY;
|
function = LED_FUNCTION_STANDBY;
|
||||||
|
@ -117,7 +130,7 @@
|
||||||
clocks = <&rk808 1>;
|
clocks = <&rk808 1>;
|
||||||
clock-names = "ext_clock";
|
clock-names = "ext_clock";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&wifi_enable_h_gpio>;
|
pinctrl-0 = <&wifi_enable_h_pin>;
|
||||||
post-power-on-delay-ms = <100>;
|
post-power-on-delay-ms = <100>;
|
||||||
power-off-delay-us = <500000>;
|
power-off-delay-us = <500000>;
|
||||||
|
|
||||||
|
@ -129,7 +142,7 @@
|
||||||
es8316-sound {
|
es8316-sound {
|
||||||
compatible = "simple-audio-card";
|
compatible = "simple-audio-card";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&hp_det_gpio>;
|
pinctrl-0 = <&hp_det_pin>;
|
||||||
simple-audio-card,name = "rockchip,es8316-codec";
|
simple-audio-card,name = "rockchip,es8316-codec";
|
||||||
simple-audio-card,format = "i2s";
|
simple-audio-card,format = "i2s";
|
||||||
simple-audio-card,mclk-fs = <256>;
|
simple-audio-card,mclk-fs = <256>;
|
||||||
|
@ -213,7 +226,7 @@
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>;
|
gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pwr_5v_gpio>;
|
pinctrl-0 = <&pwr_5v_pin>;
|
||||||
regulator-name = "vcc5v0_usb";
|
regulator-name = "vcc5v0_usb";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
|
@ -270,7 +283,7 @@
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
|
gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sdmmc0_pwr_h_gpio>;
|
pinctrl-0 = <&sdmmc0_pwr_h_pin>;
|
||||||
regulator-name = "vcc3v0_sd";
|
regulator-name = "vcc3v0_sd";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-min-microvolt = <3000000>;
|
regulator-min-microvolt = <3000000>;
|
||||||
|
@ -288,7 +301,7 @@
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
gpio = <&gpio1 RK_PC6 GPIO_ACTIVE_HIGH>;
|
gpio = <&gpio1 RK_PC6 GPIO_ACTIVE_HIGH>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&lcdvcc_en_gpio>;
|
pinctrl-0 = <&lcdvcc_en_pin>;
|
||||||
regulator-name = "vcc3v3_panel";
|
regulator-name = "vcc3v3_panel";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
|
@ -317,7 +330,7 @@
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
|
gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&vcc5v0_host_en_gpio>;
|
pinctrl-0 = <&vcc5v0_host_en_pin>;
|
||||||
regulator-name = "vcc5v0_otg";
|
regulator-name = "vcc5v0_otg";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
|
@ -336,7 +349,7 @@
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>;
|
gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&vcc5v0_typec0_en_gpio>;
|
pinctrl-0 = <&vcc5v0_typec0_en_pin>;
|
||||||
regulator-name = "vbus_5vout";
|
regulator-name = "vbus_5vout";
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
regulator-max-microvolt = <5000000>;
|
regulator-max-microvolt = <5000000>;
|
||||||
|
@ -368,7 +381,7 @@
|
||||||
|
|
||||||
/* Also triggered by USB charger */
|
/* Also triggered by USB charger */
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&dc_det_gpio>;
|
pinctrl-0 = <&dc_det_pin>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -447,7 +460,7 @@
|
||||||
interrupt-parent = <&gpio3>;
|
interrupt-parent = <&gpio3>;
|
||||||
interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pmic_int_l_gpio>;
|
pinctrl-0 = <&pmic_int_l_pin>;
|
||||||
rockchip,system-power-controller;
|
rockchip,system-power-controller;
|
||||||
wakeup-source;
|
wakeup-source;
|
||||||
|
|
||||||
|
@ -627,7 +640,7 @@
|
||||||
reg = <0x40>;
|
reg = <0x40>;
|
||||||
fcs,suspend-voltage-selector = <1>;
|
fcs,suspend-voltage-selector = <1>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&vsel1_gpio>;
|
pinctrl-0 = <&vsel1_pin>;
|
||||||
regulator-name = "vdd_cpu_b";
|
regulator-name = "vdd_cpu_b";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
|
@ -646,7 +659,7 @@
|
||||||
reg = <0x41>;
|
reg = <0x41>;
|
||||||
fcs,suspend-voltage-selector = <1>;
|
fcs,suspend-voltage-selector = <1>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&vsel2_gpio>;
|
pinctrl-0 = <&vsel2_pin>;
|
||||||
regulator-name = "vdd_gpu";
|
regulator-name = "vdd_gpu";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
|
@ -690,9 +703,10 @@
|
||||||
fusb0: fusb30x@22 {
|
fusb0: fusb30x@22 {
|
||||||
compatible = "fcs,fusb302";
|
compatible = "fcs,fusb302";
|
||||||
reg = <0x22>;
|
reg = <0x22>;
|
||||||
fcs,int_n = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>;
|
interrupt-parent = <&gpio1>;
|
||||||
|
interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&fusb0_int_gpio>;
|
pinctrl-0 = <&fusb0_int_pin>;
|
||||||
vbus-supply = <&vbus_typec>;
|
vbus-supply = <&vbus_typec>;
|
||||||
|
|
||||||
connector {
|
connector {
|
||||||
|
@ -740,12 +754,29 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cw2015@62 {
|
||||||
|
compatible = "cellwise,cw2015";
|
||||||
|
reg = <0x62>;
|
||||||
|
cellwise,battery-profile = /bits/ 8 <
|
||||||
|
0x17 0x67 0x80 0x73 0x6E 0x6C 0x6B 0x63
|
||||||
|
0x77 0x51 0x5C 0x58 0x50 0x4C 0x48 0x36
|
||||||
|
0x15 0x0C 0x0C 0x19 0x5B 0x7D 0x6F 0x69
|
||||||
|
0x69 0x5B 0x0C 0x29 0x20 0x40 0x52 0x59
|
||||||
|
0x57 0x56 0x54 0x4F 0x3B 0x1F 0x7F 0x17
|
||||||
|
0x06 0x1A 0x30 0x5A 0x85 0x93 0x96 0x2D
|
||||||
|
0x48 0x77 0x9C 0xB3 0x80 0x52 0x94 0xCB
|
||||||
|
0x2F 0x00 0x64 0xA5 0xB5 0x11 0xF0 0x11
|
||||||
|
>;
|
||||||
|
cellwise,monitor-interval-ms = <5000>;
|
||||||
|
monitored-battery = <&bat>;
|
||||||
|
power-supplies = <&mains_charger>, <&fusb0>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2s1 {
|
&i2s1 {
|
||||||
#sound-dai-cells = <0>;
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&i2s_8ch_mclk_gpio>, <&i2s1_2ch_bus>;
|
pinctrl-0 = <&i2s_8ch_mclk_pin>, <&i2s1_2ch_bus>;
|
||||||
rockchip,capture-channels = <8>;
|
rockchip,capture-channels = <8>;
|
||||||
rockchip,playback-channels = <8>;
|
rockchip,playback-channels = <8>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
@ -765,7 +796,6 @@
|
||||||
&pcie0 {
|
&pcie0 {
|
||||||
bus-scan-delay-ms = <1000>;
|
bus-scan-delay-ms = <1000>;
|
||||||
ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>;
|
ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>;
|
||||||
max-link-speed = <2>;
|
|
||||||
num-lanes = <4>;
|
num-lanes = <4>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pcie_clkreqn_cpm>;
|
pinctrl-0 = <&pcie_clkreqn_cpm>;
|
||||||
|
@ -777,116 +807,116 @@
|
||||||
|
|
||||||
&pinctrl {
|
&pinctrl {
|
||||||
buttons {
|
buttons {
|
||||||
pwrbtn_gpio: pwrbtn-gpio {
|
pwrbtn_pin: pwrbtn-pin {
|
||||||
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
|
|
||||||
lidbtn_gpio: lidbtn-gpio {
|
lidbtn_pin: lidbtn-pin {
|
||||||
rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
dc-charger {
|
dc-charger {
|
||||||
dc_det_gpio: dc-det-gpio {
|
dc_det_pin: dc-det-pin {
|
||||||
rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
es8316 {
|
es8316 {
|
||||||
hp_det_gpio: hp-det-gpio {
|
hp_det_pin: hp-det-pin {
|
||||||
rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fusb302x {
|
fusb302x {
|
||||||
fusb0_int_gpio: fusb0-int-gpio {
|
fusb0_int_pin: fusb0-int-pin {
|
||||||
rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
i2s1 {
|
i2s1 {
|
||||||
i2s_8ch_mclk_gpio: i2s-8ch-mclk-gpio {
|
i2s_8ch_mclk_pin: i2s-8ch-mclk-pin {
|
||||||
rockchip,pins = <4 RK_PA0 1 &pcfg_pull_none>;
|
rockchip,pins = <4 RK_PA0 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
lcd-panel {
|
lcd-panel {
|
||||||
lcdvcc_en_gpio: lcdvcc-en-gpio {
|
lcdvcc_en_pin: lcdvcc-en-pin {
|
||||||
rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
panel_en_gpio: panel-en-gpio {
|
panel_en_pin: panel-en-pin {
|
||||||
rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
lcd_panel_reset_gpio: lcd-panel-reset-gpio {
|
lcd_panel_reset_pin: lcd-panel-reset-pin {
|
||||||
rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
pwrled_gpio: pwrled_gpio {
|
pwr_led_pin: pwr-led-pin {
|
||||||
rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
slpled_gpio: slpled_gpio {
|
slp_led_pin: slp-led-pin {
|
||||||
rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pmic {
|
pmic {
|
||||||
pmic_int_l_gpio: pmic-int-l-gpio {
|
pmic_int_l_pin: pmic-int-l-pin {
|
||||||
rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vsel1_gpio: vsel1-gpio {
|
vsel1_pin: vsel1-pin {
|
||||||
rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
|
rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vsel2_gpio: vsel2-gpio {
|
vsel2_pin: vsel2-pin {
|
||||||
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sdcard {
|
sdcard {
|
||||||
sdmmc0_pwr_h_gpio: sdmmc0-pwr-h-gpio {
|
sdmmc0_pwr_h_pin: sdmmc0-pwr-h-pin {
|
||||||
rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
sdio-pwrseq {
|
sdio-pwrseq {
|
||||||
wifi_enable_h_gpio: wifi-enable-h-gpio {
|
wifi_enable_h_pin: wifi-enable-h-pin {
|
||||||
rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
usb-typec {
|
usb-typec {
|
||||||
vcc5v0_typec0_en_gpio: vcc5v0-typec0-en-gpio {
|
vcc5v0_typec0_en_pin: vcc5v0-typec0-en-pin {
|
||||||
rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
usb2 {
|
usb2 {
|
||||||
pwr_5v_gpio: pwr-5v-gpio {
|
pwr_5v_pin: pwr-5v-pin {
|
||||||
rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vcc5v0_host_en_gpio: vcc5v0-host-en-gpio {
|
vcc5v0_host_en_pin: vcc5v0-host-en-pin {
|
||||||
rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
wireless-bluetooth {
|
wireless-bluetooth {
|
||||||
bt_wake_gpio: bt-wake-gpio {
|
bt_wake_pin: bt-wake-pin {
|
||||||
rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
bt_host_wake_gpio: bt-host-wake-gpio {
|
bt_host_wake_pin: bt-host-wake-pin {
|
||||||
rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
bt_reset_gpio: bt-reset-gpio {
|
bt_reset_pin: bt-reset-pin {
|
||||||
rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1034,7 +1064,7 @@
|
||||||
host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
|
host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
|
||||||
max-speed = <1500000>;
|
max-speed = <1500000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&bt_host_wake_gpio &bt_wake_gpio &bt_reset_gpio>;
|
pinctrl-0 = <&bt_host_wake_pin &bt_wake_pin &bt_reset_pin>;
|
||||||
shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>;
|
shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>;
|
||||||
vbat-supply = <&wifi_bat>;
|
vbat-supply = <&wifi_bat>;
|
||||||
vddio-supply = <&vcc_wl>;
|
vddio-supply = <&vcc_wl>;
|
||||||
|
|
|
@ -10,14 +10,18 @@
|
||||||
model = "Theobroma Systems RK3399-Q7 SoM";
|
model = "Theobroma Systems RK3399-Q7 SoM";
|
||||||
compatible = "tsd,rk3399-puma-haikou", "rockchip,rk3399";
|
compatible = "tsd,rk3399-puma-haikou", "rockchip,rk3399";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc1 = &sdmmc;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial0:115200n8";
|
stdout-path = "serial0:115200n8";
|
||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
pinctrl-0 = <&led_pin_module>, <&led_sd_haikou>;
|
pinctrl-0 = <&module_led_pin>, <&sd_card_led_pin>;
|
||||||
|
|
||||||
sd-card-led {
|
sd_card_led: led-1 {
|
||||||
label = "sd_card_led";
|
label = "sd_card_led";
|
||||||
gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>;
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
|
@ -179,7 +183,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
led_sd_haikou: led-sd-gpio {
|
sd_card_led_pin: sd-card-led-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
<1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,12 +8,16 @@
|
||||||
#include "rk3399-opp.dtsi"
|
#include "rk3399-opp.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&led_pin_module>;
|
pinctrl-0 = <&module_led_pin>;
|
||||||
|
|
||||||
module-led {
|
module_led: led-0 {
|
||||||
label = "module_led";
|
label = "module_led";
|
||||||
gpios = <&gpio2 RK_PD1 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio2 RK_PD1 GPIO_ACTIVE_HIGH>;
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
|
@ -21,57 +25,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* Overwrite the opp-table for CPUB as this board uses a different
|
|
||||||
* regulator (FAN53555) that only allows 10mV steps and therefore
|
|
||||||
* can't reach the operation point target voltages from rk3399-opp.dtsi
|
|
||||||
*/
|
|
||||||
/delete-node/ opp-table1;
|
|
||||||
cluster1_opp: opp-table1 {
|
|
||||||
compatible = "operating-points-v2";
|
|
||||||
opp-shared;
|
|
||||||
|
|
||||||
opp00 {
|
|
||||||
opp-hz = /bits/ 64 <408000000>;
|
|
||||||
opp-microvolt = <800000>;
|
|
||||||
clock-latency-ns = <40000>;
|
|
||||||
};
|
|
||||||
opp01 {
|
|
||||||
opp-hz = /bits/ 64 <600000000>;
|
|
||||||
opp-microvolt = <800000>;
|
|
||||||
};
|
|
||||||
opp02 {
|
|
||||||
opp-hz = /bits/ 64 <816000000>;
|
|
||||||
opp-microvolt = <830000>;
|
|
||||||
opp-suspend;
|
|
||||||
};
|
|
||||||
opp03 {
|
|
||||||
opp-hz = /bits/ 64 <1008000000>;
|
|
||||||
opp-microvolt = <880000>;
|
|
||||||
};
|
|
||||||
opp04 {
|
|
||||||
opp-hz = /bits/ 64 <1200000000>;
|
|
||||||
opp-microvolt = <950000>;
|
|
||||||
};
|
|
||||||
opp05 {
|
|
||||||
opp-hz = /bits/ 64 <1416000000>;
|
|
||||||
opp-microvolt = <1030000>;
|
|
||||||
};
|
|
||||||
opp06 {
|
|
||||||
opp-hz = /bits/ 64 <1608000000>;
|
|
||||||
opp-microvolt = <1100000>;
|
|
||||||
};
|
|
||||||
opp07 {
|
|
||||||
opp-hz = /bits/ 64 <1800000000>;
|
|
||||||
opp-microvolt = <1200000>;
|
|
||||||
};
|
|
||||||
opp08 {
|
|
||||||
opp-hz = /bits/ 64 <1992000000>;
|
|
||||||
opp-microvolt = <1230000>;
|
|
||||||
turbo-mode;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
clkin_gmac: external-gmac-clock {
|
clkin_gmac: external-gmac-clock {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
clock-frequency = <125000000>;
|
clock-frequency = <125000000>;
|
||||||
|
@ -450,7 +403,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
led_pin_module: led-module-gpio {
|
module_led_pin: module-led-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<2 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
|
<2 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,6 +11,20 @@
|
||||||
model = "Firefly ROC-RK3399-PC Mezzanine Board";
|
model = "Firefly ROC-RK3399-PC Mezzanine Board";
|
||||||
compatible = "firefly,roc-rk3399-pc-mezzanine", "rockchip,rk3399";
|
compatible = "firefly,roc-rk3399-pc-mezzanine", "rockchip,rk3399";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc2 = &sdio0;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* MP8009 PoE PD */
|
||||||
|
poe_12v: poe-12v {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "poe_12v";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <12000000>;
|
||||||
|
regulator-max-microvolt = <12000000>;
|
||||||
|
};
|
||||||
|
|
||||||
vcc3v3_ngff: vcc3v3-ngff {
|
vcc3v3_ngff: vcc3v3-ngff {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "vcc3v3_ngff";
|
regulator-name = "vcc3v3_ngff";
|
||||||
|
@ -22,7 +36,7 @@
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
vin-supply = <&dc_12v>;
|
vin-supply = <&sys_12v>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vcc3v3_pcie: vcc3v3-pcie {
|
vcc3v3_pcie: vcc3v3-pcie {
|
||||||
|
@ -34,10 +48,14 @@
|
||||||
pinctrl-0 = <&vcc3v3_pcie_en>;
|
pinctrl-0 = <&vcc3v3_pcie_en>;
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
vin-supply = <&dc_12v>;
|
vin-supply = <&sys_12v>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&sys_12v {
|
||||||
|
vin-supply = <&poe_12v>;
|
||||||
|
};
|
||||||
|
|
||||||
&pcie_phy {
|
&pcie_phy {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,6 +13,11 @@
|
||||||
model = "Firefly ROC-RK3399-PC Board";
|
model = "Firefly ROC-RK3399-PC Board";
|
||||||
compatible = "firefly,roc-rk3399-pc", "rockchip,rk3399";
|
compatible = "firefly,roc-rk3399-pc", "rockchip,rk3399";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdmmc;
|
||||||
|
mmc1 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
stdout-path = "serial2:1500000n8";
|
||||||
};
|
};
|
||||||
|
@ -58,30 +63,37 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ir-receiver {
|
||||||
|
compatible = "gpio-ir-receiver";
|
||||||
|
gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_LOW>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&ir_int>;
|
||||||
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&work_led_gpio>, <&diy_led_gpio>, <&yellow_led_gpio>;
|
pinctrl-0 = <&work_led_pin>, <&diy_led_pin>, <&yellow_led_pin>;
|
||||||
|
|
||||||
work-led {
|
work_led: led-0 {
|
||||||
label = "green:work";
|
label = "green:work";
|
||||||
gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>;
|
||||||
default-state = "on";
|
default-state = "on";
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
};
|
};
|
||||||
|
|
||||||
diy-led {
|
diy_led: led-1 {
|
||||||
label = "red:diy";
|
label = "red:diy";
|
||||||
gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
linux,default-trigger = "mmc1";
|
linux,default-trigger = "mmc2";
|
||||||
};
|
};
|
||||||
|
|
||||||
yellow-led {
|
yellow_led: led-2 {
|
||||||
label = "yellow:yellow-led";
|
label = "yellow:yellow-led";
|
||||||
gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -110,6 +122,14 @@
|
||||||
regulator-max-microvolt = <5000000>;
|
regulator-max-microvolt = <5000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sys_12v: sys-12v {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "sys_12v";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
vin-supply = <&dc_12v>;
|
||||||
|
};
|
||||||
|
|
||||||
/* switched by pmic_sleep */
|
/* switched by pmic_sleep */
|
||||||
vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 {
|
vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
|
@ -141,7 +161,7 @@
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
vin-supply = <&dc_12v>;
|
vin-supply = <&sys_12v>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vcca_0v9: vcca-0v9 {
|
vcca_0v9: vcca-0v9 {
|
||||||
|
@ -186,7 +206,7 @@
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
regulator-max-microvolt = <5000000>;
|
regulator-max-microvolt = <5000000>;
|
||||||
vin-supply = <&dc_12v>;
|
vin-supply = <&sys_12v>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vdd_log: vdd-log {
|
vdd_log: vdd-log {
|
||||||
|
@ -376,6 +396,7 @@
|
||||||
|
|
||||||
vcc_sdio: LDO_REG4 {
|
vcc_sdio: LDO_REG4 {
|
||||||
regulator-name = "vcc_sdio";
|
regulator-name = "vcc_sdio";
|
||||||
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <3000000>;
|
regulator-max-microvolt = <3000000>;
|
||||||
|
@ -456,7 +477,7 @@
|
||||||
reg = <0x40>;
|
reg = <0x40>;
|
||||||
fcs,suspend-voltage-selector = <1>;
|
fcs,suspend-voltage-selector = <1>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&vsel1_gpio>;
|
pinctrl-0 = <&vsel1_pin>;
|
||||||
regulator-name = "vdd_cpu_b";
|
regulator-name = "vdd_cpu_b";
|
||||||
regulator-min-microvolt = <712500>;
|
regulator-min-microvolt = <712500>;
|
||||||
regulator-max-microvolt = <1500000>;
|
regulator-max-microvolt = <1500000>;
|
||||||
|
@ -475,11 +496,13 @@
|
||||||
reg = <0x41>;
|
reg = <0x41>;
|
||||||
fcs,suspend-voltage-selector = <1>;
|
fcs,suspend-voltage-selector = <1>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&vsel2_gpio>;
|
pinctrl-0 = <&vsel2_pin>;
|
||||||
regulator-name = "vdd_gpu";
|
regulator-name = "vdd_gpu";
|
||||||
regulator-min-microvolt = <712500>;
|
regulator-min-microvolt = <712500>;
|
||||||
regulator-max-microvolt = <1500000>;
|
regulator-max-microvolt = <1500000>;
|
||||||
regulator-ramp-delay = <1000>;
|
regulator-ramp-delay = <1000>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
vin-supply = <&vcc3v3_sys>;
|
vin-supply = <&vcc3v3_sys>;
|
||||||
|
|
||||||
regulator-state-mem {
|
regulator-state-mem {
|
||||||
|
@ -588,6 +611,12 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ir {
|
||||||
|
ir_int: ir-int {
|
||||||
|
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
lcd-panel {
|
lcd-panel {
|
||||||
lcd_panel_reset: lcd-panel-reset {
|
lcd_panel_reset: lcd-panel-reset {
|
||||||
rockchip,pins = <4 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <4 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
@ -595,25 +624,25 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
diy_led_gpio: diy_led-gpio {
|
diy_led_pin: diy-led-pin {
|
||||||
rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
work_led_gpio: work_led-gpio {
|
work_led_pin: work-led-pin {
|
||||||
rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
yellow_led_gpio: yellow_led-gpio {
|
yellow_led_pin: yellow-led-pin {
|
||||||
rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pmic {
|
pmic {
|
||||||
vsel1_gpio: vsel1-gpio {
|
vsel1_pin: vsel1-pin {
|
||||||
rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
|
rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vsel2_gpio: vsel2-gpio {
|
vsel2_pin: vsel2-pin {
|
||||||
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
#include "rk3399-opp.dtsi"
|
#include "rk3399-opp.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdmmc;
|
||||||
|
mmc1 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
stdout-path = "serial2:1500000n8";
|
||||||
};
|
};
|
||||||
|
@ -111,10 +116,6 @@
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
|
|
||||||
regulator-state-mem {
|
|
||||||
regulator-off-in-suspend;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
vdd_log: vdd-log {
|
vdd_log: vdd-log {
|
||||||
|
@ -362,8 +363,6 @@
|
||||||
regulator-name = "vcc_cam";
|
regulator-name = "vcc_cam";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-min-microvolt = <3300000>;
|
|
||||||
regulator-max-microvolt = <3300000>;
|
|
||||||
regulator-state-mem {
|
regulator-state-mem {
|
||||||
regulator-off-in-suspend;
|
regulator-off-in-suspend;
|
||||||
};
|
};
|
||||||
|
@ -373,8 +372,6 @@
|
||||||
regulator-name = "vcc_mipi";
|
regulator-name = "vcc_mipi";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-min-microvolt = <3300000>;
|
|
||||||
regulator-max-microvolt = <3300000>;
|
|
||||||
regulator-state-mem {
|
regulator-state-mem {
|
||||||
regulator-off-in-suspend;
|
regulator-off-in-suspend;
|
||||||
};
|
};
|
||||||
|
@ -387,7 +384,7 @@
|
||||||
reg = <0x40>;
|
reg = <0x40>;
|
||||||
fcs,suspend-voltage-selector = <1>;
|
fcs,suspend-voltage-selector = <1>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&vsel1_gpio>;
|
pinctrl-0 = <&vsel1_pin>;
|
||||||
regulator-name = "vdd_cpu_b";
|
regulator-name = "vdd_cpu_b";
|
||||||
regulator-min-microvolt = <712500>;
|
regulator-min-microvolt = <712500>;
|
||||||
regulator-max-microvolt = <1500000>;
|
regulator-max-microvolt = <1500000>;
|
||||||
|
@ -406,7 +403,7 @@
|
||||||
reg = <0x41>;
|
reg = <0x41>;
|
||||||
fcs,suspend-voltage-selector = <1>;
|
fcs,suspend-voltage-selector = <1>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&vsel2_gpio>;
|
pinctrl-0 = <&vsel2_pin>;
|
||||||
regulator-name = "vdd_gpu";
|
regulator-name = "vdd_gpu";
|
||||||
regulator-min-microvolt = <712500>;
|
regulator-min-microvolt = <712500>;
|
||||||
regulator-max-microvolt = <1500000>;
|
regulator-max-microvolt = <1500000>;
|
||||||
|
@ -440,8 +437,9 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2s0 {
|
&i2s0 {
|
||||||
rockchip,playback-channels = <8>;
|
pinctrl-0 = <&i2s0_2ch_bus>;
|
||||||
rockchip,capture-channels = <8>;
|
rockchip,capture-channels = <2>;
|
||||||
|
rockchip,playback-channels = <2>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -476,7 +474,6 @@
|
||||||
|
|
||||||
&pcie0 {
|
&pcie0 {
|
||||||
ep-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>;
|
ep-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>;
|
||||||
max-link-speed = <2>;
|
|
||||||
num-lanes = <4>;
|
num-lanes = <4>;
|
||||||
pinctrl-0 = <&pcie_clkreqnb_cpm>;
|
pinctrl-0 = <&pcie_clkreqnb_cpm>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@ -529,11 +526,11 @@
|
||||||
rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vsel1_gpio: vsel1-gpio {
|
vsel1_pin: vsel1-pin {
|
||||||
rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
|
rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vsel2_gpio: vsel2-gpio {
|
vsel2_pin: vsel2-pin {
|
||||||
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -680,7 +677,7 @@
|
||||||
|
|
||||||
&usbdrd_dwc3_0 {
|
&usbdrd_dwc3_0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
dr_mode = "otg";
|
dr_mode = "host";
|
||||||
};
|
};
|
||||||
|
|
||||||
&usbdrd3_1 {
|
&usbdrd3_1 {
|
||||||
|
|
|
@ -9,5 +9,5 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "Radxa ROCK Pi 4A";
|
model = "Radxa ROCK Pi 4A";
|
||||||
compatible = "radxa,rockpi4", "rockchip,rk3399";
|
compatible = "radxa,rockpi4a", "radxa,rockpi4", "rockchip,rk3399";
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,7 +9,11 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "Radxa ROCK Pi 4B";
|
model = "Radxa ROCK Pi 4B";
|
||||||
compatible = "radxa,rockpi4", "rockchip,rk3399";
|
compatible = "radxa,rockpi4b", "radxa,rockpi4", "rockchip,rk3399";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc2 = &sdio0;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdio0 {
|
&sdio0 {
|
||||||
|
|
|
@ -10,7 +10,11 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "Radxa ROCK Pi 4C";
|
model = "Radxa ROCK Pi 4C";
|
||||||
compatible = "radxa,rockpi4", "rockchip,rk3399";
|
compatible = "radxa,rockpi4c", "radxa,rockpi4", "rockchip,rk3399";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc2 = &sdio0;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdio0 {
|
&sdio0 {
|
||||||
|
|
|
@ -17,42 +17,43 @@
|
||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&user_led1>, <&user_led2>, <&user_led3>,
|
pinctrl-0 = <&user_led1_pin>, <&user_led2_pin>,
|
||||||
<&user_led4>, <&wlan_led>, <&bt_led>;
|
<&user_led3_pin>, <&user_led4_pin>,
|
||||||
|
<&wlan_led_pin>, <&bt_led_pin>;
|
||||||
|
|
||||||
user_led1 {
|
user_led1: led-1 {
|
||||||
label = "green:user1";
|
label = "green:user1";
|
||||||
gpios = <&gpio4 RK_PC2 0>;
|
gpios = <&gpio4 RK_PC2 0>;
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
};
|
};
|
||||||
|
|
||||||
user_led2 {
|
user_led2: led-2 {
|
||||||
label = "green:user2";
|
label = "green:user2";
|
||||||
gpios = <&gpio4 RK_PC6 0>;
|
gpios = <&gpio4 RK_PC6 0>;
|
||||||
linux,default-trigger = "mmc0";
|
linux,default-trigger = "mmc0";
|
||||||
};
|
};
|
||||||
|
|
||||||
user_led3 {
|
user_led3: led-3 {
|
||||||
label = "green:user3";
|
label = "green:user3";
|
||||||
gpios = <&gpio4 RK_PD0 0>;
|
gpios = <&gpio4 RK_PD0 0>;
|
||||||
linux,default-trigger = "mmc1";
|
linux,default-trigger = "mmc1";
|
||||||
};
|
};
|
||||||
|
|
||||||
user_led4 {
|
user_led4: led-4 {
|
||||||
label = "green:user4";
|
label = "green:user4";
|
||||||
gpios = <&gpio4 RK_PD4 0>;
|
gpios = <&gpio4 RK_PD4 0>;
|
||||||
panic-indicator;
|
panic-indicator;
|
||||||
linux,default-trigger = "none";
|
linux,default-trigger = "none";
|
||||||
};
|
};
|
||||||
|
|
||||||
wlan_active_led {
|
wlan_active_led: led-5 {
|
||||||
label = "yellow:wlan";
|
label = "yellow:wlan";
|
||||||
gpios = <&gpio4 RK_PD5 0>;
|
gpios = <&gpio4 RK_PD5 0>;
|
||||||
linux,default-trigger = "phy0tx";
|
linux,default-trigger = "phy0tx";
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
};
|
};
|
||||||
|
|
||||||
bt_active_led {
|
bt_active_led: led-6 {
|
||||||
label = "blue:bt";
|
label = "blue:bt";
|
||||||
gpios = <&gpio4 RK_PD6 0>;
|
gpios = <&gpio4 RK_PD6 0>;
|
||||||
linux,default-trigger = "hci0-power";
|
linux,default-trigger = "hci0-power";
|
||||||
|
@ -62,38 +63,52 @@
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu_alert0 {
|
||||||
|
temperature = <65000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu_thermal {
|
||||||
|
sustainable-power = <1550>;
|
||||||
|
|
||||||
|
cooling-maps {
|
||||||
|
map0 {
|
||||||
|
trip = <&cpu_alert1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&pcie0 {
|
&pcie0 {
|
||||||
ep-gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_HIGH>;
|
ep-gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&pinctrl {
|
&pinctrl {
|
||||||
leds {
|
leds {
|
||||||
user_led1: user_led1 {
|
user_led1_pin: user-led1-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
|
<4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
user_led2: user_led2 {
|
user_led2_pin: user-led2-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
|
<4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
user_led3: user_led3 {
|
user_led3_pin: user-led3-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
|
<4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
user_led4: user_led4 {
|
user_led4_pin: user-led4-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
|
<4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
wlan_led: wlan_led {
|
wlan_led_pin: wlan-led-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<4 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
|
<4 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
bt_led: bt_led {
|
bt_led_pin: bt-led-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
|
<4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
@ -124,45 +139,6 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&thermal_zones {
|
|
||||||
cpu_thermal: cpu {
|
|
||||||
polling-delay-passive = <100>;
|
|
||||||
polling-delay = <1000>;
|
|
||||||
thermal-sensors = <&tsadc 0>;
|
|
||||||
sustainable-power = <1550>;
|
|
||||||
|
|
||||||
trips {
|
|
||||||
cpu_alert0: cpu_alert0 {
|
|
||||||
temperature = <65000>;
|
|
||||||
hysteresis = <2000>;
|
|
||||||
type = "passive";
|
|
||||||
};
|
|
||||||
|
|
||||||
cpu_alert1: cpu_alert1 {
|
|
||||||
temperature = <75000>;
|
|
||||||
hysteresis = <2000>;
|
|
||||||
type = "passive";
|
|
||||||
};
|
|
||||||
|
|
||||||
cpu_crit: cpu_crit {
|
|
||||||
temperature = <95000>;
|
|
||||||
hysteresis = <2000>;
|
|
||||||
type = "critical";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
cooling-maps {
|
|
||||||
map0 {
|
|
||||||
|
|
||||||
trip = <&cpu_alert1>;
|
|
||||||
cooling-device =
|
|
||||||
<&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
|
|
||||||
<&cpu_b1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
&usbdrd_dwc3_0 {
|
&usbdrd_dwc3_0 {
|
||||||
dr_mode = "otg";
|
dr_mode = "otg";
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,6 +9,12 @@
|
||||||
#include "rk3399-opp.dtsi"
|
#include "rk3399-opp.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdio0;
|
||||||
|
mmc1 = &sdmmc;
|
||||||
|
mmc2 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
sdio_pwrseq: sdio-pwrseq {
|
sdio_pwrseq: sdio-pwrseq {
|
||||||
compatible = "mmc-pwrseq-simple";
|
compatible = "mmc-pwrseq-simple";
|
||||||
clocks = <&rk808 1>;
|
clocks = <&rk808 1>;
|
||||||
|
@ -470,12 +476,12 @@
|
||||||
<1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
|
<1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vsel1_gpio: vsel1-gpio {
|
vsel1_pin: vsel1-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
|
<1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vsel2_gpio: vsel2-gpio {
|
vsel2_pin: vsel2-pin {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
<1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
<1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,6 +10,12 @@
|
||||||
#include "rk3399-opp.dtsi"
|
#include "rk3399-opp.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdio0;
|
||||||
|
mmc1 = &sdmmc;
|
||||||
|
mmc2 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "serial2:1500000n8";
|
stdout-path = "serial2:1500000n8";
|
||||||
};
|
};
|
||||||
|
@ -36,18 +42,25 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ir-receiver {
|
||||||
|
compatible = "gpio-ir-receiver";
|
||||||
|
gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_LOW>;
|
||||||
|
pinctrl-0 = <&ir_int>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&work_led_gpio>, <&diy_led_gpio>;
|
pinctrl-0 = <&work_led_pin>, <&diy_led_pin>;
|
||||||
|
|
||||||
work-led {
|
work_led: led-0 {
|
||||||
label = "work";
|
label = "work";
|
||||||
default-state = "on";
|
default-state = "on";
|
||||||
gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
diy-led {
|
diy_led: led-1 {
|
||||||
label = "diy";
|
label = "diy";
|
||||||
default-state = "off";
|
default-state = "off";
|
||||||
gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
|
||||||
|
@ -72,10 +85,27 @@
|
||||||
|
|
||||||
sound {
|
sound {
|
||||||
compatible = "audio-graph-card";
|
compatible = "audio-graph-card";
|
||||||
label = "rockchip,rk3399";
|
label = "Analog";
|
||||||
dais = <&i2s1_p0>;
|
dais = <&i2s1_p0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sound-dit {
|
||||||
|
compatible = "audio-graph-card";
|
||||||
|
label = "SPDIF";
|
||||||
|
dais = <&spdif_p0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
spdif-dit {
|
||||||
|
compatible = "linux,spdif-dit";
|
||||||
|
#sound-dai-cells = <0>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
dit_p0_0: endpoint {
|
||||||
|
remote-endpoint = <&spdif_p0_0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
vcc12v_dcin: vcc12v-dcin {
|
vcc12v_dcin: vcc12v-dcin {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "vcc12v_dcin";
|
regulator-name = "vcc12v_dcin";
|
||||||
|
@ -96,6 +126,24 @@
|
||||||
vin-supply = <&vcc_1v8>;
|
vin-supply = <&vcc_1v8>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* micro SD card power */
|
||||||
|
vcc3v0_sd: vcc3v0-sd {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
enable-active-high;
|
||||||
|
gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&sdmmc0_pwr_h>;
|
||||||
|
regulator-name = "vcc3v0_sd";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-min-microvolt = <3000000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
vin-supply = <&vcc3v3_sys>;
|
||||||
|
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
vcc3v3_pcie: vcc3v3-pcie-regulator {
|
vcc3v3_pcie: vcc3v3-pcie-regulator {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
|
@ -427,7 +475,7 @@
|
||||||
reg = <0x40>;
|
reg = <0x40>;
|
||||||
fcs,suspend-voltage-selector = <1>;
|
fcs,suspend-voltage-selector = <1>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&vsel1_gpio>;
|
pinctrl-0 = <&vsel1_pin>;
|
||||||
regulator-name = "vdd_cpu_b";
|
regulator-name = "vdd_cpu_b";
|
||||||
regulator-min-microvolt = <712500>;
|
regulator-min-microvolt = <712500>;
|
||||||
regulator-max-microvolt = <1500000>;
|
regulator-max-microvolt = <1500000>;
|
||||||
|
@ -446,7 +494,7 @@
|
||||||
reg = <0x41>;
|
reg = <0x41>;
|
||||||
fcs,suspend-voltage-selector = <1>;
|
fcs,suspend-voltage-selector = <1>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&vsel2_gpio>;
|
pinctrl-0 = <&vsel2_pin>;
|
||||||
regulator-name = "vdd_gpu";
|
regulator-name = "vdd_gpu";
|
||||||
regulator-min-microvolt = <712500>;
|
regulator-min-microvolt = <712500>;
|
||||||
regulator-max-microvolt = <1500000>;
|
regulator-max-microvolt = <1500000>;
|
||||||
|
@ -569,12 +617,18 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ir {
|
||||||
|
ir_int: ir-int {
|
||||||
|
rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
leds {
|
leds {
|
||||||
work_led_gpio: work_led-gpio {
|
work_led_pin: work-led-pin {
|
||||||
rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
diy_led_gpio: diy_led-gpio {
|
diy_led_pin: diy-led-pin {
|
||||||
rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -594,15 +648,22 @@
|
||||||
rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vsel1_gpio: vsel1-gpio {
|
vsel1_pin: vsel1-pin {
|
||||||
rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
|
rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vsel2_gpio: vsel2-gpio {
|
vsel2_pin: vsel2-pin {
|
||||||
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sdcard {
|
||||||
|
sdmmc0_pwr_h: sdmmc0-pwr-h {
|
||||||
|
rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
sdio-pwrseq {
|
sdio-pwrseq {
|
||||||
wifi_enable_h: wifi-enable-h {
|
wifi_enable_h: wifi-enable-h {
|
||||||
rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
@ -661,6 +722,8 @@
|
||||||
max-frequency = <150000000>;
|
max-frequency = <150000000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
|
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
|
||||||
|
vmmc-supply = <&vcc3v0_sd>;
|
||||||
|
vqmmc-supply = <&vcc_sdio>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -671,6 +734,16 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&spdif {
|
||||||
|
pinctrl-0 = <&spdif_bus_1>;
|
||||||
|
|
||||||
|
spdif_p0: port {
|
||||||
|
spdif_p0_0: endpoint {
|
||||||
|
remote-endpoint = <&dit_p0_0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&spi1 {
|
&spi1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
@ -768,7 +841,7 @@
|
||||||
|
|
||||||
&usbdrd_dwc3_0 {
|
&usbdrd_dwc3_0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
dr_mode = "otg";
|
dr_mode = "host";
|
||||||
};
|
};
|
||||||
|
|
||||||
&usbdrd3_1 {
|
&usbdrd3_1 {
|
||||||
|
|
|
@ -197,38 +197,12 @@
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
amba: bus {
|
|
||||||
compatible = "simple-bus";
|
|
||||||
#address-cells = <2>;
|
|
||||||
#size-cells = <2>;
|
|
||||||
ranges;
|
|
||||||
|
|
||||||
dmac_bus: dma-controller@ff6d0000 {
|
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
|
||||||
reg = <0x0 0xff6d0000 0x0 0x4000>;
|
|
||||||
interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH 0>,
|
|
||||||
<GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH 0>;
|
|
||||||
#dma-cells = <1>;
|
|
||||||
clocks = <&cru ACLK_DMAC0_PERILP>;
|
|
||||||
clock-names = "apb_pclk";
|
|
||||||
};
|
|
||||||
|
|
||||||
dmac_peri: dma-controller@ff6e0000 {
|
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
|
||||||
reg = <0x0 0xff6e0000 0x0 0x4000>;
|
|
||||||
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH 0>,
|
|
||||||
<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH 0>;
|
|
||||||
#dma-cells = <1>;
|
|
||||||
clocks = <&cru ACLK_DMAC1_PERILP>;
|
|
||||||
clock-names = "apb_pclk";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
pcie0: pcie@f8000000 {
|
pcie0: pcie@f8000000 {
|
||||||
compatible = "rockchip,rk3399-pcie";
|
compatible = "rockchip,rk3399-pcie";
|
||||||
reg = <0x0 0xf8000000 0x0 0x2000000>,
|
reg = <0x0 0xf8000000 0x0 0x2000000>,
|
||||||
<0x0 0xfd000000 0x0 0x1000000>;
|
<0x0 0xfd000000 0x0 0x1000000>;
|
||||||
reg-names = "axi-base", "apb-base";
|
reg-names = "axi-base", "apb-base";
|
||||||
|
device_type = "pci";
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
|
@ -247,15 +221,14 @@
|
||||||
<0 0 0 2 &pcie0_intc 1>,
|
<0 0 0 2 &pcie0_intc 1>,
|
||||||
<0 0 0 3 &pcie0_intc 2>,
|
<0 0 0 3 &pcie0_intc 2>,
|
||||||
<0 0 0 4 &pcie0_intc 3>;
|
<0 0 0 4 &pcie0_intc 3>;
|
||||||
linux,pci-domain = <0>;
|
|
||||||
max-link-speed = <1>;
|
max-link-speed = <1>;
|
||||||
msi-map = <0x0 &its 0x0 0x1000>;
|
msi-map = <0x0 &its 0x0 0x1000>;
|
||||||
phys = <&pcie_phy 0>, <&pcie_phy 1>,
|
phys = <&pcie_phy 0>, <&pcie_phy 1>,
|
||||||
<&pcie_phy 2>, <&pcie_phy 3>;
|
<&pcie_phy 2>, <&pcie_phy 3>;
|
||||||
phy-names = "pcie-phy-0", "pcie-phy-1",
|
phy-names = "pcie-phy-0", "pcie-phy-1",
|
||||||
"pcie-phy-2", "pcie-phy-3";
|
"pcie-phy-2", "pcie-phy-3";
|
||||||
ranges = <0x83000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x1e00000
|
ranges = <0x82000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x1e00000>,
|
||||||
0x81000000 0x0 0xfbe00000 0x0 0xfbe00000 0x0 0x100000>;
|
<0x81000000 0x0 0xfbe00000 0x0 0xfbe00000 0x0 0x100000>;
|
||||||
resets = <&cru SRST_PCIE_CORE>, <&cru SRST_PCIE_MGMT>,
|
resets = <&cru SRST_PCIE_CORE>, <&cru SRST_PCIE_MGMT>,
|
||||||
<&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE>,
|
<&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE>,
|
||||||
<&cru SRST_PCIE_PM>, <&cru SRST_P_PCIE>,
|
<&cru SRST_PCIE_PM>, <&cru SRST_P_PCIE>,
|
||||||
|
@ -326,7 +299,7 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
sdhci: sdhci@fe330000 {
|
sdhci: mmc@fe330000 {
|
||||||
compatible = "rockchip,rk3399-sdhci-5.1", "arasan,sdhci-5.1";
|
compatible = "rockchip,rk3399-sdhci-5.1", "arasan,sdhci-5.1";
|
||||||
reg = <0x0 0xfe330000 0x0 0x10000>;
|
reg = <0x0 0xfe330000 0x0 0x10000>;
|
||||||
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH 0>;
|
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
|
@ -403,7 +376,7 @@
|
||||||
reset-names = "usb3-otg";
|
reset-names = "usb3-otg";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
usbdrd_dwc3_0: dwc3 {
|
usbdrd_dwc3_0: usb@fe800000 {
|
||||||
compatible = "snps,dwc3";
|
compatible = "snps,dwc3";
|
||||||
reg = <0x0 0xfe800000 0x0 0x100000>;
|
reg = <0x0 0xfe800000 0x0 0x100000>;
|
||||||
interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH 0>;
|
interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
|
@ -439,7 +412,7 @@
|
||||||
reset-names = "usb3-otg";
|
reset-names = "usb3-otg";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
usbdrd_dwc3_1: dwc3 {
|
usbdrd_dwc3_1: usb@fe900000 {
|
||||||
compatible = "snps,dwc3";
|
compatible = "snps,dwc3";
|
||||||
reg = <0x0 0xfe900000 0x0 0x100000>;
|
reg = <0x0 0xfe900000 0x0 0x100000>;
|
||||||
interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>;
|
interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
|
@ -759,7 +732,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
thermal_zones: thermal-zones {
|
thermal_zones: thermal-zones {
|
||||||
cpu_thermal: cpu {
|
cpu_thermal: cpu-thermal {
|
||||||
polling-delay-passive = <100>;
|
polling-delay-passive = <100>;
|
||||||
polling-delay = <1000>;
|
polling-delay = <1000>;
|
||||||
|
|
||||||
|
@ -803,7 +776,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
gpu_thermal: gpu {
|
gpu_thermal: gpu-thermal {
|
||||||
polling-delay-passive = <100>;
|
polling-delay-passive = <100>;
|
||||||
polling-delay = <1000>;
|
polling-delay = <1000>;
|
||||||
|
|
||||||
|
@ -845,135 +818,135 @@
|
||||||
rockchip,grf = <&grf>;
|
rockchip,grf = <&grf>;
|
||||||
rockchip,hw-tshut-temp = <95000>;
|
rockchip,hw-tshut-temp = <95000>;
|
||||||
pinctrl-names = "init", "default", "sleep";
|
pinctrl-names = "init", "default", "sleep";
|
||||||
pinctrl-0 = <&otp_gpio>;
|
pinctrl-0 = <&otp_pin>;
|
||||||
pinctrl-1 = <&otp_out>;
|
pinctrl-1 = <&otp_out>;
|
||||||
pinctrl-2 = <&otp_gpio>;
|
pinctrl-2 = <&otp_pin>;
|
||||||
#thermal-sensor-cells = <1>;
|
#thermal-sensor-cells = <1>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_emmc: qos@ffa58000 {
|
qos_emmc: qos@ffa58000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffa58000 0x0 0x20>;
|
reg = <0x0 0xffa58000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_gmac: qos@ffa5c000 {
|
qos_gmac: qos@ffa5c000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffa5c000 0x0 0x20>;
|
reg = <0x0 0xffa5c000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_pcie: qos@ffa60080 {
|
qos_pcie: qos@ffa60080 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffa60080 0x0 0x20>;
|
reg = <0x0 0xffa60080 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_usb_host0: qos@ffa60100 {
|
qos_usb_host0: qos@ffa60100 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffa60100 0x0 0x20>;
|
reg = <0x0 0xffa60100 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_usb_host1: qos@ffa60180 {
|
qos_usb_host1: qos@ffa60180 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffa60180 0x0 0x20>;
|
reg = <0x0 0xffa60180 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_usb_otg0: qos@ffa70000 {
|
qos_usb_otg0: qos@ffa70000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffa70000 0x0 0x20>;
|
reg = <0x0 0xffa70000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_usb_otg1: qos@ffa70080 {
|
qos_usb_otg1: qos@ffa70080 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffa70080 0x0 0x20>;
|
reg = <0x0 0xffa70080 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_sd: qos@ffa74000 {
|
qos_sd: qos@ffa74000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffa74000 0x0 0x20>;
|
reg = <0x0 0xffa74000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_sdioaudio: qos@ffa76000 {
|
qos_sdioaudio: qos@ffa76000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffa76000 0x0 0x20>;
|
reg = <0x0 0xffa76000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_hdcp: qos@ffa90000 {
|
qos_hdcp: qos@ffa90000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffa90000 0x0 0x20>;
|
reg = <0x0 0xffa90000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_iep: qos@ffa98000 {
|
qos_iep: qos@ffa98000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffa98000 0x0 0x20>;
|
reg = <0x0 0xffa98000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_isp0_m0: qos@ffaa0000 {
|
qos_isp0_m0: qos@ffaa0000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffaa0000 0x0 0x20>;
|
reg = <0x0 0xffaa0000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_isp0_m1: qos@ffaa0080 {
|
qos_isp0_m1: qos@ffaa0080 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffaa0080 0x0 0x20>;
|
reg = <0x0 0xffaa0080 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_isp1_m0: qos@ffaa8000 {
|
qos_isp1_m0: qos@ffaa8000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffaa8000 0x0 0x20>;
|
reg = <0x0 0xffaa8000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_isp1_m1: qos@ffaa8080 {
|
qos_isp1_m1: qos@ffaa8080 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffaa8080 0x0 0x20>;
|
reg = <0x0 0xffaa8080 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_rga_r: qos@ffab0000 {
|
qos_rga_r: qos@ffab0000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffab0000 0x0 0x20>;
|
reg = <0x0 0xffab0000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_rga_w: qos@ffab0080 {
|
qos_rga_w: qos@ffab0080 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffab0080 0x0 0x20>;
|
reg = <0x0 0xffab0080 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_video_m0: qos@ffab8000 {
|
qos_video_m0: qos@ffab8000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffab8000 0x0 0x20>;
|
reg = <0x0 0xffab8000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_video_m1_r: qos@ffac0000 {
|
qos_video_m1_r: qos@ffac0000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffac0000 0x0 0x20>;
|
reg = <0x0 0xffac0000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_video_m1_w: qos@ffac0080 {
|
qos_video_m1_w: qos@ffac0080 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffac0080 0x0 0x20>;
|
reg = <0x0 0xffac0080 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_vop_big_r: qos@ffac8000 {
|
qos_vop_big_r: qos@ffac8000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffac8000 0x0 0x20>;
|
reg = <0x0 0xffac8000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_vop_big_w: qos@ffac8080 {
|
qos_vop_big_w: qos@ffac8080 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffac8080 0x0 0x20>;
|
reg = <0x0 0xffac8080 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_vop_little: qos@ffad0000 {
|
qos_vop_little: qos@ffad0000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffad0000 0x0 0x20>;
|
reg = <0x0 0xffad0000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_perihp: qos@ffad8080 {
|
qos_perihp: qos@ffad8080 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffad8080 0x0 0x20>;
|
reg = <0x0 0xffad8080 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qos_gpu: qos@ffae0000 {
|
qos_gpu: qos@ffae0000 {
|
||||||
compatible = "syscon";
|
compatible = "rockchip,rk3399-qos", "syscon";
|
||||||
reg = <0x0 0xffae0000 0x0 0x20>;
|
reg = <0x0 0xffae0000 0x0 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -995,126 +968,146 @@
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
/* These power domains are grouped by VD_CENTER */
|
/* These power domains are grouped by VD_CENTER */
|
||||||
pd_iep@RK3399_PD_IEP {
|
power-domain@RK3399_PD_IEP {
|
||||||
reg = <RK3399_PD_IEP>;
|
reg = <RK3399_PD_IEP>;
|
||||||
clocks = <&cru ACLK_IEP>,
|
clocks = <&cru ACLK_IEP>,
|
||||||
<&cru HCLK_IEP>;
|
<&cru HCLK_IEP>;
|
||||||
pm_qos = <&qos_iep>;
|
pm_qos = <&qos_iep>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_rga@RK3399_PD_RGA {
|
power-domain@RK3399_PD_RGA {
|
||||||
reg = <RK3399_PD_RGA>;
|
reg = <RK3399_PD_RGA>;
|
||||||
clocks = <&cru ACLK_RGA>,
|
clocks = <&cru ACLK_RGA>,
|
||||||
<&cru HCLK_RGA>;
|
<&cru HCLK_RGA>;
|
||||||
pm_qos = <&qos_rga_r>,
|
pm_qos = <&qos_rga_r>,
|
||||||
<&qos_rga_w>;
|
<&qos_rga_w>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_vcodec@RK3399_PD_VCODEC {
|
power-domain@RK3399_PD_VCODEC {
|
||||||
reg = <RK3399_PD_VCODEC>;
|
reg = <RK3399_PD_VCODEC>;
|
||||||
clocks = <&cru ACLK_VCODEC>,
|
clocks = <&cru ACLK_VCODEC>,
|
||||||
<&cru HCLK_VCODEC>;
|
<&cru HCLK_VCODEC>;
|
||||||
pm_qos = <&qos_video_m0>;
|
pm_qos = <&qos_video_m0>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_vdu@RK3399_PD_VDU {
|
power-domain@RK3399_PD_VDU {
|
||||||
reg = <RK3399_PD_VDU>;
|
reg = <RK3399_PD_VDU>;
|
||||||
clocks = <&cru ACLK_VDU>,
|
clocks = <&cru ACLK_VDU>,
|
||||||
<&cru HCLK_VDU>;
|
<&cru HCLK_VDU>;
|
||||||
pm_qos = <&qos_video_m1_r>,
|
pm_qos = <&qos_video_m1_r>,
|
||||||
<&qos_video_m1_w>;
|
<&qos_video_m1_w>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* These power domains are grouped by VD_GPU */
|
/* These power domains are grouped by VD_GPU */
|
||||||
pd_gpu@RK3399_PD_GPU {
|
power-domain@RK3399_PD_GPU {
|
||||||
reg = <RK3399_PD_GPU>;
|
reg = <RK3399_PD_GPU>;
|
||||||
clocks = <&cru ACLK_GPU>;
|
clocks = <&cru ACLK_GPU>;
|
||||||
pm_qos = <&qos_gpu>;
|
pm_qos = <&qos_gpu>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* These power domains are grouped by VD_LOGIC */
|
/* These power domains are grouped by VD_LOGIC */
|
||||||
pd_edp@RK3399_PD_EDP {
|
power-domain@RK3399_PD_EDP {
|
||||||
reg = <RK3399_PD_EDP>;
|
reg = <RK3399_PD_EDP>;
|
||||||
clocks = <&cru PCLK_EDP_CTRL>;
|
clocks = <&cru PCLK_EDP_CTRL>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_emmc@RK3399_PD_EMMC {
|
power-domain@RK3399_PD_EMMC {
|
||||||
reg = <RK3399_PD_EMMC>;
|
reg = <RK3399_PD_EMMC>;
|
||||||
clocks = <&cru ACLK_EMMC>;
|
clocks = <&cru ACLK_EMMC>;
|
||||||
pm_qos = <&qos_emmc>;
|
pm_qos = <&qos_emmc>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_gmac@RK3399_PD_GMAC {
|
power-domain@RK3399_PD_GMAC {
|
||||||
reg = <RK3399_PD_GMAC>;
|
reg = <RK3399_PD_GMAC>;
|
||||||
clocks = <&cru ACLK_GMAC>,
|
clocks = <&cru ACLK_GMAC>,
|
||||||
<&cru PCLK_GMAC>;
|
<&cru PCLK_GMAC>;
|
||||||
pm_qos = <&qos_gmac>;
|
pm_qos = <&qos_gmac>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_sd@RK3399_PD_SD {
|
power-domain@RK3399_PD_SD {
|
||||||
reg = <RK3399_PD_SD>;
|
reg = <RK3399_PD_SD>;
|
||||||
clocks = <&cru HCLK_SDMMC>,
|
clocks = <&cru HCLK_SDMMC>,
|
||||||
<&cru SCLK_SDMMC>;
|
<&cru SCLK_SDMMC>;
|
||||||
pm_qos = <&qos_sd>;
|
pm_qos = <&qos_sd>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_sdioaudio@RK3399_PD_SDIOAUDIO {
|
power-domain@RK3399_PD_SDIOAUDIO {
|
||||||
reg = <RK3399_PD_SDIOAUDIO>;
|
reg = <RK3399_PD_SDIOAUDIO>;
|
||||||
clocks = <&cru HCLK_SDIO>;
|
clocks = <&cru HCLK_SDIO>;
|
||||||
pm_qos = <&qos_sdioaudio>;
|
pm_qos = <&qos_sdioaudio>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_usb3@RK3399_PD_USB3 {
|
power-domain@RK3399_PD_TCPD0 {
|
||||||
|
reg = <RK3399_PD_TCPD0>;
|
||||||
|
clocks = <&cru SCLK_UPHY0_TCPDCORE>,
|
||||||
|
<&cru SCLK_UPHY0_TCPDPHY_REF>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
|
};
|
||||||
|
power-domain@RK3399_PD_TCPD1 {
|
||||||
|
reg = <RK3399_PD_TCPD1>;
|
||||||
|
clocks = <&cru SCLK_UPHY1_TCPDCORE>,
|
||||||
|
<&cru SCLK_UPHY1_TCPDPHY_REF>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
|
};
|
||||||
|
power-domain@RK3399_PD_USB3 {
|
||||||
reg = <RK3399_PD_USB3>;
|
reg = <RK3399_PD_USB3>;
|
||||||
clocks = <&cru ACLK_USB3>;
|
clocks = <&cru ACLK_USB3>;
|
||||||
pm_qos = <&qos_usb_otg0>,
|
pm_qos = <&qos_usb_otg0>,
|
||||||
<&qos_usb_otg1>;
|
<&qos_usb_otg1>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_vio@RK3399_PD_VIO {
|
power-domain@RK3399_PD_VIO {
|
||||||
reg = <RK3399_PD_VIO>;
|
reg = <RK3399_PD_VIO>;
|
||||||
|
#power-domain-cells = <1>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
pd_hdcp@RK3399_PD_HDCP {
|
power-domain@RK3399_PD_HDCP {
|
||||||
reg = <RK3399_PD_HDCP>;
|
reg = <RK3399_PD_HDCP>;
|
||||||
clocks = <&cru ACLK_HDCP>,
|
clocks = <&cru ACLK_HDCP>,
|
||||||
<&cru HCLK_HDCP>,
|
<&cru HCLK_HDCP>,
|
||||||
<&cru PCLK_HDCP>;
|
<&cru PCLK_HDCP>;
|
||||||
pm_qos = <&qos_hdcp>;
|
pm_qos = <&qos_hdcp>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_isp0@RK3399_PD_ISP0 {
|
power-domain@RK3399_PD_ISP0 {
|
||||||
reg = <RK3399_PD_ISP0>;
|
reg = <RK3399_PD_ISP0>;
|
||||||
clocks = <&cru ACLK_ISP0>,
|
clocks = <&cru ACLK_ISP0>,
|
||||||
<&cru HCLK_ISP0>;
|
<&cru HCLK_ISP0>;
|
||||||
pm_qos = <&qos_isp0_m0>,
|
pm_qos = <&qos_isp0_m0>,
|
||||||
<&qos_isp0_m1>;
|
<&qos_isp0_m1>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_isp1@RK3399_PD_ISP1 {
|
power-domain@RK3399_PD_ISP1 {
|
||||||
reg = <RK3399_PD_ISP1>;
|
reg = <RK3399_PD_ISP1>;
|
||||||
clocks = <&cru ACLK_ISP1>,
|
clocks = <&cru ACLK_ISP1>,
|
||||||
<&cru HCLK_ISP1>;
|
<&cru HCLK_ISP1>;
|
||||||
pm_qos = <&qos_isp1_m0>,
|
pm_qos = <&qos_isp1_m0>,
|
||||||
<&qos_isp1_m1>;
|
<&qos_isp1_m1>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_tcpc0@RK3399_PD_TCPC0 {
|
power-domain@RK3399_PD_VO {
|
||||||
reg = <RK3399_PD_TCPD0>;
|
|
||||||
clocks = <&cru SCLK_UPHY0_TCPDCORE>,
|
|
||||||
<&cru SCLK_UPHY0_TCPDPHY_REF>;
|
|
||||||
};
|
|
||||||
pd_tcpc1@RK3399_PD_TCPC1 {
|
|
||||||
reg = <RK3399_PD_TCPD1>;
|
|
||||||
clocks = <&cru SCLK_UPHY1_TCPDCORE>,
|
|
||||||
<&cru SCLK_UPHY1_TCPDPHY_REF>;
|
|
||||||
};
|
|
||||||
pd_vo@RK3399_PD_VO {
|
|
||||||
reg = <RK3399_PD_VO>;
|
reg = <RK3399_PD_VO>;
|
||||||
|
#power-domain-cells = <1>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
pd_vopb@RK3399_PD_VOPB {
|
power-domain@RK3399_PD_VOPB {
|
||||||
reg = <RK3399_PD_VOPB>;
|
reg = <RK3399_PD_VOPB>;
|
||||||
clocks = <&cru ACLK_VOP0>,
|
clocks = <&cru ACLK_VOP0>,
|
||||||
<&cru HCLK_VOP0>;
|
<&cru HCLK_VOP0>;
|
||||||
pm_qos = <&qos_vop_big_r>,
|
pm_qos = <&qos_vop_big_r>,
|
||||||
<&qos_vop_big_w>;
|
<&qos_vop_big_w>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
pd_vopl@RK3399_PD_VOPL {
|
power-domain@RK3399_PD_VOPL {
|
||||||
reg = <RK3399_PD_VOPL>;
|
reg = <RK3399_PD_VOPL>;
|
||||||
clocks = <&cru ACLK_VOP1>,
|
clocks = <&cru ACLK_VOP1>,
|
||||||
<&cru HCLK_VOP1>;
|
<&cru HCLK_VOP1>;
|
||||||
pm_qos = <&qos_vop_little>;
|
pm_qos = <&qos_vop_little>;
|
||||||
|
#power-domain-cells = <0>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1124,8 +1117,6 @@
|
||||||
pmugrf: syscon@ff320000 {
|
pmugrf: syscon@ff320000 {
|
||||||
compatible = "rockchip,rk3399-pmugrf", "syscon", "simple-mfd";
|
compatible = "rockchip,rk3399-pmugrf", "syscon", "simple-mfd";
|
||||||
reg = <0x0 0xff320000 0x0 0x1000>;
|
reg = <0x0 0xff320000 0x0 0x1000>;
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <1>;
|
|
||||||
|
|
||||||
pmu_io_domains: io-domains {
|
pmu_io_domains: io-domains {
|
||||||
compatible = "rockchip,rk3399-pmu-io-voltage-domain";
|
compatible = "rockchip,rk3399-pmu-io-voltage-domain";
|
||||||
|
@ -1211,7 +1202,6 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pwm0_pin>;
|
pinctrl-0 = <&pwm0_pin>;
|
||||||
clocks = <&pmucru PCLK_RKPWM_PMU>;
|
clocks = <&pmucru PCLK_RKPWM_PMU>;
|
||||||
clock-names = "pwm";
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1222,7 +1212,6 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pwm1_pin>;
|
pinctrl-0 = <&pwm1_pin>;
|
||||||
clocks = <&pmucru PCLK_RKPWM_PMU>;
|
clocks = <&pmucru PCLK_RKPWM_PMU>;
|
||||||
clock-names = "pwm";
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1233,7 +1222,6 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pwm2_pin>;
|
pinctrl-0 = <&pwm2_pin>;
|
||||||
clocks = <&pmucru PCLK_RKPWM_PMU>;
|
clocks = <&pmucru PCLK_RKPWM_PMU>;
|
||||||
clock-names = "pwm";
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1244,7 +1232,6 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pwm3a_pin>;
|
pinctrl-0 = <&pwm3a_pin>;
|
||||||
clocks = <&pmucru PCLK_RKPWM_PMU>;
|
clocks = <&pmucru PCLK_RKPWM_PMU>;
|
||||||
clock-names = "pwm";
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1271,6 +1258,17 @@
|
||||||
power-domains = <&power RK3399_PD_VCODEC>;
|
power-domains = <&power RK3399_PD_VCODEC>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vdec: video-codec@ff660000 {
|
||||||
|
compatible = "rockchip,rk3399-vdec";
|
||||||
|
reg = <0x0 0xff660000 0x0 0x400>;
|
||||||
|
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
|
clocks = <&cru ACLK_VDU>, <&cru HCLK_VDU>,
|
||||||
|
<&cru SCLK_VDU_CA>, <&cru SCLK_VDU_CORE>;
|
||||||
|
clock-names = "axi", "ahb", "cabac", "core";
|
||||||
|
iommus = <&vdec_mmu>;
|
||||||
|
power-domains = <&power RK3399_PD_VDU>;
|
||||||
|
};
|
||||||
|
|
||||||
vdec_mmu: iommu@ff660480 {
|
vdec_mmu: iommu@ff660480 {
|
||||||
compatible = "rockchip,iommu";
|
compatible = "rockchip,iommu";
|
||||||
reg = <0x0 0xff660480 0x0 0x40>, <0x0 0xff6604c0 0x0 0x40>;
|
reg = <0x0 0xff660480 0x0 0x40>, <0x0 0xff6604c0 0x0 0x40>;
|
||||||
|
@ -1278,8 +1276,8 @@
|
||||||
interrupt-names = "vdec_mmu";
|
interrupt-names = "vdec_mmu";
|
||||||
clocks = <&cru ACLK_VDU>, <&cru HCLK_VDU>;
|
clocks = <&cru ACLK_VDU>, <&cru HCLK_VDU>;
|
||||||
clock-names = "aclk", "iface";
|
clock-names = "aclk", "iface";
|
||||||
|
power-domains = <&power RK3399_PD_VDU>;
|
||||||
#iommu-cells = <0>;
|
#iommu-cells = <0>;
|
||||||
status = "disabled";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
iep_mmu: iommu@ff670800 {
|
iep_mmu: iommu@ff670800 {
|
||||||
|
@ -1336,6 +1334,28 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dmac_bus: dma-controller@ff6d0000 {
|
||||||
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
|
reg = <0x0 0xff6d0000 0x0 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH 0>,
|
||||||
|
<GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
arm,pl330-periph-burst;
|
||||||
|
clocks = <&cru ACLK_DMAC0_PERILP>;
|
||||||
|
clock-names = "apb_pclk";
|
||||||
|
};
|
||||||
|
|
||||||
|
dmac_peri: dma-controller@ff6e0000 {
|
||||||
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
|
reg = <0x0 0xff6e0000 0x0 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH 0>,
|
||||||
|
<GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
arm,pl330-periph-burst;
|
||||||
|
clocks = <&cru ACLK_DMAC1_PERILP>;
|
||||||
|
clock-names = "apb_pclk";
|
||||||
|
};
|
||||||
|
|
||||||
pmucru: pmu-clock-controller@ff750000 {
|
pmucru: pmu-clock-controller@ff750000 {
|
||||||
compatible = "rockchip,rk3399-pmucru";
|
compatible = "rockchip,rk3399-pmucru";
|
||||||
reg = <0x0 0xff750000 0x0 0x1000>;
|
reg = <0x0 0xff750000 0x0 0x1000>;
|
||||||
|
@ -1387,7 +1407,18 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
u2phy0: usb2-phy@e450 {
|
mipi_dphy_rx0: mipi-dphy-rx0 {
|
||||||
|
compatible = "rockchip,rk3399-mipi-dphy-rx0";
|
||||||
|
clocks = <&cru SCLK_MIPIDPHY_REF>,
|
||||||
|
<&cru SCLK_DPHY_RX0_CFG>,
|
||||||
|
<&cru PCLK_VIO_GRF>;
|
||||||
|
clock-names = "dphy-ref", "dphy-cfg", "grf";
|
||||||
|
power-domains = <&power RK3399_PD_VIO>;
|
||||||
|
#phy-cells = <0>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
u2phy0: usb2phy@e450 {
|
||||||
compatible = "rockchip,rk3399-usb2phy";
|
compatible = "rockchip,rk3399-usb2phy";
|
||||||
reg = <0xe450 0x10>;
|
reg = <0xe450 0x10>;
|
||||||
clocks = <&cru SCLK_USB2PHY0_REF>;
|
clocks = <&cru SCLK_USB2PHY0_REF>;
|
||||||
|
@ -1414,7 +1445,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
u2phy1: usb2-phy@e460 {
|
u2phy1: usb2phy@e460 {
|
||||||
compatible = "rockchip,rk3399-usb2phy";
|
compatible = "rockchip,rk3399-usb2phy";
|
||||||
reg = <0xe460 0x10>;
|
reg = <0xe460 0x10>;
|
||||||
clocks = <&cru SCLK_USB2PHY1_REF>;
|
clocks = <&cru SCLK_USB2PHY1_REF>;
|
||||||
|
@ -1513,7 +1544,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
watchdog@ff848000 {
|
watchdog@ff848000 {
|
||||||
compatible = "snps,dw-wdt";
|
compatible = "rockchip,rk3399-wdt", "snps,dw-wdt";
|
||||||
reg = <0x0 0xff848000 0x0 0x100>;
|
reg = <0x0 0xff848000 0x0 0x100>;
|
||||||
clocks = <&cru PCLK_WDT>;
|
clocks = <&cru PCLK_WDT>;
|
||||||
interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH 0>;
|
interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
|
@ -1700,6 +1731,32 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
isp0: isp0@ff910000 {
|
||||||
|
compatible = "rockchip,rk3399-cif-isp";
|
||||||
|
reg = <0x0 0xff910000 0x0 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
|
clocks = <&cru SCLK_ISP0>,
|
||||||
|
<&cru ACLK_ISP0_WRAPPER>,
|
||||||
|
<&cru HCLK_ISP0_WRAPPER>;
|
||||||
|
clock-names = "isp", "aclk", "hclk";
|
||||||
|
iommus = <&isp0_mmu>;
|
||||||
|
phys = <&mipi_dphy_rx0>;
|
||||||
|
phy-names = "dphy";
|
||||||
|
power-domains = <&power RK3399_PD_ISP0>;
|
||||||
|
status = "disabled";
|
||||||
|
|
||||||
|
ports {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
isp0_mmu: iommu@ff914000 {
|
isp0_mmu: iommu@ff914000 {
|
||||||
compatible = "rockchip,iommu";
|
compatible = "rockchip,iommu";
|
||||||
reg = <0x0 0xff914000 0x0 0x100>, <0x0 0xff915000 0x0 0x100>;
|
reg = <0x0 0xff914000 0x0 0x100>, <0x0 0xff915000 0x0 0x100>;
|
||||||
|
@ -1883,10 +1940,10 @@
|
||||||
gpu: gpu@ff9a0000 {
|
gpu: gpu@ff9a0000 {
|
||||||
compatible = "rockchip,rk3399-mali", "arm,mali-t860";
|
compatible = "rockchip,rk3399-mali", "arm,mali-t860";
|
||||||
reg = <0x0 0xff9a0000 0x0 0x10000>;
|
reg = <0x0 0xff9a0000 0x0 0x10000>;
|
||||||
interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH 0>,
|
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH 0>,
|
||||||
<GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH 0>,
|
<GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH 0>,
|
||||||
<GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH 0>;
|
<GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
interrupt-names = "gpu", "job", "mmu";
|
interrupt-names = "job", "mmu", "gpu";
|
||||||
clocks = <&cru ACLK_GPU>;
|
clocks = <&cru ACLK_GPU>;
|
||||||
#cooling-cells = <2>;
|
#cooling-cells = <2>;
|
||||||
power-domains = <&power RK3399_PD_GPU>;
|
power-domains = <&power RK3399_PD_GPU>;
|
||||||
|
@ -2317,7 +2374,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sleep {
|
suspend {
|
||||||
ap_pwroff: ap-pwroff {
|
ap_pwroff: ap-pwroff {
|
||||||
rockchip,pins = <1 RK_PA5 1 &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PA5 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
@ -2475,7 +2532,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
tsadc {
|
tsadc {
|
||||||
otp_gpio: otp-gpio {
|
otp_pin: otp-pin {
|
||||||
rockchip,pins = <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,11 @@
|
||||||
/ {
|
/ {
|
||||||
compatible = "vamrs,rk3399pro-vmarc-som", "rockchip,rk3399pro";
|
compatible = "vamrs,rk3399pro-vmarc-som", "rockchip,rk3399pro";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdmmc;
|
||||||
|
mmc1 = &sdhci;
|
||||||
|
};
|
||||||
|
|
||||||
vcc3v3_pcie: vcc-pcie-regulator {
|
vcc3v3_pcie: vcc-pcie-regulator {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
|
@ -324,7 +329,6 @@
|
||||||
|
|
||||||
&pcie0 {
|
&pcie0 {
|
||||||
ep-gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
|
ep-gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
|
||||||
max-link-speed = <2>;
|
|
||||||
num-lanes = <4>;
|
num-lanes = <4>;
|
||||||
pinctrl-0 = <&pcie_clkreqnb_cpm>;
|
pinctrl-0 = <&pcie_clkreqnb_cpm>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@ -353,6 +357,12 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sdio-pwrseq {
|
||||||
|
wifi_enable_h: wifi-enable-h {
|
||||||
|
rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
vbus_host {
|
vbus_host {
|
||||||
usb1_en_oc: usb1-en-oc {
|
usb1_en_oc: usb1-en-oc {
|
||||||
rockchip,pins = <4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>;
|
rockchip,pins = <4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
|
35
arch/arm/dts/rk3xxx-u-boot.dtsi
Normal file
35
arch/arm/dts/rk3xxx-u-boot.dtsi
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
|
||||||
|
/ {
|
||||||
|
noc: syscon@10128000 {
|
||||||
|
compatible = "rockchip,rk3188-noc", "syscon";
|
||||||
|
reg = <0x10128000 0x2000>;
|
||||||
|
u-boot,dm-spl;
|
||||||
|
};
|
||||||
|
|
||||||
|
dmc: dmc@20020000 {
|
||||||
|
/* unreviewed u-boot-specific binding */
|
||||||
|
compatible = "rockchip,rk3188-dmc", "syscon";
|
||||||
|
reg = <0x20020000 0x3fc
|
||||||
|
0x20040000 0x294>;
|
||||||
|
clocks = <&cru PCLK_DDRUPCTL>, <&cru PCLK_PUBL>;
|
||||||
|
clock-names = "pclk_ddrupctl", "pclk_publ";
|
||||||
|
rockchip,cru = <&cru>;
|
||||||
|
rockchip,grf = <&grf>;
|
||||||
|
rockchip,pmu = <&pmu>;
|
||||||
|
rockchip,noc = <&noc>;
|
||||||
|
u-boot,dm-spl;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&grf {
|
||||||
|
u-boot,dm-spl;
|
||||||
|
};
|
||||||
|
|
||||||
|
&pmu {
|
||||||
|
u-boot,dm-spl;
|
||||||
|
};
|
||||||
|
|
||||||
|
&uart2 {
|
||||||
|
clock-frequency = <24000000>;
|
||||||
|
};
|
|
@ -1,4 +1,4 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0+ OR X11
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2013 MundoReader S.L.
|
* Copyright (c) 2013 MundoReader S.L.
|
||||||
* Author: Heiko Stuebner <heiko@sntech.de>
|
* Author: Heiko Stuebner <heiko@sntech.de>
|
||||||
|
@ -6,9 +6,12 @@
|
||||||
|
|
||||||
#include <dt-bindings/interrupt-controller/irq.h>
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
#include "skeleton.dtsi"
|
#include <dt-bindings/soc/rockchip,boot-mode.h>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
|
|
||||||
aliases {
|
aliases {
|
||||||
|
@ -18,9 +21,6 @@
|
||||||
i2c2 = &i2c2;
|
i2c2 = &i2c2;
|
||||||
i2c3 = &i2c3;
|
i2c3 = &i2c3;
|
||||||
i2c4 = &i2c4;
|
i2c4 = &i2c4;
|
||||||
mshc0 = &emmc;
|
|
||||||
mshc1 = &mmc0;
|
|
||||||
mshc2 = &mmc1;
|
|
||||||
serial0 = &uart0;
|
serial0 = &uart0;
|
||||||
serial1 = &uart1;
|
serial1 = &uart1;
|
||||||
serial2 = &uart2;
|
serial2 = &uart2;
|
||||||
|
@ -29,47 +29,6 @@
|
||||||
spi1 = &spi1;
|
spi1 = &spi1;
|
||||||
};
|
};
|
||||||
|
|
||||||
amba {
|
|
||||||
compatible = "simple-bus";
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <1>;
|
|
||||||
ranges;
|
|
||||||
|
|
||||||
dmac1_s: dma-controller@20018000 {
|
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
|
||||||
reg = <0x20018000 0x4000>;
|
|
||||||
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
|
|
||||||
<GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
#dma-cells = <1>;
|
|
||||||
arm,pl330-broken-no-flushp;
|
|
||||||
clocks = <&cru ACLK_DMA1>;
|
|
||||||
clock-names = "apb_pclk";
|
|
||||||
};
|
|
||||||
|
|
||||||
dmac1_ns: dma-controller@2001c000 {
|
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
|
||||||
reg = <0x2001c000 0x4000>;
|
|
||||||
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
|
|
||||||
<GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
#dma-cells = <1>;
|
|
||||||
arm,pl330-broken-no-flushp;
|
|
||||||
clocks = <&cru ACLK_DMA1>;
|
|
||||||
clock-names = "apb_pclk";
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
dmac2: dma-controller@20078000 {
|
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
|
||||||
reg = <0x20078000 0x4000>;
|
|
||||||
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
|
|
||||||
<GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
#dma-cells = <1>;
|
|
||||||
arm,pl330-broken-no-flushp;
|
|
||||||
clocks = <&cru ACLK_DMA2>;
|
|
||||||
clock-names = "apb_pclk";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xin24m: oscillator {
|
xin24m: oscillator {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
clock-frequency = <24000000>;
|
clock-frequency = <24000000>;
|
||||||
|
@ -77,7 +36,30 @@
|
||||||
clock-output-names = "xin24m";
|
clock-output-names = "xin24m";
|
||||||
};
|
};
|
||||||
|
|
||||||
L2: l2-cache-controller@10138000 {
|
gpu: gpu@10090000 {
|
||||||
|
compatible = "arm,mali-400";
|
||||||
|
reg = <0x10090000 0x10000>;
|
||||||
|
clocks = <&cru ACLK_GPU>, <&cru ACLK_GPU>;
|
||||||
|
clock-names = "bus", "core";
|
||||||
|
assigned-clocks = <&cru ACLK_GPU>;
|
||||||
|
assigned-clock-rates = <100000000>;
|
||||||
|
resets = <&cru SRST_GPU>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
vpu: video-codec@10104000 {
|
||||||
|
compatible = "rockchip,rk3066-vpu";
|
||||||
|
reg = <0x10104000 0x800>;
|
||||||
|
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
interrupt-names = "vepu", "vdpu";
|
||||||
|
clocks = <&cru ACLK_VDPU>, <&cru HCLK_VDPU>,
|
||||||
|
<&cru ACLK_VEPU>, <&cru HCLK_VEPU>;
|
||||||
|
clock-names = "aclk_vdpu", "hclk_vdpu",
|
||||||
|
"aclk_vepu", "hclk_vepu";
|
||||||
|
};
|
||||||
|
|
||||||
|
L2: cache-controller@10138000 {
|
||||||
compatible = "arm,pl310-cache";
|
compatible = "arm,pl310-cache";
|
||||||
reg = <0x10138000 0x1000>;
|
reg = <0x10138000 0x1000>;
|
||||||
cache-unified;
|
cache-unified;
|
||||||
|
@ -92,14 +74,14 @@
|
||||||
global_timer: global-timer@1013c200 {
|
global_timer: global-timer@1013c200 {
|
||||||
compatible = "arm,cortex-a9-global-timer";
|
compatible = "arm,cortex-a9-global-timer";
|
||||||
reg = <0x1013c200 0x20>;
|
reg = <0x1013c200 0x20>;
|
||||||
interrupts = <GIC_PPI 11 0x304>;
|
interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
|
||||||
clocks = <&cru CORE_PERI>;
|
clocks = <&cru CORE_PERI>;
|
||||||
};
|
};
|
||||||
|
|
||||||
local_timer: local-timer@1013c600 {
|
local_timer: local-timer@1013c600 {
|
||||||
compatible = "arm,cortex-a9-twd-timer";
|
compatible = "arm,cortex-a9-twd-timer";
|
||||||
reg = <0x1013c600 0x20>;
|
reg = <0x1013c600 0x20>;
|
||||||
interrupts = <GIC_PPI 13 0x304>;
|
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
|
||||||
clocks = <&cru CORE_PERI>;
|
clocks = <&cru CORE_PERI>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -133,10 +115,44 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
noc: syscon@10128000 {
|
qos_gpu: qos@1012d000 {
|
||||||
u-boot,dm-spl;
|
compatible = "rockchip,rk3066-qos", "syscon";
|
||||||
compatible = "rockchip,rk3188-noc", "syscon";
|
reg = <0x1012d000 0x20>;
|
||||||
reg = <0x10128000 0x2000>;
|
};
|
||||||
|
|
||||||
|
qos_vpu: qos@1012e000 {
|
||||||
|
compatible = "rockchip,rk3066-qos", "syscon";
|
||||||
|
reg = <0x1012e000 0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
qos_lcdc0: qos@1012f000 {
|
||||||
|
compatible = "rockchip,rk3066-qos", "syscon";
|
||||||
|
reg = <0x1012f000 0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
qos_cif0: qos@1012f080 {
|
||||||
|
compatible = "rockchip,rk3066-qos", "syscon";
|
||||||
|
reg = <0x1012f080 0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
qos_ipp: qos@1012f100 {
|
||||||
|
compatible = "rockchip,rk3066-qos", "syscon";
|
||||||
|
reg = <0x1012f100 0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
qos_lcdc1: qos@1012f180 {
|
||||||
|
compatible = "rockchip,rk3066-qos", "syscon";
|
||||||
|
reg = <0x1012f180 0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
qos_cif1: qos@1012f200 {
|
||||||
|
compatible = "rockchip,rk3066-qos", "syscon";
|
||||||
|
reg = <0x1012f200 0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
qos_rga: qos@1012f280 {
|
||||||
|
compatible = "rockchip,rk3066-qos", "syscon";
|
||||||
|
reg = <0x1012f280 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
usb_otg: usb@10180000 {
|
usb_otg: usb@10180000 {
|
||||||
|
@ -149,7 +165,6 @@
|
||||||
g-np-tx-fifo-size = <16>;
|
g-np-tx-fifo-size = <16>;
|
||||||
g-rx-fifo-size = <275>;
|
g-rx-fifo-size = <275>;
|
||||||
g-tx-fifo-size = <256 128 128 64 64 32>;
|
g-tx-fifo-size = <256 128 128 64 64 32>;
|
||||||
g-use-dma;
|
|
||||||
phys = <&usbphy0>;
|
phys = <&usbphy0>;
|
||||||
phy-names = "usb2-phy";
|
phy-names = "usb2-phy";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
@ -184,60 +199,99 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc0: dwmmc@10214000 {
|
mmc0: mmc@10214000 {
|
||||||
compatible = "rockchip,rk2928-dw-mshc";
|
compatible = "rockchip,rk2928-dw-mshc";
|
||||||
reg = <0x10214000 0x1000>;
|
reg = <0x10214000 0x1000>;
|
||||||
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
|
clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
|
||||||
clock-names = "biu", "ciu";
|
clock-names = "biu", "ciu";
|
||||||
|
dmas = <&dmac2 1>;
|
||||||
|
dma-names = "rx-tx";
|
||||||
fifo-depth = <256>;
|
fifo-depth = <256>;
|
||||||
|
resets = <&cru SRST_SDMMC>;
|
||||||
|
reset-names = "reset";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc1: dwmmc@10218000 {
|
mmc1: mmc@10218000 {
|
||||||
compatible = "rockchip,rk2928-dw-mshc";
|
compatible = "rockchip,rk2928-dw-mshc";
|
||||||
reg = <0x10218000 0x1000>;
|
reg = <0x10218000 0x1000>;
|
||||||
interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>;
|
clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>;
|
||||||
clock-names = "biu", "ciu";
|
clock-names = "biu", "ciu";
|
||||||
|
dmas = <&dmac2 3>;
|
||||||
|
dma-names = "rx-tx";
|
||||||
fifo-depth = <256>;
|
fifo-depth = <256>;
|
||||||
|
resets = <&cru SRST_SDIO>;
|
||||||
|
reset-names = "reset";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
emmc: dwmmc@1021c000 {
|
emmc: mmc@1021c000 {
|
||||||
compatible = "rockchip,rk2928-dw-mshc";
|
compatible = "rockchip,rk2928-dw-mshc";
|
||||||
reg = <0x1021c000 0x1000>;
|
reg = <0x1021c000 0x1000>;
|
||||||
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>;
|
clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>;
|
||||||
clock-names = "biu", "ciu";
|
clock-names = "biu", "ciu";
|
||||||
|
dmas = <&dmac2 4>;
|
||||||
|
dma-names = "rx-tx";
|
||||||
fifo-depth = <256>;
|
fifo-depth = <256>;
|
||||||
|
resets = <&cru SRST_EMMC>;
|
||||||
|
reset-names = "reset";
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
|
nfc: nand-controller@10500000 {
|
||||||
|
compatible = "rockchip,rk2928-nfc";
|
||||||
|
reg = <0x10500000 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&cru HCLK_NANDC0>;
|
||||||
|
clock-names = "ahb";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
pmu: pmu@20004000 {
|
pmu: pmu@20004000 {
|
||||||
compatible = "rockchip,rk3066-pmu", "syscon";
|
compatible = "rockchip,rk3066-pmu", "syscon", "simple-mfd";
|
||||||
reg = <0x20004000 0x100>;
|
reg = <0x20004000 0x100>;
|
||||||
u-boot,dm-spl;
|
|
||||||
|
reboot-mode {
|
||||||
|
compatible = "syscon-reboot-mode";
|
||||||
|
offset = <0x40>;
|
||||||
|
mode-normal = <BOOT_NORMAL>;
|
||||||
|
mode-recovery = <BOOT_RECOVERY>;
|
||||||
|
mode-bootloader = <BOOT_FASTBOOT>;
|
||||||
|
mode-loader = <BOOT_BL_DOWNLOAD>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
grf: grf@20008000 {
|
grf: grf@20008000 {
|
||||||
compatible = "syscon";
|
compatible = "syscon", "simple-mfd";
|
||||||
reg = <0x20008000 0x200>;
|
reg = <0x20008000 0x200>;
|
||||||
u-boot,dm-spl;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
dmc: dmc@20020000 {
|
dmac1_s: dma-controller@20018000 {
|
||||||
/* unreviewed u-boot-specific binding */
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
compatible = "rockchip,rk3188-dmc", "syscon";
|
reg = <0x20018000 0x4000>;
|
||||||
rockchip,cru = <&cru>;
|
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
rockchip,grf = <&grf>;
|
<GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
rockchip,pmu = <&pmu>;
|
#dma-cells = <1>;
|
||||||
rockchip,noc = <&noc>;
|
arm,pl330-broken-no-flushp;
|
||||||
reg = <0x20020000 0x3fc
|
arm,pl330-periph-burst;
|
||||||
0x20040000 0x294>;
|
clocks = <&cru ACLK_DMA1>;
|
||||||
clocks = <&cru PCLK_DDRUPCTL>, <&cru PCLK_PUBL>;
|
clock-names = "apb_pclk";
|
||||||
clock-names = "pclk_ddrupctl", "pclk_publ";
|
};
|
||||||
u-boot,dm-spl;
|
|
||||||
|
dmac1_ns: dma-controller@2001c000 {
|
||||||
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
|
reg = <0x2001c000 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
arm,pl330-broken-no-flushp;
|
||||||
|
arm,pl330-periph-burst;
|
||||||
|
clocks = <&cru ACLK_DMA1>;
|
||||||
|
clock-names = "apb_pclk";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c0: i2c@2002d000 {
|
i2c0: i2c@2002d000 {
|
||||||
|
@ -361,7 +415,6 @@
|
||||||
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
reg-shift = <2>;
|
reg-shift = <2>;
|
||||||
reg-io-width = <1>;
|
reg-io-width = <1>;
|
||||||
clock-frequency = <24000000>;
|
|
||||||
clock-names = "baudclk", "apb_pclk";
|
clock-names = "baudclk", "apb_pclk";
|
||||||
clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
|
clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
@ -385,6 +438,8 @@
|
||||||
#io-channel-cells = <1>;
|
#io-channel-cells = <1>;
|
||||||
clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
|
clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
|
||||||
clock-names = "saradc", "apb_pclk";
|
clock-names = "saradc", "apb_pclk";
|
||||||
|
resets = <&cru SRST_SARADC>;
|
||||||
|
reset-names = "saradc-apb";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -413,4 +468,16 @@
|
||||||
dma-names = "tx", "rx";
|
dma-names = "tx", "rx";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dmac2: dma-controller@20078000 {
|
||||||
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
|
reg = <0x20078000 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
arm,pl330-broken-no-flushp;
|
||||||
|
arm,pl330-periph-burst;
|
||||||
|
clocks = <&cru ACLK_DMA2>;
|
||||||
|
clock-names = "apb_pclk";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -51,6 +51,57 @@ struct mm_region *mem_map = px30_mem_map;
|
||||||
|
|
||||||
#define QOS_PRIORITY_LEVEL(h, l) ((((h) & 3) << 8) | ((l) & 3))
|
#define QOS_PRIORITY_LEVEL(h, l) ((((h) & 3) << 8) | ((l) & 3))
|
||||||
|
|
||||||
|
/* GRF_GPIO1AL_IOMUX */
|
||||||
|
enum {
|
||||||
|
GPIO1A3_SHIFT = 12,
|
||||||
|
GPIO1A3_MASK = 0xf << GPIO1A3_SHIFT,
|
||||||
|
GPIO1A3_GPIO = 0,
|
||||||
|
GPIO1A3_FLASH_D3,
|
||||||
|
GPIO1A3_EMMC_D3,
|
||||||
|
GPIO1A3_SFC_SIO3,
|
||||||
|
|
||||||
|
GPIO1A2_SHIFT = 8,
|
||||||
|
GPIO1A2_MASK = 0xf << GPIO1A2_SHIFT,
|
||||||
|
GPIO1A2_GPIO = 0,
|
||||||
|
GPIO1A2_FLASH_D2,
|
||||||
|
GPIO1A2_EMMC_D2,
|
||||||
|
GPIO1A2_SFC_SIO2,
|
||||||
|
|
||||||
|
GPIO1A1_SHIFT = 4,
|
||||||
|
GPIO1A1_MASK = 0xf << GPIO1A1_SHIFT,
|
||||||
|
GPIO1A1_GPIO = 0,
|
||||||
|
GPIO1A1_FLASH_D1,
|
||||||
|
GPIO1A1_EMMC_D1,
|
||||||
|
GPIO1A1_SFC_SIO1,
|
||||||
|
|
||||||
|
GPIO1A0_SHIFT = 0,
|
||||||
|
GPIO1A0_MASK = 0xf << GPIO1A0_SHIFT,
|
||||||
|
GPIO1A0_GPIO = 0,
|
||||||
|
GPIO1A0_FLASH_D0,
|
||||||
|
GPIO1A0_EMMC_D0,
|
||||||
|
GPIO1A0_SFC_SIO0,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* GRF_GPIO1AH_IOMUX */
|
||||||
|
enum {
|
||||||
|
GPIO1A4_SHIFT = 0,
|
||||||
|
GPIO1A4_MASK = 0xf << GPIO1A4_SHIFT,
|
||||||
|
GPIO1A4_GPIO = 0,
|
||||||
|
GPIO1A4_FLASH_D4,
|
||||||
|
GPIO1A4_EMMC_D4,
|
||||||
|
GPIO1A4_SFC_CSN0,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* GRF_GPIO1BL_IOMUX */
|
||||||
|
enum {
|
||||||
|
GPIO1B1_SHIFT = 4,
|
||||||
|
GPIO1B1_MASK = 0xf << GPIO1B1_SHIFT,
|
||||||
|
GPIO1B1_GPIO = 0,
|
||||||
|
GPIO1B1_FLASH_RDY,
|
||||||
|
GPIO1B1_EMMC_CLKOUT,
|
||||||
|
GPIO1B1_SFC_CLK,
|
||||||
|
};
|
||||||
|
|
||||||
/* GRF_GPIO1BH_IOMUX */
|
/* GRF_GPIO1BH_IOMUX */
|
||||||
enum {
|
enum {
|
||||||
GPIO1B7_SHIFT = 12,
|
GPIO1B7_SHIFT = 12,
|
||||||
|
@ -193,6 +244,19 @@ int arch_cpu_init(void)
|
||||||
GPIO1D4_SDMMC_D2 << GPIO1D4_SHIFT);
|
GPIO1D4_SDMMC_D2 << GPIO1D4_SHIFT);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_ROCKCHIP_SFC
|
||||||
|
rk_clrsetreg(&grf->gpio1al_iomux,
|
||||||
|
GPIO1A3_MASK | GPIO1A2_MASK | GPIO1A1_MASK | GPIO1A0_MASK,
|
||||||
|
GPIO1A3_SFC_SIO3 << GPIO1A3_SHIFT |
|
||||||
|
GPIO1A2_SFC_SIO2 << GPIO1A2_SHIFT |
|
||||||
|
GPIO1A1_SFC_SIO1 << GPIO1A1_SHIFT |
|
||||||
|
GPIO1A0_SFC_SIO0 << GPIO1A0_SHIFT);
|
||||||
|
rk_clrsetreg(&grf->gpio1ah_iomux, GPIO1A4_MASK,
|
||||||
|
GPIO1A4_SFC_CSN0 << GPIO1A4_SHIFT);
|
||||||
|
rk_clrsetreg(&grf->gpio1bl_iomux, GPIO1B1_MASK,
|
||||||
|
GPIO1B1_SFC_CLK << GPIO1B1_SHIFT);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Enable PD_VO (default disable at reset) */
|
/* Enable PD_VO (default disable at reset) */
|
||||||
|
|
|
@ -28,7 +28,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
|
const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
|
||||||
[BROM_BOOTSOURCE_EMMC] = "/sdhci@fe330000",
|
[BROM_BOOTSOURCE_EMMC] = "/sdhci@fe330000",
|
||||||
[BROM_BOOTSOURCE_SPINOR] = "/spi@ff1d0000",
|
[BROM_BOOTSOURCE_SPINOR] = "/spi@ff1d0000/flash@0",
|
||||||
[BROM_BOOTSOURCE_SD] = "/mmc@fe320000",
|
[BROM_BOOTSOURCE_SD] = "/mmc@fe320000",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -29,9 +29,11 @@ CONFIG_NET_RANDOM_ETHADDR=y
|
||||||
CONFIG_ROCKCHIP_GPIO=y
|
CONFIG_ROCKCHIP_GPIO=y
|
||||||
CONFIG_SYS_I2C_ROCKCHIP=y
|
CONFIG_SYS_I2C_ROCKCHIP=y
|
||||||
CONFIG_MISC=y
|
CONFIG_MISC=y
|
||||||
|
CONFIG_MMC_HS400_SUPPORT=y
|
||||||
CONFIG_MMC_DW=y
|
CONFIG_MMC_DW=y
|
||||||
CONFIG_MMC_DW_ROCKCHIP=y
|
CONFIG_MMC_DW_ROCKCHIP=y
|
||||||
CONFIG_MMC_SDHCI=y
|
CONFIG_MMC_SDHCI=y
|
||||||
|
CONFIG_MMC_SDHCI_SDMA=y
|
||||||
CONFIG_MMC_SDHCI_ROCKCHIP=y
|
CONFIG_MMC_SDHCI_ROCKCHIP=y
|
||||||
CONFIG_SF_DEFAULT_SPEED=20000000
|
CONFIG_SF_DEFAULT_SPEED=20000000
|
||||||
CONFIG_DM_ETH=y
|
CONFIG_DM_ETH=y
|
||||||
|
|
|
@ -581,6 +581,32 @@ static ulong px30_mmc_set_clk(struct px30_clk_priv *priv,
|
||||||
return px30_mmc_get_clk(priv, clk_id);
|
return px30_mmc_get_clk(priv, clk_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ulong px30_sfc_get_clk(struct px30_clk_priv *priv, uint clk_id)
|
||||||
|
{
|
||||||
|
struct px30_cru *cru = priv->cru;
|
||||||
|
u32 div, con;
|
||||||
|
|
||||||
|
con = readl(&cru->clksel_con[22]);
|
||||||
|
div = (con & SFC_DIV_CON_MASK) >> SFC_DIV_CON_SHIFT;
|
||||||
|
|
||||||
|
return DIV_TO_RATE(priv->gpll_hz, div);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ulong px30_sfc_set_clk(struct px30_clk_priv *priv,
|
||||||
|
ulong clk_id, ulong set_rate)
|
||||||
|
{
|
||||||
|
struct px30_cru *cru = priv->cru;
|
||||||
|
int src_clk_div;
|
||||||
|
|
||||||
|
src_clk_div = DIV_ROUND_UP(priv->gpll_hz, set_rate);
|
||||||
|
rk_clrsetreg(&cru->clksel_con[22],
|
||||||
|
SFC_PLL_SEL_MASK | SFC_DIV_CON_MASK,
|
||||||
|
0 << SFC_PLL_SEL_SHIFT |
|
||||||
|
(src_clk_div - 1) << SFC_DIV_CON_SHIFT);
|
||||||
|
|
||||||
|
return px30_sfc_get_clk(priv, clk_id);
|
||||||
|
}
|
||||||
|
|
||||||
static ulong px30_pwm_get_clk(struct px30_clk_priv *priv, ulong clk_id)
|
static ulong px30_pwm_get_clk(struct px30_clk_priv *priv, ulong clk_id)
|
||||||
{
|
{
|
||||||
struct px30_cru *cru = priv->cru;
|
struct px30_cru *cru = priv->cru;
|
||||||
|
@ -1192,6 +1218,9 @@ static ulong px30_clk_get_rate(struct clk *clk)
|
||||||
case SCLK_EMMC_SAMPLE:
|
case SCLK_EMMC_SAMPLE:
|
||||||
rate = px30_mmc_get_clk(priv, clk->id);
|
rate = px30_mmc_get_clk(priv, clk->id);
|
||||||
break;
|
break;
|
||||||
|
case SCLK_SFC:
|
||||||
|
rate = px30_sfc_get_clk(priv, clk->id);
|
||||||
|
break;
|
||||||
case SCLK_I2C0:
|
case SCLK_I2C0:
|
||||||
case SCLK_I2C1:
|
case SCLK_I2C1:
|
||||||
case SCLK_I2C2:
|
case SCLK_I2C2:
|
||||||
|
@ -1271,6 +1300,9 @@ static ulong px30_clk_set_rate(struct clk *clk, ulong rate)
|
||||||
case SCLK_EMMC:
|
case SCLK_EMMC:
|
||||||
ret = px30_mmc_set_clk(priv, clk->id, rate);
|
ret = px30_mmc_set_clk(priv, clk->id, rate);
|
||||||
break;
|
break;
|
||||||
|
case SCLK_SFC:
|
||||||
|
ret = px30_sfc_set_clk(priv, clk->id, rate);
|
||||||
|
break;
|
||||||
case SCLK_I2C0:
|
case SCLK_I2C0:
|
||||||
case SCLK_I2C1:
|
case SCLK_I2C1:
|
||||||
case SCLK_I2C2:
|
case SCLK_I2C2:
|
||||||
|
|
|
@ -6,90 +6,421 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
|
#include <clk.h>
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
|
#include <dm/ofnode.h>
|
||||||
#include <dt-structs.h>
|
#include <dt-structs.h>
|
||||||
|
#include <linux/delay.h>
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/libfdt.h>
|
#include <linux/libfdt.h>
|
||||||
|
#include <linux/iopoll.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <mapmem.h>
|
#include <mapmem.h>
|
||||||
|
#include "mmc_private.h"
|
||||||
#include <sdhci.h>
|
#include <sdhci.h>
|
||||||
#include <clk.h>
|
#include <syscon.h>
|
||||||
|
#include <asm/arch-rockchip/clock.h>
|
||||||
|
#include <asm/arch-rockchip/hardware.h>
|
||||||
|
|
||||||
/* 400KHz is max freq for card ID etc. Use that as min */
|
/* 400KHz is max freq for card ID etc. Use that as min */
|
||||||
#define EMMC_MIN_FREQ 400000
|
#define EMMC_MIN_FREQ 400000
|
||||||
|
#define KHz (1000)
|
||||||
|
#define MHz (1000 * KHz)
|
||||||
|
#define SDHCI_TUNING_LOOP_COUNT 40
|
||||||
|
|
||||||
|
#define PHYCTRL_CALDONE_MASK 0x1
|
||||||
|
#define PHYCTRL_CALDONE_SHIFT 0x6
|
||||||
|
#define PHYCTRL_CALDONE_DONE 0x1
|
||||||
|
#define PHYCTRL_DLLRDY_MASK 0x1
|
||||||
|
#define PHYCTRL_DLLRDY_SHIFT 0x5
|
||||||
|
#define PHYCTRL_DLLRDY_DONE 0x1
|
||||||
|
#define PHYCTRL_FREQSEL_200M 0x0
|
||||||
|
#define PHYCTRL_FREQSEL_50M 0x1
|
||||||
|
#define PHYCTRL_FREQSEL_100M 0x2
|
||||||
|
#define PHYCTRL_FREQSEL_150M 0x3
|
||||||
|
#define PHYCTRL_DLL_LOCK_WO_TMOUT(x) \
|
||||||
|
((((x) >> PHYCTRL_DLLRDY_SHIFT) & PHYCTRL_DLLRDY_MASK) ==\
|
||||||
|
PHYCTRL_DLLRDY_DONE)
|
||||||
|
|
||||||
|
/* Rockchip specific Registers */
|
||||||
|
#define DWCMSHC_EMMC_DLL_CTRL 0x800
|
||||||
|
#define DWCMSHC_EMMC_DLL_CTRL_RESET BIT(1)
|
||||||
|
#define DWCMSHC_EMMC_DLL_RXCLK 0x804
|
||||||
|
#define DWCMSHC_EMMC_DLL_TXCLK 0x808
|
||||||
|
#define DWCMSHC_EMMC_DLL_STRBIN 0x80c
|
||||||
|
#define DWCMSHC_EMMC_DLL_STATUS0 0x840
|
||||||
|
#define DWCMSHC_EMMC_DLL_STATUS1 0x844
|
||||||
|
#define DWCMSHC_EMMC_DLL_START BIT(0)
|
||||||
|
#define DWCMSHC_EMMC_DLL_RXCLK_SRCSEL 29
|
||||||
|
#define DWCMSHC_EMMC_DLL_START_POINT 16
|
||||||
|
#define DWCMSHC_EMMC_DLL_START_DEFAULT 5
|
||||||
|
#define DWCMSHC_EMMC_DLL_INC_VALUE 2
|
||||||
|
#define DWCMSHC_EMMC_DLL_INC 8
|
||||||
|
#define DWCMSHC_EMMC_DLL_DLYENA BIT(27)
|
||||||
|
#define DLL_TXCLK_TAPNUM_DEFAULT 0x10
|
||||||
|
#define DLL_STRBIN_TAPNUM_DEFAULT 0x3
|
||||||
|
#define DLL_TXCLK_TAPNUM_FROM_SW BIT(24)
|
||||||
|
#define DWCMSHC_EMMC_DLL_LOCKED BIT(8)
|
||||||
|
#define DWCMSHC_EMMC_DLL_TIMEOUT BIT(9)
|
||||||
|
#define DLL_RXCLK_NO_INVERTER 1
|
||||||
|
#define DLL_RXCLK_INVERTER 0
|
||||||
|
#define DWCMSHC_ENHANCED_STROBE BIT(8)
|
||||||
|
#define DLL_LOCK_WO_TMOUT(x) \
|
||||||
|
((((x) & DWCMSHC_EMMC_DLL_LOCKED) == DWCMSHC_EMMC_DLL_LOCKED) && \
|
||||||
|
(((x) & DWCMSHC_EMMC_DLL_TIMEOUT) == 0))
|
||||||
|
#define ROCKCHIP_MAX_CLKS 3
|
||||||
|
|
||||||
struct rockchip_sdhc_plat {
|
struct rockchip_sdhc_plat {
|
||||||
#if CONFIG_IS_ENABLED(OF_PLATDATA)
|
|
||||||
struct dtd_rockchip_rk3399_sdhci_5_1 dtplat;
|
|
||||||
#endif
|
|
||||||
struct mmc_config cfg;
|
struct mmc_config cfg;
|
||||||
struct mmc mmc;
|
struct mmc mmc;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rockchip_sdhc {
|
struct rockchip_emmc_phy {
|
||||||
struct sdhci_host host;
|
u32 emmcphy_con[7];
|
||||||
void *base;
|
u32 reserved;
|
||||||
|
u32 emmcphy_status;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int arasan_sdhci_probe(struct udevice *dev)
|
struct rockchip_sdhc {
|
||||||
|
struct sdhci_host host;
|
||||||
|
struct udevice *dev;
|
||||||
|
void *base;
|
||||||
|
struct rockchip_emmc_phy *phy;
|
||||||
|
struct clk emmc_clk;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sdhci_data {
|
||||||
|
int (*emmc_set_clock)(struct sdhci_host *host, unsigned int clock);
|
||||||
|
int (*emmc_phy_init)(struct udevice *dev);
|
||||||
|
int (*get_phy)(struct udevice *dev);
|
||||||
|
};
|
||||||
|
|
||||||
|
static int rk3399_emmc_phy_init(struct udevice *dev)
|
||||||
{
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void rk3399_emmc_phy_power_on(struct rockchip_emmc_phy *phy, u32 clock)
|
||||||
|
{
|
||||||
|
u32 caldone, dllrdy, freqsel;
|
||||||
|
|
||||||
|
writel(RK_CLRSETBITS(7 << 4, 0), &phy->emmcphy_con[6]);
|
||||||
|
writel(RK_CLRSETBITS(1 << 11, 1 << 11), &phy->emmcphy_con[0]);
|
||||||
|
writel(RK_CLRSETBITS(0xf << 7, 6 << 7), &phy->emmcphy_con[0]);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* According to the user manual, calpad calibration
|
||||||
|
* cycle takes more than 2us without the minimal recommended
|
||||||
|
* value, so we may need a little margin here
|
||||||
|
*/
|
||||||
|
udelay(3);
|
||||||
|
writel(RK_CLRSETBITS(1, 1), &phy->emmcphy_con[6]);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* According to the user manual, it asks driver to
|
||||||
|
* wait 5us for calpad busy trimming. But it seems that
|
||||||
|
* 5us of caldone isn't enough for all cases.
|
||||||
|
*/
|
||||||
|
udelay(500);
|
||||||
|
caldone = readl(&phy->emmcphy_status);
|
||||||
|
caldone = (caldone >> PHYCTRL_CALDONE_SHIFT) & PHYCTRL_CALDONE_MASK;
|
||||||
|
if (caldone != PHYCTRL_CALDONE_DONE) {
|
||||||
|
printf("%s: caldone timeout.\n", __func__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the frequency of the DLL operation */
|
||||||
|
if (clock < 75 * MHz)
|
||||||
|
freqsel = PHYCTRL_FREQSEL_50M;
|
||||||
|
else if (clock < 125 * MHz)
|
||||||
|
freqsel = PHYCTRL_FREQSEL_100M;
|
||||||
|
else if (clock < 175 * MHz)
|
||||||
|
freqsel = PHYCTRL_FREQSEL_150M;
|
||||||
|
else
|
||||||
|
freqsel = PHYCTRL_FREQSEL_200M;
|
||||||
|
|
||||||
|
/* Set the frequency of the DLL operation */
|
||||||
|
writel(RK_CLRSETBITS(3 << 12, freqsel << 12), &phy->emmcphy_con[0]);
|
||||||
|
writel(RK_CLRSETBITS(1 << 1, 1 << 1), &phy->emmcphy_con[6]);
|
||||||
|
|
||||||
|
read_poll_timeout(readl, &phy->emmcphy_status, dllrdy,
|
||||||
|
PHYCTRL_DLL_LOCK_WO_TMOUT(dllrdy), 1, 5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void rk3399_emmc_phy_power_off(struct rockchip_emmc_phy *phy)
|
||||||
|
{
|
||||||
|
writel(RK_CLRSETBITS(1, 0), &phy->emmcphy_con[6]);
|
||||||
|
writel(RK_CLRSETBITS(1 << 1, 0), &phy->emmcphy_con[6]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rk3399_emmc_get_phy(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct rockchip_sdhc *priv = dev_get_priv(dev);
|
||||||
|
ofnode phy_node;
|
||||||
|
void *grf_base;
|
||||||
|
u32 grf_phy_offset, phandle;
|
||||||
|
|
||||||
|
phandle = dev_read_u32_default(dev, "phys", 0);
|
||||||
|
phy_node = ofnode_get_by_phandle(phandle);
|
||||||
|
if (!ofnode_valid(phy_node)) {
|
||||||
|
debug("Not found emmc phy device\n");
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
|
||||||
|
grf_base = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
|
||||||
|
if (grf_base < 0) {
|
||||||
|
printf("%s Get syscon grf failed", __func__);
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
grf_phy_offset = ofnode_read_u32_default(phy_node, "reg", 0);
|
||||||
|
|
||||||
|
priv->phy = (struct rockchip_emmc_phy *)(grf_base + grf_phy_offset);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rk3399_sdhci_emmc_set_clock(struct sdhci_host *host, unsigned int clock)
|
||||||
|
{
|
||||||
|
struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host);
|
||||||
|
int cycle_phy = host->clock != clock && clock > EMMC_MIN_FREQ;
|
||||||
|
|
||||||
|
if (cycle_phy)
|
||||||
|
rk3399_emmc_phy_power_off(priv->phy);
|
||||||
|
|
||||||
|
sdhci_set_clock(host->mmc, clock);
|
||||||
|
|
||||||
|
if (cycle_phy)
|
||||||
|
rk3399_emmc_phy_power_on(priv->phy, clock);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rk3568_emmc_phy_init(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct rockchip_sdhc *prv = dev_get_priv(dev);
|
||||||
|
struct sdhci_host *host = &prv->host;
|
||||||
|
u32 extra;
|
||||||
|
|
||||||
|
extra = DLL_RXCLK_NO_INVERTER << DWCMSHC_EMMC_DLL_RXCLK_SRCSEL;
|
||||||
|
sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_RXCLK);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rk3568_sdhci_emmc_set_clock(struct sdhci_host *host, unsigned int clock)
|
||||||
|
{
|
||||||
|
struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host);
|
||||||
|
int val, ret;
|
||||||
|
u32 extra;
|
||||||
|
|
||||||
|
if (clock > host->max_clk)
|
||||||
|
clock = host->max_clk;
|
||||||
|
if (clock)
|
||||||
|
clk_set_rate(&priv->emmc_clk, clock);
|
||||||
|
|
||||||
|
sdhci_set_clock(host->mmc, clock);
|
||||||
|
|
||||||
|
if (clock >= 100 * MHz) {
|
||||||
|
/* reset DLL */
|
||||||
|
sdhci_writel(host, DWCMSHC_EMMC_DLL_CTRL_RESET, DWCMSHC_EMMC_DLL_CTRL);
|
||||||
|
udelay(1);
|
||||||
|
sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_CTRL);
|
||||||
|
|
||||||
|
/* Init DLL settings */
|
||||||
|
extra = DWCMSHC_EMMC_DLL_START_DEFAULT << DWCMSHC_EMMC_DLL_START_POINT |
|
||||||
|
DWCMSHC_EMMC_DLL_INC_VALUE << DWCMSHC_EMMC_DLL_INC |
|
||||||
|
DWCMSHC_EMMC_DLL_START;
|
||||||
|
sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_CTRL);
|
||||||
|
|
||||||
|
ret = read_poll_timeout(readl, host->ioaddr + DWCMSHC_EMMC_DLL_STATUS0,
|
||||||
|
val, DLL_LOCK_WO_TMOUT(val), 1, 500);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
extra = DWCMSHC_EMMC_DLL_DLYENA |
|
||||||
|
DLL_RXCLK_NO_INVERTER << DWCMSHC_EMMC_DLL_RXCLK_SRCSEL;
|
||||||
|
sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_RXCLK);
|
||||||
|
|
||||||
|
extra = DWCMSHC_EMMC_DLL_DLYENA |
|
||||||
|
DLL_TXCLK_TAPNUM_DEFAULT |
|
||||||
|
DLL_TXCLK_TAPNUM_FROM_SW;
|
||||||
|
sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_TXCLK);
|
||||||
|
|
||||||
|
extra = DWCMSHC_EMMC_DLL_DLYENA |
|
||||||
|
DLL_STRBIN_TAPNUM_DEFAULT;
|
||||||
|
sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_STRBIN);
|
||||||
|
} else {
|
||||||
|
/* reset the clock phase when the frequency is lower than 100MHz */
|
||||||
|
sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_CTRL);
|
||||||
|
extra = DLL_RXCLK_NO_INVERTER << DWCMSHC_EMMC_DLL_RXCLK_SRCSEL;
|
||||||
|
sdhci_writel(host, extra, DWCMSHC_EMMC_DLL_RXCLK);
|
||||||
|
sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_TXCLK);
|
||||||
|
sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_STRBIN);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rk3568_emmc_get_phy(struct udevice *dev)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sdhci_set_ios_post(struct sdhci_host *host)
|
||||||
|
{
|
||||||
|
struct rockchip_sdhc *priv = container_of(host, struct rockchip_sdhc, host);
|
||||||
|
struct sdhci_data *data = (struct sdhci_data *)dev_get_driver_data(priv->dev);
|
||||||
|
struct mmc *mmc = host->mmc;
|
||||||
|
uint clock = mmc->tran_speed;
|
||||||
|
u32 reg;
|
||||||
|
|
||||||
|
if (!clock)
|
||||||
|
clock = mmc->clock;
|
||||||
|
|
||||||
|
if (data->emmc_set_clock)
|
||||||
|
data->emmc_set_clock(host, clock);
|
||||||
|
|
||||||
|
if (mmc->selected_mode == MMC_HS_400 || mmc->selected_mode == MMC_HS_400_ES) {
|
||||||
|
reg = sdhci_readw(host, SDHCI_HOST_CONTROL2);
|
||||||
|
reg &= ~SDHCI_CTRL_UHS_MASK;
|
||||||
|
reg |= SDHCI_CTRL_HS400;
|
||||||
|
sdhci_writew(host, reg, SDHCI_HOST_CONTROL2);
|
||||||
|
} else {
|
||||||
|
sdhci_set_uhs_timing(host);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sdhci_execute_tuning(struct mmc *mmc, u8 opcode)
|
||||||
|
{
|
||||||
|
struct sdhci_host *host = dev_get_priv(mmc->dev);
|
||||||
|
char tuning_loop_counter = SDHCI_TUNING_LOOP_COUNT;
|
||||||
|
struct mmc_cmd cmd;
|
||||||
|
u32 ctrl, blk_size;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2);
|
||||||
|
ctrl |= SDHCI_CTRL_EXEC_TUNING;
|
||||||
|
sdhci_writew(host, ctrl, SDHCI_HOST_CONTROL2);
|
||||||
|
|
||||||
|
sdhci_writel(host, SDHCI_INT_DATA_AVAIL, SDHCI_INT_ENABLE);
|
||||||
|
sdhci_writel(host, SDHCI_INT_DATA_AVAIL, SDHCI_SIGNAL_ENABLE);
|
||||||
|
|
||||||
|
blk_size = SDHCI_MAKE_BLKSZ(SDHCI_DEFAULT_BOUNDARY_ARG, 64);
|
||||||
|
if (opcode == MMC_CMD_SEND_TUNING_BLOCK_HS200 && host->mmc->bus_width == 8)
|
||||||
|
blk_size = SDHCI_MAKE_BLKSZ(SDHCI_DEFAULT_BOUNDARY_ARG, 128);
|
||||||
|
sdhci_writew(host, blk_size, SDHCI_BLOCK_SIZE);
|
||||||
|
sdhci_writew(host, SDHCI_TRNS_READ, SDHCI_TRANSFER_MODE);
|
||||||
|
|
||||||
|
cmd.cmdidx = opcode;
|
||||||
|
cmd.resp_type = MMC_RSP_R1;
|
||||||
|
cmd.cmdarg = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
if (tuning_loop_counter-- == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
mmc_send_cmd(mmc, &cmd, NULL);
|
||||||
|
|
||||||
|
if (opcode == MMC_CMD_SEND_TUNING_BLOCK)
|
||||||
|
/*
|
||||||
|
* For tuning command, do not do busy loop. As tuning
|
||||||
|
* is happening (CLK-DATA latching for setup/hold time
|
||||||
|
* requirements), give time to complete
|
||||||
|
*/
|
||||||
|
udelay(1);
|
||||||
|
|
||||||
|
ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2);
|
||||||
|
} while (ctrl & SDHCI_CTRL_EXEC_TUNING);
|
||||||
|
|
||||||
|
if (!(ctrl & SDHCI_CTRL_TUNED_CLK)) {
|
||||||
|
printf("%s:Tuning failed\n", __func__);
|
||||||
|
ret = -EIO;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tuning_loop_counter < 0) {
|
||||||
|
ctrl &= ~SDHCI_CTRL_TUNED_CLK;
|
||||||
|
sdhci_writel(host, ctrl, SDHCI_HOST_CONTROL2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enable only interrupts served by the SD controller */
|
||||||
|
sdhci_writel(host, SDHCI_INT_DATA_MASK | SDHCI_INT_CMD_MASK, SDHCI_INT_ENABLE);
|
||||||
|
/* Mask all sdhci interrupt sources */
|
||||||
|
sdhci_writel(host, 0x0, SDHCI_SIGNAL_ENABLE);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct sdhci_ops rockchip_sdhci_ops = {
|
||||||
|
.set_ios_post = rockchip_sdhci_set_ios_post,
|
||||||
|
.platform_execute_tuning = &rockchip_sdhci_execute_tuning,
|
||||||
|
};
|
||||||
|
|
||||||
|
static int rockchip_sdhci_probe(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct sdhci_data *data = (struct sdhci_data *)dev_get_driver_data(dev);
|
||||||
struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
|
struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
|
||||||
struct rockchip_sdhc_plat *plat = dev_get_plat(dev);
|
struct rockchip_sdhc_plat *plat = dev_get_plat(dev);
|
||||||
struct rockchip_sdhc *prv = dev_get_priv(dev);
|
struct rockchip_sdhc *prv = dev_get_priv(dev);
|
||||||
|
struct mmc_config *cfg = &plat->cfg;
|
||||||
struct sdhci_host *host = &prv->host;
|
struct sdhci_host *host = &prv->host;
|
||||||
int max_frequency, ret;
|
|
||||||
struct clk clk;
|
struct clk clk;
|
||||||
|
int ret;
|
||||||
|
|
||||||
#if CONFIG_IS_ENABLED(OF_PLATDATA)
|
host->max_clk = cfg->f_max;
|
||||||
struct dtd_rockchip_rk3399_sdhci_5_1 *dtplat = &plat->dtplat;
|
|
||||||
|
|
||||||
host->name = dev->name;
|
|
||||||
host->ioaddr = map_sysmem(dtplat->reg[0], dtplat->reg[1]);
|
|
||||||
max_frequency = dtplat->max_frequency;
|
|
||||||
ret = clk_get_by_driver_info(dev, dtplat->clocks, &clk);
|
|
||||||
#else
|
|
||||||
max_frequency = dev_read_u32_default(dev, "max-frequency", 0);
|
|
||||||
ret = clk_get_by_index(dev, 0, &clk);
|
ret = clk_get_by_index(dev, 0, &clk);
|
||||||
#endif
|
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
ret = clk_set_rate(&clk, max_frequency);
|
ret = clk_set_rate(&clk, host->max_clk);
|
||||||
if (IS_ERR_VALUE(ret))
|
if (IS_ERR_VALUE(ret))
|
||||||
printf("%s clk set rate fail!\n", __func__);
|
printf("%s clk set rate fail!\n", __func__);
|
||||||
} else {
|
} else {
|
||||||
printf("%s fail to get clk\n", __func__);
|
printf("%s fail to get clk\n", __func__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prv->emmc_clk = clk;
|
||||||
|
prv->dev = dev;
|
||||||
|
|
||||||
|
if (data->get_phy) {
|
||||||
|
ret = data->get_phy(dev);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data->emmc_phy_init) {
|
||||||
|
ret = data->emmc_phy_init(dev);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
host->ops = &rockchip_sdhci_ops;
|
||||||
host->quirks = SDHCI_QUIRK_WAIT_SEND_CMD;
|
host->quirks = SDHCI_QUIRK_WAIT_SEND_CMD;
|
||||||
host->max_clk = max_frequency;
|
|
||||||
/*
|
|
||||||
* The sdhci-driver only supports 4bit and 8bit, as sdhci_setup_cfg
|
|
||||||
* doesn't allow us to clear MMC_MODE_4BIT. Consequently, we don't
|
|
||||||
* check for other bus-width values.
|
|
||||||
*/
|
|
||||||
if (host->bus_width == 8)
|
|
||||||
host->host_caps |= MMC_MODE_8BIT;
|
|
||||||
|
|
||||||
host->mmc = &plat->mmc;
|
host->mmc = &plat->mmc;
|
||||||
host->mmc->priv = &prv->host;
|
host->mmc->priv = &prv->host;
|
||||||
host->mmc->dev = dev;
|
host->mmc->dev = dev;
|
||||||
upriv->mmc = host->mmc;
|
upriv->mmc = host->mmc;
|
||||||
|
|
||||||
ret = sdhci_setup_cfg(&plat->cfg, host, 0, EMMC_MIN_FREQ);
|
ret = sdhci_setup_cfg(cfg, host, cfg->f_max, EMMC_MIN_FREQ);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
return sdhci_probe(dev);
|
return sdhci_probe(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int arasan_sdhci_of_to_plat(struct udevice *dev)
|
static int rockchip_sdhci_of_to_plat(struct udevice *dev)
|
||||||
{
|
{
|
||||||
#if !CONFIG_IS_ENABLED(OF_PLATDATA)
|
struct rockchip_sdhc_plat *plat = dev_get_plat(dev);
|
||||||
struct sdhci_host *host = dev_get_priv(dev);
|
struct sdhci_host *host = dev_get_priv(dev);
|
||||||
|
struct mmc_config *cfg = &plat->cfg;
|
||||||
|
int ret;
|
||||||
|
|
||||||
host->name = dev->name;
|
host->name = dev->name;
|
||||||
host->ioaddr = dev_read_addr_ptr(dev);
|
host->ioaddr = dev_read_addr_ptr(dev);
|
||||||
host->bus_width = dev_read_u32_default(dev, "bus-width", 4);
|
|
||||||
#endif
|
ret = mmc_of_parse(dev, cfg);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -101,19 +432,38 @@ static int rockchip_sdhci_bind(struct udevice *dev)
|
||||||
return sdhci_bind(dev, &plat->mmc, &plat->cfg);
|
return sdhci_bind(dev, &plat->mmc, &plat->cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct udevice_id arasan_sdhci_ids[] = {
|
static const struct sdhci_data rk3399_data = {
|
||||||
{ .compatible = "arasan,sdhci-5.1" },
|
.emmc_set_clock = rk3399_sdhci_emmc_set_clock,
|
||||||
|
.get_phy = rk3399_emmc_get_phy,
|
||||||
|
.emmc_phy_init = rk3399_emmc_phy_init,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct sdhci_data rk3568_data = {
|
||||||
|
.emmc_set_clock = rk3568_sdhci_emmc_set_clock,
|
||||||
|
.get_phy = rk3568_emmc_get_phy,
|
||||||
|
.emmc_phy_init = rk3568_emmc_phy_init,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct udevice_id sdhci_ids[] = {
|
||||||
|
{
|
||||||
|
.compatible = "arasan,sdhci-5.1",
|
||||||
|
.data = (ulong)&rk3399_data,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.compatible = "rockchip,rk3568-dwcmshc",
|
||||||
|
.data = (ulong)&rk3568_data,
|
||||||
|
},
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
U_BOOT_DRIVER(arasan_sdhci_drv) = {
|
U_BOOT_DRIVER(arasan_sdhci_drv) = {
|
||||||
.name = "rockchip_rk3399_sdhci_5_1",
|
.name = "rockchip_sdhci_5_1",
|
||||||
.id = UCLASS_MMC,
|
.id = UCLASS_MMC,
|
||||||
.of_match = arasan_sdhci_ids,
|
.of_match = sdhci_ids,
|
||||||
.of_to_plat = arasan_sdhci_of_to_plat,
|
.of_to_plat = rockchip_sdhci_of_to_plat,
|
||||||
.ops = &sdhci_ops,
|
.ops = &sdhci_ops,
|
||||||
.bind = rockchip_sdhci_bind,
|
.bind = rockchip_sdhci_bind,
|
||||||
.probe = arasan_sdhci_probe,
|
.probe = rockchip_sdhci_probe,
|
||||||
.priv_auto = sizeof(struct rockchip_sdhc),
|
.priv_auto = sizeof(struct rockchip_sdhc),
|
||||||
.plat_auto = sizeof(struct rockchip_sdhc_plat),
|
.plat_auto = sizeof(struct rockchip_sdhc_plat),
|
||||||
};
|
};
|
||||||
|
|
|
@ -204,6 +204,12 @@ config SPI_FLASH_XMC
|
||||||
Add support for various XMC (Wuhan Xinxin Semiconductor
|
Add support for various XMC (Wuhan Xinxin Semiconductor
|
||||||
Manufacturing Corp.) SPI flash chips (XM25xxx)
|
Manufacturing Corp.) SPI flash chips (XM25xxx)
|
||||||
|
|
||||||
|
config SPI_FLASH_XTX
|
||||||
|
bool "XTX SPI flash support"
|
||||||
|
help
|
||||||
|
Add support for various XTX (XTX Technology Limited)
|
||||||
|
SPI flash chips (XT25xxx).
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
config SPI_FLASH_USE_4K_SECTORS
|
config SPI_FLASH_USE_4K_SECTORS
|
||||||
|
|
|
@ -361,6 +361,10 @@ const struct flash_info spi_nor_ids[] = {
|
||||||
{ INFO("XM25QH64A", 0x207017, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
{ INFO("XM25QH64A", 0x207017, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||||
{ INFO("XM25QH64C", 0x204017, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
{ INFO("XM25QH64C", 0x204017, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||||
{ INFO("XM25QH128A", 0x207018, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
{ INFO("XM25QH128A", 0x207018, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_SPI_FLASH_XTX
|
||||||
|
/* XTX Technology (Shenzhen) Limited */
|
||||||
|
{ INFO("xt25f128b", 0x0b4018, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
|
||||||
#endif
|
#endif
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
|
|
|
@ -319,6 +319,14 @@ config RENESAS_RPC_SPI
|
||||||
on Renesas RCar Gen3 SoCs. This uses driver model and requires a
|
on Renesas RCar Gen3 SoCs. This uses driver model and requires a
|
||||||
device tree binding to operate.
|
device tree binding to operate.
|
||||||
|
|
||||||
|
config ROCKCHIP_SFC
|
||||||
|
bool "Rockchip SFC Driver"
|
||||||
|
help
|
||||||
|
Enable the Rockchip SFC Driver for SPI NOR flash. This device is
|
||||||
|
a limited purpose SPI controller for driving NOR flash on certain
|
||||||
|
Rockchip SoCs. This uses driver model and requires a device tree
|
||||||
|
binding to operate.
|
||||||
|
|
||||||
config ROCKCHIP_SPI
|
config ROCKCHIP_SPI
|
||||||
bool "Rockchip SPI driver"
|
bool "Rockchip SPI driver"
|
||||||
help
|
help
|
||||||
|
|
|
@ -54,6 +54,7 @@ obj-$(CONFIG_PL022_SPI) += pl022_spi.o
|
||||||
obj-$(CONFIG_SPI_QUP) += spi-qup.o
|
obj-$(CONFIG_SPI_QUP) += spi-qup.o
|
||||||
obj-$(CONFIG_SPI_MXIC) += spi-mxic.o
|
obj-$(CONFIG_SPI_MXIC) += spi-mxic.o
|
||||||
obj-$(CONFIG_RENESAS_RPC_SPI) += renesas_rpc_spi.o
|
obj-$(CONFIG_RENESAS_RPC_SPI) += renesas_rpc_spi.o
|
||||||
|
obj-$(CONFIG_ROCKCHIP_SFC) += rockchip_sfc.o
|
||||||
obj-$(CONFIG_ROCKCHIP_SPI) += rk_spi.o
|
obj-$(CONFIG_ROCKCHIP_SPI) += rk_spi.o
|
||||||
obj-$(CONFIG_SANDBOX_SPI) += sandbox_spi.o
|
obj-$(CONFIG_SANDBOX_SPI) += sandbox_spi.o
|
||||||
obj-$(CONFIG_SPI_SIFIVE) += spi-sifive.o
|
obj-$(CONFIG_SPI_SIFIVE) += spi-sifive.o
|
||||||
|
|
646
drivers/spi/rockchip_sfc.c
Normal file
646
drivers/spi/rockchip_sfc.c
Normal file
|
@ -0,0 +1,646 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
/*
|
||||||
|
* Rockchip Serial Flash Controller Driver
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017-2021, Rockchip Inc.
|
||||||
|
* Author: Shawn Lin <shawn.lin@rock-chips.com>
|
||||||
|
* Chris Morgan <macromorgan@hotmail.com>
|
||||||
|
* Jon Lin <Jon.lin@rock-chips.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <bouncebuf.h>
|
||||||
|
#include <clk.h>
|
||||||
|
#include <dm.h>
|
||||||
|
#include <linux/bitops.h>
|
||||||
|
#include <linux/delay.h>
|
||||||
|
#include <linux/iopoll.h>
|
||||||
|
#include <spi.h>
|
||||||
|
#include <spi-mem.h>
|
||||||
|
|
||||||
|
/* System control */
|
||||||
|
#define SFC_CTRL 0x0
|
||||||
|
#define SFC_CTRL_PHASE_SEL_NEGETIVE BIT(1)
|
||||||
|
#define SFC_CTRL_CMD_BITS_SHIFT 8
|
||||||
|
#define SFC_CTRL_ADDR_BITS_SHIFT 10
|
||||||
|
#define SFC_CTRL_DATA_BITS_SHIFT 12
|
||||||
|
|
||||||
|
/* Interrupt mask */
|
||||||
|
#define SFC_IMR 0x4
|
||||||
|
#define SFC_IMR_RX_FULL BIT(0)
|
||||||
|
#define SFC_IMR_RX_UFLOW BIT(1)
|
||||||
|
#define SFC_IMR_TX_OFLOW BIT(2)
|
||||||
|
#define SFC_IMR_TX_EMPTY BIT(3)
|
||||||
|
#define SFC_IMR_TRAN_FINISH BIT(4)
|
||||||
|
#define SFC_IMR_BUS_ERR BIT(5)
|
||||||
|
#define SFC_IMR_NSPI_ERR BIT(6)
|
||||||
|
#define SFC_IMR_DMA BIT(7)
|
||||||
|
|
||||||
|
/* Interrupt clear */
|
||||||
|
#define SFC_ICLR 0x8
|
||||||
|
#define SFC_ICLR_RX_FULL BIT(0)
|
||||||
|
#define SFC_ICLR_RX_UFLOW BIT(1)
|
||||||
|
#define SFC_ICLR_TX_OFLOW BIT(2)
|
||||||
|
#define SFC_ICLR_TX_EMPTY BIT(3)
|
||||||
|
#define SFC_ICLR_TRAN_FINISH BIT(4)
|
||||||
|
#define SFC_ICLR_BUS_ERR BIT(5)
|
||||||
|
#define SFC_ICLR_NSPI_ERR BIT(6)
|
||||||
|
#define SFC_ICLR_DMA BIT(7)
|
||||||
|
|
||||||
|
/* FIFO threshold level */
|
||||||
|
#define SFC_FTLR 0xc
|
||||||
|
#define SFC_FTLR_TX_SHIFT 0
|
||||||
|
#define SFC_FTLR_TX_MASK 0x1f
|
||||||
|
#define SFC_FTLR_RX_SHIFT 8
|
||||||
|
#define SFC_FTLR_RX_MASK 0x1f
|
||||||
|
|
||||||
|
/* Reset FSM and FIFO */
|
||||||
|
#define SFC_RCVR 0x10
|
||||||
|
#define SFC_RCVR_RESET BIT(0)
|
||||||
|
|
||||||
|
/* Enhanced mode */
|
||||||
|
#define SFC_AX 0x14
|
||||||
|
|
||||||
|
/* Address Bit number */
|
||||||
|
#define SFC_ABIT 0x18
|
||||||
|
|
||||||
|
/* Interrupt status */
|
||||||
|
#define SFC_ISR 0x1c
|
||||||
|
#define SFC_ISR_RX_FULL_SHIFT BIT(0)
|
||||||
|
#define SFC_ISR_RX_UFLOW_SHIFT BIT(1)
|
||||||
|
#define SFC_ISR_TX_OFLOW_SHIFT BIT(2)
|
||||||
|
#define SFC_ISR_TX_EMPTY_SHIFT BIT(3)
|
||||||
|
#define SFC_ISR_TX_FINISH_SHIFT BIT(4)
|
||||||
|
#define SFC_ISR_BUS_ERR_SHIFT BIT(5)
|
||||||
|
#define SFC_ISR_NSPI_ERR_SHIFT BIT(6)
|
||||||
|
#define SFC_ISR_DMA_SHIFT BIT(7)
|
||||||
|
|
||||||
|
/* FIFO status */
|
||||||
|
#define SFC_FSR 0x20
|
||||||
|
#define SFC_FSR_TX_IS_FULL BIT(0)
|
||||||
|
#define SFC_FSR_TX_IS_EMPTY BIT(1)
|
||||||
|
#define SFC_FSR_RX_IS_EMPTY BIT(2)
|
||||||
|
#define SFC_FSR_RX_IS_FULL BIT(3)
|
||||||
|
#define SFC_FSR_TXLV_MASK GENMASK(12, 8)
|
||||||
|
#define SFC_FSR_TXLV_SHIFT 8
|
||||||
|
#define SFC_FSR_RXLV_MASK GENMASK(20, 16)
|
||||||
|
#define SFC_FSR_RXLV_SHIFT 16
|
||||||
|
|
||||||
|
/* FSM status */
|
||||||
|
#define SFC_SR 0x24
|
||||||
|
#define SFC_SR_IS_IDLE 0x0
|
||||||
|
#define SFC_SR_IS_BUSY 0x1
|
||||||
|
|
||||||
|
/* Raw interrupt status */
|
||||||
|
#define SFC_RISR 0x28
|
||||||
|
#define SFC_RISR_RX_FULL BIT(0)
|
||||||
|
#define SFC_RISR_RX_UNDERFLOW BIT(1)
|
||||||
|
#define SFC_RISR_TX_OVERFLOW BIT(2)
|
||||||
|
#define SFC_RISR_TX_EMPTY BIT(3)
|
||||||
|
#define SFC_RISR_TRAN_FINISH BIT(4)
|
||||||
|
#define SFC_RISR_BUS_ERR BIT(5)
|
||||||
|
#define SFC_RISR_NSPI_ERR BIT(6)
|
||||||
|
#define SFC_RISR_DMA BIT(7)
|
||||||
|
|
||||||
|
/* Version */
|
||||||
|
#define SFC_VER 0x2C
|
||||||
|
#define SFC_VER_3 0x3
|
||||||
|
#define SFC_VER_4 0x4
|
||||||
|
#define SFC_VER_5 0x5
|
||||||
|
|
||||||
|
/* Delay line controller resiter */
|
||||||
|
#define SFC_DLL_CTRL0 0x3C
|
||||||
|
#define SFC_DLL_CTRL0_SCLK_SMP_DLL BIT(15)
|
||||||
|
#define SFC_DLL_CTRL0_DLL_MAX_VER4 0xFFU
|
||||||
|
#define SFC_DLL_CTRL0_DLL_MAX_VER5 0x1FFU
|
||||||
|
|
||||||
|
/* Master trigger */
|
||||||
|
#define SFC_DMA_TRIGGER 0x80
|
||||||
|
|
||||||
|
/* Src or Dst addr for master */
|
||||||
|
#define SFC_DMA_ADDR 0x84
|
||||||
|
|
||||||
|
/* Length control register extension 32GB */
|
||||||
|
#define SFC_LEN_CTRL 0x88
|
||||||
|
#define SFC_LEN_CTRL_TRB_SEL 1
|
||||||
|
#define SFC_LEN_EXT 0x8C
|
||||||
|
|
||||||
|
/* Command */
|
||||||
|
#define SFC_CMD 0x100
|
||||||
|
#define SFC_CMD_IDX_SHIFT 0
|
||||||
|
#define SFC_CMD_DUMMY_SHIFT 8
|
||||||
|
#define SFC_CMD_DIR_SHIFT 12
|
||||||
|
#define SFC_CMD_DIR_RD 0
|
||||||
|
#define SFC_CMD_DIR_WR 1
|
||||||
|
#define SFC_CMD_ADDR_SHIFT 14
|
||||||
|
#define SFC_CMD_ADDR_0BITS 0
|
||||||
|
#define SFC_CMD_ADDR_24BITS 1
|
||||||
|
#define SFC_CMD_ADDR_32BITS 2
|
||||||
|
#define SFC_CMD_ADDR_XBITS 3
|
||||||
|
#define SFC_CMD_TRAN_BYTES_SHIFT 16
|
||||||
|
#define SFC_CMD_CS_SHIFT 30
|
||||||
|
|
||||||
|
/* Address */
|
||||||
|
#define SFC_ADDR 0x104
|
||||||
|
|
||||||
|
/* Data */
|
||||||
|
#define SFC_DATA 0x108
|
||||||
|
|
||||||
|
/* The controller and documentation reports that it supports up to 4 CS
|
||||||
|
* devices (0-3), however I have only been able to test a single CS (CS 0)
|
||||||
|
* due to the configuration of my device.
|
||||||
|
*/
|
||||||
|
#define SFC_MAX_CHIPSELECT_NUM 4
|
||||||
|
|
||||||
|
/* The SFC can transfer max 16KB - 1 at one time
|
||||||
|
* we set it to 15.5KB here for alignment.
|
||||||
|
*/
|
||||||
|
#define SFC_MAX_IOSIZE_VER3 (512 * 31)
|
||||||
|
|
||||||
|
#define SFC_MAX_IOSIZE_VER4 (0xFFFFFFFFU)
|
||||||
|
|
||||||
|
/* DMA is only enabled for large data transmission */
|
||||||
|
#define SFC_DMA_TRANS_THRETHOLD (0x40)
|
||||||
|
|
||||||
|
/* Maximum clock values from datasheet suggest keeping clock value under
|
||||||
|
* 150MHz. No minimum or average value is suggested, but the U-boot BSP driver
|
||||||
|
* has a minimum of 10MHz and a default of 80MHz which seems reasonable.
|
||||||
|
*/
|
||||||
|
#define SFC_MIN_SPEED_HZ (10 * 1000 * 1000)
|
||||||
|
#define SFC_DEFAULT_SPEED_HZ (80 * 1000 * 1000)
|
||||||
|
#define SFC_MAX_SPEED_HZ (150 * 1000 * 1000)
|
||||||
|
|
||||||
|
struct rockchip_sfc {
|
||||||
|
void __iomem *regbase;
|
||||||
|
struct clk hclk;
|
||||||
|
struct clk clk;
|
||||||
|
u32 max_freq;
|
||||||
|
u32 speed;
|
||||||
|
bool use_dma;
|
||||||
|
u32 max_iosize;
|
||||||
|
u16 version;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int rockchip_sfc_reset(struct rockchip_sfc *sfc)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
u32 status;
|
||||||
|
|
||||||
|
writel(SFC_RCVR_RESET, sfc->regbase + SFC_RCVR);
|
||||||
|
|
||||||
|
err = readl_poll_timeout(sfc->regbase + SFC_RCVR, status,
|
||||||
|
!(status & SFC_RCVR_RESET),
|
||||||
|
1000000);
|
||||||
|
if (err)
|
||||||
|
printf("SFC reset never finished\n");
|
||||||
|
|
||||||
|
/* Still need to clear the masked interrupt from RISR */
|
||||||
|
writel(0xFFFFFFFF, sfc->regbase + SFC_ICLR);
|
||||||
|
|
||||||
|
debug("reset\n");
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
static u16 rockchip_sfc_get_version(struct rockchip_sfc *sfc)
|
||||||
|
{
|
||||||
|
return (u16)(readl(sfc->regbase + SFC_VER) & 0xffff);
|
||||||
|
}
|
||||||
|
|
||||||
|
static u32 rockchip_sfc_get_max_iosize(struct rockchip_sfc *sfc)
|
||||||
|
{
|
||||||
|
if (rockchip_sfc_get_version(sfc) >= SFC_VER_4)
|
||||||
|
return SFC_MAX_IOSIZE_VER4;
|
||||||
|
|
||||||
|
return SFC_MAX_IOSIZE_VER3;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_init(struct rockchip_sfc *sfc)
|
||||||
|
{
|
||||||
|
writel(0, sfc->regbase + SFC_CTRL);
|
||||||
|
if (rockchip_sfc_get_version(sfc) >= SFC_VER_4)
|
||||||
|
writel(SFC_LEN_CTRL_TRB_SEL, sfc->regbase + SFC_LEN_CTRL);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_ofdata_to_platdata(struct udevice *bus)
|
||||||
|
{
|
||||||
|
struct rockchip_sfc *sfc = dev_get_plat(bus);
|
||||||
|
|
||||||
|
sfc->regbase = dev_read_addr_ptr(bus);
|
||||||
|
if (ofnode_read_bool(dev_ofnode(bus), "sfc-no-dma"))
|
||||||
|
sfc->use_dma = false;
|
||||||
|
else
|
||||||
|
sfc->use_dma = true;
|
||||||
|
|
||||||
|
#if CONFIG_IS_ENABLED(CLK)
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = clk_get_by_index(bus, 0, &sfc->clk);
|
||||||
|
if (ret < 0) {
|
||||||
|
printf("Could not get clock for %s: %d\n", bus->name, ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = clk_get_by_index(bus, 1, &sfc->hclk);
|
||||||
|
if (ret < 0) {
|
||||||
|
printf("Could not get ahb clock for %s: %d\n", bus->name, ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_probe(struct udevice *bus)
|
||||||
|
{
|
||||||
|
struct rockchip_sfc *sfc = dev_get_plat(bus);
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
#if CONFIG_IS_ENABLED(CLK)
|
||||||
|
ret = clk_enable(&sfc->hclk);
|
||||||
|
if (ret)
|
||||||
|
debug("Enable ahb clock fail %s: %d\n", bus->name, ret);
|
||||||
|
|
||||||
|
ret = clk_enable(&sfc->clk);
|
||||||
|
if (ret)
|
||||||
|
debug("Enable clock fail for %s: %d\n", bus->name, ret);
|
||||||
|
|
||||||
|
ret = clk_set_rate(&sfc->clk, SFC_DEFAULT_SPEED_HZ);
|
||||||
|
if (ret)
|
||||||
|
debug("Could not set sfc clock for %s: %d\n", bus->name, ret);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ret = rockchip_sfc_init(sfc);
|
||||||
|
if (ret)
|
||||||
|
goto err_init;
|
||||||
|
|
||||||
|
sfc->max_iosize = rockchip_sfc_get_max_iosize(sfc);
|
||||||
|
sfc->version = rockchip_sfc_get_version(sfc);
|
||||||
|
sfc->speed = SFC_DEFAULT_SPEED_HZ;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err_init:
|
||||||
|
#if CONFIG_IS_ENABLED(CLK)
|
||||||
|
clk_disable(&sfc->clk);
|
||||||
|
clk_disable(&sfc->hclk);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int rockchip_sfc_get_fifo_level(struct rockchip_sfc *sfc, int wr)
|
||||||
|
{
|
||||||
|
u32 fsr = readl(sfc->regbase + SFC_FSR);
|
||||||
|
int level;
|
||||||
|
|
||||||
|
if (wr)
|
||||||
|
level = (fsr & SFC_FSR_TXLV_MASK) >> SFC_FSR_TXLV_SHIFT;
|
||||||
|
else
|
||||||
|
level = (fsr & SFC_FSR_RXLV_MASK) >> SFC_FSR_RXLV_SHIFT;
|
||||||
|
|
||||||
|
return level;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_wait_fifo_ready(struct rockchip_sfc *sfc, int wr, u32 timeout)
|
||||||
|
{
|
||||||
|
unsigned long tbase = get_timer(0);
|
||||||
|
int level;
|
||||||
|
|
||||||
|
while (!(level = rockchip_sfc_get_fifo_level(sfc, wr))) {
|
||||||
|
if (get_timer(tbase) > timeout) {
|
||||||
|
debug("%s fifo timeout\n", wr ? "write" : "read");
|
||||||
|
return -ETIMEDOUT;
|
||||||
|
}
|
||||||
|
udelay(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return level;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void rockchip_sfc_adjust_op_work(struct spi_mem_op *op)
|
||||||
|
{
|
||||||
|
if (unlikely(op->dummy.nbytes && !op->addr.nbytes)) {
|
||||||
|
/*
|
||||||
|
* SFC not support output DUMMY cycles right after CMD cycles, so
|
||||||
|
* treat it as ADDR cycles.
|
||||||
|
*/
|
||||||
|
op->addr.nbytes = op->dummy.nbytes;
|
||||||
|
op->addr.buswidth = op->dummy.buswidth;
|
||||||
|
op->addr.val = 0xFFFFFFFFF;
|
||||||
|
|
||||||
|
op->dummy.nbytes = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_wait_for_dma_finished(struct rockchip_sfc *sfc, int timeout)
|
||||||
|
{
|
||||||
|
unsigned long tbase;
|
||||||
|
|
||||||
|
/* Wait for the DMA interrupt status */
|
||||||
|
tbase = get_timer(0);
|
||||||
|
while (!(readl(sfc->regbase + SFC_RISR) & SFC_RISR_DMA)) {
|
||||||
|
if (get_timer(tbase) > timeout) {
|
||||||
|
printf("dma timeout\n");
|
||||||
|
rockchip_sfc_reset(sfc);
|
||||||
|
|
||||||
|
return -ETIMEDOUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
udelay(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
writel(0xFFFFFFFF, sfc->regbase + SFC_ICLR);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_xfer_setup(struct rockchip_sfc *sfc,
|
||||||
|
struct spi_slave *mem,
|
||||||
|
const struct spi_mem_op *op,
|
||||||
|
u32 len)
|
||||||
|
{
|
||||||
|
struct dm_spi_slave_plat *plat = dev_get_parent_plat(mem->dev);
|
||||||
|
u32 ctrl = 0, cmd = 0;
|
||||||
|
|
||||||
|
/* set CMD */
|
||||||
|
cmd = op->cmd.opcode;
|
||||||
|
ctrl |= ((op->cmd.buswidth >> 1) << SFC_CTRL_CMD_BITS_SHIFT);
|
||||||
|
|
||||||
|
/* set ADDR */
|
||||||
|
if (op->addr.nbytes) {
|
||||||
|
if (op->addr.nbytes == 4) {
|
||||||
|
cmd |= SFC_CMD_ADDR_32BITS << SFC_CMD_ADDR_SHIFT;
|
||||||
|
} else if (op->addr.nbytes == 3) {
|
||||||
|
cmd |= SFC_CMD_ADDR_24BITS << SFC_CMD_ADDR_SHIFT;
|
||||||
|
} else {
|
||||||
|
cmd |= SFC_CMD_ADDR_XBITS << SFC_CMD_ADDR_SHIFT;
|
||||||
|
writel(op->addr.nbytes * 8 - 1, sfc->regbase + SFC_ABIT);
|
||||||
|
}
|
||||||
|
|
||||||
|
ctrl |= ((op->addr.buswidth >> 1) << SFC_CTRL_ADDR_BITS_SHIFT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set DUMMY */
|
||||||
|
if (op->dummy.nbytes) {
|
||||||
|
if (op->dummy.buswidth == 4)
|
||||||
|
cmd |= op->dummy.nbytes * 2 << SFC_CMD_DUMMY_SHIFT;
|
||||||
|
else if (op->dummy.buswidth == 2)
|
||||||
|
cmd |= op->dummy.nbytes * 4 << SFC_CMD_DUMMY_SHIFT;
|
||||||
|
else
|
||||||
|
cmd |= op->dummy.nbytes * 8 << SFC_CMD_DUMMY_SHIFT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set DATA */
|
||||||
|
if (sfc->version >= SFC_VER_4) /* Clear it if no data to transfer */
|
||||||
|
writel(len, sfc->regbase + SFC_LEN_EXT);
|
||||||
|
else
|
||||||
|
cmd |= len << SFC_CMD_TRAN_BYTES_SHIFT;
|
||||||
|
if (len) {
|
||||||
|
if (op->data.dir == SPI_MEM_DATA_OUT)
|
||||||
|
cmd |= SFC_CMD_DIR_WR << SFC_CMD_DIR_SHIFT;
|
||||||
|
|
||||||
|
ctrl |= ((op->data.buswidth >> 1) << SFC_CTRL_DATA_BITS_SHIFT);
|
||||||
|
}
|
||||||
|
if (!len && op->addr.nbytes)
|
||||||
|
cmd |= SFC_CMD_DIR_WR << SFC_CMD_DIR_SHIFT;
|
||||||
|
|
||||||
|
/* set the Controller */
|
||||||
|
ctrl |= SFC_CTRL_PHASE_SEL_NEGETIVE;
|
||||||
|
cmd |= plat->cs << SFC_CMD_CS_SHIFT;
|
||||||
|
|
||||||
|
debug("addr.nbytes=%x(x%d) dummy.nbytes=%x(x%d)\n",
|
||||||
|
op->addr.nbytes, op->addr.buswidth,
|
||||||
|
op->dummy.nbytes, op->dummy.buswidth);
|
||||||
|
debug("ctrl=%x cmd=%x addr=%llx len=%x\n",
|
||||||
|
ctrl, cmd, op->addr.val, len);
|
||||||
|
|
||||||
|
writel(ctrl, sfc->regbase + SFC_CTRL);
|
||||||
|
writel(cmd, sfc->regbase + SFC_CMD);
|
||||||
|
if (op->addr.nbytes)
|
||||||
|
writel(op->addr.val, sfc->regbase + SFC_ADDR);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_write_fifo(struct rockchip_sfc *sfc, const u8 *buf, int len)
|
||||||
|
{
|
||||||
|
u8 bytes = len & 0x3;
|
||||||
|
u32 dwords;
|
||||||
|
int tx_level;
|
||||||
|
u32 write_words;
|
||||||
|
u32 tmp = 0;
|
||||||
|
|
||||||
|
dwords = len >> 2;
|
||||||
|
while (dwords) {
|
||||||
|
tx_level = rockchip_sfc_wait_fifo_ready(sfc, SFC_CMD_DIR_WR, 1000);
|
||||||
|
if (tx_level < 0)
|
||||||
|
return tx_level;
|
||||||
|
write_words = min_t(u32, tx_level, dwords);
|
||||||
|
writesl(sfc->regbase + SFC_DATA, buf, write_words);
|
||||||
|
buf += write_words << 2;
|
||||||
|
dwords -= write_words;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* write the rest non word aligned bytes */
|
||||||
|
if (bytes) {
|
||||||
|
tx_level = rockchip_sfc_wait_fifo_ready(sfc, SFC_CMD_DIR_WR, 1000);
|
||||||
|
if (tx_level < 0)
|
||||||
|
return tx_level;
|
||||||
|
memcpy(&tmp, buf, bytes);
|
||||||
|
writel(tmp, sfc->regbase + SFC_DATA);
|
||||||
|
}
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_read_fifo(struct rockchip_sfc *sfc, u8 *buf, int len)
|
||||||
|
{
|
||||||
|
u8 bytes = len & 0x3;
|
||||||
|
u32 dwords;
|
||||||
|
u8 read_words;
|
||||||
|
int rx_level;
|
||||||
|
int tmp;
|
||||||
|
|
||||||
|
/* word aligned access only */
|
||||||
|
dwords = len >> 2;
|
||||||
|
while (dwords) {
|
||||||
|
rx_level = rockchip_sfc_wait_fifo_ready(sfc, SFC_CMD_DIR_RD, 1000);
|
||||||
|
if (rx_level < 0)
|
||||||
|
return rx_level;
|
||||||
|
read_words = min_t(u32, rx_level, dwords);
|
||||||
|
readsl(sfc->regbase + SFC_DATA, buf, read_words);
|
||||||
|
buf += read_words << 2;
|
||||||
|
dwords -= read_words;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* read the rest non word aligned bytes */
|
||||||
|
if (bytes) {
|
||||||
|
rx_level = rockchip_sfc_wait_fifo_ready(sfc, SFC_CMD_DIR_RD, 1000);
|
||||||
|
if (rx_level < 0)
|
||||||
|
return rx_level;
|
||||||
|
tmp = readl(sfc->regbase + SFC_DATA);
|
||||||
|
memcpy(buf, &tmp, bytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_fifo_transfer_dma(struct rockchip_sfc *sfc, dma_addr_t dma_buf, size_t len)
|
||||||
|
{
|
||||||
|
writel(0xFFFFFFFF, sfc->regbase + SFC_ICLR);
|
||||||
|
writel((u32)dma_buf, sfc->regbase + SFC_DMA_ADDR);
|
||||||
|
writel(0x1, sfc->regbase + SFC_DMA_TRIGGER);
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_xfer_data_poll(struct rockchip_sfc *sfc,
|
||||||
|
const struct spi_mem_op *op, u32 len)
|
||||||
|
{
|
||||||
|
debug("xfer_poll len=%x\n", len);
|
||||||
|
|
||||||
|
if (op->data.dir == SPI_MEM_DATA_OUT)
|
||||||
|
return rockchip_sfc_write_fifo(sfc, op->data.buf.out, len);
|
||||||
|
else
|
||||||
|
return rockchip_sfc_read_fifo(sfc, op->data.buf.in, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_xfer_data_dma(struct rockchip_sfc *sfc,
|
||||||
|
const struct spi_mem_op *op, u32 len)
|
||||||
|
{
|
||||||
|
struct bounce_buffer bb;
|
||||||
|
unsigned int bb_flags;
|
||||||
|
void *dma_buf;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
debug("xfer_dma len=%x\n", len);
|
||||||
|
|
||||||
|
if (op->data.dir == SPI_MEM_DATA_OUT) {
|
||||||
|
dma_buf = (void *)op->data.buf.out;
|
||||||
|
bb_flags = GEN_BB_READ;
|
||||||
|
} else {
|
||||||
|
dma_buf = (void *)op->data.buf.in;
|
||||||
|
bb_flags = GEN_BB_WRITE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = bounce_buffer_start(&bb, dma_buf, len, bb_flags);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = rockchip_sfc_fifo_transfer_dma(sfc, (dma_addr_t)bb.bounce_buffer, len);
|
||||||
|
rockchip_sfc_wait_for_dma_finished(sfc, len * 10);
|
||||||
|
bounce_buffer_stop(&bb);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_xfer_done(struct rockchip_sfc *sfc, u32 timeout_us)
|
||||||
|
{
|
||||||
|
unsigned long tbase = get_timer(0);
|
||||||
|
int ret = 0;
|
||||||
|
u32 timeout = timeout_us;
|
||||||
|
|
||||||
|
while (readl(sfc->regbase + SFC_SR) & SFC_SR_IS_BUSY) {
|
||||||
|
if (get_timer(tbase) > timeout) {
|
||||||
|
printf("wait sfc idle timeout\n");
|
||||||
|
rockchip_sfc_reset(sfc);
|
||||||
|
|
||||||
|
return -ETIMEDOUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
udelay(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_exec_op(struct spi_slave *mem,
|
||||||
|
const struct spi_mem_op *op)
|
||||||
|
{
|
||||||
|
struct rockchip_sfc *sfc = dev_get_plat(mem->dev->parent);
|
||||||
|
u32 len = min_t(u32, op->data.nbytes, sfc->max_iosize);
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
#if CONFIG_IS_ENABLED(CLK)
|
||||||
|
if (unlikely(mem->max_hz != sfc->speed)) {
|
||||||
|
ret = clk_set_rate(&sfc->clk, clamp(mem->max_hz, (uint)SFC_MIN_SPEED_HZ,
|
||||||
|
(uint)SFC_MAX_SPEED_HZ));
|
||||||
|
if (ret < 0) {
|
||||||
|
printf("set_freq=%dHz fail, check if it's the cru support level\n",
|
||||||
|
mem->max_hz);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
sfc->max_freq = mem->max_hz;
|
||||||
|
sfc->speed = mem->max_hz;
|
||||||
|
debug("set_freq=%dHz real_freq=%dHz\n", sfc->max_freq, sfc->speed);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
rockchip_sfc_adjust_op_work((struct spi_mem_op *)op);
|
||||||
|
|
||||||
|
rockchip_sfc_xfer_setup(sfc, mem, op, len);
|
||||||
|
if (len) {
|
||||||
|
if (likely(sfc->use_dma) && !(len & 0x3) && len >= SFC_DMA_TRANS_THRETHOLD)
|
||||||
|
ret = rockchip_sfc_xfer_data_dma(sfc, op, len);
|
||||||
|
else
|
||||||
|
ret = rockchip_sfc_xfer_data_poll(sfc, op, len);
|
||||||
|
|
||||||
|
if (ret != len) {
|
||||||
|
printf("xfer data failed ret %d dir %d\n", ret, op->data.dir);
|
||||||
|
|
||||||
|
return -EIO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return rockchip_sfc_xfer_done(sfc, 100000);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_adjust_op_size(struct spi_slave *mem, struct spi_mem_op *op)
|
||||||
|
{
|
||||||
|
struct rockchip_sfc *sfc = dev_get_plat(mem->dev->parent);
|
||||||
|
|
||||||
|
op->data.nbytes = min(op->data.nbytes, sfc->max_iosize);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_set_speed(struct udevice *bus, uint speed)
|
||||||
|
{
|
||||||
|
/* We set up speed later for each transmission.
|
||||||
|
*/
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rockchip_sfc_set_mode(struct udevice *bus, uint mode)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct spi_controller_mem_ops rockchip_sfc_mem_ops = {
|
||||||
|
.adjust_op_size = rockchip_sfc_adjust_op_size,
|
||||||
|
.exec_op = rockchip_sfc_exec_op,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct dm_spi_ops rockchip_sfc_ops = {
|
||||||
|
.mem_ops = &rockchip_sfc_mem_ops,
|
||||||
|
.set_speed = rockchip_sfc_set_speed,
|
||||||
|
.set_mode = rockchip_sfc_set_mode,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct udevice_id rockchip_sfc_ids[] = {
|
||||||
|
{ .compatible = "rockchip,sfc"},
|
||||||
|
{},
|
||||||
|
};
|
||||||
|
|
||||||
|
U_BOOT_DRIVER(rockchip_sfc_driver) = {
|
||||||
|
.name = "rockchip_sfc",
|
||||||
|
.id = UCLASS_SPI,
|
||||||
|
.of_match = rockchip_sfc_ids,
|
||||||
|
.ops = &rockchip_sfc_ops,
|
||||||
|
.of_to_plat = rockchip_sfc_ofdata_to_platdata,
|
||||||
|
.plat_auto = sizeof(struct rockchip_sfc),
|
||||||
|
.probe = rockchip_sfc_probe,
|
||||||
|
};
|
|
@ -14,11 +14,11 @@
|
||||||
|
|
||||||
#ifndef CONFIG_SPL_BUILD
|
#ifndef CONFIG_SPL_BUILD
|
||||||
|
|
||||||
/* First try to boot from SD (index 0), then eMMC (index 1) */
|
/* First try to boot from SD (index 1), then eMMC (index 0) */
|
||||||
#if CONFIG_IS_ENABLED(CMD_MMC)
|
#if CONFIG_IS_ENABLED(CMD_MMC)
|
||||||
#define BOOT_TARGET_MMC(func) \
|
#define BOOT_TARGET_MMC(func) \
|
||||||
func(MMC, mmc, 0) \
|
func(MMC, mmc, 1) \
|
||||||
func(MMC, mmc, 1)
|
func(MMC, mmc, 0)
|
||||||
#else
|
#else
|
||||||
#define BOOT_TARGET_MMC(func)
|
#define BOOT_TARGET_MMC(func)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014 MundoReader S.L.
|
* Copyright (c) 2014 MundoReader S.L.
|
||||||
* Author: Heiko Stuebner <heiko@sntech.de>
|
* Author: Heiko Stuebner <heiko@sntech.de>
|
||||||
|
@ -59,12 +59,14 @@
|
||||||
#define ACLK_LCDC1 196
|
#define ACLK_LCDC1 196
|
||||||
#define ACLK_GPU 197
|
#define ACLK_GPU 197
|
||||||
#define ACLK_SMC 198
|
#define ACLK_SMC 198
|
||||||
#define ACLK_CIF 199
|
#define ACLK_CIF1 199
|
||||||
#define ACLK_IPP 200
|
#define ACLK_IPP 200
|
||||||
#define ACLK_RGA 201
|
#define ACLK_RGA 201
|
||||||
#define ACLK_CIF0 202
|
#define ACLK_CIF0 202
|
||||||
#define ACLK_CPU 203
|
#define ACLK_CPU 203
|
||||||
#define ACLK_PERI 204
|
#define ACLK_PERI 204
|
||||||
|
#define ACLK_VEPU 205
|
||||||
|
#define ACLK_VDPU 206
|
||||||
|
|
||||||
/* pclk gates */
|
/* pclk gates */
|
||||||
#define PCLK_GRF 320
|
#define PCLK_GRF 320
|
||||||
|
@ -125,8 +127,12 @@
|
||||||
#define HCLK_NANDC0 467
|
#define HCLK_NANDC0 467
|
||||||
#define HCLK_CPU 468
|
#define HCLK_CPU 468
|
||||||
#define HCLK_PERI 469
|
#define HCLK_PERI 469
|
||||||
|
#define HCLK_CIF1 470
|
||||||
|
#define HCLK_VEPU 471
|
||||||
|
#define HCLK_VDPU 472
|
||||||
|
#define HCLK_HDMI 473
|
||||||
|
|
||||||
#define CLK_NR_CLKS (HCLK_PERI + 1)
|
#define CLK_NR_CLKS (HCLK_HDMI + 1)
|
||||||
|
|
||||||
/* soft-reset indices */
|
/* soft-reset indices */
|
||||||
#define SRST_MCORE 2
|
#define SRST_MCORE 2
|
||||||
|
|
24
include/dt-bindings/power/rk3188-power.h
Normal file
24
include/dt-bindings/power/rk3188-power.h
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
#ifndef __DT_BINDINGS_POWER_RK3188_POWER_H__
|
||||||
|
#define __DT_BINDINGS_POWER_RK3188_POWER_H__
|
||||||
|
|
||||||
|
/* VD_CORE */
|
||||||
|
#define RK3188_PD_A9_0 0
|
||||||
|
#define RK3188_PD_A9_1 1
|
||||||
|
#define RK3188_PD_A9_2 2
|
||||||
|
#define RK3188_PD_A9_3 3
|
||||||
|
#define RK3188_PD_DBG 4
|
||||||
|
#define RK3188_PD_SCU 5
|
||||||
|
|
||||||
|
/* VD_LOGIC */
|
||||||
|
#define RK3188_PD_VIDEO 6
|
||||||
|
#define RK3188_PD_VIO 7
|
||||||
|
#define RK3188_PD_GPU 8
|
||||||
|
#define RK3188_PD_PERI 9
|
||||||
|
#define RK3188_PD_CPU 10
|
||||||
|
#define RK3188_PD_ALIVE 11
|
||||||
|
|
||||||
|
/* VD_PMU */
|
||||||
|
#define RK3188_PD_RTC 12
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in a new issue