From patchwork Mon Feb 3 13:50:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suniel Mahesh X-Patchwork-Id: 235831 List-Id: U-Boot discussion From: sunil at amarulasolutions.com (sunil at amarulasolutions.com) Date: Mon, 3 Feb 2020 19:20:04 +0530 Subject: [PATCH v2 1/2] rockchip: rk3399: split roc-pc-rk3399 out of evb_rk3399 Message-ID: <1580737805-1159-1-git-send-email-sunil@amarulasolutions.com> From: Suniel Mahesh roc-pc-rk3399 board has one user button & three user LED's. Currently we don't have any code support for these devices. Since button and LED's are specific to roc-pc-rk3399 board, split it into its own board file and add code support here. Signed-off-by: Suniel Mahesh Reviewed-by: Kever Yang --- Changes for v2: - changed board directory and corresponding files naming convention from roc-rk3399-pc to roc-pc-rk3399. - Tested on firefly roc-pc-rk3399, an rk3399 based target. --- arch/arm/mach-rockchip/rk3399/Kconfig | 20 ++++++++++++++++++++ board/firefly/roc-pc-rk3399/Kconfig | 16 ++++++++++++++++ board/firefly/roc-pc-rk3399/MAINTAINERS | 6 ++++++ board/firefly/roc-pc-rk3399/Makefile | 7 +++++++ board/firefly/roc-pc-rk3399/roc-pc-rk3399.c | 29 +++++++++++++++++++++++++++++ board/rockchip/evb_rk3399/MAINTAINERS | 6 ------ configs/roc-pc-rk3399_defconfig | 1 + include/configs/roc-pc-rk3399.h | 22 ++++++++++++++++++++++ 8 files changed, 101 insertions(+), 6 deletions(-) create mode 100644 board/firefly/roc-pc-rk3399/Kconfig create mode 100644 board/firefly/roc-pc-rk3399/MAINTAINERS create mode 100644 board/firefly/roc-pc-rk3399/Makefile create mode 100644 board/firefly/roc-pc-rk3399/roc-pc-rk3399.c create mode 100644 include/configs/roc-pc-rk3399.h diff --git a/arch/arm/mach-rockchip/rk3399/Kconfig b/arch/arm/mach-rockchip/rk3399/Kconfig index f994152..0dc43c2 100644 --- a/arch/arm/mach-rockchip/rk3399/Kconfig +++ b/arch/arm/mach-rockchip/rk3399/Kconfig @@ -81,6 +81,25 @@ config TARGET_ROCKPRO64_RK3399 * GPIO expansion ports * DC 12V/2A +config TARGET_ROC_PC_RK3399 + bool "Firefly ROC-RK3399-PC board" + help + ROC-RK3399-PC is SBC produced by Firefly. Key features: + + * Rockchip RK3399 + * 4GB Dual-Channel LPDDR4 64-bit + * SD card slot + * eMMC socket + * 16MB SPI Flash + * Gigabit ethernet + * PCIe + * HDMI In/Out, DP, MIPI DSI/CSI, eDP + * USB 3.0, 2.0 + * USB Type C power and data + * GPIO expansion ports + * wide voltage input(5V-15V), dual cell battery + * Wifi/BT accessible via expansion board M.2 + endchoice config ROCKCHIP_BOOT_MODE_REG @@ -128,5 +147,6 @@ source "board/theobroma-systems/puma_rk3399/Kconfig" source "board/vamrs/rock960_rk3399/Kconfig" source "board/google/gru/Kconfig" source "board/pine64/rockpro64_rk3399/Kconfig" +source "board/firefly/roc-pc-rk3399/Kconfig" endif diff --git a/board/firefly/roc-pc-rk3399/Kconfig b/board/firefly/roc-pc-rk3399/Kconfig new file mode 100644 index 0000000..720fbbb --- /dev/null +++ b/board/firefly/roc-pc-rk3399/Kconfig @@ -0,0 +1,16 @@ +if TARGET_ROC_PC_RK3399 + +config SYS_BOARD + default "roc-pc-rk3399" + +config SYS_VENDOR + default "firefly" + +config SYS_CONFIG_NAME + default "roc-pc-rk3399" + +config BOARD_SPECIFIC_OPTIONS # dummy + def_bool y + +endif + diff --git a/board/firefly/roc-pc-rk3399/MAINTAINERS b/board/firefly/roc-pc-rk3399/MAINTAINERS new file mode 100644 index 0000000..7564dd2 --- /dev/null +++ b/board/firefly/roc-pc-rk3399/MAINTAINERS @@ -0,0 +1,6 @@ +ROC-RK3399-PC +M: Levin Du +S: Maintained +F: board/firefly/roc-pc-rk3399 +F: include/configs/roc-pc-rk3399.h +F: configs/roc-pc-rk3399_defconfig diff --git a/board/firefly/roc-pc-rk3399/Makefile b/board/firefly/roc-pc-rk3399/Makefile new file mode 100644 index 0000000..29c79b2 --- /dev/null +++ b/board/firefly/roc-pc-rk3399/Makefile @@ -0,0 +1,7 @@ +# +# (C) Copyright 2016 Rockchip Electronics Co., Ltd +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y += roc-pc-rk3399.o diff --git a/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c b/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c new file mode 100644 index 0000000..d47dba8 --- /dev/null +++ b/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * (C) Copyright 2016 Rockchip Electronics Co., Ltd + */ + +#include +#include +#include +#include + +#ifndef CONFIG_SPL_BUILD +int board_early_init_f(void) +{ + struct udevice *regulator; + int ret; + + ret = regulator_get_by_platname("vcc5v0_host", ®ulator); + if (ret) { + debug("%s vcc5v0_host init fail! ret %d\n", __func__, ret); + goto out; + } + + ret = regulator_set_enable(regulator, true); + if (ret) + debug("%s vcc5v0-host-en set fail! ret %d\n", __func__, ret); +out: + return 0; +} +#endif diff --git a/board/rockchip/evb_rk3399/MAINTAINERS b/board/rockchip/evb_rk3399/MAINTAINERS index eab4c4c..0834254 100644 --- a/board/rockchip/evb_rk3399/MAINTAINERS +++ b/board/rockchip/evb_rk3399/MAINTAINERS @@ -55,12 +55,6 @@ F: configs/orangepi-rk3399_defconfig F: arch/arm/dts/rk3399-u-boot.dtsi F: arch/arm/dts/rk3399-orangepi-u-boot.dtsi -ROC-RK3399-PC -M: Levin Du -S: Maintained -F: configs/roc-pc-rk3399_defconfig -F: arch/arm/dts/rk3399-roc-pc-u-boot.dtsi - ROCK-PI-4 M: Akash Gajjar M: Jagan Teki diff --git a/configs/roc-pc-rk3399_defconfig b/configs/roc-pc-rk3399_defconfig index 8204e00..5a82029 100644 --- a/configs/roc-pc-rk3399_defconfig +++ b/configs/roc-pc-rk3399_defconfig @@ -3,6 +3,7 @@ CONFIG_ARCH_ROCKCHIP=y CONFIG_SYS_TEXT_BASE=0x00200000 CONFIG_ENV_OFFSET=0x3F8000 CONFIG_ROCKCHIP_RK3399=y +CONFIG_TARGET_ROC_PC_RK3399=y CONFIG_NR_DRAM_BANKS=1 CONFIG_DEBUG_UART_BASE=0xFF1A0000 CONFIG_DEBUG_UART_CLOCK=24000000 diff --git a/include/configs/roc-pc-rk3399.h b/include/configs/roc-pc-rk3399.h new file mode 100644 index 0000000..3fd1062 --- /dev/null +++ b/include/configs/roc-pc-rk3399.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * (C) Copyright 2016 Rockchip Electronics Co., Ltd + */ + +#ifndef __ROC_PC_RK3399_H +#define __ROC_PC_RK3399_H + +#define ROCKCHIP_DEVICE_SETTINGS \ + "stdin=serial,cros-ec-keyb\0" \ + "stdout=serial,vidconsole\0" \ + "stderr=serial,vidconsole\0" + +#include + +#if defined(CONFIG_ENV_IS_IN_MMC) +# define CONFIG_SYS_MMC_ENV_DEV 0 +#endif + +#define SDRAM_BANK_SIZE (2UL << 30) + +#endif From patchwork Mon Feb 3 13:50:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suniel Mahesh X-Patchwork-Id: 235832 List-Id: U-Boot discussion From: sunil at amarulasolutions.com (sunil at amarulasolutions.com) Date: Mon, 3 Feb 2020 19:20:05 +0530 Subject: [PATCH v2 2/2] board: roc-pc-rk3399: Add support for onboard LED's and push button to indicate power mode In-Reply-To: <1580737805-1159-1-git-send-email-sunil@amarulasolutions.com> References: <1580737805-1159-1-git-send-email-sunil@amarulasolutions.com> Message-ID: <1580737805-1159-2-git-send-email-sunil@amarulasolutions.com> From: Suniel Mahesh Added support for onboard LED's and push button. When powered board will be in low power mode(yellow LED), on button press, board enters full power mode (red LED) and boots u-boot. Signed-off-by: Suniel Mahesh Reviewed-by: Kever Yang --- Changes for v2: - Tested on firefly roc-pc-rk3399, an rk3399 based target. --- arch/arm/mach-rockchip/tpl.c | 7 +++++++ board/firefly/roc-pc-rk3399/roc-pc-rk3399.c | 32 +++++++++++++++++++++++++++++ configs/roc-pc-rk3399_defconfig | 1 + 3 files changed, 40 insertions(+) diff --git a/arch/arm/mach-rockchip/tpl.c b/arch/arm/mach-rockchip/tpl.c index 31a3eb4..a2b8d31 100644 --- a/arch/arm/mach-rockchip/tpl.c +++ b/arch/arm/mach-rockchip/tpl.c @@ -40,11 +40,18 @@ __weak void rockchip_stimer_init(void) TIMER_CONTROL_REG); } +__weak int board_early_init_f(void) +{ + return 0; +} + void board_init_f(ulong dummy) { struct udevice *dev; int ret; + board_early_init_f(); + #if defined(CONFIG_DEBUG_UART) && defined(CONFIG_TPL_SERIAL_SUPPORT) /* * Debug UART can be used from here if required: diff --git a/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c b/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c index d47dba8..de9185a 100644 --- a/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c +++ b/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c @@ -7,6 +7,10 @@ #include #include #include +#include +#include +#include +#include #ifndef CONFIG_SPL_BUILD int board_early_init_f(void) @@ -27,3 +31,31 @@ out: return 0; } #endif + +#if defined(CONFIG_TPL_BUILD) + +#define PMUGRF_BASE 0xff320000 +#define GPIO0_BASE 0xff720000 + +int board_early_init_f(void) +{ + struct rockchip_gpio_regs * const gpio0 = (void *)GPIO0_BASE; + struct rk3399_pmugrf_regs * const pmugrf = (void *)PMUGRF_BASE; + + /** + * 1. Glow yellow LED, termed as low power + * 2. Poll for on board power key press + * 3. Once 2 done, off yellow and glow red LED, termed as full power + * 4. Continue booting... + */ + spl_gpio_output(gpio0, GPIO(BANK_A, 2), 1); + + spl_gpio_set_pull(&pmugrf->gpio0_p, GPIO(BANK_A, 5), GPIO_PULL_NORMAL); + while (readl(&gpio0->ext_port) & 0x20); + + spl_gpio_output(gpio0, GPIO(BANK_A, 2), 0); + spl_gpio_output(gpio0, GPIO(BANK_B, 5), 1); + + return 0; +} +#endif diff --git a/configs/roc-pc-rk3399_defconfig b/configs/roc-pc-rk3399_defconfig index 5a82029..36c0e0e 100644 --- a/configs/roc-pc-rk3399_defconfig +++ b/configs/roc-pc-rk3399_defconfig @@ -57,3 +57,4 @@ CONFIG_USB_ETHER_RTL8152=y CONFIG_USB_ETHER_SMSC95XX=y CONFIG_SPL_TINY_MEMSET=y CONFIG_ERRNO_STR=y +CONFIG_TPL_GPIO_SUPPORT=y