mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-19 03:15:00 +00:00
Merge tag 'rockchip-for-v2019.07-rc3' of git://git.denx.de/u-boot-rockchip
- some fix for rk3399-puma; - rockchip script make_fit_atf.py cleanup - Enable TPL for rk3399 orangepi and nanopi4; - add support for rk3399 boards: Nanopi NEO4, Rockpro64, Rock PI 4;
This commit is contained in:
commit
8a802a2eef
20 changed files with 1730 additions and 100 deletions
|
@ -108,11 +108,14 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \
|
||||||
rk3399-gru-bob.dtb \
|
rk3399-gru-bob.dtb \
|
||||||
rk3399-nanopc-t4.dtb \
|
rk3399-nanopc-t4.dtb \
|
||||||
rk3399-nanopi-m4.dtb \
|
rk3399-nanopi-m4.dtb \
|
||||||
|
rk3399-nanopi-neo4.dtb \
|
||||||
rk3399-orangepi.dtb \
|
rk3399-orangepi.dtb \
|
||||||
rk3399-puma-ddr1333.dtb \
|
rk3399-puma-ddr1333.dtb \
|
||||||
rk3399-puma-ddr1600.dtb \
|
rk3399-puma-ddr1600.dtb \
|
||||||
rk3399-puma-ddr1866.dtb \
|
rk3399-puma-ddr1866.dtb \
|
||||||
|
rk3399-rock-pi-4.dtb \
|
||||||
rk3399-rock960.dtb \
|
rk3399-rock960.dtb \
|
||||||
|
rk3399-rockpro64.dtb
|
||||||
|
|
||||||
dtb-$(CONFIG_ROCKCHIP_RV1108) += \
|
dtb-$(CONFIG_ROCKCHIP_RV1108) += \
|
||||||
rv1108-elgin-r1.dtb \
|
rv1108-elgin-r1.dtb \
|
||||||
|
|
6
arch/arm/dts/rk3399-nanopi-neo4-u-boot.dtsi
Normal file
6
arch/arm/dts/rk3399-nanopi-neo4-u-boot.dtsi
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Jagan Teki <jagan@amarulasolutions.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "rk3399-nanopi4-u-boot.dtsi"
|
50
arch/arm/dts/rk3399-nanopi-neo4.dts
Normal file
50
arch/arm/dts/rk3399-nanopi-neo4.dts
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Amarula Solutions B.V.
|
||||||
|
* Author: Jagan Teki <jagan@amarulasolutions.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
|
||||||
|
#include "rk3399-nanopi4.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "FriendlyARM NanoPi NEO4";
|
||||||
|
compatible = "friendlyarm,nanopi-neo4", "rockchip,rk3399";
|
||||||
|
|
||||||
|
vdd_5v: vdd-5v {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vdd_5v";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc5v0_core: vcc5v0-core {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc5v0_core";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
vin-supply = <&vdd_5v>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc5v0_usb1: vcc5v0-usb1 {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc5v0_usb1";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
vin-supply = <&vcc5v0_sys>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&vcc3v3_sys {
|
||||||
|
vin-supply = <&vcc5v0_core>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&u2phy0_host {
|
||||||
|
phy-supply = <&vcc5v0_usb1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&vbus_typec {
|
||||||
|
regulator-always-on;
|
||||||
|
vin-supply = <&vdd_5v>;
|
||||||
|
};
|
6
arch/arm/dts/rk3399-rock-pi-4-u-boot.dtsi
Normal file
6
arch/arm/dts/rk3399-rock-pi-4-u-boot.dtsi
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Jagan Teki <jagan@amarulasolutions.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "rk3399-u-boot.dtsi"
|
606
arch/arm/dts/rk3399-rock-pi-4.dts
Normal file
606
arch/arm/dts/rk3399-rock-pi-4.dts
Normal file
|
@ -0,0 +1,606 @@
|
||||||
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019 Akash Gajjar <Akash_Gajjar@mentor.com>
|
||||||
|
* Copyright (c) 2019 Pragnesh Patel <Pragnesh_Patel@mentor.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include <dt-bindings/input/linux-event-codes.h>
|
||||||
|
#include <dt-bindings/pwm/pwm.h>
|
||||||
|
#include "rk3399.dtsi"
|
||||||
|
#include "rk3399-opp.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "Radxa ROCK Pi 4";
|
||||||
|
compatible = "radxa,rockpi4", "rockchip,rk3399";
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
stdout-path = "serial2:1500000n8";
|
||||||
|
};
|
||||||
|
|
||||||
|
clkin_gmac: external-gmac-clock {
|
||||||
|
compatible = "fixed-clock";
|
||||||
|
clock-frequency = <125000000>;
|
||||||
|
clock-output-names = "clkin_gmac";
|
||||||
|
#clock-cells = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc12v_dcin: dc-12v {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc12v_dcin";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <12000000>;
|
||||||
|
regulator-max-microvolt = <12000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc5v0_sys: vcc-sys {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc5v0_sys";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <5000000>;
|
||||||
|
regulator-max-microvolt = <5000000>;
|
||||||
|
vin-supply = <&vcc12v_dcin>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc3v3_pcie: vcc3v3-pcie-regulator {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
enable-active-high;
|
||||||
|
gpio = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pcie_pwr_en>;
|
||||||
|
regulator-name = "vcc3v3_pcie";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
vin-supply = <&vcc5v0_sys>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc3v3_sys: vcc3v3-sys {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc3v3_sys";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
vin-supply = <&vcc5v0_sys>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc5v0_host: vcc5v0-host-regulator {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
enable-active-high;
|
||||||
|
gpio = <&gpio4 RK_PD1 GPIO_ACTIVE_HIGH>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&vcc5v0_host_en>;
|
||||||
|
regulator-name = "vcc5v0_host";
|
||||||
|
regulator-always-on;
|
||||||
|
vin-supply = <&vcc5v0_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 = <&vcc5v0_sys>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_lan: vcc3v3-phy-regulator {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc_lan";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vdd_log: vdd-log {
|
||||||
|
compatible = "pwm-regulator";
|
||||||
|
pwms = <&pwm2 0 25000 1>;
|
||||||
|
regulator-name = "vdd_log";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <800000>;
|
||||||
|
regulator-max-microvolt = <1400000>;
|
||||||
|
vin-supply = <&vcc5v0_sys>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu_l0 {
|
||||||
|
cpu-supply = <&vdd_cpu_l>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu_l1 {
|
||||||
|
cpu-supply = <&vdd_cpu_l>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu_l2 {
|
||||||
|
cpu-supply = <&vdd_cpu_l>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu_l3 {
|
||||||
|
cpu-supply = <&vdd_cpu_l>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu_b0 {
|
||||||
|
cpu-supply = <&vdd_cpu_b>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu_b1 {
|
||||||
|
cpu-supply = <&vdd_cpu_b>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&emmc_phy {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gmac {
|
||||||
|
assigned-clocks = <&cru SCLK_RMII_SRC>;
|
||||||
|
assigned-clock-parents = <&clkin_gmac>;
|
||||||
|
clock_in_out = "input";
|
||||||
|
phy-supply = <&vcc_lan>;
|
||||||
|
phy-mode = "rgmii";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&rgmii_pins>;
|
||||||
|
snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
|
||||||
|
snps,reset-active-low;
|
||||||
|
snps,reset-delays-us = <0 10000 50000>;
|
||||||
|
tx_delay = <0x28>;
|
||||||
|
rx_delay = <0x11>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&hdmi {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&hdmi_cec>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c0 {
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
i2c-scl-rising-time-ns = <168>;
|
||||||
|
i2c-scl-falling-time-ns = <4>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
rk808: pmic@1b {
|
||||||
|
compatible = "rockchip,rk808";
|
||||||
|
reg = <0x1b>;
|
||||||
|
interrupt-parent = <&gpio1>;
|
||||||
|
interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
#clock-cells = <1>;
|
||||||
|
clock-output-names = "xin32k", "rk808-clkout2";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pmic_int_l>;
|
||||||
|
rockchip,system-power-controller;
|
||||||
|
wakeup-source;
|
||||||
|
|
||||||
|
vcc1-supply = <&vcc5v0_sys>;
|
||||||
|
vcc2-supply = <&vcc5v0_sys>;
|
||||||
|
vcc3-supply = <&vcc5v0_sys>;
|
||||||
|
vcc4-supply = <&vcc5v0_sys>;
|
||||||
|
vcc6-supply = <&vcc5v0_sys>;
|
||||||
|
vcc7-supply = <&vcc5v0_sys>;
|
||||||
|
vcc8-supply = <&vcc3v3_sys>;
|
||||||
|
vcc9-supply = <&vcc5v0_sys>;
|
||||||
|
vcc10-supply = <&vcc5v0_sys>;
|
||||||
|
vcc11-supply = <&vcc5v0_sys>;
|
||||||
|
vcc12-supply = <&vcc3v3_sys>;
|
||||||
|
vddio-supply = <&vcc_1v8>;
|
||||||
|
|
||||||
|
regulators {
|
||||||
|
vdd_center: DCDC_REG1 {
|
||||||
|
regulator-name = "vdd_center";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <750000>;
|
||||||
|
regulator-max-microvolt = <1350000>;
|
||||||
|
regulator-ramp-delay = <6001>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vdd_cpu_l: DCDC_REG2 {
|
||||||
|
regulator-name = "vdd_cpu_l";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <750000>;
|
||||||
|
regulator-max-microvolt = <1350000>;
|
||||||
|
regulator-ramp-delay = <6001>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_ddr: DCDC_REG3 {
|
||||||
|
regulator-name = "vcc_ddr";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-on-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_1v8: DCDC_REG4 {
|
||||||
|
regulator-name = "vcc_1v8";
|
||||||
|
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>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc1v8_codec: LDO_REG1 {
|
||||||
|
regulator-name = "vcc1v8_codec";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <1800000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc1v8_hdmi: LDO_REG2 {
|
||||||
|
regulator-name = "vcc1v8_hdmi";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <1800000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcca_1v8: LDO_REG3 {
|
||||||
|
regulator-name = "vcca_1v8";
|
||||||
|
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>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_sdio: LDO_REG4 {
|
||||||
|
regulator-name = "vcc_sdio";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <3000000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-on-in-suspend;
|
||||||
|
regulator-suspend-microvolt = <3000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcca3v0_codec: LDO_REG5 {
|
||||||
|
regulator-name = "vcca3v0_codec";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <3000000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_1v5: LDO_REG6 {
|
||||||
|
regulator-name = "vcc_1v5";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <1500000>;
|
||||||
|
regulator-max-microvolt = <1500000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-on-in-suspend;
|
||||||
|
regulator-suspend-microvolt = <1500000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc0v9_hdmi: LDO_REG7 {
|
||||||
|
regulator-name = "vcc0v9_hdmi";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <900000>;
|
||||||
|
regulator-max-microvolt = <900000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_3v0: LDO_REG8 {
|
||||||
|
regulator-name = "vcc_3v0";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <3000000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-on-in-suspend;
|
||||||
|
regulator-suspend-microvolt = <3000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_cam: SWITCH_REG1 {
|
||||||
|
regulator-name = "vcc_cam";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_mipi: SWITCH_REG2 {
|
||||||
|
regulator-name = "vcc_mipi";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vdd_cpu_b: regulator@40 {
|
||||||
|
compatible = "silergy,syr827";
|
||||||
|
reg = <0x40>;
|
||||||
|
fcs,suspend-voltage-selector = <1>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&vsel1_gpio>;
|
||||||
|
regulator-name = "vdd_cpu_b";
|
||||||
|
regulator-min-microvolt = <712500>;
|
||||||
|
regulator-max-microvolt = <1500000>;
|
||||||
|
regulator-ramp-delay = <1000>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
vin-supply = <&vcc5v0_sys>;
|
||||||
|
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vdd_gpu: regulator@41 {
|
||||||
|
compatible = "silergy,syr828";
|
||||||
|
reg = <0x41>;
|
||||||
|
fcs,suspend-voltage-selector = <1>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&vsel2_gpio>;
|
||||||
|
regulator-name = "vdd_gpu";
|
||||||
|
regulator-min-microvolt = <712500>;
|
||||||
|
regulator-max-microvolt = <1500000>;
|
||||||
|
regulator-ramp-delay = <1000>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
vin-supply = <&vcc5v0_sys>;
|
||||||
|
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c1 {
|
||||||
|
i2c-scl-rising-time-ns = <300>;
|
||||||
|
i2c-scl-falling-time-ns = <15>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c3 {
|
||||||
|
i2c-scl-rising-time-ns = <450>;
|
||||||
|
i2c-scl-falling-time-ns = <15>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c4 {
|
||||||
|
i2c-scl-rising-time-ns = <600>;
|
||||||
|
i2c-scl-falling-time-ns = <20>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2s0 {
|
||||||
|
rockchip,playback-channels = <8>;
|
||||||
|
rockchip,capture-channels = <8>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2s1 {
|
||||||
|
rockchip,playback-channels = <2>;
|
||||||
|
rockchip,capture-channels = <2>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2s2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&io_domains {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
bt656-supply = <&vcc_3v0>;
|
||||||
|
audio-supply = <&vcc_3v0>;
|
||||||
|
sdmmc-supply = <&vcc_sdio>;
|
||||||
|
gpio1830-supply = <&vcc_3v0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&pmu_io_domains {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
pmu1830-supply = <&vcc_3v0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&pinctrl {
|
||||||
|
pcie {
|
||||||
|
pcie_pwr_en: pcie-pwr-en {
|
||||||
|
rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
pmic {
|
||||||
|
pmic_int_l: pmic-int-l {
|
||||||
|
rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vsel1_gpio: vsel1-gpio {
|
||||||
|
rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vsel2_gpio: vsel2-gpio {
|
||||||
|
rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
usb-typec {
|
||||||
|
vcc5v0_typec_en: vcc5v0-typec-en {
|
||||||
|
rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
usb2 {
|
||||||
|
vcc5v0_host_en: vcc5v0-host-en {
|
||||||
|
rockchip,pins = <4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&pwm2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&saradc {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
vref-supply = <&vcc_1v8>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&sdmmc {
|
||||||
|
bus-width = <4>;
|
||||||
|
cap-mmc-highspeed;
|
||||||
|
cap-sd-highspeed;
|
||||||
|
cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
|
||||||
|
disable-wp;
|
||||||
|
max-frequency = <150000000>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&sdmmc_clk &sdmmc_cd &sdmmc_cmd &sdmmc_bus4>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&sdhci {
|
||||||
|
bus-width = <8>;
|
||||||
|
mmc-hs400-1_8v;
|
||||||
|
mmc-hs400-enhanced-strobe;
|
||||||
|
non-removable;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&tcphy0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&tcphy1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&tsadc {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
/* tshut mode 0:CRU 1:GPIO */
|
||||||
|
rockchip,hw-tshut-mode = <1>;
|
||||||
|
/* tshut polarity 0:LOW 1:HIGH */
|
||||||
|
rockchip,hw-tshut-polarity = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&u2phy0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
u2phy0_otg: otg-port {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
u2phy0_host: host-port {
|
||||||
|
phy-supply = <&vcc5v0_host>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&u2phy1 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
u2phy1_otg: otg-port {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
u2phy1_host: host-port {
|
||||||
|
phy-supply = <&vcc5v0_host>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&uart2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb_host0_ehci {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb_host0_ohci {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb_host1_ehci {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb_host1_ohci {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usbdrd3_0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usbdrd_dwc3_0 {
|
||||||
|
status = "okay";
|
||||||
|
dr_mode = "otg";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usbdrd3_1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usbdrd_dwc3_1 {
|
||||||
|
status = "okay";
|
||||||
|
dr_mode = "host";
|
||||||
|
};
|
||||||
|
|
||||||
|
&vopb {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&vopb_mmu {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&vopl {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&vopl_mmu {
|
||||||
|
status = "okay";
|
||||||
|
};
|
6
arch/arm/dts/rk3399-rockpro64-u-boot.dtsi
Normal file
6
arch/arm/dts/rk3399-rockpro64-u-boot.dtsi
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019 Jagan Teki <jagan@amarulasolutions.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "rk3399-u-boot.dtsi"
|
712
arch/arm/dts/rk3399-rockpro64.dts
Normal file
712
arch/arm/dts/rk3399-rockpro64.dts
Normal file
|
@ -0,0 +1,712 @@
|
||||||
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd.
|
||||||
|
* Copyright (c) 2018 Akash Gajjar <Akash_Gajjar@mentor.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include <dt-bindings/input/linux-event-codes.h>
|
||||||
|
#include <dt-bindings/pwm/pwm.h>
|
||||||
|
#include "rk3399.dtsi"
|
||||||
|
#include "rk3399-opp.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "Pine64 RockPro64";
|
||||||
|
compatible = "pine64,rockpro64", "rockchip,rk3399";
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
stdout-path = "serial2:1500000n8";
|
||||||
|
};
|
||||||
|
|
||||||
|
clkin_gmac: external-gmac-clock {
|
||||||
|
compatible = "fixed-clock";
|
||||||
|
clock-frequency = <125000000>;
|
||||||
|
clock-output-names = "clkin_gmac";
|
||||||
|
#clock-cells = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio-keys {
|
||||||
|
compatible = "gpio-keys";
|
||||||
|
autorepeat;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pwrbtn>;
|
||||||
|
|
||||||
|
power {
|
||||||
|
debounce-interval = <100>;
|
||||||
|
gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
|
||||||
|
label = "GPIO Key Power";
|
||||||
|
linux,code = <KEY_POWER>;
|
||||||
|
wakeup-source;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&work_led_gpio>, <&diy_led_gpio>;
|
||||||
|
|
||||||
|
work-led {
|
||||||
|
label = "work";
|
||||||
|
default-state = "on";
|
||||||
|
gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
|
diy-led {
|
||||||
|
label = "diy";
|
||||||
|
default-state = "off";
|
||||||
|
gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
sdio_pwrseq: sdio-pwrseq {
|
||||||
|
compatible = "mmc-pwrseq-simple";
|
||||||
|
clocks = <&rk808 1>;
|
||||||
|
clock-names = "ext_clock";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&wifi_enable_h>;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* On the module itself this is one of these (depending
|
||||||
|
* on the actual card populated):
|
||||||
|
* - SDIO_RESET_L_WL_REG_ON
|
||||||
|
* - PDN (power down when low)
|
||||||
|
*/
|
||||||
|
reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc12v_dcin: vcc12v-dcin {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc12v_dcin";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <12000000>;
|
||||||
|
regulator-max-microvolt = <12000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* switched by pmic_sleep */
|
||||||
|
vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc1v8_s3";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <1800000>;
|
||||||
|
vin-supply = <&vcc_1v8>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc3v3_pcie: vcc3v3-pcie-regulator {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
enable-active-high;
|
||||||
|
gpio = <&gpio1 RK_PD0 GPIO_ACTIVE_HIGH>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pcie_pwr_en>;
|
||||||
|
regulator-name = "vcc3v3_pcie";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
vin-supply = <&vcc12v_dcin>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc3v3_sys: vcc3v3-sys {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc3v3_sys";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
vin-supply = <&vcc5v0_sys>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Actually 3 regulators (host0, 1, 2) controlled by the same gpio */
|
||||||
|
vcc5v0_host: vcc5v0-host-regulator {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
enable-active-high;
|
||||||
|
gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&vcc5v0_host_en>;
|
||||||
|
regulator-name = "vcc5v0_host";
|
||||||
|
regulator-always-on;
|
||||||
|
vin-supply = <&vcc5v0_usb>;
|
||||||
|
};
|
||||||
|
|
||||||
|
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 = <&vcc5v0_usb>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc5v0_sys: vcc5v0-sys {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc5v0_sys";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <5000000>;
|
||||||
|
regulator-max-microvolt = <5000000>;
|
||||||
|
vin-supply = <&vcc12v_dcin>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc5v0_usb: vcc5v0-usb {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc5v0_usb";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <5000000>;
|
||||||
|
regulator-max-microvolt = <5000000>;
|
||||||
|
vin-supply = <&vcc12v_dcin>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vdd_log: vdd-log {
|
||||||
|
compatible = "pwm-regulator";
|
||||||
|
pwms = <&pwm2 0 25000 1>;
|
||||||
|
regulator-name = "vdd_log";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <800000>;
|
||||||
|
regulator-max-microvolt = <1400000>;
|
||||||
|
vin-supply = <&vcc5v0_sys>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu_l0 {
|
||||||
|
cpu-supply = <&vdd_cpu_l>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu_l1 {
|
||||||
|
cpu-supply = <&vdd_cpu_l>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu_l2 {
|
||||||
|
cpu-supply = <&vdd_cpu_l>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu_l3 {
|
||||||
|
cpu-supply = <&vdd_cpu_l>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu_b0 {
|
||||||
|
cpu-supply = <&vdd_cpu_b>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu_b1 {
|
||||||
|
cpu-supply = <&vdd_cpu_b>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&emmc_phy {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gmac {
|
||||||
|
assigned-clocks = <&cru SCLK_RMII_SRC>;
|
||||||
|
assigned-clock-parents = <&clkin_gmac>;
|
||||||
|
clock_in_out = "input";
|
||||||
|
phy-supply = <&vcc_lan>;
|
||||||
|
phy-mode = "rgmii";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&rgmii_pins>;
|
||||||
|
snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
|
||||||
|
snps,reset-active-low;
|
||||||
|
snps,reset-delays-us = <0 10000 50000>;
|
||||||
|
tx_delay = <0x28>;
|
||||||
|
rx_delay = <0x11>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&hdmi {
|
||||||
|
ddc-i2c-bus = <&i2c3>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&hdmi_cec>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpu {
|
||||||
|
mali-supply = <&vdd_gpu>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c0 {
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
i2c-scl-rising-time-ns = <168>;
|
||||||
|
i2c-scl-falling-time-ns = <4>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
rk808: pmic@1b {
|
||||||
|
compatible = "rockchip,rk808";
|
||||||
|
reg = <0x1b>;
|
||||||
|
interrupt-parent = <&gpio1>;
|
||||||
|
interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
#clock-cells = <1>;
|
||||||
|
clock-output-names = "xin32k", "rk808-clkout2";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pmic_int_l>;
|
||||||
|
rockchip,system-power-controller;
|
||||||
|
wakeup-source;
|
||||||
|
|
||||||
|
vcc1-supply = <&vcc5v0_sys>;
|
||||||
|
vcc2-supply = <&vcc5v0_sys>;
|
||||||
|
vcc3-supply = <&vcc5v0_sys>;
|
||||||
|
vcc4-supply = <&vcc5v0_sys>;
|
||||||
|
vcc6-supply = <&vcc5v0_sys>;
|
||||||
|
vcc7-supply = <&vcc5v0_sys>;
|
||||||
|
vcc8-supply = <&vcc3v3_sys>;
|
||||||
|
vcc9-supply = <&vcc5v0_sys>;
|
||||||
|
vcc10-supply = <&vcc5v0_sys>;
|
||||||
|
vcc11-supply = <&vcc5v0_sys>;
|
||||||
|
vcc12-supply = <&vcc3v3_sys>;
|
||||||
|
vddio-supply = <&vcca_1v8>;
|
||||||
|
|
||||||
|
regulators {
|
||||||
|
vdd_center: DCDC_REG1 {
|
||||||
|
regulator-name = "vdd_center";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <750000>;
|
||||||
|
regulator-max-microvolt = <1350000>;
|
||||||
|
regulator-ramp-delay = <6001>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vdd_cpu_l: DCDC_REG2 {
|
||||||
|
regulator-name = "vdd_cpu_l";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <750000>;
|
||||||
|
regulator-max-microvolt = <1350000>;
|
||||||
|
regulator-ramp-delay = <6001>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_ddr: DCDC_REG3 {
|
||||||
|
regulator-name = "vcc_ddr";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-on-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_1v8: DCDC_REG4 {
|
||||||
|
regulator-name = "vcc_1v8";
|
||||||
|
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>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc1v8_dvp: LDO_REG1 {
|
||||||
|
regulator-name = "vcc1v8_dvp";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <1800000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc3v0_touch: LDO_REG2 {
|
||||||
|
regulator-name = "vcc3v0_touch";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <3000000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcca_1v8: LDO_REG3 {
|
||||||
|
regulator-name = "vcca_1v8";
|
||||||
|
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>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_sdio: LDO_REG4 {
|
||||||
|
regulator-name = "vcc_sdio";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-on-in-suspend;
|
||||||
|
regulator-suspend-microvolt = <3000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcca3v0_codec: LDO_REG5 {
|
||||||
|
regulator-name = "vcca3v0_codec";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <3000000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_1v5: LDO_REG6 {
|
||||||
|
regulator-name = "vcc_1v5";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <1500000>;
|
||||||
|
regulator-max-microvolt = <1500000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-on-in-suspend;
|
||||||
|
regulator-suspend-microvolt = <1500000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcca1v8_codec: LDO_REG7 {
|
||||||
|
regulator-name = "vcca1v8_codec";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <1800000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc_3v0: LDO_REG8 {
|
||||||
|
regulator-name = "vcc_3v0";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <3000000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-on-in-suspend;
|
||||||
|
regulator-suspend-microvolt = <3000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc3v3_s3: vcc_lan: SWITCH_REG1 {
|
||||||
|
regulator-name = "vcc3v3_s3";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vcc3v3_s0: SWITCH_REG2 {
|
||||||
|
regulator-name = "vcc3v3_s0";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vdd_cpu_b: regulator@40 {
|
||||||
|
compatible = "silergy,syr827";
|
||||||
|
reg = <0x40>;
|
||||||
|
fcs,suspend-voltage-selector = <1>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&vsel1_gpio>;
|
||||||
|
regulator-name = "vdd_cpu_b";
|
||||||
|
regulator-min-microvolt = <712500>;
|
||||||
|
regulator-max-microvolt = <1500000>;
|
||||||
|
regulator-ramp-delay = <1000>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
vin-supply = <&vcc5v0_sys>;
|
||||||
|
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vdd_gpu: regulator@41 {
|
||||||
|
compatible = "silergy,syr828";
|
||||||
|
reg = <0x41>;
|
||||||
|
fcs,suspend-voltage-selector = <1>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&vsel2_gpio>;
|
||||||
|
regulator-name = "vdd_gpu";
|
||||||
|
regulator-min-microvolt = <712500>;
|
||||||
|
regulator-max-microvolt = <1500000>;
|
||||||
|
regulator-ramp-delay = <1000>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
vin-supply = <&vcc5v0_sys>;
|
||||||
|
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-off-in-suspend;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c1 {
|
||||||
|
i2c-scl-rising-time-ns = <300>;
|
||||||
|
i2c-scl-falling-time-ns = <15>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c3 {
|
||||||
|
i2c-scl-rising-time-ns = <450>;
|
||||||
|
i2c-scl-falling-time-ns = <15>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c4 {
|
||||||
|
i2c-scl-rising-time-ns = <600>;
|
||||||
|
i2c-scl-falling-time-ns = <20>;
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2s0 {
|
||||||
|
rockchip,playback-channels = <8>;
|
||||||
|
rockchip,capture-channels = <8>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2s1 {
|
||||||
|
rockchip,playback-channels = <2>;
|
||||||
|
rockchip,capture-channels = <2>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2s2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&io_domains {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
bt656-supply = <&vcc1v8_dvp>;
|
||||||
|
audio-supply = <&vcca1v8_codec>;
|
||||||
|
sdmmc-supply = <&vcc_sdio>;
|
||||||
|
gpio1830-supply = <&vcc_3v0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&pmu_io_domains {
|
||||||
|
pmu1830-supply = <&vcc_3v0>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&pinctrl {
|
||||||
|
buttons {
|
||||||
|
pwrbtn: pwrbtn {
|
||||||
|
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fusb302x {
|
||||||
|
fusb0_int: fusb0-int {
|
||||||
|
rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
leds {
|
||||||
|
work_led_gpio: work_led-gpio {
|
||||||
|
rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
|
||||||
|
diy_led_gpio: diy_led-gpio {
|
||||||
|
rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
pcie {
|
||||||
|
pcie_pwr_en: pcie-pwr-en {
|
||||||
|
rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
pmic {
|
||||||
|
pmic_int_l: pmic-int-l {
|
||||||
|
rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vsel1_gpio: vsel1-gpio {
|
||||||
|
rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
|
};
|
||||||
|
|
||||||
|
vsel2_gpio: vsel2-gpio {
|
||||||
|
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>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
usb-typec {
|
||||||
|
vcc5v0_typec_en: vcc5v0_typec_en {
|
||||||
|
rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
usb2 {
|
||||||
|
vcc5v0_host_en: vcc5v0-host-en {
|
||||||
|
rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&pwm0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&pwm2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&saradc {
|
||||||
|
vref-supply = <&vcca1v8_s3>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&sdmmc {
|
||||||
|
bus-width = <4>;
|
||||||
|
cap-mmc-highspeed;
|
||||||
|
cap-sd-highspeed;
|
||||||
|
cd-gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
|
||||||
|
disable-wp;
|
||||||
|
max-frequency = <150000000>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&sdhci {
|
||||||
|
bus-width = <8>;
|
||||||
|
mmc-hs400-1_8v;
|
||||||
|
mmc-hs400-enhanced-strobe;
|
||||||
|
non-removable;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&tcphy0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&tcphy1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&tsadc {
|
||||||
|
/* tshut mode 0:CRU 1:GPIO */
|
||||||
|
rockchip,hw-tshut-mode = <1>;
|
||||||
|
/* tshut polarity 0:LOW 1:HIGH */
|
||||||
|
rockchip,hw-tshut-polarity = <1>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&u2phy0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
u2phy0_otg: otg-port {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
u2phy0_host: host-port {
|
||||||
|
phy-supply = <&vcc5v0_host>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&u2phy1 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
u2phy1_otg: otg-port {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
u2phy1_host: host-port {
|
||||||
|
phy-supply = <&vcc5v0_host>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&uart0 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart0_xfer &uart0_cts>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&uart2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb_host0_ehci {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb_host0_ohci {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb_host1_ehci {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb_host1_ohci {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usbdrd3_0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usbdrd_dwc3_0 {
|
||||||
|
status = "okay";
|
||||||
|
dr_mode = "otg";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usbdrd3_1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usbdrd_dwc3_1 {
|
||||||
|
status = "okay";
|
||||||
|
dr_mode = "host";
|
||||||
|
};
|
||||||
|
|
||||||
|
&vopb {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&vopb_mmu {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&vopl {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&vopl_mmu {
|
||||||
|
status = "okay";
|
||||||
|
};
|
|
@ -423,6 +423,10 @@ enum {
|
||||||
GRF_GPIO3B6_SEL_SHIFT = 12,
|
GRF_GPIO3B6_SEL_SHIFT = 12,
|
||||||
GRF_GPIO3B6_SEL_MASK = 3 << GRF_GPIO3B6_SEL_SHIFT,
|
GRF_GPIO3B6_SEL_MASK = 3 << GRF_GPIO3B6_SEL_SHIFT,
|
||||||
GRF_MAC_RXCLK = 1,
|
GRF_MAC_RXCLK = 1,
|
||||||
|
GRF_UART3_SIN = 2,
|
||||||
|
GRF_GPIO3B7_SEL_SHIFT = 14,
|
||||||
|
GRF_GPIO3B7_SEL_MASK = 3 << GRF_GPIO3B7_SEL_SHIFT,
|
||||||
|
GRF_UART3_SOUT = 2,
|
||||||
|
|
||||||
/* GRF_GPIO3C_IOMUX */
|
/* GRF_GPIO3C_IOMUX */
|
||||||
GRF_GPIO3C1_SEL_SHIFT = 2,
|
GRF_GPIO3C1_SEL_SHIFT = 2,
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
"""
|
"""
|
||||||
A script to generate FIT image source for rockchip boards
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
with ARM Trusted Firmware
|
#
|
||||||
and multiple device trees (given on the command line)
|
# A script to generate FIT image source for rockchip boards
|
||||||
|
# with ARM Trusted Firmware
|
||||||
usage: $0 <dt_name> [<dt_name> [<dt_name] ...]
|
# and multiple device trees (given on the command line)
|
||||||
|
#
|
||||||
|
# usage: $0 <dt_name> [<dt_name> [<dt_name] ...]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
@ -14,26 +16,27 @@ import getopt
|
||||||
# pip install pyelftools
|
# pip install pyelftools
|
||||||
from elftools.elf.elffile import ELFFile
|
from elftools.elf.elffile import ELFFile
|
||||||
|
|
||||||
ELF_SEG_P_TYPE='p_type'
|
ELF_SEG_P_TYPE = 'p_type'
|
||||||
ELF_SEG_P_PADDR='p_paddr'
|
ELF_SEG_P_PADDR = 'p_paddr'
|
||||||
ELF_SEG_P_VADDR='p_vaddr'
|
ELF_SEG_P_VADDR = 'p_vaddr'
|
||||||
ELF_SEG_P_OFFSET='p_offset'
|
ELF_SEG_P_OFFSET = 'p_offset'
|
||||||
ELF_SEG_P_FILESZ='p_filesz'
|
ELF_SEG_P_FILESZ = 'p_filesz'
|
||||||
ELF_SEG_P_MEMSZ='p_memsz'
|
ELF_SEG_P_MEMSZ = 'p_memsz'
|
||||||
|
|
||||||
DT_HEADER="""// SPDX-License-Identifier: GPL-2.0+ OR X11
|
DT_HEADER = """
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2017 Fuzhou Rockchip Electronics Co., Ltd
|
* This is a generated file.
|
||||||
*
|
|
||||||
* Minimal dts for a SPL FIT image payload.
|
|
||||||
*/
|
*/
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
description = "Configuration to load ATF before U-Boot";
|
description = "FIT image for U-Boot with bl31 (TF-A)";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
||||||
images {
|
images {
|
||||||
|
"""
|
||||||
|
|
||||||
|
DT_UBOOT = """
|
||||||
uboot {
|
uboot {
|
||||||
description = "U-Boot (64-bit)";
|
description = "U-Boot (64-bit)";
|
||||||
data = /incbin/("u-boot-nodtb.bin");
|
data = /incbin/("u-boot-nodtb.bin");
|
||||||
|
@ -46,18 +49,14 @@ DT_HEADER="""// SPDX-License-Identifier: GPL-2.0+ OR X11
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
DT_IMAGES_NODE_END="""
|
DT_IMAGES_NODE_END = """ };
|
||||||
};
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
DT_END="""
|
DT_END = "};"
|
||||||
};
|
|
||||||
"""
|
|
||||||
|
|
||||||
def append_atf_node(file, atf_index, phy_addr, elf_entry):
|
def append_bl31_node(file, atf_index, phy_addr, elf_entry):
|
||||||
"""
|
# Append BL31 DT node to input FIT dts file.
|
||||||
Append ATF DT node to input FIT dts file.
|
|
||||||
"""
|
|
||||||
data = 'bl31_0x%08x.bin' % phy_addr
|
data = 'bl31_0x%08x.bin' % phy_addr
|
||||||
file.write('\t\tatf_%d {\n' % atf_index)
|
file.write('\t\tatf_%d {\n' % atf_index)
|
||||||
file.write('\t\t\tdescription = \"ARM Trusted Firmware\";\n')
|
file.write('\t\t\tdescription = \"ARM Trusted Firmware\";\n')
|
||||||
|
@ -73,9 +72,7 @@ def append_atf_node(file, atf_index, phy_addr, elf_entry):
|
||||||
file.write('\n')
|
file.write('\n')
|
||||||
|
|
||||||
def append_fdt_node(file, dtbs):
|
def append_fdt_node(file, dtbs):
|
||||||
"""
|
# Append FDT nodes.
|
||||||
Append FDT nodes.
|
|
||||||
"""
|
|
||||||
cnt = 1
|
cnt = 1
|
||||||
for dtb in dtbs:
|
for dtb in dtbs:
|
||||||
dtname = os.path.basename(dtb)
|
dtname = os.path.basename(dtb)
|
||||||
|
@ -88,14 +85,14 @@ def append_fdt_node(file, dtbs):
|
||||||
file.write('\n')
|
file.write('\n')
|
||||||
cnt = cnt + 1
|
cnt = cnt + 1
|
||||||
|
|
||||||
def append_conf_section(file, cnt, dtname, atf_cnt):
|
def append_conf_section(file, cnt, dtname, segments):
|
||||||
file.write('\t\tconfig_%d {\n' % cnt)
|
file.write('\t\tconfig_%d {\n' % cnt)
|
||||||
file.write('\t\t\tdescription = "%s";\n' % dtname)
|
file.write('\t\t\tdescription = "%s";\n' % dtname)
|
||||||
file.write('\t\t\tfirmware = "atf_1";\n')
|
file.write('\t\t\tfirmware = "atf_1";\n')
|
||||||
file.write('\t\t\tloadables = "uboot",')
|
file.write('\t\t\tloadables = "uboot",')
|
||||||
for i in range(1, atf_cnt):
|
for i in range(1, segments):
|
||||||
file.write('"atf_%d"' % (i+1))
|
file.write('"atf_%d"' % (i))
|
||||||
if i != (atf_cnt - 1):
|
if i != (segments - 1):
|
||||||
file.write(',')
|
file.write(',')
|
||||||
else:
|
else:
|
||||||
file.write(';\n')
|
file.write(';\n')
|
||||||
|
@ -103,57 +100,58 @@ def append_conf_section(file, cnt, dtname, atf_cnt):
|
||||||
file.write('\t\t};\n')
|
file.write('\t\t};\n')
|
||||||
file.write('\n')
|
file.write('\n')
|
||||||
|
|
||||||
def append_conf_node(file, dtbs, atf_cnt):
|
def append_conf_node(file, dtbs, segments):
|
||||||
"""
|
# Append configeration nodes.
|
||||||
Append configeration nodes.
|
|
||||||
"""
|
|
||||||
cnt = 1
|
cnt = 1
|
||||||
file.write('\tconfigurations {\n')
|
file.write('\tconfigurations {\n')
|
||||||
file.write('\t\tdefault = "config_1";\n')
|
file.write('\t\tdefault = "config_1";\n')
|
||||||
for dtb in dtbs:
|
for dtb in dtbs:
|
||||||
dtname = os.path.basename(dtb)
|
dtname = os.path.basename(dtb)
|
||||||
append_conf_section(file, cnt, dtname, atf_cnt)
|
append_conf_section(file, cnt, dtname, segments)
|
||||||
cnt = cnt + 1
|
cnt = cnt + 1
|
||||||
file.write('\t};\n')
|
file.write('\t};\n')
|
||||||
file.write('\n')
|
file.write('\n')
|
||||||
|
|
||||||
def generate_atf_fit_dts(fit_file_name, bl31_file_name, uboot_file_name, dtbs_file_name):
|
def generate_atf_fit_dts_uboot(fit_file, uboot_file_name):
|
||||||
"""
|
|
||||||
Generate FIT script for ATF image.
|
|
||||||
"""
|
|
||||||
if fit_file_name != sys.stdout:
|
|
||||||
fit_file = open(fit_file_name, "wb")
|
|
||||||
else:
|
|
||||||
fit_file = sys.stdout
|
|
||||||
|
|
||||||
num_load_seg = 0
|
num_load_seg = 0
|
||||||
p_paddr = 0xFFFFFFFF
|
p_paddr = 0xFFFFFFFF
|
||||||
with open(uboot_file_name, 'rb') as uboot_file:
|
with open(uboot_file_name, 'rb') as uboot_file:
|
||||||
uboot = ELFFile(uboot_file)
|
uboot = ELFFile(uboot_file)
|
||||||
for i in range(uboot.num_segments()):
|
for i in range(uboot.num_segments()):
|
||||||
seg = uboot.get_segment(i)
|
seg = uboot.get_segment(i)
|
||||||
if ('PT_LOAD' == seg.__getitem__(ELF_SEG_P_TYPE)):
|
if seg.__getitem__(ELF_SEG_P_TYPE) == 'PT_LOAD':
|
||||||
p_paddr = seg.__getitem__(ELF_SEG_P_PADDR)
|
p_paddr = seg.__getitem__(ELF_SEG_P_PADDR)
|
||||||
num_load_seg = num_load_seg + 1
|
num_load_seg = num_load_seg + 1
|
||||||
|
|
||||||
assert (p_paddr != 0xFFFFFFFF and num_load_seg == 1)
|
assert (p_paddr != 0xFFFFFFFF and num_load_seg == 1)
|
||||||
|
|
||||||
fit_file.write(DT_HEADER % p_paddr)
|
fit_file.write(DT_UBOOT % p_paddr)
|
||||||
|
|
||||||
|
def generate_atf_fit_dts_bl31(fit_file, bl31_file_name, dtbs_file_name):
|
||||||
with open(bl31_file_name, 'rb') as bl31_file:
|
with open(bl31_file_name, 'rb') as bl31_file:
|
||||||
bl31 = ELFFile(bl31_file)
|
bl31 = ELFFile(bl31_file)
|
||||||
elf_entry = bl31.header['e_entry']
|
elf_entry = bl31.header['e_entry']
|
||||||
for i in range(bl31.num_segments()):
|
segments = bl31.num_segments()
|
||||||
|
for i in range(segments):
|
||||||
seg = bl31.get_segment(i)
|
seg = bl31.get_segment(i)
|
||||||
if ('PT_LOAD' == seg.__getitem__(ELF_SEG_P_TYPE)):
|
if seg.__getitem__(ELF_SEG_P_TYPE) == 'PT_LOAD':
|
||||||
paddr = seg.__getitem__(ELF_SEG_P_PADDR)
|
paddr = seg.__getitem__(ELF_SEG_P_PADDR)
|
||||||
p= seg.__getitem__(ELF_SEG_P_PADDR)
|
append_bl31_node(fit_file, i + 1, paddr, elf_entry)
|
||||||
append_atf_node(fit_file, i+1, paddr, elf_entry)
|
|
||||||
atf_cnt = i+1
|
|
||||||
append_fdt_node(fit_file, dtbs_file_name)
|
append_fdt_node(fit_file, dtbs_file_name)
|
||||||
fit_file.write('%s\n' % DT_IMAGES_NODE_END)
|
fit_file.write(DT_IMAGES_NODE_END)
|
||||||
append_conf_node(fit_file, dtbs_file_name, atf_cnt)
|
append_conf_node(fit_file, dtbs_file_name, segments)
|
||||||
fit_file.write('%s\n' % DT_END)
|
|
||||||
|
def generate_atf_fit_dts(fit_file_name, bl31_file_name, uboot_file_name, dtbs_file_name):
|
||||||
|
# Generate FIT script for ATF image.
|
||||||
|
if fit_file_name != sys.stdout:
|
||||||
|
fit_file = open(fit_file_name, "wb")
|
||||||
|
else:
|
||||||
|
fit_file = sys.stdout
|
||||||
|
|
||||||
|
fit_file.write(DT_HEADER)
|
||||||
|
generate_atf_fit_dts_uboot(fit_file, uboot_file_name)
|
||||||
|
generate_atf_fit_dts_bl31(fit_file, bl31_file_name, dtbs_file_name)
|
||||||
|
fit_file.write(DT_END)
|
||||||
|
|
||||||
if fit_file_name != sys.stdout:
|
if fit_file_name != sys.stdout:
|
||||||
fit_file.close()
|
fit_file.close()
|
||||||
|
@ -165,56 +163,33 @@ def generate_atf_binary(bl31_file_name):
|
||||||
num = bl31.num_segments()
|
num = bl31.num_segments()
|
||||||
for i in range(num):
|
for i in range(num):
|
||||||
seg = bl31.get_segment(i)
|
seg = bl31.get_segment(i)
|
||||||
if ('PT_LOAD' == seg.__getitem__(ELF_SEG_P_TYPE)):
|
if seg.__getitem__(ELF_SEG_P_TYPE) == 'PT_LOAD':
|
||||||
paddr = seg.__getitem__(ELF_SEG_P_PADDR)
|
paddr = seg.__getitem__(ELF_SEG_P_PADDR)
|
||||||
file_name = 'bl31_0x%08x.bin' % paddr
|
file_name = 'bl31_0x%08x.bin' % paddr
|
||||||
with open(file_name, "wb") as atf:
|
with open(file_name, "wb") as atf:
|
||||||
atf.write(seg.data());
|
atf.write(seg.data())
|
||||||
|
|
||||||
def get_bl31_segments_info(bl31_file_name):
|
|
||||||
"""
|
|
||||||
Get load offset, physical offset, file size
|
|
||||||
from bl31 elf file program headers.
|
|
||||||
"""
|
|
||||||
with open(bl31_file_name) as bl31_file:
|
|
||||||
bl31 = ELFFile(bl31_file)
|
|
||||||
|
|
||||||
num = bl31.num_segments()
|
|
||||||
print('Number of Segments : %d' % bl31.num_segments())
|
|
||||||
for i in range(num):
|
|
||||||
print('Segment %d' % i)
|
|
||||||
seg = bl31.get_segment(i)
|
|
||||||
ptype = seg[ELF_SEG_P_TYPE]
|
|
||||||
poffset = seg[ELF_SEG_P_OFFSET]
|
|
||||||
pmemsz = seg[ELF_SEG_P_MEMSZ]
|
|
||||||
pfilesz = seg[ELF_SEG_P_FILESZ]
|
|
||||||
print('type: %s\nfilesz: %08x\nmemsz: %08x\noffset: %08x' % (ptype, pfilesz, pmemsz, poffset))
|
|
||||||
paddr = seg[ELF_SEG_P_PADDR]
|
|
||||||
print('paddr: %08x' % paddr)
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
uboot_elf="./u-boot"
|
uboot_elf = "./u-boot"
|
||||||
bl31_elf="./bl31.elf"
|
bl31_elf = "./bl31.elf"
|
||||||
FIT_ITS=sys.stdout
|
fit_its = sys.stdout
|
||||||
|
|
||||||
opts, args = getopt.getopt(sys.argv[1:], "o:u:b:h")
|
opts, args = getopt.getopt(sys.argv[1:], "o:u:b:h")
|
||||||
for opt, val in opts:
|
for opt, val in opts:
|
||||||
if opt == "-o":
|
if opt == "-o":
|
||||||
FIT_ITS=val
|
fit_its = val
|
||||||
elif opt == "-u":
|
elif opt == "-u":
|
||||||
uboot_elf=val
|
uboot_elf = val
|
||||||
elif opt == "-b":
|
elif opt == "-b":
|
||||||
bl31_elf=val
|
bl31_elf = val
|
||||||
elif opt == "-h":
|
elif opt == "-h":
|
||||||
print(__doc__)
|
print(__doc__)
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
||||||
dtbs = args
|
dtbs = args
|
||||||
#get_bl31_segments_info("u-boot")
|
|
||||||
#get_bl31_segments_info("bl31.elf")
|
|
||||||
|
|
||||||
generate_atf_fit_dts(FIT_ITS, bl31_elf, uboot_elf, dtbs)
|
generate_atf_fit_dts(fit_its, bl31_elf, uboot_elf, dtbs)
|
||||||
generate_atf_binary(bl31_elf);
|
generate_atf_binary(bl31_elf)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
|
@ -80,6 +80,14 @@ void board_debug_uart_init(void)
|
||||||
rk_clrsetreg(&grf->gpio2c_iomux,
|
rk_clrsetreg(&grf->gpio2c_iomux,
|
||||||
GRF_GPIO2C1_SEL_MASK,
|
GRF_GPIO2C1_SEL_MASK,
|
||||||
GRF_UART0BT_SOUT << GRF_GPIO2C1_SEL_SHIFT);
|
GRF_UART0BT_SOUT << GRF_GPIO2C1_SEL_SHIFT);
|
||||||
|
#elif defined(CONFIG_DEBUG_UART_BASE) && (CONFIG_DEBUG_UART_BASE == 0xff1B0000)
|
||||||
|
/* Enable early UART3 on the RK3399 */
|
||||||
|
rk_clrsetreg(&grf->gpio3b_iomux,
|
||||||
|
GRF_GPIO3B6_SEL_MASK,
|
||||||
|
GRF_UART3_SIN << GRF_GPIO3B6_SEL_SHIFT);
|
||||||
|
rk_clrsetreg(&grf->gpio3b_iomux,
|
||||||
|
GRF_GPIO3B7_SEL_MASK,
|
||||||
|
GRF_UART3_SOUT << GRF_GPIO3B7_SEL_SHIFT);
|
||||||
#else
|
#else
|
||||||
# ifdef CONFIG_TARGET_CHROMEBOOK_BOB
|
# ifdef CONFIG_TARGET_CHROMEBOOK_BOB
|
||||||
rk_setreg(&grf->io_vsel, 1 << 0);
|
rk_setreg(&grf->io_vsel, 1 << 0);
|
||||||
|
|
|
@ -18,9 +18,29 @@ S: Maintained
|
||||||
F: configs/nanopi-m4-rk3399_defconfig
|
F: configs/nanopi-m4-rk3399_defconfig
|
||||||
F: arch/arm/dts/rk3399-nanopi-m4-u-boot.dtsi
|
F: arch/arm/dts/rk3399-nanopi-m4-u-boot.dtsi
|
||||||
|
|
||||||
|
NANOPI-NEO4
|
||||||
|
M: Jagan Teki <jagan@amarulasolutions.com>
|
||||||
|
S: Maintained
|
||||||
|
F: configs/nanopi-neo4-rk3399_defconfig
|
||||||
|
F: arch/arm/dts/rk3399-nanopi-neo4-u-boot.dtsi
|
||||||
|
|
||||||
ORANGEPI-RK3399
|
ORANGEPI-RK3399
|
||||||
M: Jagan Teki <jagan@amarulasolutions.com>
|
M: Jagan Teki <jagan@amarulasolutions.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: configs/orangepi-rk3399_defconfig
|
F: configs/orangepi-rk3399_defconfig
|
||||||
F: arch/arm/dts/rk3399-u-boot.dtsi
|
F: arch/arm/dts/rk3399-u-boot.dtsi
|
||||||
F: arch/arm/dts/rk3399-orangepi-u-boot.dtsi
|
F: arch/arm/dts/rk3399-orangepi-u-boot.dtsi
|
||||||
|
|
||||||
|
ROCK-PI-4
|
||||||
|
M: Akash Gajjar <akash@openedev.com>
|
||||||
|
M: Jagan Teki <jagan@amarulasolutions.com>
|
||||||
|
S: Maintained
|
||||||
|
F: configs/rock-pi-4-rk3399_defconfig
|
||||||
|
F: arch/arm/dts/rk3399-rock-pi-4-u-boot.dtsi
|
||||||
|
|
||||||
|
ROCKPRO64
|
||||||
|
M: Akash Gajjar <akash@openedev.com>
|
||||||
|
M: Jagan Teki <jagan@amarulasolutions.com>
|
||||||
|
S: Maintained
|
||||||
|
F: configs/rockpro64-rk3399_defconfig
|
||||||
|
F: arch/arm/dts/rk3399-rockpro64-u-boot.dtsi
|
||||||
|
|
|
@ -16,6 +16,6 @@ config ENV_SIZE
|
||||||
default 0x2000
|
default 0x2000
|
||||||
|
|
||||||
config ENV_OFFSET
|
config ENV_OFFSET
|
||||||
default 0x3c000 if ENV_IS_IN_SPI_FLASH
|
default 0x3fc000 if ENV_IS_IN_SPI_FLASH
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -5,7 +5,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||||
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||||
CONFIG_SYS_MALLOC_F_LEN=0x4000
|
CONFIG_SYS_MALLOC_F_LEN=0x4000
|
||||||
CONFIG_ROCKCHIP_RK3399=y
|
CONFIG_ROCKCHIP_RK3399=y
|
||||||
CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x4000
|
CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x50000
|
||||||
CONFIG_NR_DRAM_BANKS=1
|
CONFIG_NR_DRAM_BANKS=1
|
||||||
CONFIG_SPL_STACK_R_ADDR=0x80000
|
CONFIG_SPL_STACK_R_ADDR=0x80000
|
||||||
CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
||||||
|
@ -14,9 +14,9 @@ CONFIG_DEBUG_UART=y
|
||||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-nanopc-t4.dtb"
|
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-nanopc-t4.dtb"
|
||||||
# CONFIG_DISPLAY_CPUINFO is not set
|
# CONFIG_DISPLAY_CPUINFO is not set
|
||||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||||
CONFIG_SPL_TEXT_BASE=0xff8c2000
|
|
||||||
CONFIG_SPL_STACK_R=y
|
CONFIG_SPL_STACK_R=y
|
||||||
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x4000
|
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000
|
||||||
|
CONFIG_TPL=y
|
||||||
CONFIG_CMD_BOOTZ=y
|
CONFIG_CMD_BOOTZ=y
|
||||||
CONFIG_CMD_GPT=y
|
CONFIG_CMD_GPT=y
|
||||||
CONFIG_CMD_MMC=y
|
CONFIG_CMD_MMC=y
|
||||||
|
@ -56,4 +56,5 @@ CONFIG_USB_ETHER_MCS7830=y
|
||||||
CONFIG_USB_ETHER_RTL8152=y
|
CONFIG_USB_ETHER_RTL8152=y
|
||||||
CONFIG_USB_ETHER_SMSC95XX=y
|
CONFIG_USB_ETHER_SMSC95XX=y
|
||||||
CONFIG_USE_TINY_PRINTF=y
|
CONFIG_USE_TINY_PRINTF=y
|
||||||
|
CONFIG_SPL_TINY_MEMSET=y
|
||||||
CONFIG_ERRNO_STR=y
|
CONFIG_ERRNO_STR=y
|
||||||
|
|
|
@ -5,7 +5,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||||
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||||
CONFIG_SYS_MALLOC_F_LEN=0x4000
|
CONFIG_SYS_MALLOC_F_LEN=0x4000
|
||||||
CONFIG_ROCKCHIP_RK3399=y
|
CONFIG_ROCKCHIP_RK3399=y
|
||||||
CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x4000
|
CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x50000
|
||||||
CONFIG_NR_DRAM_BANKS=1
|
CONFIG_NR_DRAM_BANKS=1
|
||||||
CONFIG_SPL_STACK_R_ADDR=0x80000
|
CONFIG_SPL_STACK_R_ADDR=0x80000
|
||||||
CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
||||||
|
@ -14,9 +14,9 @@ CONFIG_DEBUG_UART=y
|
||||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-nanopi-m4.dtb"
|
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-nanopi-m4.dtb"
|
||||||
# CONFIG_DISPLAY_CPUINFO is not set
|
# CONFIG_DISPLAY_CPUINFO is not set
|
||||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||||
CONFIG_SPL_TEXT_BASE=0xff8c2000
|
|
||||||
CONFIG_SPL_STACK_R=y
|
CONFIG_SPL_STACK_R=y
|
||||||
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x4000
|
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000
|
||||||
|
CONFIG_TPL=y
|
||||||
CONFIG_CMD_BOOTZ=y
|
CONFIG_CMD_BOOTZ=y
|
||||||
CONFIG_CMD_GPT=y
|
CONFIG_CMD_GPT=y
|
||||||
CONFIG_CMD_MMC=y
|
CONFIG_CMD_MMC=y
|
||||||
|
@ -56,4 +56,5 @@ CONFIG_USB_ETHER_MCS7830=y
|
||||||
CONFIG_USB_ETHER_RTL8152=y
|
CONFIG_USB_ETHER_RTL8152=y
|
||||||
CONFIG_USB_ETHER_SMSC95XX=y
|
CONFIG_USB_ETHER_SMSC95XX=y
|
||||||
CONFIG_USE_TINY_PRINTF=y
|
CONFIG_USE_TINY_PRINTF=y
|
||||||
|
CONFIG_SPL_TINY_MEMSET=y
|
||||||
CONFIG_ERRNO_STR=y
|
CONFIG_ERRNO_STR=y
|
||||||
|
|
60
configs/nanopi-neo4-rk3399_defconfig
Normal file
60
configs/nanopi-neo4-rk3399_defconfig
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
CONFIG_ARM=y
|
||||||
|
CONFIG_ARCH_ROCKCHIP=y
|
||||||
|
CONFIG_SYS_TEXT_BASE=0x00200000
|
||||||
|
CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||||
|
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||||
|
CONFIG_SYS_MALLOC_F_LEN=0x4000
|
||||||
|
CONFIG_ROCKCHIP_RK3399=y
|
||||||
|
CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x50000
|
||||||
|
CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
||||||
|
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||||
|
CONFIG_SPL_STACK_R_ADDR=0x80000
|
||||||
|
CONFIG_DEBUG_UART=y
|
||||||
|
CONFIG_NR_DRAM_BANKS=1
|
||||||
|
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-nanopi-neo4.dtb"
|
||||||
|
# CONFIG_DISPLAY_CPUINFO is not set
|
||||||
|
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||||
|
CONFIG_SPL_STACK_R=y
|
||||||
|
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000
|
||||||
|
CONFIG_CMD_BOOTZ=y
|
||||||
|
CONFIG_CMD_GPT=y
|
||||||
|
CONFIG_CMD_MMC=y
|
||||||
|
CONFIG_CMD_SF=y
|
||||||
|
CONFIG_CMD_USB=y
|
||||||
|
# CONFIG_CMD_SETEXPR is not set
|
||||||
|
CONFIG_CMD_TIME=y
|
||||||
|
CONFIG_SPL_OF_CONTROL=y
|
||||||
|
CONFIG_DEFAULT_DEVICE_TREE="rk3399-nanopi-neo4"
|
||||||
|
CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
|
||||||
|
CONFIG_TPL=y
|
||||||
|
CONFIG_ENV_IS_IN_MMC=y
|
||||||
|
CONFIG_ROCKCHIP_GPIO=y
|
||||||
|
CONFIG_SYS_I2C_ROCKCHIP=y
|
||||||
|
CONFIG_MMC_DW=y
|
||||||
|
CONFIG_MMC_DW_ROCKCHIP=y
|
||||||
|
CONFIG_MMC_SDHCI=y
|
||||||
|
CONFIG_MMC_SDHCI_ROCKCHIP=y
|
||||||
|
CONFIG_DM_ETH=y
|
||||||
|
CONFIG_ETH_DESIGNWARE=y
|
||||||
|
CONFIG_GMAC_ROCKCHIP=y
|
||||||
|
CONFIG_PMIC_RK8XX=y
|
||||||
|
CONFIG_REGULATOR_PWM=y
|
||||||
|
CONFIG_REGULATOR_RK8XX=y
|
||||||
|
CONFIG_PWM_ROCKCHIP=y
|
||||||
|
CONFIG_BAUDRATE=1500000
|
||||||
|
CONFIG_DEBUG_UART_SHIFT=2
|
||||||
|
CONFIG_SYSRESET=y
|
||||||
|
CONFIG_USB=y
|
||||||
|
CONFIG_USB_XHCI_HCD=y
|
||||||
|
CONFIG_USB_XHCI_DWC3=y
|
||||||
|
CONFIG_USB_EHCI_HCD=y
|
||||||
|
CONFIG_USB_EHCI_GENERIC=y
|
||||||
|
CONFIG_USB_HOST_ETHER=y
|
||||||
|
CONFIG_USB_ETHER_ASIX=y
|
||||||
|
CONFIG_USB_ETHER_ASIX88179=y
|
||||||
|
CONFIG_USB_ETHER_MCS7830=y
|
||||||
|
CONFIG_USB_ETHER_RTL8152=y
|
||||||
|
CONFIG_USB_ETHER_SMSC95XX=y
|
||||||
|
CONFIG_USE_TINY_PRINTF=y
|
||||||
|
CONFIG_SPL_TINY_MEMSET=y
|
||||||
|
CONFIG_ERRNO_STR=y
|
|
@ -5,7 +5,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||||
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||||
CONFIG_SYS_MALLOC_F_LEN=0x4000
|
CONFIG_SYS_MALLOC_F_LEN=0x4000
|
||||||
CONFIG_ROCKCHIP_RK3399=y
|
CONFIG_ROCKCHIP_RK3399=y
|
||||||
CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x4000
|
CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x50000
|
||||||
CONFIG_NR_DRAM_BANKS=1
|
CONFIG_NR_DRAM_BANKS=1
|
||||||
CONFIG_SPL_STACK_R_ADDR=0x80000
|
CONFIG_SPL_STACK_R_ADDR=0x80000
|
||||||
CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
||||||
|
@ -14,9 +14,9 @@ CONFIG_DEBUG_UART=y
|
||||||
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-orangepi.dtb"
|
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-orangepi.dtb"
|
||||||
# CONFIG_DISPLAY_CPUINFO is not set
|
# CONFIG_DISPLAY_CPUINFO is not set
|
||||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||||
CONFIG_SPL_TEXT_BASE=0xff8c2000
|
|
||||||
CONFIG_SPL_STACK_R=y
|
CONFIG_SPL_STACK_R=y
|
||||||
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x4000
|
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000
|
||||||
|
CONFIG_TPL=y
|
||||||
CONFIG_CMD_BOOTZ=y
|
CONFIG_CMD_BOOTZ=y
|
||||||
CONFIG_CMD_GPT=y
|
CONFIG_CMD_GPT=y
|
||||||
CONFIG_CMD_MMC=y
|
CONFIG_CMD_MMC=y
|
||||||
|
@ -56,4 +56,5 @@ CONFIG_USB_ETHER_MCS7830=y
|
||||||
CONFIG_USB_ETHER_RTL8152=y
|
CONFIG_USB_ETHER_RTL8152=y
|
||||||
CONFIG_USB_ETHER_SMSC95XX=y
|
CONFIG_USB_ETHER_SMSC95XX=y
|
||||||
CONFIG_USE_TINY_PRINTF=y
|
CONFIG_USE_TINY_PRINTF=y
|
||||||
|
CONFIG_SPL_TINY_MEMSET=y
|
||||||
CONFIG_ERRNO_STR=y
|
CONFIG_ERRNO_STR=y
|
||||||
|
|
60
configs/rock-pi-4-rk3399_defconfig
Normal file
60
configs/rock-pi-4-rk3399_defconfig
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
CONFIG_ARM=y
|
||||||
|
CONFIG_ARCH_ROCKCHIP=y
|
||||||
|
CONFIG_SYS_TEXT_BASE=0x00200000
|
||||||
|
CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||||
|
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||||
|
CONFIG_SYS_MALLOC_F_LEN=0x4000
|
||||||
|
CONFIG_ROCKCHIP_RK3399=y
|
||||||
|
CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x50000
|
||||||
|
CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
||||||
|
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||||
|
CONFIG_SPL_STACK_R_ADDR=0x80000
|
||||||
|
CONFIG_DEBUG_UART=y
|
||||||
|
CONFIG_NR_DRAM_BANKS=1
|
||||||
|
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rock-pi-4.dtb"
|
||||||
|
# CONFIG_DISPLAY_CPUINFO is not set
|
||||||
|
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||||
|
CONFIG_SPL_STACK_R=y
|
||||||
|
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000
|
||||||
|
CONFIG_CMD_BOOTZ=y
|
||||||
|
CONFIG_CMD_GPT=y
|
||||||
|
CONFIG_CMD_MMC=y
|
||||||
|
CONFIG_CMD_SF=y
|
||||||
|
CONFIG_CMD_USB=y
|
||||||
|
# CONFIG_CMD_SETEXPR is not set
|
||||||
|
CONFIG_CMD_TIME=y
|
||||||
|
CONFIG_SPL_OF_CONTROL=y
|
||||||
|
CONFIG_DEFAULT_DEVICE_TREE="rk3399-rock-pi-4"
|
||||||
|
CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
|
||||||
|
CONFIG_TPL=y
|
||||||
|
CONFIG_ENV_IS_IN_MMC=y
|
||||||
|
CONFIG_ROCKCHIP_GPIO=y
|
||||||
|
CONFIG_SYS_I2C_ROCKCHIP=y
|
||||||
|
CONFIG_MMC_DW=y
|
||||||
|
CONFIG_MMC_DW_ROCKCHIP=y
|
||||||
|
CONFIG_MMC_SDHCI=y
|
||||||
|
CONFIG_MMC_SDHCI_ROCKCHIP=y
|
||||||
|
CONFIG_DM_ETH=y
|
||||||
|
CONFIG_ETH_DESIGNWARE=y
|
||||||
|
CONFIG_GMAC_ROCKCHIP=y
|
||||||
|
CONFIG_PMIC_RK8XX=y
|
||||||
|
CONFIG_REGULATOR_PWM=y
|
||||||
|
CONFIG_REGULATOR_RK8XX=y
|
||||||
|
CONFIG_PWM_ROCKCHIP=y
|
||||||
|
CONFIG_BAUDRATE=1500000
|
||||||
|
CONFIG_DEBUG_UART_SHIFT=2
|
||||||
|
CONFIG_SYSRESET=y
|
||||||
|
CONFIG_USB=y
|
||||||
|
CONFIG_USB_XHCI_HCD=y
|
||||||
|
CONFIG_USB_XHCI_DWC3=y
|
||||||
|
CONFIG_USB_EHCI_HCD=y
|
||||||
|
CONFIG_USB_EHCI_GENERIC=y
|
||||||
|
CONFIG_USB_HOST_ETHER=y
|
||||||
|
CONFIG_USB_ETHER_ASIX=y
|
||||||
|
CONFIG_USB_ETHER_ASIX88179=y
|
||||||
|
CONFIG_USB_ETHER_MCS7830=y
|
||||||
|
CONFIG_USB_ETHER_RTL8152=y
|
||||||
|
CONFIG_USB_ETHER_SMSC95XX=y
|
||||||
|
CONFIG_USE_TINY_PRINTF=y
|
||||||
|
CONFIG_SPL_TINY_MEMSET=y
|
||||||
|
CONFIG_ERRNO_STR=y
|
60
configs/rockpro64-rk3399_defconfig
Normal file
60
configs/rockpro64-rk3399_defconfig
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
CONFIG_ARM=y
|
||||||
|
CONFIG_ARCH_ROCKCHIP=y
|
||||||
|
CONFIG_SYS_TEXT_BASE=0x00200000
|
||||||
|
CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||||
|
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||||
|
CONFIG_SYS_MALLOC_F_LEN=0x4000
|
||||||
|
CONFIG_ROCKCHIP_RK3399=y
|
||||||
|
CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x50000
|
||||||
|
CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
||||||
|
CONFIG_DEBUG_UART_CLOCK=24000000
|
||||||
|
CONFIG_SPL_STACK_R_ADDR=0x80000
|
||||||
|
CONFIG_DEBUG_UART=y
|
||||||
|
CONFIG_NR_DRAM_BANKS=1
|
||||||
|
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rockpro64.dtb"
|
||||||
|
# CONFIG_DISPLAY_CPUINFO is not set
|
||||||
|
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||||
|
CONFIG_SPL_STACK_R=y
|
||||||
|
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000
|
||||||
|
CONFIG_CMD_BOOTZ=y
|
||||||
|
CONFIG_CMD_GPT=y
|
||||||
|
CONFIG_CMD_MMC=y
|
||||||
|
CONFIG_CMD_SF=y
|
||||||
|
CONFIG_CMD_USB=y
|
||||||
|
# CONFIG_CMD_SETEXPR is not set
|
||||||
|
CONFIG_CMD_TIME=y
|
||||||
|
CONFIG_SPL_OF_CONTROL=y
|
||||||
|
CONFIG_DEFAULT_DEVICE_TREE="rk3399-rockpro64"
|
||||||
|
CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
|
||||||
|
CONFIG_TPL=y
|
||||||
|
CONFIG_ENV_IS_IN_MMC=y
|
||||||
|
CONFIG_ROCKCHIP_GPIO=y
|
||||||
|
CONFIG_SYS_I2C_ROCKCHIP=y
|
||||||
|
CONFIG_MMC_DW=y
|
||||||
|
CONFIG_MMC_DW_ROCKCHIP=y
|
||||||
|
CONFIG_MMC_SDHCI=y
|
||||||
|
CONFIG_MMC_SDHCI_ROCKCHIP=y
|
||||||
|
CONFIG_DM_ETH=y
|
||||||
|
CONFIG_ETH_DESIGNWARE=y
|
||||||
|
CONFIG_GMAC_ROCKCHIP=y
|
||||||
|
CONFIG_PMIC_RK8XX=y
|
||||||
|
CONFIG_REGULATOR_PWM=y
|
||||||
|
CONFIG_REGULATOR_RK8XX=y
|
||||||
|
CONFIG_PWM_ROCKCHIP=y
|
||||||
|
CONFIG_BAUDRATE=1500000
|
||||||
|
CONFIG_DEBUG_UART_SHIFT=2
|
||||||
|
CONFIG_SYSRESET=y
|
||||||
|
CONFIG_USB=y
|
||||||
|
CONFIG_USB_XHCI_HCD=y
|
||||||
|
CONFIG_USB_XHCI_DWC3=y
|
||||||
|
CONFIG_USB_EHCI_HCD=y
|
||||||
|
CONFIG_USB_EHCI_GENERIC=y
|
||||||
|
CONFIG_USB_HOST_ETHER=y
|
||||||
|
CONFIG_USB_ETHER_ASIX=y
|
||||||
|
CONFIG_USB_ETHER_ASIX88179=y
|
||||||
|
CONFIG_USB_ETHER_MCS7830=y
|
||||||
|
CONFIG_USB_ETHER_RTL8152=y
|
||||||
|
CONFIG_USB_ETHER_SMSC95XX=y
|
||||||
|
CONFIG_USE_TINY_PRINTF=y
|
||||||
|
CONFIG_SPL_TINY_MEMSET=y
|
||||||
|
CONFIG_ERRNO_STR=y
|
|
@ -173,7 +173,10 @@ For example:
|
||||||
=> make u-boot.itb
|
=> make u-boot.itb
|
||||||
|
|
||||||
(Get spl/u-boot-spl-dtb.bin, u-boot.itb images and some boards would get
|
(Get spl/u-boot-spl-dtb.bin, u-boot.itb images and some boards would get
|
||||||
spl/u-boot-spl.bin since it doesn't enable CONFIG_SPL_OF_CONTROL)
|
spl/u-boot-spl.bin since it doesn't enable CONFIG_SPL_OF_CONTROL
|
||||||
|
|
||||||
|
If TPL enabled on the target, get tpl/u-boot-tpl-dtb.bin or tpl/u-boot-tpl.bin
|
||||||
|
if CONFIG_TPL_OF_CONTROL not enabled)
|
||||||
|
|
||||||
Writing to the board with USB
|
Writing to the board with USB
|
||||||
=============================
|
=============================
|
||||||
|
@ -455,6 +458,52 @@ Net: eth0: ethernet@fe300000
|
||||||
Hit any key to stop autoboot: 0
|
Hit any key to stop autoboot: 0
|
||||||
=>
|
=>
|
||||||
|
|
||||||
|
Option 3: Package the image with TPL:
|
||||||
|
|
||||||
|
- Prefix rk3399 header to TPL image
|
||||||
|
|
||||||
|
=> cd /path/to/u-boot
|
||||||
|
=> ./tools/mkimage -n rk3399 -T rksd -d tpl/u-boot-tpl-dtb.bin out
|
||||||
|
|
||||||
|
- Concatinate tpl with spl
|
||||||
|
|
||||||
|
=> cd /path/to/u-boot
|
||||||
|
=> cat ./spl/u-boot-spl-dtb.bin >> out
|
||||||
|
|
||||||
|
- Write tpl+spl at 64th sector
|
||||||
|
|
||||||
|
=> sudo dd if=out of=/dev/sdc seek=64
|
||||||
|
|
||||||
|
- Write U-Boot proper at 16384 sector
|
||||||
|
|
||||||
|
=> sudo dd if=u-boot.itb of=/dev/sdc seek=16384
|
||||||
|
=> sync
|
||||||
|
|
||||||
|
Put this SD (or micro-SD) card into your board and reset it. You should see
|
||||||
|
something like:
|
||||||
|
|
||||||
|
U-Boot TPL board init
|
||||||
|
Trying to boot from BOOTROM
|
||||||
|
Returning to boot ROM...
|
||||||
|
|
||||||
|
U-Boot SPL board init
|
||||||
|
Trying to boot from MMC1
|
||||||
|
|
||||||
|
|
||||||
|
U-Boot 2019.07-rc1-00241-g5b3244767a (May 08 2019 - 10:51:06 +0530)
|
||||||
|
|
||||||
|
Model: Orange Pi RK3399 Board
|
||||||
|
DRAM: 2 GiB
|
||||||
|
MMC: dwmmc@fe310000: 2, dwmmc@fe320000: 1, sdhci@fe330000: 0
|
||||||
|
Loading Environment from MMC... OK
|
||||||
|
In: serial@ff1a0000
|
||||||
|
Out: serial@ff1a0000
|
||||||
|
Err: serial@ff1a0000
|
||||||
|
Model: Orange Pi RK3399 Board
|
||||||
|
Net: eth0: ethernet@fe300000
|
||||||
|
Hit any key to stop autoboot: 0
|
||||||
|
=>
|
||||||
|
|
||||||
Using fastboot on rk3288
|
Using fastboot on rk3288
|
||||||
========================
|
========================
|
||||||
- Write GPT partition layout to mmc device which fastboot want to use it to
|
- Write GPT partition layout to mmc device which fastboot want to use it to
|
||||||
|
|
|
@ -912,7 +912,9 @@ static ulong rk3399_clk_get_rate(struct clk *clk)
|
||||||
rate = rk3399_spi_get_clk(priv->cru, clk->id);
|
rate = rk3399_spi_get_clk(priv->cru, clk->id);
|
||||||
break;
|
break;
|
||||||
case SCLK_UART0:
|
case SCLK_UART0:
|
||||||
|
case SCLK_UART1:
|
||||||
case SCLK_UART2:
|
case SCLK_UART2:
|
||||||
|
case SCLK_UART3:
|
||||||
return 24000000;
|
return 24000000;
|
||||||
break;
|
break;
|
||||||
case PCLK_HDMI_CTRL:
|
case PCLK_HDMI_CTRL:
|
||||||
|
|
Loading…
Add table
Reference in a new issue