Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] New packages: rockpro64-base and rockpro64-uboot
@ 2022-03-30 11:34 tsndqst
  2022-03-30 12:41 ` [PR PATCH] [Updated] " tsndqst
                   ` (6 more replies)
  0 siblings, 7 replies; 9+ messages in thread
From: tsndqst @ 2022-03-30 11:34 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1309 bytes --]

There is a new pull request by tsndqst against master on the void-packages repository

https://github.com/tsndqst/void-packages rockpro64
https://github.com/void-linux/void-packages/pull/36419

New packages: rockpro64-base and rockpro64-uboot
PR based on https://github.com/void-linux/void-packages/pull/33556

<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **YES**

#### New package
- This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!-- 
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - aarch64-musl
  - armv7l
  - armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/36419.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rockpro64-36419.patch --]
[-- Type: text/x-diff, Size: 17540 bytes --]

From 7468e60e3f9e1e7b2e5a612f795a448d6c7b724e Mon Sep 17 00:00:00 2001
From: Tiemen Werkman <tiemen@opifexonline.com>
Date: Wed, 13 Oct 2021 16:40:00 +0200
Subject: [PATCH 1/3] New package: rockpro64-base

---
 srcpkgs/rockpro64-base/INSTALL  |  8 ++++++++
 srcpkgs/rockpro64-base/template | 11 +++++++++++
 2 files changed, 19 insertions(+)
 create mode 100644 srcpkgs/rockpro64-base/INSTALL
 create mode 100644 srcpkgs/rockpro64-base/template

diff --git a/srcpkgs/rockpro64-base/INSTALL b/srcpkgs/rockpro64-base/INSTALL
new file mode 100644
index 000000000000..7e67f362c796
--- /dev/null
+++ b/srcpkgs/rockpro64-base/INSTALL
@@ -0,0 +1,8 @@
+if [ "${UPDATE}" = "no" ] && [ "${ACTION}" = "post" ]; then
+	mkdir -p etc/runit/runsvdir/default/
+	mkdir -p etc/sv/agetty-ttyS2/
+	ln -sf /etc/sv/sshd etc/runit/runsvdir/default/
+	ln -sf /etc/sv/dhcpcd etc/runit/runsvdir/default/
+	ln -sf /etc/sv/agetty-ttyS2 etc/runit/runsvdir/default/
+	cd etc/sv/agetty-ttyS2/ && ln -sf ../agetty-serial/conf conf && ln -sf ../agetty-generic/finish finish && ln -sf ../agetty-serial/run run && ln -sf /run/runit/supervise.agetty-ttyS2
+fi
diff --git a/srcpkgs/rockpro64-base/template b/srcpkgs/rockpro64-base/template
new file mode 100644
index 000000000000..e90db4f4396d
--- /dev/null
+++ b/srcpkgs/rockpro64-base/template
@@ -0,0 +1,11 @@
+# Template file for 'rockpro64-base'
+pkgname=rockpro64-base
+version=1
+revision=1
+archs="aarch64*"
+build_style=meta
+depends="rockpro64-uboot u-boot-menu dracut"
+short_desc="Void Linux RockPro64 platform package"
+maintainer="Tiemen Werkman <tiemen@opifexonline.com>"
+license="Public Domain"
+homepage="https://www.voidlinux.org"

From 3ad6a2aac97eede2f4f80608ee5dfbeb766e93e2 Mon Sep 17 00:00:00 2001
From: Tiemen Werkman <tiemen@opifexonline.com>
Date: Wed, 13 Oct 2021 16:40:20 +0200
Subject: [PATCH 2/3] New package: rockpro64-uboot

---
 .../patches/phy-rockchip-inno-usb2.c.patch    |  75 ++++++++++++
 .../rockpro64-uboot/patches/rk3399.c.patch    |  51 +++++++++
 .../patches/rockpro64-rk3399.c.patch          |  53 +++++++++
 .../patches/rockpro64-rk3399.h.patch          |  33 ++++++
 .../patches/rockpro64-rk3399_defconfig.patch  | 108 ++++++++++++++++++
 srcpkgs/rockpro64-uboot/template              |  47 ++++++++
 srcpkgs/rockpro64-uboot/update                |   1 +
 7 files changed, 368 insertions(+)
 create mode 100644 srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch
 create mode 100644 srcpkgs/rockpro64-uboot/patches/rk3399.c.patch
 create mode 100644 srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch
 create mode 100644 srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch
 create mode 100644 srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch
 create mode 100644 srcpkgs/rockpro64-uboot/template
 create mode 100644 srcpkgs/rockpro64-uboot/update

