From 575d9b102387e2ccba6271a5325f9c00fe66c1ef Mon Sep 17 00:00:00 2001 From: Tiemen Werkman Date: Sat, 9 Oct 2021 10:35:37 +0200 Subject: [PATCH 1/4] RockPro64 platform packages for Void Linux. Committer: Tiemen Werkman --- srcpkgs/rockpro64-base/INSTALL | 8 ++ srcpkgs/rockpro64-base/template | 11 ++ .../patches/phy-rockchip-inno-usb2.c.patch | 75 ++++++++++++ .../rockpro64-uboot/patches/rk3399.c.patch | 51 +++++++++ .../patches/rockpro64-rk3399.c.patch | 48 ++++++++ .../patches/rockpro64-rk3399.h.patch | 33 ++++++ .../patches/rockpro64-rk3399_defconfig.patch | 108 ++++++++++++++++++ srcpkgs/rockpro64-uboot/template | 47 ++++++++ srcpkgs/rockpro64-uboot/update | 1 + 9 files changed, 382 insertions(+) create mode 100644 srcpkgs/rockpro64-base/INSTALL create mode 100644 srcpkgs/rockpro64-base/template 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-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 " +license="Public Domain" +homepage="https://www.voidlinux.org" 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 +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 + #include + #include ++#include ++#include + + 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..5fb9b65c8ef2 --- /dev/null +++ b/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch @@ -0,0 +1,48 @@ +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 + #include ++#include ++#include ++#include + #include + #include + #include +@@ -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 ++ ++/* 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 or + . + +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 " +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 0e6bc6d0fac8273b8f7b8d20fc6be111f7b13a90 Mon Sep 17 00:00:00 2001 From: Tiemen Werkman Date: Sun, 10 Oct 2021 10:04:26 +0200 Subject: [PATCH 2/4] Create distinct branches for distinct packages to facilitate distinct pull requests. --- srcpkgs/rockpro64-base/INSTALL | 8 -- srcpkgs/rockpro64-base/template | 11 -- .../patches/phy-rockchip-inno-usb2.c.patch | 75 ------------ .../rockpro64-uboot/patches/rk3399.c.patch | 51 --------- .../patches/rockpro64-rk3399.c.patch | 48 -------- .../patches/rockpro64-rk3399.h.patch | 33 ------ .../patches/rockpro64-rk3399_defconfig.patch | 108 ------------------ srcpkgs/rockpro64-uboot/template | 47 -------- srcpkgs/rockpro64-uboot/update | 1 - 9 files changed, 382 deletions(-) delete mode 100644 srcpkgs/rockpro64-base/INSTALL delete mode 100644 srcpkgs/rockpro64-base/template delete mode 100644 srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch delete mode 100644 srcpkgs/rockpro64-uboot/patches/rk3399.c.patch delete mode 100644 srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch delete mode 100644 srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch delete mode 100644 srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch delete mode 100644 srcpkgs/rockpro64-uboot/template delete mode 100644 srcpkgs/rockpro64-uboot/update diff --git a/srcpkgs/rockpro64-base/INSTALL b/srcpkgs/rockpro64-base/INSTALL deleted file mode 100644 index 7e67f362c796..000000000000 --- a/srcpkgs/rockpro64-base/INSTALL +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index e90db4f4396d..000000000000 --- a/srcpkgs/rockpro64-base/template +++ /dev/null @@ -1,11 +0,0 @@ -# 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 " -license="Public Domain" -homepage="https://www.voidlinux.org" diff --git a/srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch b/srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch deleted file mode 100644 index 1f9839889f0d..000000000000 --- a/srcpkgs/rockpro64-uboot/patches/phy-rockchip-inno-usb2.c.patch +++ /dev/null @@ -1,75 +0,0 @@ - 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 deleted file mode 100644 index f3c08bf33c61..000000000000 --- a/srcpkgs/rockpro64-uboot/patches/rk3399.c.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 1a01021c9361c4e017cb5b032300f5555c393710 Mon Sep 17 00:00:00 2001 -From: dhivael -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 - #include - #include -+#include -+#include - - 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 deleted file mode 100644 index 5fb9b65c8ef2..000000000000 --- a/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.c.patch +++ /dev/null @@ -1,48 +0,0 @@ -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 - #include -+#include -+#include -+#include - #include - #include - #include -@@ -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 deleted file mode 100644 index d784a696e852..000000000000 --- a/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399.h.patch +++ /dev/null @@ -1,33 +0,0 @@ - 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 -+ -+/* 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 deleted file mode 100644 index af207a228085..000000000000 --- a/srcpkgs/rockpro64-uboot/patches/rockpro64-rk3399_defconfig.patch +++ /dev/null @@ -1,108 +0,0 @@ - -Autoboot - Disable bootdelay. Boot can be interrupted by pressing either or - . - -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 deleted file mode 100644 index 10daa7174b83..000000000000 --- a/srcpkgs/rockpro64-uboot/template +++ /dev/null @@ -1,47 +0,0 @@ -# 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 " -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 deleted file mode 100644 index cfcfccd3fb43..000000000000 --- a/srcpkgs/rockpro64-uboot/update +++ /dev/null @@ -1 +0,0 @@ -pkgname="u-boot" From 0488ad73310d2a44386c9bf098e70596d5e3bb2e Mon Sep 17 00:00:00 2001 From: Tiemen Werkman Date: Tue, 12 Oct 2021 09:26:44 +0200 Subject: [PATCH 3/4] Add rockpro64-base package. --- 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 " +license="Public Domain" +homepage="https://www.voidlinux.org" From 233e6acd06ec75504fa30f78b00e7a4a561cbdb9 Mon Sep 17 00:00:00 2001 From: Tiemen Werkman Date: Tue, 12 Oct 2021 09:28:53 +0200 Subject: [PATCH 4/4] Add rockpro64-uboot package. --- .../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 +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 + #include + #include ++#include ++#include + + 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 + #include ++#include ++#include ++#include + #include + #include + #include +@@ -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 ++ ++/* 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 or + . + +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 " +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"