Switched RockPro64 to mainline u-boot (#2218)
* Switched RockPro64 to mainline u-boot * Enabled rockusb and ums for RockPro64 in mainline u-boot * Switched RockPro64 u-boot to TPL/SPL/BLOB scenario * Enabled advanced recovery button support for RockPro64 * Disabled SDR104 mode for RockPro64 in legacy
This commit is contained in:
parent
cc7e03e0e4
commit
f2db962525
@ -48,19 +48,12 @@ elif [[ $BOARD == pinebook-pro ]]; then
|
||||
BOOT_SOC=rk3399
|
||||
ATFPATCHDIR='atf-rk3399'
|
||||
|
||||
elif [[ $BOARD == rockpi-4* ]]; then
|
||||
elif [[ $BOARD == rockpi-4* || $BOARD == rockpro64 ]]; then
|
||||
|
||||
BOOT_USE_BLOBS=yes
|
||||
BOOT_USE_TPL_SPL_BLOB=yes
|
||||
BOOT_SOC=rk3399
|
||||
DDR_BLOB='rk33/rk3399_ddr_933MHz_v1.20.bin' # 1GB model does not boot with later versions
|
||||
MINILOADER_BLOB='rk33/rk3399_miniloader_v1.19.bin'
|
||||
BL31_BLOB='rk33/rk3399_bl31_v1.30.elf'
|
||||
|
||||
elif [[ $BOARD == rockpro64 ]]; then
|
||||
|
||||
BOOT_RK3399_LEGACY_HYBRID=yes
|
||||
BL31_BLOB='rk33/rk3399_bl31_v1.17.elf'
|
||||
|
||||
elif [[ $BOARD == rockpi-s ]]; then
|
||||
|
||||
BOOT_USE_BLOBS=yes
|
||||
|
||||
@ -0,0 +1,13 @@
|
||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
index 079358437..d7daa3d40 100644
|
||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
||||
@@ -896,7 +896,7 @@
|
||||
cap-sd-highspeed;
|
||||
disable-wp;
|
||||
num-slots = <1>;
|
||||
- sd-uhs-sdr104;
|
||||
+ // sd-uhs-sdr104;
|
||||
vqmmc-supply = <&vcc_sd>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
|
||||
@ -0,0 +1,34 @@
|
||||
diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig
|
||||
index ad0c6ab2..57e129ac 100644
|
||||
--- a/configs/rockpro64-rk3399_defconfig
|
||||
+++ b/configs/rockpro64-rk3399_defconfig
|
||||
@@ -24,6 +24,8 @@ CONFIG_CMD_GPT=y
|
||||
CONFIG_CMD_MMC=y
|
||||
CONFIG_CMD_PCI=y
|
||||
CONFIG_CMD_USB=y
|
||||
+CONFIG_CMD_ROCKUSB=y
|
||||
+CONFIG_CMD_USB_MASS_STORAGE=y
|
||||
# CONFIG_CMD_SETEXPR is not set
|
||||
CONFIG_CMD_TIME=y
|
||||
CONFIG_SPL_OF_CONTROL=y
|
||||
@@ -46,6 +48,8 @@ CONFIG_ETH_DESIGNWARE=y
|
||||
CONFIG_GMAC_ROCKCHIP=y
|
||||
CONFIG_NVME=y
|
||||
CONFIG_PCI=y
|
||||
+CONFIG_PHY_ROCKCHIP_INNO_USB2=y
|
||||
+CONFIG_PHY_ROCKCHIP_TYPEC=y
|
||||
CONFIG_PMIC_RK8XX=y
|
||||
CONFIG_REGULATOR_PWM=y
|
||||
CONFIG_REGULATOR_RK8XX=y
|
||||
@@ -63,7 +67,11 @@ CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_GENERIC=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_OHCI_GENERIC=y
|
||||
+CONFIG_USB_DWC3=y
|
||||
+CONFIG_USB_DWC3_GENERIC=y
|
||||
CONFIG_USB_KEYBOARD=y
|
||||
+CONFIG_USB_GADGET=y
|
||||
+CONFIG_USB_FUNCTION_ROCKUSB=y
|
||||
CONFIG_USB_HOST_ETHER=y
|
||||
CONFIG_USB_ETHER_ASIX=y
|
||||
CONFIG_USB_ETHER_ASIX88179=y
|
||||
@ -0,0 +1,124 @@
|
||||
From ff72515d3f6e65e22baa8cb1fbefe15540256310 Mon Sep 17 00:00:00 2001
|
||||
From: Piotr Szczepanik <piter75@gmail.com>
|
||||
Date: Sun, 4 Oct 2020 18:19:02 +0200
|
||||
Subject: [PATCH] Enabled advanced recovery button support for rockchip
|
||||
|
||||
It allows to enter either ums, fastboot or rockusb based on the time the
|
||||
button is pressed.
|
||||
SD (mmc0) is preferred if present with eMMC (mmc1) set as fallback.
|
||||
|
||||
Based on:
|
||||
https://github.com/ayufan-rock64/linux-u-boot/commit/ea6efecdfecc57c853a6f32f78469d1b2417329b
|
||||
https://github.com/ayufan-rock64/linux-u-boot/commit/1abc9ab51306200880c434c2069eceb4be7789e9
|
||||
|
||||
Signed-off-by: Piotr Szczepanik <piter75@gmail.com>
|
||||
|
||||
diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c
|
||||
index 21589341..4fb6d3ae 100644
|
||||
--- a/arch/arm/mach-rockchip/boot_mode.c
|
||||
+++ b/arch/arm/mach-rockchip/boot_mode.c
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <command.h>
|
||||
#include <env.h>
|
||||
#include <log.h>
|
||||
+#include <linux/delay.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/arch-rockchip/boot_mode.h>
|
||||
#include <dm/device.h>
|
||||
@@ -70,13 +71,92 @@ __weak int rockchip_dnl_key_pressed(void)
|
||||
return false;
|
||||
}
|
||||
|
||||
+int rockchip_dnl_mode(int num_modes)
|
||||
+{
|
||||
+ int mode = 0;
|
||||
+ const char *mode_names[5] = {
|
||||
+ "none",
|
||||
+ "ums",
|
||||
+ "fastboot",
|
||||
+ "rockusb",
|
||||
+ "maskrom"
|
||||
+ };
|
||||
+
|
||||
+
|
||||
+ while(mode < num_modes) {
|
||||
+ ++mode;
|
||||
+
|
||||
+ printf("rockchip_dnl_mode = %s mode\n", mode_names[mode]);
|
||||
+
|
||||
+ // return early
|
||||
+ if (mode == num_modes) {
|
||||
+ goto end;
|
||||
+ }
|
||||
+
|
||||
+ // wait 2 seconds
|
||||
+ for (int i = 0; i < 100; ++i) {
|
||||
+ if (!rockchip_dnl_key_pressed()) {
|
||||
+ goto end;
|
||||
+ }
|
||||
+ mdelay(20);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+end:
|
||||
+ return mode;
|
||||
+}
|
||||
+
|
||||
void rockchip_dnl_mode_check(void)
|
||||
{
|
||||
- if (rockchip_dnl_key_pressed()) {
|
||||
- printf("download key pressed, entering download mode...");
|
||||
- set_back_to_bootrom_dnl_flag();
|
||||
- do_reset(NULL, 0, 0, NULL);
|
||||
+ int mmc_device = 0;
|
||||
+ int ret = 0;
|
||||
+ char cmd[32];
|
||||
+
|
||||
+ if (!rockchip_dnl_key_pressed()) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ ;
|
||||
+ if (cli_simple_run_command("mmc dev 1") >= 0) {
|
||||
+ mmc_device = 1;
|
||||
+ } else if (cli_simple_run_command("mmc dev 1") >= 0) {
|
||||
+ mmc_device = 0;
|
||||
+ } else {
|
||||
+ printf("no mmc device suitable for download mode!\n");
|
||||
+ return 0;
|
||||
}
|
||||
+
|
||||
+ printf("using mmc%d device for download mode\n", mmc_device);
|
||||
+
|
||||
+ switch(rockchip_dnl_mode(4)) {
|
||||
+ case 0:
|
||||
+ return;
|
||||
+
|
||||
+ case 1:
|
||||
+ printf("entering ums mode...\n");
|
||||
+ sprintf(cmd, "ums 0 mmc %d", mmc_device);
|
||||
+ cli_simple_run_command(cmd, 0);
|
||||
+ break;
|
||||
+
|
||||
+ case 2:
|
||||
+ printf("entering fastboot mode...\n");
|
||||
+ sprintf(cmd, "mmc dev %d; fastboot usb 0", mmc_device);
|
||||
+ cli_simple_run_command(cmd, 0);
|
||||
+ break;
|
||||
+
|
||||
+ case 3:
|
||||
+ printf("entering download mode...\n");
|
||||
+ sprintf(cmd, "rockusb 0 mmc %d", mmc_device);
|
||||
+ cli_simple_run_command(cmd, 0);
|
||||
+ break;
|
||||
+
|
||||
+ case 4:
|
||||
+ printf("entering maskrom mode...\n");
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ set_back_to_bootrom_dnl_flag();
|
||||
+ do_reset(NULL, 0, 0, NULL);
|
||||
}
|
||||
|
||||
int setup_boot_mode(void)
|
||||
Loading…
Reference in New Issue
Block a user