diff --git a/srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch b/srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch
new file mode 100644
index 000000000000..1f9839889f0d
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch
@@ -0,0 +1,75 @@
+    Fix USB on RockPro64:
+    Without this patch uboot crashes when resetting usb, preventing the kernel
+    from loading.
+    The only alternative to this patch is to disable Preboot or OHCI which 
+    also leaves you with no console keyboard.
+
+    https://patchwork.ozlabs.org/project/uboot/patch/20210406151059.1187379-1-icenowy@aosc.io/
+
+diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+index 62b8ba3a4a..be9cc99d90 100644
+--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
++++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+@@ -62,6 +62,8 @@ struct rockchip_usb2phy {
+ 	void *reg_base;
+ 	struct clk phyclk;
+ 	const struct rockchip_usb2phy_cfg *phy_cfg;
++	int init_count;
++	int power_on_count;
+ };
+ 
+ static inline int property_enable(void *reg_base,
+@@ -92,6 +94,10 @@ static int rockchip_usb2phy_power_on(struct phy *phy)
+ 	struct rockchip_usb2phy *priv = dev_get_priv(parent);
+ 	const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy);
+ 
++	priv->power_on_count++;
++	if (priv->power_on_count != 1)
++		return 0;
++
+ 	property_enable(priv->reg_base, &port_cfg->phy_sus, false);
+ 
+ 	/* waiting for the utmi_clk to become stable */
+@@ -106,6 +112,10 @@ static int rockchip_usb2phy_power_off(struct phy *phy)
+ 	struct rockchip_usb2phy *priv = dev_get_priv(parent);
+ 	const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy);
+ 
++	priv->power_on_count--;
++	if (priv->power_on_count != 0)
++		return 0;
++
+ 	property_enable(priv->reg_base, &port_cfg->phy_sus, true);
+ 
+ 	return 0;
+@@ -118,6 +128,10 @@ static int rockchip_usb2phy_init(struct phy *phy)
+ 	const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy);
+ 	int ret;
+ 
++	priv->init_count++;
++	if (priv->init_count != 1)
++		return 0;
++
+ 	ret = clk_enable(&priv->phyclk);
+ 	if (ret) {
+ 		dev_err(phy->dev, "failed to enable phyclk (ret=%d)\n", ret);
+@@ -140,6 +154,10 @@ static int rockchip_usb2phy_exit(struct phy *phy)
+ 	struct udevice *parent = dev_get_parent(phy->dev);
+ 	struct rockchip_usb2phy *priv = dev_get_priv(parent);
+ 
++	priv->init_count--;
++	if (priv->init_count != 0)
++		return 0;
++
+ 	clk_disable(&priv->phyclk);
+ 
+ 	return 0;
+@@ -212,6 +230,9 @@ static int rockchip_usb2phy_probe(struct udevice *dev)
+ 		return ret;
+ 	}
+ 
++	priv->power_on_count = 0;
++	priv->init_count = 0;
++
+ 	return 0;
+ }
+ 
diff --git a/srcpkgs/rockpro64-uboot/patches/rk3399.c.patch b/srcpkgs/rockpro64-uboot/patches/rk3399.c.patch
new file mode 100644
index 000000000000..f3c08bf33c61
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/rk3399.c.patch
@@ -0,0 +1,51 @@
+From 1a01021c9361c4e017cb5b032300f5555c393710 Mon Sep 17 00:00:00 2001
+From: dhivael <dhivael.git@eno.space>
+Date: Sat, 11 Jan 2020 15:04:46 +0100
+Subject: rk3399: light pinebook power and standby leds during early boot
+
+this is a hack, but it works for now.
+---
+ 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 863024d071..cf37129d55 100644
+--- a/arch/arm/mach-rockchip/rk3399/rk3399.c
++++ b/arch/arm/mach-rockchip/rk3399/rk3399.c
+@@ -15,6 +15,8 @@
+ #include <asm/arch-rockchip/grf_rk3399.h>
+ #include <asm/arch-rockchip/hardware.h>
+ #include <power/regulator.h>
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/pinctrl/rockchip.h>
+ 
+ DECLARE_GLOBAL_DATA_PTR;
+ 
+@@ -115,8 +117,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 */
+@@ -149,6 +151,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,
+-- 
+cgit v1.2.3
+
diff --git a/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch
new file mode 100644
index 000000000000..b40c9270302e
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch
@@ -0,0 +1,53 @@
+SPI flash partitions
+	This patch is required to update SPI flash partitions in the devicetree.
+	It comes from Sigmaris's for o U-Boot.
+	https://github.com/sigmaris/u-boot/blob/ci-2021.04-rockpro64/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c
+
+diff --git a/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c b/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c
+index d79084614f..6f7f661154 100644
+--- a/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c
++++ b/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c
+@@ -5,6 +5,9 @@
+ 
+ #include <common.h>
+ #include <dm.h>
++#include <fdt_support.h>
++#include <jffs2/load_kernel.h>
++#include <mtd_node.h>
+ #include <init.h>
+ #include <syscon.h>
+ #include <asm/io.h>
+@@ -16,6 +19,33 @@
+ #define GRF_IO_VSEL_BT565_SHIFT 0
+ #define PMUGRF_CON0_VSEL_SHIFT 8
+ 
++#ifdef CONFIG_OF_BOARD_SETUP
++int ft_board_setup(void *blob, struct bd_info *bd)
++{
++#ifdef CONFIG_FDT_FIXUP_PARTITIONS
++	int ret, noff;
++	static const struct node_info nodes[] = {
++		{ "jedec,spi-nor", MTD_DEV_TYPE_NOR, },
++	};
++
++	noff = fdt_node_offset_by_compatible(blob, -1, nodes[0].compat);
++	if (noff != -FDT_ERR_NOTFOUND) {
++		ret = fdt_setprop_u32(blob, noff, "#size-cells", 1);
++		if (ret)
++			return ret;
++		ret = fdt_setprop_u32(blob, noff, "#address-cells", 1);
++		if (ret)
++			return ret;
++	} else {
++		return -ENODEV;
++	}
++
++	fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
++#endif
++	return 0;
++}
++#endif
++
+ #ifdef CONFIG_MISC_INIT_R
+ static void setup_iodomain(void)
+ {
diff --git a/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch
new file mode 100644
index 000000000000..d784a696e852
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch
@@ -0,0 +1,33 @@
+    rockchip: Pinebook Pro: fix mmc boot ordering
+    
+    On the Pinebook Pro, and perhaps some other boards, the mmc indices are
+    opposite from what is implied by the comment in
+    include/configs/rockchip-common.h.
+    
+    This commit fixes the boot ordering to prioritize the SD card over eMMC.
+    
+    Most distributions of U-Boot that actually target rk3399 boards apply a
+    similar patch, such as Manjaro (shipped by default on PBP) and armbian.
+    
+    https://gitlab.manjaro.org/manjaro-arm/packages/core/uboot-pinebookpro/-/blob/60ed56b9bf8809309ec6252bfc45bca38c2b858a/0002-Correct-boot-order-to-be-USB-SD-eMMC.patch
+    https://github.com/armbian/build/blob/5a2b2c360b9c26ca4bd0d309af7cd3994fd08b7d/patch/u-boot/u-boot-rockchip64-mainline/general-prioritize-sd.patch
+    
+diff --git a/include/configs/rockpro64_rk3399.h b/include/configs/rockpro64_rk3399.h
+index 903e9df527..7c8f30dbaf 100644
+--- a/include/configs/rockpro64_rk3399.h
++++ b/include/configs/rockpro64_rk3399.h
+@@ -12,6 +12,14 @@
+ 	"stderr=serial,vidconsole\0"
+ 
+ #include <configs/rk3399_common.h>
++ 
++/* On RockPro64, mmc1 is SD and mmc0 is eMMC */
++#if CONFIG_IS_ENABLED(CMD_MMC)
++	#undef BOOT_TARGET_MMC
++	#define BOOT_TARGET_MMC(func) \
++		func(MMC, mmc, 1) \
++		func(MMC, mmc, 0)
++#endif
+ 
+ #define SDRAM_BANK_SIZE			(2UL << 30)
+ 
diff --git a/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch
new file mode 100644
index 000000000000..af207a228085
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch
@@ -0,0 +1,108 @@
+
+Autoboot
+	Disable bootdelay. Boot can be interrupted by pressing either <q> or
+	<ctrl-c>.
+
+Baudrate
+	Set baudrate to 115200 to prevent garbled output and improve
+	compatibility. The default baud rate is 1500000 bps. This produces
+	garbled output on many serial adapters and is a non-standard speed.
+
+Supported features
+	The following features have been enabled and are supported:
+	- NVME support.
+	- AHCI over PCIE.
+	- USB3 and keyboard support.
+	- fdt overlay.
+	- MDT partitions.
+	- BTRFS support enabled.
+
+diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig
+index ae11a8f5eb..827d37eb72 100644
+--- a/configs/rockpro64-rk3399_defconfig
++++ b/configs/rockpro64-rk3399_defconfig
+@@ -4,14 +4,17 @@ CONFIG_SYS_TEXT_BASE=0x00200000
+ CONFIG_NR_DRAM_BANKS=1
+ CONFIG_ENV_SIZE=0x8000
+ CONFIG_ENV_OFFSET=0x3F8000
+-CONFIG_DEFAULT_DEVICE_TREE="rk3399-rockpro64"
+ CONFIG_ROCKCHIP_RK3399=y
+ CONFIG_TARGET_ROCKPRO64_RK3399=y
+ CONFIG_DEBUG_UART_BASE=0xFF1A0000
+ CONFIG_DEBUG_UART_CLOCK=24000000
+ CONFIG_SPL_SPI_FLASH_SUPPORT=y
+ CONFIG_SPL_SPI_SUPPORT=y
++CONFIG_DEFAULT_DEVICE_TREE="rk3399-rockpro64"
+ CONFIG_DEBUG_UART=y
++CONFIG_AHCI=y
++CONFIG_OF_BOARD_SETUP=y
++CONFIG_BOOTDELAY=0
+ CONFIG_USE_PREBOOT=y
+ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rockpro64.dtb"
+ CONFIG_DISPLAY_BOARDINFO_LATE=y
+@@ -20,29 +23,40 @@ CONFIG_MISC_INIT_R=y
+ CONFIG_SPL_STACK_R=y
+ CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000
+ CONFIG_SPL_SPI_LOAD=y
++# CONFIG_SPL_ATF_NO_PLATFORM_PARAM is not set
+ CONFIG_TPL=y
+ CONFIG_CMD_BOOTZ=y
++CONFIG_CMD_BOOTMENU=y
+ CONFIG_CMD_GPT=y
+ CONFIG_CMD_MMC=y
+ CONFIG_CMD_PCI=y
+ CONFIG_CMD_USB=y
+-# CONFIG_CMD_SETEXPR is not set
+ CONFIG_CMD_TIME=y
++CONFIG_CMD_MTDPARTS=y
++CONFIG_MTDIDS_DEFAULT="nor0=spi0.0"
++CONFIG_MTDPARTS_DEFAULT="mtdparts=spi0.0:384k(u-boot-spl),3680k(u-boot),32k(u-boot-env),-(user)"
+ CONFIG_SPL_OF_CONTROL=y
+ CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
+ CONFIG_ENV_IS_IN_SPI_FLASH=y
+ CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+ CONFIG_SPL_DM_SEQ_ALIAS=y
++CONFIG_SCSI_AHCI=y
++CONFIG_AHCI_PCI=y
+ CONFIG_ROCKCHIP_GPIO=y
+ CONFIG_SYS_I2C_ROCKCHIP=y
++CONFIG_DM_KEYBOARD=y
++CONFIG_LED=y
++CONFIG_LED_GPIO=y
+ CONFIG_MISC=y
+ CONFIG_ROCKCHIP_EFUSE=y
+ CONFIG_MMC_DW=y
+ CONFIG_MMC_DW_ROCKCHIP=y
+ CONFIG_MMC_SDHCI=y
+ CONFIG_MMC_SDHCI_ROCKCHIP=y
++CONFIG_MTD=y
+ CONFIG_SF_DEFAULT_BUS=1
+ CONFIG_SPI_FLASH_GIGADEVICE=y
++CONFIG_SPI_FLASH_MTD=y
+ CONFIG_DM_ETH=y
+ CONFIG_ETH_DESIGNWARE=y
+ CONFIG_GMAC_ROCKCHIP=y
+@@ -58,7 +72,9 @@ CONFIG_RAM_RK3399_LPDDR4=y
+ CONFIG_DM_RESET=y
+ CONFIG_DM_RNG=y
+ CONFIG_RNG_ROCKCHIP=y
+-CONFIG_BAUDRATE=1500000
++CONFIG_SCSI=y
++CONFIG_DM_SCSI=y
++CONFIG_BAUDRATE=115200
+ CONFIG_DEBUG_UART_SHIFT=2
+ CONFIG_ROCKCHIP_SPI=y
+ CONFIG_SYSRESET=y
+@@ -82,5 +98,12 @@ CONFIG_DM_VIDEO=y
+ CONFIG_DISPLAY=y
+ CONFIG_VIDEO_ROCKCHIP=y
+ CONFIG_DISPLAY_ROCKCHIP_HDMI=y
++CONFIG_FS_BTRFS=y
+ CONFIG_SPL_TINY_MEMSET=y
+ CONFIG_ERRNO_STR=y
++CONFIG_OF_LIBFDT_OVERLAY=y
++CONFIG_FDT_FIXUP_PARTITIONS=y
++CONFIG_AUTOBOOT_PROMPT="Autobooting in %d seconds... press q or Ctrl-C to interrupt\n"
++CONFIG_AUTOBOOT_KEYED=y
++CONFIG_AUTOBOOT_STOP_STR="q"
++CONFIG_AUTOBOOT_KEYED_CTRLC=y
diff --git a/srcpkgs/rockpro64-uboot/template b/srcpkgs/rockpro64-uboot/template
new file mode 100644
index 000000000000..10daa7174b83
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/template
@@ -0,0 +1,47 @@
+# Template file for 'rockpro64-uboot'
+pkgname=rockpro64-uboot
+version=2021.07
+revision=1
+archs="aarch64*"
+wrksrc="u-boot-${version}"
+hostmakedepends="flex bc dtc python3"
+makedepends="atf-rk3399-bl31"
+depends="u-boot-tools"
+short_desc="Das U-Boot for the RockPro64 SBC"
+maintainer="Tiemen Werkman <tiemen@opifexonline.com>"
+license="GPL-2.0-or-later, BSD-3-Clause"
+homepage="https://www.denx.de/wiki/U-Boot/"
+distfiles="https://ftp.denx.de/pub/u-boot/u-boot-${version}.tar.bz2"
+checksum=312b7eeae44581d1362c3a3f02c28d806647756c82ba8c72241c7cdbe68ba77e
+
+do_configure() {
+	unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
+	make ${makejobs} rockpro64-rk3399_defconfig
+}
+
+do_build() {
+	unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
+	if [ "$CROSS_BUILD" ]; then
+		export CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-
+	fi
+	make ${makejobs} EXTRAVERSION=-${revision} \
+		BL31=${XBPS_CROSS_BASE}/usr/lib/trusted-firmware-a/rk3399/bl31.elf
+}
+
+do_install() {
+	vinstall idbloader.img 0644 usr/lib/rockpro64-uboot
+	vinstall u-boot.itb 0644 usr/lib/rockpro64-uboot
+	vlicense Licenses/Exceptions
+	vlicense Licenses/OFL.txt
+	vlicense Licenses/README
+	vlicense Licenses/bsd-2-clause.txt
+	vlicense Licenses/bsd-3-clause.txt
+	vlicense Licenses/eCos-2.0.txt
+	vlicense Licenses/gpl-2.0.txt
+	vlicense Licenses/ibm-pibs.txt
+	vlicense Licenses/isc.txt
+	vlicense Licenses/lgpl-2.0.txt
+	vlicense Licenses/lgpl-2.1.txt
+	vlicense Licenses/r8a779x_usb3.txt
+	vlicense Licenses/x11.txt
+}
diff --git a/srcpkgs/rockpro64-uboot/update b/srcpkgs/rockpro64-uboot/update
new file mode 100644
index 000000000000..cfcfccd3fb43
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/update
@@ -0,0 +1 @@
+pkgname="u-boot"

From eaec98d3e8c67fb50cc17b980939576d899683ce Mon Sep 17 00:00:00 2001
From: Tim Sandquist <tim.sandquist@gmail.com>
Date: Tue, 29 Mar 2022 18:56:58 -0500
Subject: [PATCH 3/3] rockpro64-base: add linux package to depends

---
 srcpkgs/rockpro64-base/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/rockpro64-base/template b/srcpkgs/rockpro64-base/template
index e90db4f4396d..36c9ccb23b3e 100644
--- a/srcpkgs/rockpro64-base/template
+++ b/srcpkgs/rockpro64-base/template
@@ -1,10 +1,10 @@
 # Template file for 'rockpro64-base'
 pkgname=rockpro64-base
 version=1
-revision=1
+revision=2
 archs="aarch64*"
 build_style=meta
-depends="rockpro64-uboot u-boot-menu dracut"
+depends="linux rockpro64-uboot u-boot-menu dracut"
 short_desc="Void Linux RockPro64 platform package"
 maintainer="Tiemen Werkman <tiemen@opifexonline.com>"
 license="Public Domain"

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PR PATCH] [Updated] New packages: rockpro64-base and rockpro64-uboot
  2022-03-30 11:34 [PR PATCH] New packages: rockpro64-base and rockpro64-uboot tsndqst
