From 1125f78e4b0a2a455b70125b4a03828b857e0f40 Mon Sep 17 00:00:00 2001 From: Martin Sekera Date: Mon, 26 Apr 2021 01:41:28 +0200 Subject: [PATCH] add sys-boot/u-boot --- ...Correct-boot-order-to-be-USB-SD-eMMC.patch | 38 +++++++++++ ...e-the-power-LED-during-early-startup.patch | 50 +++++++++++++++ sys-boot/u-boot/u-boot-2021.04.ebuild | 64 +++++++++++++++++++ 3 files changed, 152 insertions(+) create mode 100644 sys-boot/u-boot/files/0002-Correct-boot-order-to-be-USB-SD-eMMC.patch create mode 100644 sys-boot/u-boot/files/0003-Enable-the-power-LED-during-early-startup.patch create mode 100644 sys-boot/u-boot/u-boot-2021.04.ebuild diff --git a/sys-boot/u-boot/files/0002-Correct-boot-order-to-be-USB-SD-eMMC.patch b/sys-boot/u-boot/files/0002-Correct-boot-order-to-be-USB-SD-eMMC.patch new file mode 100644 index 0000000..b6e755a --- /dev/null +++ b/sys-boot/u-boot/files/0002-Correct-boot-order-to-be-USB-SD-eMMC.patch @@ -0,0 +1,38 @@ +From e622965b31e1d08c2b7c6b3a8d683c59f37b2733 Mon Sep 17 00:00:00 2001 +From: Nadia Holmquist Pedersen +Date: Sat, 20 Jun 2020 01:47:52 +0200 +Subject: [PATCH 2/3] Correct boot order to be USB -> SD -> eMMC + +--- + include/configs/rockchip-common.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/include/configs/rockchip-common.h b/include/configs/rockchip-common.h +index 0b9e24d1db..9e217fad2a 100644 +--- a/include/configs/rockchip-common.h ++++ b/include/configs/rockchip-common.h +@@ -17,8 +17,8 @@ + /* First try to boot from SD (index 0), then eMMC (index 1) */ + #if CONFIG_IS_ENABLED(CMD_MMC) + #define BOOT_TARGET_MMC(func) \ +- func(MMC, mmc, 0) \ +- func(MMC, mmc, 1) ++ func(MMC, mmc, 1) \ ++ func(MMC, mmc, 0) + #else + #define BOOT_TARGET_MMC(func) + #endif +@@ -55,9 +55,9 @@ + + #ifdef CONFIG_ROCKCHIP_RK3399 + #define BOOT_TARGET_DEVICES(func) \ ++ BOOT_TARGET_USB(func) \ + BOOT_TARGET_MMC(func) \ + BOOT_TARGET_NVME(func) \ +- BOOT_TARGET_USB(func) \ + BOOT_TARGET_PXE(func) \ + BOOT_TARGET_DHCP(func) \ + BOOT_TARGET_SF(func) +-- +2.27.0 + diff --git a/sys-boot/u-boot/files/0003-Enable-the-power-LED-during-early-startup.patch b/sys-boot/u-boot/files/0003-Enable-the-power-LED-during-early-startup.patch new file mode 100644 index 0000000..a2e811c --- /dev/null +++ b/sys-boot/u-boot/files/0003-Enable-the-power-LED-during-early-startup.patch @@ -0,0 +1,50 @@ +From 08e8ace48b5c3a31b44661ef22a8b8a459906d7e Mon Sep 17 00:00:00 2001 +From: Nadia Holmquist Pedersen +Date: Sat, 20 Jun 2020 01:49:49 +0200 +Subject: [PATCH 3/3] Enable the power LED during early startup + +--- + arch/arm/mach-rockchip/rk3399/rk3399.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/mach-rockchip/rk3399/rk3399.c b/arch/arm/mach-rockchip/rk3399/rk3399.c +index 4fda93b152..e24b39486d 100644 +--- a/arch/arm/mach-rockchip/rk3399/rk3399.c ++++ b/arch/arm/mach-rockchip/rk3399/rk3399.c +@@ -19,6 +19,8 @@ + #include + #include + #include ++#include ++#include + + DECLARE_GLOBAL_DATA_PTR; + +@@ -119,8 +121,8 @@ void board_debug_uart_init(void) + struct rk3399_grf_regs * const grf = (void *)GRF_BASE; + #ifdef CONFIG_TARGET_CHROMEBOOK_BOB + struct rk3399_pmugrf_regs * const pmugrf = (void *)PMUGRF_BASE; +- struct rockchip_gpio_regs * const gpio = (void *)GPIO0_BASE; + #endif ++ struct rockchip_gpio_regs * const gpio = (void *)GPIO0_BASE; + + #if defined(CONFIG_DEBUG_UART_BASE) && (CONFIG_DEBUG_UART_BASE == 0xff180000) + /* Enable early UART0 on the RK3399 */ +@@ -153,6 +155,14 @@ void board_debug_uart_init(void) + spl_gpio_set_pull(&pmugrf->gpio0_p, GPIO(BANK_B, 4), GPIO_PULL_NORMAL); + #endif /* CONFIG_TARGET_CHROMEBOOK_BOB */ + ++ { ++ // set GPIO0_A2/B3 to GPIO_ACTIVE_HIGH ++ // set GPIO0_A2/B3 to OUTPUT ++ int mask = (1UL << RK_PA2) | (1UL << RK_PB3); ++ setbits_le32(&gpio->swport_dr, mask); ++ setbits_le32(&gpio->swport_ddr, mask); ++ } ++ + /* Enable early UART2 channel C on the RK3399 */ + rk_clrsetreg(&grf->gpio4c_iomux, + GRF_GPIO4C3_SEL_MASK, +-- +2.27.0 + diff --git a/sys-boot/u-boot/u-boot-2021.04.ebuild b/sys-boot/u-boot/u-boot-2021.04.ebuild new file mode 100644 index 0000000..5b5d881 --- /dev/null +++ b/sys-boot/u-boot/u-boot-2021.04.ebuild @@ -0,0 +1,64 @@ +# Copyright 2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +MY_PV=$(ver_rs 2 -) +MY_P="${PN}-v${MY_PV}" + +DESCRIPTION="U-boot for the Pinebook Pro" +HOMEPAGE="https://www.denx.de/wiki/U-Boot" +SRC_URI="https://gitlab.denx.de/${PN}/${PN}/-/archive/v${MY_PV}/${PN}-v${MY_PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="-* arm64" + +UBOOT_ALL_DEFCONFIGS=( pinebook-pro-rk3399 ) +IUSE="${UBOOT_ALL_DEFCONFIGS[@]/#/uboot_defconfigs_}" +REQUIRED_USE="^^ ( ${IUSE} )" + +DEPEND=" + sys-apps/dtc + sys-firmware/trusted-firmware-a[tfa_platforms_rk3399] +" +RDEPEND="${DEPEND}" +BDEPEND="" +S="${WORKDIR}/${MY_P}" +PATCHES=( + "${FILESDIR}/0002-Correct-boot-order-to-be-USB-SD-eMMC.patch" + "${FILESDIR}/0003-Enable-the-power-LED-during-early-startup.patch" +) + +uboot_get_defconfig() { + local cfg + for cfg in "${UBOOT_ALL_DEFCONFIGS[@]}"; do + if use "uboot_defconfigs_${cfg}"; then + echo ${cfg}_defconfig + return 0 + fi + done + + die "no uboot_defconfigs_ set" +} + + +src_configure() { + emake $(uboot_get_defconfig) +} + +src_compile() { + emake BL31=/usr/share/trusted-firmware-a/rk3399/bl31.elf +} + +src_install() { + insinto /usr/share/u-boot + doins idbloader.img + doins u-boot.itb +} + +pkg_postinst() { + elog "To install U-boot:" + elog "Determine your device, then" + elog "if=/usr/share/u-boot/idbloader.img of=/dev/... seek=64 conv=notrunc" + elog "if=/usr/share/u-boot/u-boot.itb of=/dev/... seek=16384 conv=notrunc" +}