From 4aa33690fc9a225e7e35b5870e4c7378aae46e67 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Wed, 19 Feb 2020 09:46:05 +0800 Subject: [PATCH 1/8] rockchip: elgin-rv1108: Use syscon API to get grf base Use syscon API to get grf base instead of get from dts. Signed-off-by: Kever Yang Reviewed-by: Simon Glass Acked-by: Otavio Salvador --- board/elgin/elgin_rv1108/elgin_rv1108.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/board/elgin/elgin_rv1108/elgin_rv1108.c b/board/elgin/elgin_rv1108/elgin_rv1108.c index 607667ac63a..06df25a326b 100644 --- a/board/elgin/elgin_rv1108/elgin_rv1108.c +++ b/board/elgin/elgin_rv1108/elgin_rv1108.c @@ -5,8 +5,9 @@ */ #include +#include #include -#include +#include #include #include #include @@ -15,7 +16,6 @@ DECLARE_GLOBAL_DATA_PTR; int mach_cpu_init(void) { - int node; struct rv1108_grf *grf; enum { GPIO3C3_SHIFT = 6, @@ -35,8 +35,7 @@ int mach_cpu_init(void) GPIO2D1_UART2_SIN_M0, }; - node = fdt_node_offset_by_compatible(gd->fdt_blob, -1, "rockchip,rv1108-grf"); - grf = (struct rv1108_grf *)fdtdec_get_addr(gd->fdt_blob, node, "reg"); + grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF); /* Elgin board use UART2 m0 for debug*/ rk_clrsetreg(&grf->gpio2d_iomux, From 9cec3367087bcdcf6f583e60b95243d0d5e9ae92 Mon Sep 17 00:00:00 2001 From: Kever Yang Date: Wed, 19 Feb 2020 09:46:06 +0800 Subject: [PATCH 2/8] rockchip: evb-rv1108: Use syscon API to get grf base Use syscon API to get grf base instead of get from dts. Signed-off-by: Kever Yang Reviewed-by: Simon Glass --- board/rockchip/evb_rv1108/evb_rv1108.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/board/rockchip/evb_rv1108/evb_rv1108.c b/board/rockchip/evb_rv1108/evb_rv1108.c index 733f29376e3..5d622c3737a 100644 --- a/board/rockchip/evb_rv1108/evb_rv1108.c +++ b/board/rockchip/evb_rv1108/evb_rv1108.c @@ -5,8 +5,9 @@ */ #include +#include #include -#include +#include #include #include @@ -14,7 +15,6 @@ DECLARE_GLOBAL_DATA_PTR; int mach_cpu_init(void) { - int node; struct rv1108_grf *grf; enum { GPIO3C3_SHIFT = 6, @@ -34,8 +34,7 @@ int mach_cpu_init(void) GPIO2D1_UART2_SIN_M0, }; - node = fdt_node_offset_by_compatible(gd->fdt_blob, -1, "rockchip,rv1108-grf"); - grf = (struct rv1108_grf *)fdtdec_get_addr(gd->fdt_blob, node, "reg"); + grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF); /*evb board use UART2 m0 for debug*/ rk_clrsetreg(&grf->gpio2d_iomux, From 23cb61761b137f088ef8625a1c4e7d9af2cbd296 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 2 Mar 2020 07:57:55 +0000 Subject: [PATCH 3/8] rockchip: Change keyboard input from CrOS EC keyboard to a USB keyboard These boards aren't ChromeOS devices so won't have a cros-ec-keyb input as it's the keyboard available via the ChromeOS Embedded Controller. Update them to use a USB keyboard which would actually be available. Also enable the usb keyboard option for those devices that don't have it enabled already. Signed-off-by: Peter Robinson Reviewed-by: Michael Trimarchi Reviewed-by: Simon Glass Reviewed-by: Kever Yang --- configs/miqi-rk3288_defconfig | 1 + configs/roc-pc-rk3399_defconfig | 1 + configs/rock2_defconfig | 1 + configs/tinker-rk3288_defconfig | 1 + configs/tinker-s-rk3288_defconfig | 1 + include/configs/miqi_rk3288.h | 2 +- include/configs/roc-pc-rk3399.h | 2 +- include/configs/rock2.h | 2 +- include/configs/tinker_rk3288.h | 2 +- include/configs/vyasa-rk3288.h | 2 +- 10 files changed, 10 insertions(+), 5 deletions(-) diff --git a/configs/miqi-rk3288_defconfig b/configs/miqi-rk3288_defconfig index edba9da31b2..e3e205fd54a 100644 --- a/configs/miqi-rk3288_defconfig +++ b/configs/miqi-rk3288_defconfig @@ -75,6 +75,7 @@ CONFIG_USB_GADGET_DWC2_OTG=y CONFIG_USB_HOST_ETHER=y CONFIG_USB_ETHER_ASIX=y CONFIG_USB_ETHER_SMSC95XX=y +CONFIG_USB_KEYBOARD=y CONFIG_DM_VIDEO=y # CONFIG_VIDEO_BPP8 is not set CONFIG_DISPLAY=y diff --git a/configs/roc-pc-rk3399_defconfig b/configs/roc-pc-rk3399_defconfig index 659c67a0336..d540a17aebe 100644 --- a/configs/roc-pc-rk3399_defconfig +++ b/configs/roc-pc-rk3399_defconfig @@ -56,5 +56,6 @@ CONFIG_USB_ETHER_ASIX88179=y CONFIG_USB_ETHER_MCS7830=y CONFIG_USB_ETHER_RTL8152=y CONFIG_USB_ETHER_SMSC95XX=y +CONFIG_USB_KEYBOARD=y CONFIG_SPL_TINY_MEMSET=y CONFIG_ERRNO_STR=y diff --git a/configs/rock2_defconfig b/configs/rock2_defconfig index bb12b32a215..cf71c859279 100644 --- a/configs/rock2_defconfig +++ b/configs/rock2_defconfig @@ -74,6 +74,7 @@ CONFIG_USB_DWC2=y CONFIG_ROCKCHIP_USB2_PHY=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_DWC2_OTG=y +CONFIG_USB_KEYBOARD=y CONFIG_DM_VIDEO=y # CONFIG_VIDEO_BPP8 is not set CONFIG_DISPLAY=y diff --git a/configs/tinker-rk3288_defconfig b/configs/tinker-rk3288_defconfig index 50820ba08ea..034d28ea2d8 100644 --- a/configs/tinker-rk3288_defconfig +++ b/configs/tinker-rk3288_defconfig @@ -80,6 +80,7 @@ CONFIG_USB_GADGET_DWC2_OTG=y CONFIG_USB_HOST_ETHER=y CONFIG_USB_ETHER_ASIX=y CONFIG_USB_ETHER_SMSC95XX=y +CONFIG_USB_KEYBOARD=y CONFIG_DM_VIDEO=y CONFIG_DISPLAY=y CONFIG_VIDEO_ROCKCHIP=y diff --git a/configs/tinker-s-rk3288_defconfig b/configs/tinker-s-rk3288_defconfig index ab192cf4e4c..06c5d9b5070 100644 --- a/configs/tinker-s-rk3288_defconfig +++ b/configs/tinker-s-rk3288_defconfig @@ -80,6 +80,7 @@ CONFIG_USB_GADGET_DWC2_OTG=y CONFIG_USB_HOST_ETHER=y CONFIG_USB_ETHER_ASIX=y CONFIG_USB_ETHER_SMSC95XX=y +CONFIG_USB_KEYBOARD=y CONFIG_DM_VIDEO=y # CONFIG_VIDEO_BPP8 is not set CONFIG_DISPLAY=y diff --git a/include/configs/miqi_rk3288.h b/include/configs/miqi_rk3288.h index c9691a0392d..e19fa902128 100644 --- a/include/configs/miqi_rk3288.h +++ b/include/configs/miqi_rk3288.h @@ -7,7 +7,7 @@ #define __CONFIG_H #define ROCKCHIP_DEVICE_SETTINGS \ - "stdin=serial,cros-ec-keyb\0" \ + "stdin=serial,usbkbd\0" \ "stdout=serial,vidconsole\0" \ "stderr=serial,vidconsole\0" diff --git a/include/configs/roc-pc-rk3399.h b/include/configs/roc-pc-rk3399.h index 3fd10625426..d4cbc3532e1 100644 --- a/include/configs/roc-pc-rk3399.h +++ b/include/configs/roc-pc-rk3399.h @@ -7,7 +7,7 @@ #define __ROC_PC_RK3399_H #define ROCKCHIP_DEVICE_SETTINGS \ - "stdin=serial,cros-ec-keyb\0" \ + "stdin=serial,usbkbd\0" \ "stdout=serial,vidconsole\0" \ "stderr=serial,vidconsole\0" diff --git a/include/configs/rock2.h b/include/configs/rock2.h index 917caf4d53a..9e4a66902b5 100644 --- a/include/configs/rock2.h +++ b/include/configs/rock2.h @@ -7,7 +7,7 @@ #define __CONFIG_H #define ROCKCHIP_DEVICE_SETTINGS \ - "stdin=serial,cros-ec-keyb\0" \ + "stdin=serial,usbkbd\0" \ "stdout=serial,vidconsole\0" \ "stderr=serial,vidconsole\0" diff --git a/include/configs/tinker_rk3288.h b/include/configs/tinker_rk3288.h index f1095ccd0e1..d239e3beb1c 100644 --- a/include/configs/tinker_rk3288.h +++ b/include/configs/tinker_rk3288.h @@ -7,7 +7,7 @@ #define __CONFIG_H #define ROCKCHIP_DEVICE_SETTINGS \ - "stdin=serial,cros-ec-keyb\0" \ + "stdin=serial,usbkbd\0" \ "stdout=serial,vidconsole\0" \ "stderr=serial,vidconsole\0" diff --git a/include/configs/vyasa-rk3288.h b/include/configs/vyasa-rk3288.h index e31dc777200..c3521cac419 100644 --- a/include/configs/vyasa-rk3288.h +++ b/include/configs/vyasa-rk3288.h @@ -9,7 +9,7 @@ #define __CONFIG_H #define ROCKCHIP_DEVICE_SETTINGS \ - "stdin=serial,cros-ec-keyb\0" \ + "stdin=serial,usbkbd\0" \ "stdout=serial,vidconsole\0" \ "stderr=serial,vidconsole\0" From af84b3327ad269ffefcd66ddff2f5dea5eff38f8 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Fri, 13 Mar 2020 14:42:45 -0300 Subject: [PATCH 4/8] ARM: dts: Activate pullups in the console pins on rv1108-elgin-r1 In order to make the console pins more robust to noise, activate the pullups and increase its drive strength. Signed-off-by: Otavio Salvador Reviewed-by: Kever Yang --- arch/arm/dts/rv1108-elgin-r1.dts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/arch/arm/dts/rv1108-elgin-r1.dts b/arch/arm/dts/rv1108-elgin-r1.dts index 32b95940b07..83e8b318384 100644 --- a/arch/arm/dts/rv1108-elgin-r1.dts +++ b/arch/arm/dts/rv1108-elgin-r1.dts @@ -40,9 +40,20 @@ }; &uart2 { + pinctrl-names = "default"; + pinctrl-0 = <&uart2m0_xfer_pullup>; status = "okay"; }; &usb20_otg { status = "okay"; }; + +&pinctrl { + uart2m0 { + uart2m0_xfer_pullup: uart2m0-xfer-pullup { + rockchip,pins = <2 RK_PD2 RK_FUNC_1 &pcfg_pull_up_drv_8ma>, + <2 RK_PD1 RK_FUNC_1 &pcfg_pull_up_drv_8ma>; + }; + }; +}; From 1ac0d52a9bb2a20e07542ca54c526e35b0f2ffca Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Fri, 13 Mar 2020 14:42:46 -0300 Subject: [PATCH 5/8] elgin-rv1108: Use rk_board_late_init() for GPIO settings Since commit 8e9a8d0d0c8c ("rockchip: elgin-rv1108: use board_early_init_f for per-boar init") the function that configure the board GPIOs is no longer called since CONFIG_BOARD_EARLY_INIT_F=y is not selected. These GPIOs do not need to be configured in such early stagem, so change it to rk_board_late_init() and also select CONFIG_BOARD_LATE_INIT=y to fix the regression. Signed-off-by: Otavio Salvador Signed-off-by: Fabio Berton Reviewed-by: Kever Yang --- board/elgin/elgin_rv1108/elgin_rv1108.c | 2 +- configs/elgin-rv1108_defconfig | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/board/elgin/elgin_rv1108/elgin_rv1108.c b/board/elgin/elgin_rv1108/elgin_rv1108.c index 06df25a326b..c5a1cc95e4a 100644 --- a/board/elgin/elgin_rv1108/elgin_rv1108.c +++ b/board/elgin/elgin_rv1108/elgin_rv1108.c @@ -49,7 +49,7 @@ int mach_cpu_init(void) #define MODEM_ENABLE_GPIO 111 -int board_early_init_f(void) +int rk_board_late_init(void) { gpio_request(MODEM_ENABLE_GPIO, "modem_enable"); gpio_direction_output(MODEM_ENABLE_GPIO, 0); diff --git a/configs/elgin-rv1108_defconfig b/configs/elgin-rv1108_defconfig index 62af7634a30..80d53f3c109 100644 --- a/configs/elgin-rv1108_defconfig +++ b/configs/elgin-rv1108_defconfig @@ -10,6 +10,7 @@ CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_DEBUG_UART=y # CONFIG_USE_BOOTCOMMAND is not set CONFIG_DEFAULT_FDT_FILE="rv1108-elgin-r1.dtb" +CONFIG_BOARD_LATE_INIT=y # CONFIG_DISPLAY_CPUINFO is not set CONFIG_DISPLAY_BOARDINFO_LATE=y CONFIG_CMD_GPIO=y From 2dcbeb3568e568846d572d8329442f41b4f60a53 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Fri, 13 Mar 2020 14:42:47 -0300 Subject: [PATCH 6/8] elgin-rv1108: Avoid adc_channel_single_shot error Currently the following error message is seen during boot: U-Boot 2020.01-08751-g55759ae141 (Mar 09 2020 - 14:44:52 -0300) Model: Elgin RV1108 R1 board DRAM: 128 MiB APLL: 600000000 DPLL:1200000000 GPLL:1188000000 ACLK_BUS: 148500000 ACLK_PERI:148500000 HCLK_PERI:148500000 PCLK_PERI:74250000 MMC: dwmmc@30110000: 0 Loading Environment from MMC... OK In: serial@10210000 Out: serial@10210000 Err: serial@10210000 Model: Elgin RV1108 R1 board rockchip_dnl_key_pressed: adc_channel_single_shot fail! .... Since the elgin-rv1108 does not use ADC to read the download key status, select CONFIG_ROCKCHIP_BOOT_MODE_REG=0 to avoid such error. Signed-off-by: Otavio Salvador Reviewed-by: Kever Yang --- configs/elgin-rv1108_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/elgin-rv1108_defconfig b/configs/elgin-rv1108_defconfig index 80d53f3c109..b6682994f50 100644 --- a/configs/elgin-rv1108_defconfig +++ b/configs/elgin-rv1108_defconfig @@ -4,6 +4,7 @@ CONFIG_SYS_TEXT_BASE=0x60000000 CONFIG_ENV_OFFSET=0x3F8000 CONFIG_ROCKCHIP_RV1108=y CONFIG_TARGET_ELGIN_RV1108=y +CONFIG_ROCKCHIP_BOOT_MODE_REG=0 CONFIG_NR_DRAM_BANKS=1 CONFIG_DEBUG_UART_BASE=0x10210000 CONFIG_DEBUG_UART_CLOCK=24000000 From 99f946976e185f9c4d94edce6bb123c9c341913a Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Fri, 13 Mar 2020 14:42:48 -0300 Subject: [PATCH 7/8] rv1108: Fix boot regression Since commit 79030a486128 ("rockchip: Add Single boot image (with binman, pad_cat)") the following boot regression is seen: U-Boot 2020.04-rc3-00050-gd16e18ca6c-dirty (Mar 09 2020 - 11:40:07 -0300) Model: Elgin RV1108 R1 board DRAM: 128 MiB initcall sequence 67fd12a0 failed at call 6000b927 (err=-22) This happens because the above commit missed to include the "rockchip-u-boot.dtsi" for rv1108, so include this file like it done for other Rockchip SoC dtsi's. Fixes: 79030a486128 ("rockchip: Add Single boot image (with binman, pad_cat)") Signed-off-by: Otavio Salvador Reviewed-by: Kever Yang --- arch/arm/dts/rv1108-u-boot.dtsi | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 arch/arm/dts/rv1108-u-boot.dtsi diff --git a/arch/arm/dts/rv1108-u-boot.dtsi b/arch/arm/dts/rv1108-u-boot.dtsi new file mode 100644 index 00000000000..41ac054b81e --- /dev/null +++ b/arch/arm/dts/rv1108-u-boot.dtsi @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2019 Jagan Teki + */ + +#include "rockchip-u-boot.dtsi" From e5a405583f5ce9576c5084a178622e2fdd49cb23 Mon Sep 17 00:00:00 2001 From: Miquel Raynal Date: Wed, 18 Mar 2020 17:22:55 +0100 Subject: [PATCH 8/8] rockchip: mkimage: Use an existing macro instead of a decimal value Depending on the SoC, a header of four characters is prepended to the image. There is already a macro defining the number of characters: RK_SPL_HDR_SIZE, so use it instead of hardcoding "4". Signed-off-by: Miquel Raynal Reviewed-by: Kever Yang --- tools/rkcommon.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/rkcommon.c b/tools/rkcommon.c index c2382dfe5a1..8f281f5901a 100644 --- a/tools/rkcommon.c +++ b/tools/rkcommon.c @@ -307,11 +307,13 @@ static int rkcommon_parse_header(const void *buf, struct header0_info *header0, rkcommon_offset_to_spi(hdr1_offset)); for (i = 0; i < ARRAY_SIZE(spl_infos); i++) { - if (!memcmp(&hdr1_sdmmc->magic, spl_infos[i].spl_hdr, 4)) { + if (!memcmp(&hdr1_sdmmc->magic, spl_infos[i].spl_hdr, + RK_SPL_HDR_SIZE)) { if (spl_info) *spl_info = &spl_infos[i]; return IH_TYPE_RKSD; - } else if (!memcmp(&hdr1_spi->magic, spl_infos[i].spl_hdr, 4)) { + } else if (!memcmp(&hdr1_spi->magic, spl_infos[i].spl_hdr, + RK_SPL_HDR_SIZE)) { if (spl_info) *spl_info = &spl_infos[i]; return IH_TYPE_RKSPI;