@ 2022-03-30 12:41 ` tsndqst
  2022-04-10  5:50 ` Anachron
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: tsndqst @ 2022-03-30 12:41 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1314 bytes --]

There is an updated pull request by tsndqst against master on the void-packages repository

https://github.com/tsndqst/void-packages rockpro64
https://github.com/void-linux/void-packages/pull/36419

New packages: rockpro64-base and rockpro64-uboot
PR based on https://github.com/void-linux/void-packages/pull/33556

<!-- Uncomment relevant sections and delete options which are not applicable -->

#### Testing the changes
- I tested the changes in this PR: **YES**

#### New package
- This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**

<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in
https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration
and test at least one native build and, if supported, at least one cross build.
Ignore this section if this PR is not skipping CI.
-->
<!-- 
#### Local build testing
- I built this PR locally for my native architecture, (ARCH-LIBC)
- I built this PR locally for these architectures (if supported. mark crossbuilds):
  - aarch64-musl
  - armv7l
  - armv6l-musl
-->


A patch file from https://github.com/void-linux/void-packages/pull/36419.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rockpro64-36419.patch --]
[-- Type: text/x-diff, Size: 17459 bytes --]

From fe1cac583b4108e5924ef4f56d1e5d96bec4c68c Mon Sep 17 00:00:00 2001
From: Tiemen Werkman <tiemen@opifexonline.com>
Date: Wed, 13 Oct 2021 16:40:00 +0200
Subject: [PATCH 1/3] New package: rockpro64-base

---
 srcpkgs/rockpro64-base/INSTALL  |  8 ++++++++
 srcpkgs/rockpro64-base/template | 11 +++++++++++
 2 files changed, 19 insertions(+)
 create mode 100644 srcpkgs/rockpro64-base/INSTALL
 create mode 100644 srcpkgs/rockpro64-base/template

diff --git a/srcpkgs/rockpro64-base/INSTALL b/srcpkgs/rockpro64-base/INSTALL
new file mode 100644
index 000000000000..7e67f362c796
--- /dev/null
+++ b/srcpkgs/rockpro64-base/INSTALL
@@ -0,0 +1,8 @@
+if [ "${UPDATE}" = "no" ] && [ "${ACTION}" = "post" ]; then
+	mkdir -p etc/runit/runsvdir/default/
+	mkdir -p etc/sv/agetty-ttyS2/
+	ln -sf /etc/sv/sshd etc/runit/runsvdir/default/
+	ln -sf /etc/sv/dhcpcd etc/runit/runsvdir/default/
+	ln -sf /etc/sv/agetty-ttyS2 etc/runit/runsvdir/default/
+	cd etc/sv/agetty-ttyS2/ && ln -sf ../agetty-serial/conf conf && ln -sf ../agetty-generic/finish finish && ln -sf ../agetty-serial/run run && ln -sf /run/runit/supervise.agetty-ttyS2
+fi
diff --git a/srcpkgs/rockpro64-base/template b/srcpkgs/rockpro64-base/template
new file mode 100644
index 000000000000..e90db4f4396d
--- /dev/null
+++ b/srcpkgs/rockpro64-base/template
@@ -0,0 +1,11 @@
+# Template file for 'rockpro64-base'
+pkgname=rockpro64-base
+version=1
+revision=1
+archs="aarch64*"
+build_style=meta
+depends="rockpro64-uboot u-boot-menu dracut"
+short_desc="Void Linux RockPro64 platform package"
+maintainer="Tiemen Werkman <tiemen@opifexonline.com>"
+license="Public Domain"
+homepage="https://www.voidlinux.org"

From fdfaad700643e5015fd39abb3f6824ad847bb6ac Mon Sep 17 00:00:00 2001
From: Tiemen Werkman <tiemen@opifexonline.com>
Date: Wed, 13 Oct 2021 16:40:20 +0200
Subject: [PATCH 2/3] New package: rockpro64-uboot

---
 .../patches/phy-rockchip-inno-usb2.c.patch    |  75 ++++++++++++
 .../rockpro64-uboot/patches/rk3399.c.patch    |  51 +++++++++
 .../patches/rockpro64-rk3399.c.patch          |  53 +++++++++
 .../patches/rockpro64-rk3399.h.patch          |  33 ++++++
 .../patches/rockpro64-rk3399_defconfig.patch  | 108 ++++++++++++++++++
 srcpkgs/rockpro64-uboot/template              |  47 ++++++++
 srcpkgs/rockpro64-uboot/update                |   1 +
 7 files changed, 368 insertions(+)
 create mode 100644 srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch
 create mode 100644 srcpkgs/rockpro64-uboot/patches/rk3399.c.patch
 create mode 100644 srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch
 create mode 100644 srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch
 create mode 100644 srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch
 create mode 100644 srcpkgs/rockpro64-uboot/template
 create mode 100644 srcpkgs/rockpro64-uboot/update

