From patchwork Mon Feb 3 10:47:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suniel Mahesh X-Patchwork-Id: 235829 List-Id: U-Boot discussion From: sunil at amarulasolutions.com (sunil at amarulasolutions.com) Date: Mon, 3 Feb 2020 16:17:06 +0530 Subject: [PATCH 1/2] rockchip: rk3399: split roc-rk3399-pc out of evb_rk3399 Message-ID: <1580726827-12381-1-git-send-email-sunil@amarulasolutions.com> From: Suniel Mahesh roc-rk3399-pc 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-rk3399-pc board, split it into its own board file and add any code support here. Signed-off-by: Suniel Mahesh --- arch/arm/mach-rockchip/rk3399/Kconfig | 20 +++++++++++++++++++ board/firefly/roc-rk3399-pc/Kconfig | 16 +++++++++++++++ board/firefly/roc-rk3399-pc/MAINTAINERS | 6 ++++++ board/firefly/roc-rk3399-pc/Makefile | 7 +++++++ board/firefly/roc-rk3399-pc/roc-rk3399-pc.c | 30 +++++++++++++++++++++++++++++ board/rockchip/evb_rk3399/MAINTAINERS | 6 ------ configs/roc-pc-rk3399_defconfig | 1 + include/configs/roc-rk3399-pc.h | 22 +++++++++++++++++++++ 8 files changed, 102 insertions(+), 6 deletions(-) create mode 100644 board/firefly/roc-rk3399-pc/Kconfig create mode 100644 board/firefly/roc-rk3399-pc/MAINTAINERS create mode 100644 board/firefly/roc-rk3399-pc/Makefile create mode 100644 board/firefly/roc-rk3399-pc/roc-rk3399-pc.c create mode 100644 include/configs/roc-rk3399-pc.h diff --git a/arch/arm/mach-rockchip/rk3399/Kconfig b/arch/arm/mach-rockchip/rk3399/Kconfig index f994152..23214ca 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_RK3399_PC + 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-rk3399-pc/Kconfig" endif diff --git a/board/firefly/roc-rk3399-pc/Kconfig b/board/firefly/roc-rk3399-pc/Kconfig new file mode 100644 index 0000000..26dce89 --- /dev/null +++ b/board/firefly/roc-rk3399-pc/Kconfig @@ -0,0 +1,16 @@ +if TARGET_ROC_RK3399_PC + +config SYS_BOARD + default "roc-rk3399-pc" + +config SYS_VENDOR + default "firefly" + +config SYS_CONFIG_NAME + default "roc-rk3399-pc" + +config BOARD_SPECIFIC_OPTIONS # dummy + def_bool y + +endif + diff --git a/board/firefly/roc-rk3399-pc/MAINTAINERS b/board/firefly/roc-rk3399-pc/MAINTAINERS new file mode 100644 index 0000000..0dbd953 --- /dev/null +++ b/board/firefly/roc-rk3399-pc/MAINTAINERS @@ -0,0 +1,6 @@ +ROC-RK3399-PC +M: Levin Du +S: Maintained +F: board/firefly/roc-rk3399-pc +F: include/configs/roc-rk3399-pc.h +F: configs/roc-pc-rk3399_defconfig diff --git a/board/firefly/roc-rk3399-pc/Makefile b/board/firefly/roc-rk3399-pc/Makefile new file mode 100644 index 0000000..200dab0 --- /dev/null +++ b/board/firefly/roc-rk3399-pc/Makefile @@ -0,0 +1,7 @@ +# +# (C) Copyright 2016 Rockchip Electronics Co., Ltd +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y += roc-rk3399-pc.o diff --git a/board/firefly/roc-rk3399-pc/roc-rk3399-pc.c b/board/firefly/roc-rk3399-pc/roc-rk3399-pc.c new file mode 100644 index 0000000..b9049ab --- /dev/null +++ b/board/firefly/roc-rk3399-pc/roc-rk3399-pc.c @@ -0,0 +1,30 @@ +// 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..c7187dc 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_RK3399_PC=y CONFIG_NR_DRAM_BANKS=1 CONFIG_DEBUG_UART_BASE=0xFF1A0000 CONFIG_DEBUG_UART_CLOCK=24000000 diff --git a/include/configs/roc-rk3399-pc.h b/include/configs/roc-rk3399-pc.h new file mode 100644 index 0000000..3fd1062 --- /dev/null +++ b/include/configs/roc-rk3399-pc.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 10:47:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suniel Mahesh X-Patchwork-Id: 235830 List-Id: U-Boot discussion From: sunil at amarulasolutions.com (sunil at amarulasolutions.com) Date: Mon, 3 Feb 2020 16:17:07 +0530 Subject: [PATCH 2/2] board: roc-rk3399-pc: Add support for onboard LED's and push button to indicate power mode In-Reply-To: <1580726827-12381-1-git-send-email-sunil@amarulasolutions.com> References: <1580726827-12381-1-git-send-email-sunil@amarulasolutions.com> Message-ID: <1580726827-12381-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 --- arch/arm/mach-rockchip/tpl.c | 7 ++++++ board/firefly/roc-rk3399-pc/roc-rk3399-pc.c | 33 +++++++++++++++++++++++++++++ configs/roc-pc-rk3399_defconfig | 1 + 3 files changed, 41 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-rk3399-pc/roc-rk3399-pc.c b/board/firefly/roc-rk3399-pc/roc-rk3399-pc.c index b9049ab..8f23ce2 100644 --- a/board/firefly/roc-rk3399-pc/roc-rk3399-pc.c +++ b/board/firefly/roc-rk3399-pc/roc-rk3399-pc.c @@ -7,6 +7,10 @@ #include #include #include +#include +#include +#include +#include #ifndef CONFIG_SPL_BUILD int board_early_init_f(void) @@ -28,3 +32,32 @@ out: return 0; } #endif + +#if defined(CONFIG_TPL_BUILD) || \ + (!defined(CONFIG_TPL) && defined(CONFIG_SPL_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 c7187dc..79bdf34 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