These commits get the Geniatech XPI-3128 board working with its Rockchip RK3128 SoC. Working so far are clocks, pin control, USB 2, eMMC, SDMMC, ethernet, and rebooting.
I also wrote a driver for the Ambiq Artasie AM18X5 RTC found on this device which adds a battery-backed RTC. These depend on some RK3128-specific commits on top of U-Boot 2025.04 found in this U-Boot tree plus a couple local changes to the XPI-3128-specific DTS file: https://github.com/knaerzche/u-boot/tree/rk3128-wip I'm not sure how best to package this up for a u-boot port in our tree. U-Boot 2025.04-rc1-00170-g9b2fdfb866a7 (May 07 2025 - 17:28:18 -0500) Model: Geniatech XPI-3128 DRAM: 1 GiB Cannot find regulator pwm init_voltage Cannot find regulator pwm init_voltage Core: 164 devices, 21 uclasses, devicetree: embed MMC: mmc@10214000: 1, mmc@1021c000: 0 Loading Environment from MMC... Reading from MMC(0)... *** Warning - bad CRC, using default environment In: serial@20064000 Out: serial@20064000 Err: serial@20064000 Model: Geniatech XPI-3128 Net: No ethernet found. Hit any key to stop autoboot: 0 Scanning for bootflows in all bootdevs Seq Method State Uclass Part Name Filename --- ----------- ------ -------- ---- ------------------------ ---------------- Scanning global bootmeth 'efi_mgr': unable to select a mode 0 efi_mgr ready (none) 0 <NULL> ** Booting bootflow '<NULL>' with efi_mgr Booting: mmc 0 disks: sd0* >> OpenBSD/armv7 BOOTARM 1.23 boot> booting sd0a:/bsd: 4932196+1021248+142224+611500 [2801900+288174+194+362096+319569]=0x0 OpenBSD/armv7 booting ... arg0 0xc0d0018c arg1 0x0 arg2 0x9cf25000 Allocating page tables IRQ stack: p0x60d2f000 v0xc0d2f000 ABT stack: p0x60d30000 v0xc0d30000 UND stack: p0x60d31000 v0xc0d31000 SVC stack: p0x60d32000 v0xc0d32000 Creating L1 page table at 0x60d04000 Mapping kernel Constructing L2 page tables undefined page type 0x2 pa 0x60000000 va 0x60000000 pages 0x2000 attr 0x8 type 0x7 pa 0x62000000 va 0x62000000 pages 0x3adfa attr 0x8 type 0x2 pa 0x9cdfa000 va 0x9cdfa000 pages 0x100 attr 0x8 type 0x1 pa 0x9cefa000 va 0x9cefa000 pages 0x1e attr 0x8 type 0x4 pa 0x9cf18000 va 0x9cf18000 pages 0x3 attr 0x8 type 0x7 pa 0x9cf1b000 va 0x9cf1b000 pages 0xa attr 0x8 type 0x2 pa 0x9cf25000 va 0x9cf25000 pages 0x9 attr 0x8 type 0x7 pa 0x9cf2e000 va 0x9cf2e000 pages 0x1 attr 0x8 type 0x9 pa 0x9cf2f000 va 0x9cf2f000 pages 0xb attr 0x8 type 0x4 pa 0x9cf3a000 va 0x9cf3a000 pages 0x1 attr 0x8 type 0x6 pa 0x9cf3b000 va 0x9cf3b000 pages 0x1 attr 0x8000000000000008 type 0x4 pa 0x9cf3c000 va 0x9cf3c000 pages 0x1 attr 0x8 type 0x6 pa 0x9cf3d000 va 0x9cf3d000 pages 0x22 attr 0x8000000000000008 type 0x4 pa 0x9cf5f000 va 0x9cf5f000 pages 0x9 attr 0x8 type 0x3 pa 0x9cf68000 va 0x9cf68000 pages 0x1009 attr 0x8 type 0x6 pa 0x9df71000 va 0x9df71000 pages 0x1 attr 0x8000000000000008 type 0x3 pa 0x9df72000 va 0x9df72000 pages 0x1fff attr 0x8 type 0x5 pa 0x9ff71000 va 0x9ff71000 pages 0x2 attr 0x8000000000000008 type 0x3 pa 0x9ff73000 va 0x9ff73000 pages 0x8d attr 0x8 pmap [ using 3772752 bytes of bsd ELF symbol table ] Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. Copyright (c) 1995-2025 OpenBSD. All rights reserved. https://www.OpenBSD.org OpenBSD 7.7-current (GENERIC) #178: Wed May 7 21:22:09 CDT 2025 jcs@rk3128:/usr/src/sys/arch/armv7/compile/GENERIC real mem = 1021288448 (973MB) avail mem = 989540352 (943MB) random: good seed from bootblocks mainbus0 at root: Geniatech XPI-3128 cpu0 at mainbus0 mpidr f00: ARM Cortex-A7 r0p5 cpu0: 32KB 32b/line 2-way L1 VIPT I-cache, 32KB 64b/line 4-way L1 D-cache cpu0: 256KB 64b/line 8-way L2 cache cortex0 at mainbus0 syscon0 at mainbus0: "syscon" "power-controller" at syscon0 not configured syscon1 at mainbus0: "qos" syscon2 at mainbus0: "qos" syscon3 at mainbus0: "qos" syscon4 at mainbus0: "qos" syscon5 at mainbus0: "qos" syscon6 at mainbus0: "qos" syscon7 at mainbus0: "qos" ampintc0 at mainbus0 nirq 160, ncpu 4: "interrupt-controller" rkclock0 at mainbus0 syscon8 at mainbus0: "syscon" rkusbphy0 at syscon8: phy 0 rkpinctrl0 at mainbus0: "pinctrl" rkgpio0 at rkpinctrl0 rkgpio1 at rkpinctrl0 rkgpio2 at rkpinctrl0 rkgpio3 at rkpinctrl0 syscon9 at mainbus0: can't map registers agtimer0 at mainbus0: 24000 kHz ehci0 at mainbus0 usb0 at ehci0: USB revision 2.0 uhub0 at usb0 configuration 1 interface 0 "Generic EHCI root hub" rev 2.00/1.00 addr 1 dwmmc0 at mainbus0: 99 MHz base clock sdmmc0 at dwmmc0: 4-bit, sd high-speed dwmmc1 at mainbus0: 99 MHz base clock sdmmc1 at dwmmc1: 8-bit, mmc high-speed com0 at mainbus0: dw16550 com0: console rkiic0 at mainbus0 iic0 at rkiic0 ambrtc0 at iic0 addr 0x69: AM1805 rkpmic0 at iic0 addr 0x1c: RK818 dwge0 at mainbus0: rev 0x35, address 76:e3:5a:fa:14:d9 rlphy0 at dwge0 phy 0: RTL8201F, rev. 6 scsibus0 at sdmmc0: 2 targets, initiator 0 sd0 at scsibus0 targ 1 lun 0: <SD/MMC, ASTC, 0012> removable sd0: 30000MB, 512 bytes/sector, 61440000 sectors scsibus1 at sdmmc1: 2 targets, initiator 0 sd1 at scsibus1 targ 1 lun 0: <Samsung, 8GTF4R, 0000> removable sd1: 7456MB, 512 bytes/sector, 15269888 sectors uhub1 at uhub0 port 1 configuration 1 interface 0 "Genesys Logic USB2.0 Hub" rev 2.00/60.90 addr 2 ugen0 at uhub1 port 3 "Marvell Marvell Wireless Device" rev 2.00/40.00 addr 3 vscsi0 at root scsibus2 at vscsi0: 256 targets softraid0 at root scsibus3 at softraid0: 256 targets bootfile: sd0a:/bsd boot device: sd0 root on sd1a (4f2f536727e7e8a6.a) swap on sd1b dump on sd1b cpu0: regulator not implemented Automatic boot in progress: starting file system checks. /dev/sd1a (4f2f536727e7e8a6.a): file system is clean; not checking pf enabled starting network starting early daemons: syslogd pflogd ntpd. starting RPC daemons:. savecore: no core dump checking quotas: done. clearing /tmp kern.securelevel: 0 -> 1 creating runtime link editor directory cache. preserving editor files. starting network daemons: sshd. starting local daemons: cron. Wed May 7 21:30:15 CDT 2025 OpenBSD/armv7 (rk3128) (console)