diff --git a/srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch b/srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch
new file mode 100644
index 000000000000..1f9839889f0d
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch
@@ -0,0 +1,75 @@
+    Fix USB on RockPro64:
+    Without this patch uboot crashes when resetting usb, preventing the kernel
+    from loading.
+    The only alternative to this patch is to disable Preboot or OHCI which 
+    also leaves you with no console keyboard.
+
+    https://patchwork.ozlabs.org/project/uboot/patch/20210406151059.1187379-1-icenowy@aosc.io/
+
+diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+index 62b8ba3a4a..be9cc99d90 100644
+--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
++++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+@@ -62,6 +62,8 @@ struct rockchip_usb2phy {
+ 	void *reg_base;
+ 	struct clk phyclk;
+ 	const struct rockchip_usb2phy_cfg *phy_cfg;
++	int init_count;
++	int power_on_count;
+ };
+ 
+ static inline int property_enable(void *reg_base,
+@@ -92,6 +94,10 @@ static int rockchip_usb2phy_power_on(struct phy *phy)
+ 	struct rockchip_usb2phy *priv = dev_get_priv(parent);
+ 	const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy);
+ 
++	priv->power_on_count++;
++	if (priv->power_on_count != 1)
++		return 0;
++
+ 	property_enable(priv->reg_base, &port_cfg->phy_sus, false);
+ 
+ 	/* waiting for the utmi_clk to become stable */
+@@ -106,6 +112,10 @@ static int rockchip_usb2phy_power_off(struct phy *phy)
+ 	struct rockchip_usb2phy *priv = dev_get_priv(parent);
+ 	const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy);
+ 
++	priv->power_on_count--;
++	if (priv->power_on_count != 0)
++		return 0;
++
+ 	property_enable(priv->reg_base, &port_cfg->phy_sus, true);
+ 
+ 	return 0;
+@@ -118,6 +128,10 @@ static int rockchip_usb2phy_init(struct phy *phy)
+ 	const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy);
+ 	int ret;
+ 
++	priv->init_count++;
++	if (priv->init_count != 1)
++		return 0;
++
+ 	ret = clk_enable(&priv->phyclk);
+ 	if (ret) {
+ 		dev_err(phy->dev, "failed to enable phyclk (ret=%d)\n", ret);
+@@ -140,6 +154,10 @@ static int rockchip_usb2phy_exit(struct phy *phy)
+ 	struct udevice *parent = dev_get_parent(phy->dev);
+ 	struct rockchip_usb2phy *priv = dev_get_priv(parent);
+ 
++	priv->init_count--;
++	if (priv->init_count != 0)
++		return 0;
++
+ 	clk_disable(&priv->phyclk);
+ 
+ 	return 0;
+@@ -212,6 +230,9 @@ static int rockchip_usb2phy_probe(struct udevice *dev)
+ 		return ret;
+ 	}
+ 
++	priv->power_on_count = 0;
++	priv->init_count = 0;
++
+ 	return 0;
+ }
+ 
diff --git a/srcpkgs/rockpro64-uboot/patches/rk3399.c.patch b/srcpkgs/rockpro64-uboot/patches/rk3399.c.patch
new file mode 100644
index 000000000000..f3c08bf33c61
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/rk3399.c.patch
@@ -0,0 +1,51 @@
+From 1a01021c9361c4e017cb5b032300f5555c393710 Mon Sep 17 00:00:00 2001
+From: dhivael <dhivael.git@eno.space>
+Date: Sat, 11 Jan 2020 15:04:46 +0100
+Subject: rk3399: light pinebook power and standby leds during early boot
+
+this is a hack, but it works for now.
+---
+ 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 863024d071..cf37129d55 100644
+--- a/arch/arm/mach-rockchip/rk3399/rk3399.c
++++ b/arch/arm/mach-rockchip/rk3399/rk3399.c
+@@ -15,6 +15,8 @@
+ #include <asm/arch-rockchip/grf_rk3399.h>
+ #include <asm/arch-rockchip/hardware.h>
+ #include <power/regulator.h>
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/pinctrl/rockchip.h>
+ 
+ DECLARE_GLOBAL_DATA_PTR;
+ 
+@@ -115,8 +117,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 */
+@@ -149,6 +151,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,
+-- 
+cgit v1.2.3
+
diff --git a/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch
new file mode 100644
index 000000000000..b40c9270302e
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch
@@ -0,0 +1,53 @@
+SPI flash partitions
+	This patch is required to update SPI flash partitions in the devicetree.
+	It comes from Sigmaris's for o U-Boot.
+	https://github.com/sigmaris/u-boot/blob/ci-2021.04-rockpro64/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c
+
+diff --git a/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c b/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c
+index d79084614f..6f7f661154 100644
+--- a/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c
++++ b/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c
+@@ -5,6 +5,9 @@
+ 
+ #include <common.h>
+ #include <dm.h>
++#include <fdt_support.h>
++#include <jffs2/load_kernel.h>
++#include <mtd_node.h>
+ #include <init.h>
+ #include <syscon.h>
+ #include <asm/io.h>
+@@ -16,6 +19,33 @@
+ #define GRF_IO_VSEL_BT565_SHIFT 0
+ #define PMUGRF_CON0_VSEL_SHIFT 8
+ 
++#ifdef CONFIG_OF_BOARD_SETUP
++int ft_board_setup(void *blob, struct bd_info *bd)
++{
++#ifdef CONFIG_FDT_FIXUP_PARTITIONS
++	int ret, noff;
++	static const struct node_info nodes[] = {
++		{ "jedec,spi-nor", MTD_DEV_TYPE_NOR, },
++	};
++
++	noff = fdt_node_offset_by_compatible(blob, -1, nodes[0].compat);
++	if (noff != -FDT_ERR_NOTFOUND) {
++		ret = fdt_setprop_u32(blob, noff, "#size-cells", 1);
++		if (ret)
++			return ret;
++		ret = fdt_setprop_u32(blob, noff, "#address-cells", 1);
++		if (ret)
++			return ret;
++	} else {
++		return -ENODEV;
++	}
++
++	fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
++#endif
++	return 0;
++}
++#endif
++
+ #ifdef CONFIG_MISC_INIT_R
+ static void setup_iodomain(void)
+ {
diff --git a/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch
new file mode 100644
index 000000000000..d784a696e852
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch
@@ -0,0 +1,33 @@
+    rockchip: Pinebook Pro: fix mmc boot ordering
+    
+    On the Pinebook Pro, and perhaps some other boards, the mmc indices are
+    opposite from what is implied by the comment in
+    include/configs/rockchip-common.h.
+    
+    This commit fixes the boot ordering to prioritize the SD card over eMMC.
+    
+    Most distributions of U-Boot that actually target rk3399 boards apply a
+    similar patch, such as Manjaro (shipped by default on PBP) and armbian.
+    
+    https://gitlab.manjaro.org/manjaro-arm/packages/core/uboot-pinebookpro/-/blob/60ed56b9bf8809309ec6252bfc45bca38c2b858a/0002-Correct-boot-order-to-be-USB-SD-eMMC.patch
+    https://github.com/armbian/build/blob/5a2b2c360b9c26ca4bd0d309af7cd3994fd08b7d/patch/u-boot/u-boot-rockchip64-mainline/general-prioritize-sd.patch
+    
+diff --git a/include/configs/rockpro64_rk3399.h b/include/configs/rockpro64_rk3399.h
+index 903e9df527..7c8f30dbaf 100644
+--- a/include/configs/rockpro64_rk3399.h
++++ b/include/configs/rockpro64_rk3399.h
+@@ -12,6 +12,14 @@
+ 	"stderr=serial,vidconsole\0"
+ 
+ #include <configs/rk3399_common.h>
++ 
++/* On RockPro64, mmc1 is SD and mmc0 is eMMC */
++#if CONFIG_IS_ENABLED(CMD_MMC)
++	#undef BOOT_TARGET_MMC
++	#define BOOT_TARGET_MMC(func) \
++		func(MMC, mmc, 1) \
++		func(MMC, mmc, 0)
++#endif
+ 
+ #define SDRAM_BANK_SIZE			(2UL << 30)
+ 
diff --git a/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch
new file mode 100644
index 000000000000..af207a228085
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch
@@ -0,0 +1,108 @@
+
+Autoboot
+	Disable bootdelay. Boot can be interrupted by pressing either <q> or
+	<ctrl-c>.
+
+Baudrate
+	Set baudrate to 115200 to prevent garbled output and improve
+	compatibility. The default baud rate is 1500000 bps. This produces
+	garbled output on many serial adapters and is a non-standard speed.
+
+Supported features
+	The following features have been enabled and are supported:
+	- NVME support.
+	- AHCI over PCIE.
+	- USB3 and keyboard support.
+	- fdt overlay.
+	- MDT partitions.
+	- BTRFS support enabled.
+
+diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig
+index ae11a8f5eb..827d37eb72 100644
+--- a/configs/rockpro64-rk3399_defconfig
++++ b/configs/rockpro64-rk3399_defconfig
+@@ -4,14 +4,17 @@ CONFIG_SYS_TEXT_BASE=0x00200000
+ CONFIG_NR_DRAM_BANKS=1
+ CONFIG_ENV_SIZE=0x8000
+ CONFIG_ENV_OFFSET=0x3F8000
+-CONFIG_DEFAULT_DEVICE_TREE="rk3399-rockpro64"
+ CONFIG_ROCKCHIP_RK3399=y
+ CONFIG_TARGET_ROCKPRO64_RK3399=y
+ CONFIG_DEBUG_UART_BASE=0xFF1A0000
+ CONFIG_DEBUG_UART_CLOCK=24000000
+ CONFIG_SPL_SPI_FLASH_SUPPORT=y
+ CONFIG_SPL_SPI_SUPPORT=y
++CONFIG_DEFAULT_DEVICE_TREE="rk3399-rockpro64"
+ CONFIG_DEBUG_UART=y
++CONFIG_AHCI=y
++CONFIG_OF_BOARD_SETUP=y
++CONFIG_BOOTDELAY=0
+ CONFIG_USE_PREBOOT=y
+ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rockpro64.dtb"
+ CONFIG_DISPLAY_BOARDINFO_LATE=y
+@@ -20,29 +23,40 @@ CONFIG_MISC_INIT_R=y
+ CONFIG_SPL_STACK_R=y
+ CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000
+ CONFIG_SPL_SPI_LOAD=y
++# CONFIG_SPL_ATF_NO_PLATFORM_PARAM is not set
+ CONFIG_TPL=y
+ CONFIG_CMD_BOOTZ=y
++CONFIG_CMD_BOOTMENU=y
+ CONFIG_CMD_GPT=y
+ CONFIG_CMD_MMC=y
+ CONFIG_CMD_PCI=y
+ CONFIG_CMD_USB=y
+-# CONFIG_CMD_SETEXPR is not set
+ CONFIG_CMD_TIME=y
++CONFIG_CMD_MTDPARTS=y
++CONFIG_MTDIDS_DEFAULT="nor0=spi0.0"
++CONFIG_MTDPARTS_DEFAULT="mtdparts=spi0.0:384k(u-boot-spl),3680k(u-boot),32k(u-boot-env),-(user)"
+ CONFIG_SPL_OF_CONTROL=y
+ CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
+ CONFIG_ENV_IS_IN_SPI_FLASH=y
+ CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+ CONFIG_SPL_DM_SEQ_ALIAS=y
++CONFIG_SCSI_AHCI=y
++CONFIG_AHCI_PCI=y
+ CONFIG_ROCKCHIP_GPIO=y
+ CONFIG_SYS_I2C_ROCKCHIP=y
++CONFIG_DM_KEYBOARD=y
++CONFIG_LED=y
++CONFIG_LED_GPIO=y
+ CONFIG_MISC=y
+ CONFIG_ROCKCHIP_EFUSE=y
+ CONFIG_MMC_DW=y
+ CONFIG_MMC_DW_ROCKCHIP=y
+ CONFIG_MMC_SDHCI=y
+ CONFIG_MMC_SDHCI_ROCKCHIP=y
++CONFIG_MTD=y
+ CONFIG_SF_DEFAULT_BUS=1
+ CONFIG_SPI_FLASH_GIGADEVICE=y
++CONFIG_SPI_FLASH_MTD=y
+ CONFIG_DM_ETH=y
+ CONFIG_ETH_DESIGNWARE=y
+ CONFIG_GMAC_ROCKCHIP=y
+@@ -58,7 +72,9 @@ CONFIG_RAM_RK3399_LPDDR4=y
+ CONFIG_DM_RESET=y
+ CONFIG_DM_RNG=y
+ CONFIG_RNG_ROCKCHIP=y
+-CONFIG_BAUDRATE=1500000
++CONFIG_SCSI=y
++CONFIG_DM_SCSI=y
++CONFIG_BAUDRATE=115200
+ CONFIG_DEBUG_UART_SHIFT=2
+ CONFIG_ROCKCHIP_SPI=y
+ CONFIG_SYSRESET=y
+@@ -82,5 +98,12 @@ CONFIG_DM_VIDEO=y
+ CONFIG_DISPLAY=y
+ CONFIG_VIDEO_ROCKCHIP=y
+ CONFIG_DISPLAY_ROCKCHIP_HDMI=y
++CONFIG_FS_BTRFS=y
+ CONFIG_SPL_TINY_MEMSET=y
+ CONFIG_ERRNO_STR=y
++CONFIG_OF_LIBFDT_OVERLAY=y
++CONFIG_FDT_FIXUP_PARTITIONS=y
++CONFIG_AUTOBOOT_PROMPT="Autobooting in %d seconds... press q or Ctrl-C to interrupt\n"
++CONFIG_AUTOBOOT_KEYED=y
++CONFIG_AUTOBOOT_STOP_STR="q"
++CONFIG_AUTOBOOT_KEYED_CTRLC=y
diff --git a/srcpkgs/rockpro64-uboot/template b/srcpkgs/rockpro64-uboot/template
new file mode 100644
index 000000000000..10daa7174b83
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/template
@@ -0,0 +1,47 @@
+# Template file for 'rockpro64-uboot'
+pkgname=rockpro64-uboot
+version=2021.07
+revision=1
+archs="aarch64*"
+wrksrc="u-boot-${version}"
+hostmakedepends="flex bc dtc python3"
+makedepends="atf-rk3399-bl31"
+depends="u-boot-tools"
+short_desc="Das U-Boot for the RockPro64 SBC"
+maintainer="Tiemen Werkman <tiemen@opifexonline.com>"
+license="GPL-2.0-or-later, BSD-3-Clause"
+homepage="https://www.denx.de/wiki/U-Boot/"
+distfiles="https://ftp.denx.de/pub/u-boot/u-boot-${version}.tar.bz2"
+checksum=312b7eeae44581d1362c3a3f02c28d806647756c82ba8c72241c7cdbe68ba77e
+
+do_configure() {
+	unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
+	make ${makejobs} rockpro64-rk3399_defconfig
+}
+
+do_build() {
+	unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
+	if [ "$CROSS_BUILD" ]; then
+		export CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-
+	fi
+	make ${makejobs} EXTRAVERSION=-${revision} \
+		BL31=${XBPS_CROSS_BASE}/usr/lib/trusted-firmware-a/rk3399/bl31.elf
+}
+
+do_install() {
+	vinstall idbloader.img 0644 usr/lib/rockpro64-uboot
+	vinstall u-boot.itb 0644 usr/lib/rockpro64-uboot
+	vlicense Licenses/Exceptions
+	vlicense Licenses/OFL.txt
+	vlicense Licenses/README
+	vlicense Licenses/bsd-2-clause.txt
+	vlicense Licenses/bsd-3-clause.txt
+	vlicense Licenses/eCos-2.0.txt
+	vlicense Licenses/gpl-2.0.txt
+	vlicense Licenses/ibm-pibs.txt
+	vlicense Licenses/isc.txt
+	vlicense Licenses/lgpl-2.0.txt
+	vlicense Licenses/lgpl-2.1.txt
+	vlicense Licenses/r8a779x_usb3.txt
+	vlicense Licenses/x11.txt
+}
diff --git a/srcpkgs/rockpro64-uboot/update b/srcpkgs/rockpro64-uboot/update
new file mode 100644
index 000000000000..cfcfccd3fb43
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/update
@@ -0,0 +1 @@
+pkgname="u-boot"

From 858c2713a3bd58238345d15b4e3553c5216b2553 Mon Sep 17 00:00:00 2001
From: Tim Sandquist <tim.sandquist@gmail.com>
Date: Tue, 29 Mar 2022 18:56:58 -0500
Subject: [PATCH 3/3] rockpro64-base: add linux package to depends

---
 srcpkgs/rockpro64-base/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/rockpro64-base/template b/srcpkgs/rockpro64-base/template
index e90db4f4396d..1e5af3a6dc6b 100644
--- a/srcpkgs/rockpro64-base/template
+++ b/srcpkgs/rockpro64-base/template
@@ -4,7 +4,7 @@ version=1
 revision=1
 archs="aarch64*"
 build_style=meta
-depends="rockpro64-uboot u-boot-menu dracut"
+depends="linux rockpro64-uboot u-boot-menu dracut"
 short_desc="Void Linux RockPro64 platform package"
 maintainer="Tiemen Werkman <tiemen@opifexonline.com>"
 license="Public Domain"

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: New packages: rockpro64-base and rockpro64-uboot
  2022-03-30 11:34 [PR PATCH] New packages: rockpro64-base and rockpro64-uboot tsndqst
  2022-03-30 12:41 ` [PR PATCH] [Updated] " tsndqst
@ 2022-04-10  5:50 ` Anachron
  2022-05-12 15:43 ` Anachron
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Anachron @ 2022-04-10  5:50 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 223 bytes --]

New comment by Anachron on void-packages repository

https://github.com/void-linux/void-packages/pull/36419#issuecomment-1094186017

Comment:
I'm running the packages on my RockPro64 for weeks now.

Imo this can be merged.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: New packages: rockpro64-base and rockpro64-uboot
  2022-03-30 11:34 [PR PATCH] New packages: rockpro64-base and rockpro64-uboot tsndqst
  2022-03-30 12:41 ` [PR PATCH] [Updated] " tsndqst
  2022-04-10  5:50 ` Anachron
@ 2022-05-12 15:43 ` Anachron
  2022-08-06 16:34 ` geekboy01
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Anachron @ 2022-05-12 15:43 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 220 bytes --]

New comment by Anachron on void-packages repository

https://github.com/void-linux/void-packages/pull/36419#issuecomment-1125152032

Comment:
I think this can be merged with the other PR... running this for a month now.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: New packages: rockpro64-base and rockpro64-uboot
  2022-03-30 11:34 [PR PATCH] New packages: rockpro64-base and rockpro64-uboot tsndqst
                   ` (2 preceding siblings ...)
  2022-05-12 15:43 ` Anachron
@ 2022-08-06 16:34 ` geekboy01
  2022-08-08  7:24 ` Anachron
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: geekboy01 @ 2022-08-06 16:34 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 284 bytes --]

New comment by geekboy01 on void-packages repository

https://github.com/void-linux/void-packages/pull/36419#issuecomment-1207243855

Comment:
Any chance of this rolling out to the main repos or advice on how to build the all that is necessary to get Void up and running on my RP64s?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: New packages: rockpro64-base and rockpro64-uboot
  2022-03-30 11:34 [PR PATCH] New packages: rockpro64-base and rockpro64-uboot tsndqst
                   ` (3 preceding siblings ...)
  2022-08-06 16:34 ` geekboy01
@ 2022-08-08  7:24 ` Anachron
  2022-08-08 22:03 ` geekboy01
  2022-08-10  2:36 ` geekboy01
  6 siblings, 0 replies; 9+ messages in thread
From: Anachron @ 2022-08-08  7:24 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 485 bytes --]

New comment by Anachron on void-packages repository

https://github.com/void-linux/void-packages/pull/36419#issuecomment-1207762318

Comment:
You have to fork this repo and https://github.com/void-linux/void-mklive and merge this PR and https://github.com/void-linux/void-mklive/pull/221 yourself, then build the packages from this PR using `xbps-src` and use `void-mklive` to generate an image to put on your `RockPro64`.

Hopefully some maintainer steps in and merges this though.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: New packages: rockpro64-base and rockpro64-uboot
  2022-03-30 11:34 [PR PATCH] New packages: rockpro64-base and rockpro64-uboot tsndqst
                   ` (4 preceding siblings ...)
  2022-08-08  7:24 ` Anachron
@ 2022-08-08 22:03 ` geekboy01
  2022-08-10  2:36 ` geekboy01
  6 siblings, 0 replies; 9+ messages in thread
From: geekboy01 @ 2022-08-08 22:03 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 197 bytes --]

New comment by geekboy01 on void-packages repository

https://github.com/void-linux/void-packages/pull/36419#issuecomment-1208660166

Comment:
@Anachron ,

much appreciated, got it building now.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: New packages: rockpro64-base and rockpro64-uboot
  2022-03-30 11:34 [PR PATCH] New packages: rockpro64-base and rockpro64-uboot tsndqst
                   ` (5 preceding siblings ...)
  2022-08-08 22:03 ` geekboy01
@ 2022-08-10  2:36 ` geekboy01
  6 siblings, 0 replies; 9+ messages in thread
From: geekboy01 @ 2022-08-10  2:36 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 351 bytes --]

New comment by geekboy01 on void-packages repository

https://github.com/void-linux/void-packages/pull/36419#issuecomment-1208660166

Comment:
@Anachron ,

much appreciated, got it building now.

update:
with your help and paper42's help on another issue got the image to build and running great. Very much appreciate everyone's help and advice.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PR PATCH] New packages: rockpro64-base and rockpro64-uboot
@ 2021-10-15  5:44 tiemenwerkman
  0 siblings, 0 replies; 9+ messages in thread
From: tiemenwerkman @ 2021-10-15  5:44 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 2599 bytes --]

There is a new pull request by tiemenwerkman against master on the void-packages repository

https://github.com/tiemenwerkman/void-packages rockpro64
https://github.com/void-linux/void-packages/pull/33556

New packages: rockpro64-base and rockpro64-uboot
#### General
- [X] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [X] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [ ] I built this PR locally for my native architecture, (ARCH-LIBC)
- [ ] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [ ] aarch64-musl
  - [ ] armv7l
  - [ ] armv6l-musl

I have not built the package native on aarch64, only crossbuilds on x86_64 with aarch64 and aarch64-musl. Both built successfully with xbps-src -K.
Most of the work is copied from the pinebook-pro packages, as both are very similar using the RK3399 soc. I did not create a rockpro64 specific kernel as it did not seem necessary. I have tested using kernels 5.10, 5.13 and 5.14. The latter two versions produce fewer errors when booting (loglevel=4).
I don't know if this is relevant but I have also created images with the zfs dkms module. It only succeeded building on kernel version 5.10, however not without errors, zfs does work though.
I have not updated U-Boot to the latest version (2021-10 as of now) because it fails to build. Earlier this week it was fine so I don't yet know what happened. The second to last version (2021-07) is still very recent and does work fine.
The pinebook-pro template creates a boot.scr to boot the image, the rock64 template uses extlinux to boot, after a bit of research I opted to go with extlinux because that is what everyone else is doing (manjaro, ayufan, armbian) and this simplifies the patch for void-mklive to create an image, it does require u-boot-menu as an extra dependency.
Most of the patches come straight from the pinebookpro-uboot package with a few features taken from [Sigmaris's U-Boot](https://github.com/sigmaris/u-boot/). A description of the details can be found in the patch files.


A patch file from https://github.com/void-linux/void-packages/pull/33556.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-rockpro64-33556.patch --]
[-- Type: text/x-diff, Size: 16645 bytes --]

From 1daa0d858e89f5e19db015a4258351efb4a82b80 Mon Sep 17 00:00:00 2001
From: Tiemen Werkman <tiemen@opifexonline.com>
Date: Wed, 13 Oct 2021 16:40:00 +0200
Subject: [PATCH 1/2] New package: rockpro64-base

---
 srcpkgs/rockpro64-base/INSTALL  |  8 ++++++++
 srcpkgs/rockpro64-base/template | 11 +++++++++++
 2 files changed, 19 insertions(+)
 create mode 100644 srcpkgs/rockpro64-base/INSTALL
 create mode 100644 srcpkgs/rockpro64-base/template

diff --git a/srcpkgs/rockpro64-base/INSTALL b/srcpkgs/rockpro64-base/INSTALL
new file mode 100644
index 000000000000..7e67f362c796
--- /dev/null
+++ b/srcpkgs/rockpro64-base/INSTALL
@@ -0,0 +1,8 @@
+if [ "${UPDATE}" = "no" ] && [ "${ACTION}" = "post" ]; then
+	mkdir -p etc/runit/runsvdir/default/
+	mkdir -p etc/sv/agetty-ttyS2/
+	ln -sf /etc/sv/sshd etc/runit/runsvdir/default/
+	ln -sf /etc/sv/dhcpcd etc/runit/runsvdir/default/
+	ln -sf /etc/sv/agetty-ttyS2 etc/runit/runsvdir/default/
+	cd etc/sv/agetty-ttyS2/ && ln -sf ../agetty-serial/conf conf && ln -sf ../agetty-generic/finish finish && ln -sf ../agetty-serial/run run && ln -sf /run/runit/supervise.agetty-ttyS2
+fi
diff --git a/srcpkgs/rockpro64-base/template b/srcpkgs/rockpro64-base/template
new file mode 100644
index 000000000000..e90db4f4396d
--- /dev/null
+++ b/srcpkgs/rockpro64-base/template
@@ -0,0 +1,11 @@
+# Template file for 'rockpro64-base'
+pkgname=rockpro64-base
+version=1
+revision=1
+archs="aarch64*"
+build_style=meta
+depends="rockpro64-uboot u-boot-menu dracut"
+short_desc="Void Linux RockPro64 platform package"
+maintainer="Tiemen Werkman <tiemen@opifexonline.com>"
+license="Public Domain"
+homepage="https://www.voidlinux.org"

From c623d255d6b720333e00f50e4e2b326fce31ab58 Mon Sep 17 00:00:00 2001
From: Tiemen Werkman <tiemen@opifexonline.com>
Date: Wed, 13 Oct 2021 16:40:20 +0200
Subject: [PATCH 2/2] New package: rockpro64-uboot

---
 .../patches/phy-rockchip-inno-usb2.c.patch    |  75 ++++++++++++
 .../rockpro64-uboot/patches/rk3399.c.patch    |  51 +++++++++
 .../patches/rockpro64-rk3399.c.patch          |  53 +++++++++
 .../patches/rockpro64-rk3399.h.patch          |  33 ++++++
 .../patches/rockpro64-rk3399_defconfig.patch  | 108 ++++++++++++++++++
 srcpkgs/rockpro64-uboot/template              |  47 ++++++++
 srcpkgs/rockpro64-uboot/update                |   1 +
 7 files changed, 368 insertions(+)
 create mode 100644 srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch
 create mode 100644 srcpkgs/rockpro64-uboot/patches/rk3399.c.patch
 create mode 100644 srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch
 create mode 100644 srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch
 create mode 100644 srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch
 create mode 100644 srcpkgs/rockpro64-uboot/template
 create mode 100644 srcpkgs/rockpro64-uboot/update

diff --git a/srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch b/srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch
new file mode 100644
index 000000000000..1f9839889f0d
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch
@@ -0,0 +1,75 @@
+    Fix USB on RockPro64:
+    Without this patch uboot crashes when resetting usb, preventing the kernel
+    from loading.
+    The only alternative to this patch is to disable Preboot or OHCI which 
+    also leaves you with no console keyboard.
+
+    https://patchwork.ozlabs.org/project/uboot/patch/20210406151059.1187379-1-icenowy@aosc.io/
+
+diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+index 62b8ba3a4a..be9cc99d90 100644
+--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
++++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+@@ -62,6 +62,8 @@ struct rockchip_usb2phy {
+ 	void *reg_base;
+ 	struct clk phyclk;
+ 	const struct rockchip_usb2phy_cfg *phy_cfg;
++	int init_count;
++	int power_on_count;
+ };
+ 
+ static inline int property_enable(void *reg_base,
+@@ -92,6 +94,10 @@ static int rockchip_usb2phy_power_on(struct phy *phy)
+ 	struct rockchip_usb2phy *priv = dev_get_priv(parent);
+ 	const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy);
+ 
++	priv->power_on_count++;
++	if (priv->power_on_count != 1)
++		return 0;
++
+ 	property_enable(priv->reg_base, &port_cfg->phy_sus, false);
+ 
+ 	/* waiting for the utmi_clk to become stable */
+@@ -106,6 +112,10 @@ static int rockchip_usb2phy_power_off(struct phy *phy)
+ 	struct rockchip_usb2phy *priv = dev_get_priv(parent);
+ 	const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy);
+ 
++	priv->power_on_count--;
++	if (priv->power_on_count != 0)
++		return 0;
++
+ 	property_enable(priv->reg_base, &port_cfg->phy_sus, true);
+ 
+ 	return 0;
+@@ -118,6 +128,10 @@ static int rockchip_usb2phy_init(struct phy *phy)
+ 	const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy);
+ 	int ret;
+ 
++	priv->init_count++;
++	if (priv->init_count != 1)
++		return 0;
++
+ 	ret = clk_enable(&priv->phyclk);
+ 	if (ret) {
+ 		dev_err(phy->dev, "failed to enable phyclk (ret=%d)\n", ret);
+@@ -140,6 +154,10 @@ static int rockchip_usb2phy_exit(struct phy *phy)
+ 	struct udevice *parent = dev_get_parent(phy->dev);
+ 	struct rockchip_usb2phy *priv = dev_get_priv(parent);
+ 
++	priv->init_count--;
++	if (priv->init_count != 0)
++		return 0;
++
+ 	clk_disable(&priv->phyclk);
+ 
+ 	return 0;
+@@ -212,6 +230,9 @@ static int rockchip_usb2phy_probe(struct udevice *dev)
+ 		return ret;
+ 	}
+ 
++	priv->power_on_count = 0;
++	priv->init_count = 0;
++
+ 	return 0;
+ }
+ 
diff --git a/srcpkgs/rockpro64-uboot/patches/rk3399.c.patch b/srcpkgs/rockpro64-uboot/patches/rk3399.c.patch
new file mode 100644
index 000000000000..f3c08bf33c61
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/rk3399.c.patch
@@ -0,0 +1,51 @@
+From 1a01021c9361c4e017cb5b032300f5555c393710 Mon Sep 17 00:00:00 2001
+From: dhivael <dhivael.git@eno.space>
+Date: Sat, 11 Jan 2020 15:04:46 +0100
+Subject: rk3399: light pinebook power and standby leds during early boot
+
+this is a hack, but it works for now.
+---
+ 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 863024d071..cf37129d55 100644
+--- a/arch/arm/mach-rockchip/rk3399/rk3399.c
++++ b/arch/arm/mach-rockchip/rk3399/rk3399.c
+@@ -15,6 +15,8 @@
+ #include <asm/arch-rockchip/grf_rk3399.h>
+ #include <asm/arch-rockchip/hardware.h>
+ #include <power/regulator.h>
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/pinctrl/rockchip.h>
+ 
+ DECLARE_GLOBAL_DATA_PTR;
+ 
+@@ -115,8 +117,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 */
+@@ -149,6 +151,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,
+-- 
+cgit v1.2.3
+
diff --git a/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch
new file mode 100644
index 000000000000..b40c9270302e
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch
@@ -0,0 +1,53 @@
+SPI flash partitions
+	This patch is required to update SPI flash partitions in the devicetree.
+	It comes from Sigmaris's for o U-Boot.
+	https://github.com/sigmaris/u-boot/blob/ci-2021.04-rockpro64/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c
+
+diff --git a/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c b/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c
+index d79084614f..6f7f661154 100644
+--- a/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c
++++ b/board/pine64/rockpro64_rk3399/rockpro64-rk3399.c
+@@ -5,6 +5,9 @@
+ 
+ #include <common.h>
+ #include <dm.h>
++#include <fdt_support.h>
++#include <jffs2/load_kernel.h>
++#include <mtd_node.h>
+ #include <init.h>
+ #include <syscon.h>
+ #include <asm/io.h>
+@@ -16,6 +19,33 @@
+ #define GRF_IO_VSEL_BT565_SHIFT 0
+ #define PMUGRF_CON0_VSEL_SHIFT 8
+ 
++#ifdef CONFIG_OF_BOARD_SETUP
++int ft_board_setup(void *blob, struct bd_info *bd)
++{
++#ifdef CONFIG_FDT_FIXUP_PARTITIONS
++	int ret, noff;
++	static const struct node_info nodes[] = {
++		{ "jedec,spi-nor", MTD_DEV_TYPE_NOR, },
++	};
++
++	noff = fdt_node_offset_by_compatible(blob, -1, nodes[0].compat);
++	if (noff != -FDT_ERR_NOTFOUND) {
++		ret = fdt_setprop_u32(blob, noff, "#size-cells", 1);
++		if (ret)
++			return ret;
++		ret = fdt_setprop_u32(blob, noff, "#address-cells", 1);
++		if (ret)
++			return ret;
++	} else {
++		return -ENODEV;
++	}
++
++	fdt_fixup_mtdparts(blob, nodes, ARRAY_SIZE(nodes));
++#endif
++	return 0;
++}
++#endif
++
+ #ifdef CONFIG_MISC_INIT_R
+ static void setup_iodomain(void)
+ {
diff --git a/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch
new file mode 100644
index 000000000000..d784a696e852
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch
@@ -0,0 +1,33 @@
+    rockchip: Pinebook Pro: fix mmc boot ordering
+    
+    On the Pinebook Pro, and perhaps some other boards, the mmc indices are
+    opposite from what is implied by the comment in
+    include/configs/rockchip-common.h.
+    
+    This commit fixes the boot ordering to prioritize the SD card over eMMC.
+    
+    Most distributions of U-Boot that actually target rk3399 boards apply a
+    similar patch, such as Manjaro (shipped by default on PBP) and armbian.
+    
+    https://gitlab.manjaro.org/manjaro-arm/packages/core/uboot-pinebookpro/-/blob/60ed56b9bf8809309ec6252bfc45bca38c2b858a/0002-Correct-boot-order-to-be-USB-SD-eMMC.patch
+    https://github.com/armbian/build/blob/5a2b2c360b9c26ca4bd0d309af7cd3994fd08b7d/patch/u-boot/u-boot-rockchip64-mainline/general-prioritize-sd.patch
+    
+diff --git a/include/configs/rockpro64_rk3399.h b/include/configs/rockpro64_rk3399.h
+index 903e9df527..7c8f30dbaf 100644
+--- a/include/configs/rockpro64_rk3399.h
++++ b/include/configs/rockpro64_rk3399.h
+@@ -12,6 +12,14 @@
+ 	"stderr=serial,vidconsole\0"
+ 
+ #include <configs/rk3399_common.h>
++ 
++/* On RockPro64, mmc1 is SD and mmc0 is eMMC */
++#if CONFIG_IS_ENABLED(CMD_MMC)
++	#undef BOOT_TARGET_MMC
++	#define BOOT_TARGET_MMC(func) \
++		func(MMC, mmc, 1) \
++		func(MMC, mmc, 0)
++#endif
+ 
+ #define SDRAM_BANK_SIZE			(2UL << 30)
+ 
diff --git a/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch
new file mode 100644
index 000000000000..af207a228085
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch
@@ -0,0 +1,108 @@
+
+Autoboot
+	Disable bootdelay. Boot can be interrupted by pressing either <q> or
+	<ctrl-c>.
+
+Baudrate
+	Set baudrate to 115200 to prevent garbled output and improve
+	compatibility. The default baud rate is 1500000 bps. This produces
+	garbled output on many serial adapters and is a non-standard speed.
+
+Supported features
+	The following features have been enabled and are supported:
+	- NVME support.
+	- AHCI over PCIE.
+	- USB3 and keyboard support.
+	- fdt overlay.
+	- MDT partitions.
+	- BTRFS support enabled.
+
+diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig
+index ae11a8f5eb..827d37eb72 100644
+--- a/configs/rockpro64-rk3399_defconfig
++++ b/configs/rockpro64-rk3399_defconfig
+@@ -4,14 +4,17 @@ CONFIG_SYS_TEXT_BASE=0x00200000
+ CONFIG_NR_DRAM_BANKS=1
+ CONFIG_ENV_SIZE=0x8000
+ CONFIG_ENV_OFFSET=0x3F8000
+-CONFIG_DEFAULT_DEVICE_TREE="rk3399-rockpro64"
+ CONFIG_ROCKCHIP_RK3399=y
+ CONFIG_TARGET_ROCKPRO64_RK3399=y
+ CONFIG_DEBUG_UART_BASE=0xFF1A0000
+ CONFIG_DEBUG_UART_CLOCK=24000000
+ CONFIG_SPL_SPI_FLASH_SUPPORT=y
+ CONFIG_SPL_SPI_SUPPORT=y
++CONFIG_DEFAULT_DEVICE_TREE="rk3399-rockpro64"
+ CONFIG_DEBUG_UART=y
++CONFIG_AHCI=y
++CONFIG_OF_BOARD_SETUP=y
++CONFIG_BOOTDELAY=0
+ CONFIG_USE_PREBOOT=y
+ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-rockpro64.dtb"
+ CONFIG_DISPLAY_BOARDINFO_LATE=y
+@@ -20,29 +23,40 @@ CONFIG_MISC_INIT_R=y
+ CONFIG_SPL_STACK_R=y
+ CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000
+ CONFIG_SPL_SPI_LOAD=y
++# CONFIG_SPL_ATF_NO_PLATFORM_PARAM is not set
+ CONFIG_TPL=y
+ CONFIG_CMD_BOOTZ=y
++CONFIG_CMD_BOOTMENU=y
+ CONFIG_CMD_GPT=y
+ CONFIG_CMD_MMC=y
+ CONFIG_CMD_PCI=y
+ CONFIG_CMD_USB=y
+-# CONFIG_CMD_SETEXPR is not set
+ CONFIG_CMD_TIME=y
++CONFIG_CMD_MTDPARTS=y
++CONFIG_MTDIDS_DEFAULT="nor0=spi0.0"
++CONFIG_MTDPARTS_DEFAULT="mtdparts=spi0.0:384k(u-boot-spl),3680k(u-boot),32k(u-boot-env),-(user)"
+ CONFIG_SPL_OF_CONTROL=y
+ CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
+ CONFIG_ENV_IS_IN_SPI_FLASH=y
+ CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+ CONFIG_SPL_DM_SEQ_ALIAS=y
++CONFIG_SCSI_AHCI=y
++CONFIG_AHCI_PCI=y
+ CONFIG_ROCKCHIP_GPIO=y
+ CONFIG_SYS_I2C_ROCKCHIP=y
++CONFIG_DM_KEYBOARD=y
++CONFIG_LED=y
++CONFIG_LED_GPIO=y
+ CONFIG_MISC=y
+ CONFIG_ROCKCHIP_EFUSE=y
+ CONFIG_MMC_DW=y
+ CONFIG_MMC_DW_ROCKCHIP=y
+ CONFIG_MMC_SDHCI=y
+ CONFIG_MMC_SDHCI_ROCKCHIP=y
++CONFIG_MTD=y
+ CONFIG_SF_DEFAULT_BUS=1
+ CONFIG_SPI_FLASH_GIGADEVICE=y
++CONFIG_SPI_FLASH_MTD=y
+ CONFIG_DM_ETH=y
+ CONFIG_ETH_DESIGNWARE=y
+ CONFIG_GMAC_ROCKCHIP=y
+@@ -58,7 +72,9 @@ CONFIG_RAM_RK3399_LPDDR4=y
+ CONFIG_DM_RESET=y
+ CONFIG_DM_RNG=y
+ CONFIG_RNG_ROCKCHIP=y
+-CONFIG_BAUDRATE=1500000
++CONFIG_SCSI=y
++CONFIG_DM_SCSI=y
++CONFIG_BAUDRATE=115200
+ CONFIG_DEBUG_UART_SHIFT=2
+ CONFIG_ROCKCHIP_SPI=y
+ CONFIG_SYSRESET=y
+@@ -82,5 +98,12 @@ CONFIG_DM_VIDEO=y
+ CONFIG_DISPLAY=y
+ CONFIG_VIDEO_ROCKCHIP=y
+ CONFIG_DISPLAY_ROCKCHIP_HDMI=y
++CONFIG_FS_BTRFS=y
+ CONFIG_SPL_TINY_MEMSET=y
+ CONFIG_ERRNO_STR=y
++CONFIG_OF_LIBFDT_OVERLAY=y
++CONFIG_FDT_FIXUP_PARTITIONS=y
++CONFIG_AUTOBOOT_PROMPT="Autobooting in %d seconds... press q or Ctrl-C to interrupt\n"
++CONFIG_AUTOBOOT_KEYED=y
++CONFIG_AUTOBOOT_STOP_STR="q"
++CONFIG_AUTOBOOT_KEYED_CTRLC=y
diff --git a/srcpkgs/rockpro64-uboot/template b/srcpkgs/rockpro64-uboot/template
new file mode 100644
index 000000000000..10daa7174b83
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/template
@@ -0,0 +1,47 @@
+# Template file for 'rockpro64-uboot'
+pkgname=rockpro64-uboot
+version=2021.07
+revision=1
+archs="aarch64*"
+wrksrc="u-boot-${version}"
+hostmakedepends="flex bc dtc python3"
+makedepends="atf-rk3399-bl31"
+depends="u-boot-tools"
+short_desc="Das U-Boot for the RockPro64 SBC"
+maintainer="Tiemen Werkman <tiemen@opifexonline.com>"
+license="GPL-2.0-or-later, BSD-3-Clause"
+homepage="https://www.denx.de/wiki/U-Boot/"
+distfiles="https://ftp.denx.de/pub/u-boot/u-boot-${version}.tar.bz2"
+checksum=312b7eeae44581d1362c3a3f02c28d806647756c82ba8c72241c7cdbe68ba77e
+
+do_configure() {
+	unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
+	make ${makejobs} rockpro64-rk3399_defconfig
+}
+
+do_build() {
+	unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
+	if [ "$CROSS_BUILD" ]; then
+		export CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-
+	fi
+	make ${makejobs} EXTRAVERSION=-${revision} \
+		BL31=${XBPS_CROSS_BASE}/usr/lib/trusted-firmware-a/rk3399/bl31.elf
+}
+
+do_install() {
+	vinstall idbloader.img 0644 usr/lib/rockpro64-uboot
+	vinstall u-boot.itb 0644 usr/lib/rockpro64-uboot
+	vlicense Licenses/Exceptions
+	vlicense Licenses/OFL.txt
+	vlicense Licenses/README
+	vlicense Licenses/bsd-2-clause.txt
+	vlicense Licenses/bsd-3-clause.txt
+	vlicense Licenses/eCos-2.0.txt
+	vlicense Licenses/gpl-2.0.txt
+	vlicense Licenses/ibm-pibs.txt
+	vlicense Licenses/isc.txt
+	vlicense Licenses/lgpl-2.0.txt
+	vlicense Licenses/lgpl-2.1.txt
+	vlicense Licenses/r8a779x_usb3.txt
+	vlicense Licenses/x11.txt
+}
diff --git a/srcpkgs/rockpro64-uboot/update b/srcpkgs/rockpro64-uboot/update
new file mode 100644
index 000000000000..cfcfccd3fb43
--- /dev/null
+++ b/srcpkgs/rockpro64-uboot/update
@@ -0,0 +1 @@
+pkgname="u-boot"

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2022-08-10  2:36 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-30 11:34 [PR PATCH] New packages: rockpro64-base and rockpro64-uboot tsndqst
2022-03-30 12:41 ` [PR PATCH] [Updated] " tsndqst
2022-04-10  5:50 ` Anachron
2022-05-12 15:43 ` Anachron
2022-08-06 16:34 ` geekboy01
2022-08-08  7:24 ` Anachron
2022-08-08 22:03 ` geekboy01
2022-08-10  2:36 ` geekboy01
  -- strict thread matches above, loose matches on Subject: below --
2021-10-15  5:44 [PR PATCH] " tiemenwerkman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).