Adventures in FreeBSD Bringup on an RK3588 (Part 2)

Last week I started the journey of FreeBSD bringup on an RK3588 board. As a quick recap, the vendor U-Boot image that came with the board was pretty old and didn't have support for UEFI. Given that FreeBSD's existing RockPro image has an EFI image which I'd like to be able to "just boot," I grabbed the mainline Armbian "edge" image for the board and was able to get fairly deep in the kernel process with just this.

Of course, there were warnings galore, and given the near-total lack of clocks, it stalled during the process of probing OHCI.

Pruning the OHCI node

The next step was actually suggested by a discussion with ChatGPT; don't hate πŸ˜… Since the OHCI device was causing the stall, maybe we could just disable it and see what the next blocker is?

This turned out to be relatively straightforward. To access U-Boot, you need to have pretty fast reflexes. The prompt to abort automatic boot and go to the console is only up for a second or 2. And you have to press any key besides enter!

First, we need to set up our own FDT table. FDT stands for Flat Device Tree, and U-Boot lets us manipulate this directly in memory before handing off to the OS bootloader. For more details on these commands, check out the U-Boot docs.

=> fdt move ${fdtcontroladdr} ${fdt_addr_r} 100000
=> fdt addr ${fdt_addr_r}

From our last boot log, we could see the address of failing OHCI controller.

ohci0: <Generic OHCI Controller> mem 0xfc8c0000-0xfc8fffff irq 14 on ofwbus0

To confirm that we're tweaking the right device, we can use fdt print. We should get the OHCI controller details.

=> fdt print /usb@fc8c0000
usb@fc8c0000 {
        compatible = "rockchip,rk3588-ohci", "generic-ohci";
        reg = <0x00000000 0xfc8c0000 0x00000000 0x00040000>;
        interrupts = <0x00000000 0x000000db 0x00000004 0x00000000>;
        clocks = <0x00000021 0x00000190 0x00000021 0x00000191 0x00000021 0x000002c0 0x0000002a>;
        phys = <0x0000002b>;
        phy-names = "usb";
        power-domains = <0x00000022 0x0000001f>;
        status = "okay";
        phandle = <0x00000169>;
};

Disabling this is pretty simple:

=> fdt set /usb@fc8c0000 status "disabled"

And with that, we're off to boot with the modified device tree like so:

=> mmc dev 1
=> fatload mmc 1:1 ${kernel_addr_r} /EFI/BOOT/bootaa64.efi
=> bootefi ${kernel_addr_r} ${fdt_addr_r}

Getting a Minimal Root Filesystem

This gets all the way through kernel boot! Unfortunately, we have no storage. The SD reader is legible to U-Boot, but not to FreeBSD. USB isn't working either.

So, we don't have any storage, and of course we don't have network yet. But we DO have access to the SD card during the early boot process, and FreeBSD's generic kernel includes the md driver which is capable of loading an image!

First I'll describe the high-level edits we'll make to the base image. I'll include scripts at the end which covers the mechanical details, and focus on high-level explanations first.

Configuring /etc/fstab

First, we need to edit the fstab file. The default primary UFS partition doesn't work for our current setup yet, so I've replaced the root filesystem with /dev/md0.

# RAM-root bring-up
/dev/md0        /       ufs     rw              0       0
tmpfs           /tmp    tmpfs   rw,mode=1777    0       0

Create a Minimal Rescue Root Image

Next, we need to create a minimal image. It has to be minimal because there's a size limit to how much we can load via this method. I think the value is ~1GiB based on this source code.

My first attempt ran afoul of this limit. After taking a long time (20 minutes or so?) of copying a ~3GiB image from the SD card into RAM, it just hung with no clear indication of what went wrong πŸ₯΄

To solve this, I opted for a minimal root image from /rescue. I could have created a more custom minimal base image (and I probably will later), but this was the easy path to get something up.

I created an image by basically copying the contents of /rescue to a temp directory, along with /etc/fstab from the CURRENT RockPro64 image. I also added a basic skeleton for other mount points (empty directories). Then I used makefs to turn the directory tree into a UFS2 disk image which md can mount later. (The script at the end has the details.)

Then, I copied the rescue image into the original image's filesystem under /boot/mfsroot.

Configure /boot/loader.conf

Then we need to tell loader.conf about the image. This is fairly straightforward. The mfsroot isn't special; it's a name according to a convention that's understood by the loader. Basically it creates an image named mfsroot, and configures the loader to boot from it, in single-user mode (baby steps).

# Bring-up: preload root filesystem into RAM
mfsroot_load="YES"
mfsroot_type="mfs_root"
mfsroot_name="/boot/mfsroot"
vfs.root.mountfrom="ufs:/dev/md0"
vfs.root.mountfrom.options="rw"

# Single-user mode; verbose boot
boot_single="YES"
boot_verbose="YES"

Recap

So, to recap where we are, we've started with a FreeBSD-CURRENT image, derived a minimal rescue image from that, embedded the rescue image in /boot, and told the loader to use it as the root filesystem as md device.

The image is loaded directly into RAM by the EFI boot process, compensating for the fact that we don't have SD, USB, or NVMe working yet under FreeBSD. The EFI boot process loads the kernel and root image, kicks off the kernel boot (with a modified device tree), and the FreeBSD kernel loads the rescue root FS.

First boot viewed from a terminal emulator, ending in a root prompt

Loading a Full Base System

The rescue system is functional (it actually has 147 binaries at the time of this writing, which is not nothing!), but it's a bit bare. For example, there is no C compiler and no manpages. We don't even have uname yet!

You may recall that we started from a full SD card image, which is around 3GiB uncompressed. My first thought was to just include that (recursively-ish) as another "fullroot" image to be loaded by md. This runs into the 1GB limit though. But, the rescue system is more featureful than you might imagine (especially if coming from another OS). It includes utilities like xz, which will let us copy a compressed image to RAM during boot, and then expand it at our leisure once the system has booted.

This turns out to be a good idea anyways, even without the 1GiB limit. SD cards are slow compared to the storage I'm used to.

This took a fair bit of fiddling to get working, but you can see the process in the scripts at the end.

Full Boot Log

And with that, we have a full base system with a root shell! We still have a lot of work left in terms of hardware support, and it's still single-user mode, but the system is usable over the serial console.

I've included the full boot log below for reference.

Full boot log
---<<BOOT>>---
GDB: debug ports: uart
GDB: current port: uart
KDB: debugger backends: ddb gdb
KDB: current backend: ddb
WARNING: Cannot find freebsd,dts-version property, cannot check DTB compliance
                   Type     Physical      Virtual   #Pages Attr
               Reserved 00000010f000 00000010f000 00000001 WB
     ConventionalMemory 000000200000 000000200000 00000750 WB
               Reserved 000000950000 000000950000 00000033 WB
     ConventionalMemory 000000983000 000000983000 0000167d WB
       BootServicesData 000002000000 000002000000 000000dd WB
     ConventionalMemory 0000020dd000 0000020dd000 000b9f23 WB
             LoaderCode 0000bc000000 0000bc000000 0002c800 WB
             LoaderData 0000e8800000 0000e8800000 00004000 WB
    RuntimeServicesData 0000ec800000 0000ec800000 00000001 WB RUNTIME
     ConventionalMemory 0000ec801000 0000ec801000 000001b2 WB
             LoaderData 0000ec9b3000 0000ec9b3000 00000001 WB
       BootServicesData 0000ec9b4000 0000ec9b4000 00000003 WB
             LoaderCode 0000ec9b7000 0000ec9b7000 000000dd WB
       BootServicesData 0000eca94000 0000eca94000 00000004 WB
      ACPIReclaimMemory 0000eca98000 0000eca98000 00000103 WB
       BootServicesData 0000ecb9b000 0000ecb9b000 00000001 WB
    RuntimeServicesData 0000ecb9c000 0000ecb9c000 00000001 WB RUNTIME
       BootServicesData 0000ecb9d000 0000ecb9d000 00000001 WB
    RuntimeServicesData 0000ecb9e000 0000ecb9e000 00000021 WB RUNTIME
       BootServicesData 0000ecbbf000 0000ecbbf000 00000002 WB
    RuntimeServicesData 0000ecbc1000 0000ecbc1000 00000001 WB RUNTIME
       BootServicesData 0000ecbc2000 0000ecbc2000 0000000a WB
       BootServicesCode 0000ecbcc000 0000ecbcc000 00001333 WB
    RuntimeServicesData 0000edeff000 0000edeff000 00000001 WB RUNTIME
       BootServicesCode 0000edf00000 0000edf00000 00001f90 WB
    RuntimeServicesCode 0000efe90000 0000efe90000 00000010 WB RUNTIME
       BootServicesCode 0000efea0000 0000efea0000 00000160 WB
       BootServicesData 000100000000 000100000000 002fc000 WB
       BootServicesData 0003fc500000 0003fc500000 00003a00 WB
       BootServicesData 0004f0000000 0004f0000000 00010000 WB
Physical memory chunk(s):
  0x00200000 - 0x0094ffff,     7 MB (   1872 pages)
  0x00983000 - 0xefffffff,  3830 MB ( 980605 pages)
  0x100000000 - 0x3fbffffff, 12224 MB (3129344 pages)
  0x3fc500000 - 0x3ffefffff,    58 MB (  14848 pages)
  0x4f0000000 - 0x4ffffffff,   256 MB (  65536 pages)
Excluded memory regions:
  0x0010f000 - 0x0010ffff,     0 MB (      1 pages) NoAlloc NoDump
  0xbc000000 - 0xe868cfff,   710 MB ( 181901 pages) NoAlloc
  0xec800000 - 0xec800fff,     0 MB (      1 pages) NoAlloc
  0xeca98000 - 0xecb9afff,     1 MB (    259 pages) NoAlloc
  0xecb9c000 - 0xecb9cfff,     0 MB (      1 pages) NoAlloc
  0xecb9e000 - 0xecbbefff,     0 MB (     33 pages) NoAlloc
  0xecbc1000 - 0xecbc1fff,     0 MB (      1 pages) NoAlloc
  0xedeff000 - 0xedefffff,     0 MB (      1 pages) NoAlloc
  0xefe90000 - 0xefe9ffff,     0 MB (     16 pages) NoAlloc
  0x100000000 - 0x100232fff,     2 MB (    563 pages) NoAlloc
Found 8 CPUs in the device tree
Copyright (c) 1992-2026 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 16.0-CURRENT #0 main-n289242-32878e64e687: Wed Sep 16 09:38:19 UTC 2026
    root@releng3.nyi.freebsd.org:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC arm64
FreeBSD clang version 21.1.8 (https://github.com/llvm/llvm-project.git llvmorg-21.1.8-0-g2078da43e25a)
WARNING: WITNESS option enabled, expect reduced performance.
WITNESS configuration requests 2856 KiB of startup allocations with witness_count=1536, lock_order_data_count=2048, lock_order_hash_size=1021
VT: init without driver.
Preloaded elf kernel "/boot/kernel/kernel" at 0xffff00002c67a000.
Preloaded mfs_root "/boot/mfsroot" at 0xffff00002c6835b0.
Preloaded elf module "/boot/kernel/umodem.ko" at 0xffff00002c683600.
Preloaded elf module "/boot/kernel/ucom.ko" at 0xffff00002c683e18.
Preloaded md_image "/boot/fullroot.ufs.xz" at 0xffff00002c684670.
Preloaded boot_entropy_platform "efi_rng_seed" at 0xffff00002c6846c8.
Preloaded TSLOG data "TSLOG" at 0xffff00002c684720.
real memory  = 17171271680 (16375 MB)
Physical memory chunk(s):
0x00000000200000 - 0x0000000094ffff, 7667712 bytes (1872 pages)
0x00000000983000 - 0x000000bbffffff, 3144142848 bytes (767613 pages)
0x000000e868d000 - 0x000000ec7fffff, 68628480 bytes (16755 pages)
0x000000ec801000 - 0x000000eca97fff, 2715648 bytes (663 pages)
0x000000ecb9b000 - 0x000000ecb9bfff, 4096 bytes (1 pages)
0x000000ecb9d000 - 0x000000ecb9dfff, 4096 bytes (1 pages)
0x000000ecbbf000 - 0x000000ecbc0fff, 8192 bytes (2 pages)
0x000000ecbc2000 - 0x000000edefefff, 20172800 bytes (4925 pages)
0x000000edf00000 - 0x000000efe8ffff, 33095680 bytes (8080 pages)
0x000000efea0000 - 0x000000efffffff, 1441792 bytes (352 pages)
0x00000100233000 - 0x000003e722bfff, 12465442816 bytes (3043321 pages)
0x000003fc500000 - 0x000003ffefffff, 60817408 bytes (14848 pages)
0x000004f0000000 - 0x000004ffffffff, 268435456 bytes (65536 pages)
avail memory = 16067567616 (15323 MB)
Starting CPU 1 (100)
Starting CPU 2 (200)
Starting CPU 3 (300)
Starting CPU 4 (400)
Starting CPU 5 (500)
Starting CPU 6 (600)
Starting CPU 7 (700)
FreeBSD/SMP: Multiprocessor System Detected: 8 CPUs
random: no preloaded entropy cache
random: read 2048 bytes from platform bootloader
random: unblocking device.
VIMAGE (virtualized network stack) enabled
hostuuid: using 00000000-0000-0000-0000-000000000000
ULE: setup cpu 0
ULE: setup cpu 1
ULE: setup cpu 2
ULE: setup cpu 3
ULE: setup cpu 4
ULE: setup cpu 5
ULE: setup cpu 6
ULE: setup cpu 7
random: entropy device external interface
firmware: 'tegra210_xusb_fw' version 0: 132608 bytes loaded at 0xffff000000c53844
MAP ec800000 mode 2 pages 1
MAP ecb9c000 mode 2 pages 1
MAP ecb9e000 mode 2 pages 33
MAP ecbc1000 mode 2 pages 1
MAP edeff000 mode 2 pages 1
MAP efe90000 mode 2 pages 16
EFI runtime driver, fw spec 2.6.14
kbd0 at kbdmux0
mem: <memory>
null: <full device, null device, zero device>
openfirm: <Open Firmware control device>
sound_global_init: snd_unit=-1 snd_vchans_enable=1 latency=2 feeder_rate_min=1 feeder_rate_max=2016000 feeder_rate_round=25
tcp_log: tcp_log device
crypto: <crypto core>
ram0: reserving memory region:   200000-950000
ram0: reserving memory region:   983000-bc000000
ram0: reserving memory region:   e868d000-ec800000
ram0: reserving memory region:   ec801000-eca98000
ram0: reserving memory region:   ecb9b000-ecb9c000
ram0: reserving memory region:   ecb9d000-ecb9e000
ram0: reserving memory region:   ecbbf000-ecbc1000
ram0: reserving memory region:   ecbc2000-edeff000
ram0: reserving memory region:   edf00000-efe90000
ram0: reserving memory region:   efea0000-f0000000
ram0: reserving memory region:   100233000-3fc000000
ram0: reserving memory region:   3fc500000-3fff00000
ram0: reserving memory region:   4f0000000-500000000
ofwbus0: <Open Firmware Device Tree>
ofw_firmware0: <OFW Firmware Group> on ofwbus0
clk_fixed0: <Fixed clock> on ofwbus0
Clock: spll, parent: none, freq: 702000000
clk_fixed1: <Fixed clock> on ofwbus0
Clock: xin24m, parent: none, freq: 24000000
clk_fixed2: <Fixed clock> on ofwbus0
Clock: xin32k, parent: none, freq: 32768
regfix0: <Fixed Regulator> on ofwbus0
regfix1: <Fixed Regulator> on ofwbus0
regfix2: <Fixed Regulator> on ofwbus0
regfix3: <Fixed Regulator> on ofwbus0
regfix4: <Fixed Regulator> on ofwbus0
regfix5: <Fixed Regulator> on ofwbus0
regfix6: <Fixed Regulator> on ofwbus0
regfix7: <Fixed Regulator> on ofwbus0
regfix8: <Fixed Regulator> on ofwbus0
regfix9: <Fixed Regulator> on ofwbus0
simple_mfd0: <Simple MFD (Multi-Functions Device)> mem 0xfd58a000-0xfd599fff on ofwbus0
simple_mfd1: <Simple MFD (Multi-Functions Device)> mem 0xfd5d0000-0xfd5d3fff on ofwbus0
simple_mfd2: <Simple MFD (Multi-Functions Device)> mem 0xfd5d8000-0xfd5dbfff on ofwbus0
simple_mfd3: <Simple MFD (Multi-Functions Device)> mem 0xfd5dc000-0xfd5dffff on ofwbus0
simple_mfd4: <Simple MFD (Multi-Functions Device)> mem 0xfd8d8000-0xfd8d83ff on ofwbus0
simple_mfd5: <Simple MFD (Multi-Functions Device)> mem 0xfd5d4000-0xfd5d7fff on ofwbus0
psci0: <ARM Power State Co-ordination Interface Driver> on ofwbus0
psci0: PSCI version 0.2 compatible
Found SMCCC version 1.5
smccc0: <ARM SMCCC v1.5> on psci0
cpulist0: <Open Firmware CPU Group> on ofwbus0
cpu0: <Open Firmware CPU> on cpulist0
cpu1: <Open Firmware CPU> on cpulist0
cpu2: <Open Firmware CPU> on cpulist0
cpu3: <Open Firmware CPU> on cpulist0
cpu4: <Open Firmware CPU> on cpulist0
cpu5: <Open Firmware CPU> on cpulist0
cpu6: <Open Firmware CPU> on cpulist0
cpu7: <Open Firmware CPU> on cpulist0
gic0: <ARM Generic Interrupt Controller v3.0> mem 0xfe600000-0xfe60ffff,0xfe680000-0xfe77ffff irq 93 on ofwbus0
gic0: using spi 424 to 480
gic0: SPIs: 512, IDs: 65535
gic0: Start searching for Re-Distributor
gic0: CPU0 Re-Distributor has been found
gic0: CPU0 Re-Distributor woke up
gic0: CPU0 enabled CPU interface via system registers
its0: <ARM GIC Interrupt Translation Service> mem 0xfe640000-0xfe65ffff on gic0
its0: Applying RK3588 ITS errata
gic0: using PENDBASE of 0x100250000 on cpu 0
its1: <ARM GIC Interrupt Translation Service> mem 0xfe660000-0xfe67ffff on gic0
its1: Applying RK3588 ITS errata
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
md0: Preloaded image </boot/mfsroot> 67108864 bytes at 0xffff000001578000
md1: Preloaded image </boot/fullroot.ufs.xz> 652353536 bytes at 0xffff0000055c7000
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
generic_timer0: <ARMv8 Generic Timer> irq 2,3,4,5,6 on ofwbus0
generic_timer0: allocated irq for 'sec-phys'
generic_timer0: allocated irq for 'phys'
generic_timer0: allocated irq for 'virt'
generic_timer0: allocated irq for 'hyp-phys'
generic_timer0: allocated irq for 'hyp-virt'
Timecounter "ARM MPCore Timecounter" frequency 24000000 Hz quality 1000
Event timer "ARM MPCore Eventtimer" frequency 24000000 Hz quality 1000
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
mmio_sram0: <MMIO SRAM> mem 0xfd600000-0xfd6fffff on ofwbus0
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
mmio_sram1: <MMIO SRAM> mem 0xff001000-0xff0effff on ofwbus0
scmi_smc0: <ARM SCMI SMC Transport driver> on ofw_firmware0
scmi_smc0: smc id 82000010
scmi_smc0: scmi_shmem_get: Can't get shmem device.
scmi_smc0: A2P shmem dev not found.
device_attach: scmi_smc0 attach returned 6
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
efirtc0: cannot read EFI realtime clock, error 78
smbios0: <System Management BIOS>
smbios0: Entry point: v3 (64-bit), Version: 3.7
smbios0: Docrev: 0, Entry Point Revision: 1
cpufreq_dt0: <Generic cpufreq driver> on cpu0
cpufreq_dt0: no clock for cpu@0
device_attach: cpufreq_dt0 attach returned 6
cpufreq_dt1: <Generic cpufreq driver> on cpu1
cpufreq_dt1: no clock for cpu@100
device_attach: cpufreq_dt1 attach returned 6
cpufreq_dt2: <Generic cpufreq driver> on cpu2
cpufreq_dt2: no clock for cpu@200
device_attach: cpufreq_dt2 attach returned 6
cpufreq_dt3: <Generic cpufreq driver> on cpu3
cpufreq_dt3: no clock for cpu@300
device_attach: cpufreq_dt3 attach returned 6
cpufreq_dt4: <Generic cpufreq driver> on cpu4
cpufreq_dt4: no clock for cpu@400
device_attach: cpufreq_dt4 attach returned 6
cpufreq_dt5: <Generic cpufreq driver> on cpu5
cpufreq_dt5: no clock for cpu@500
device_attach: cpufreq_dt5 attach returned 6
cpufreq_dt6: <Generic cpufreq driver> on cpu6
cpufreq_dt6: no clock for cpu@600
device_attach: cpufreq_dt6 attach returned 6
cpufreq_dt7: <Generic cpufreq driver> on cpu7
cpufreq_dt7: no clock for cpu@700
device_attach: cpufreq_dt7 attach returned 6
ofwbus0: <l3-cache> compat cache (no driver attached)
ofwbus0: <display-subsystem> compat rockchip,display-subsystem (no driver attached)
scmi_smc0: <ARM SCMI SMC Transport driver> on ofw_firmware0
scmi_smc0: smc id 82000010
scmi_smc0: scmi_shmem_get: Can't get shmem device.
scmi_smc0: A2P shmem dev not found.
device_attach: scmi_smc0 attach returned 6
pcm0: <simple-audio-card> on ofwbus0
pmu0: <Performance Monitoring Unit> irq 0 on ofwbus0
pmu1: <Performance Monitoring Unit> irq 1 on ofwbus0
ofwbus0: <gpu@fb000000> mem 0xfb000000-0xfb1fffff irq 7,8,9 compat rockchip,rk3588-mali (no driver attached)
snps_dwc3_fdt0: Found dr_mode 'peripheral' but only 'host' supported. s=11
ofwbus0: <usb@fc000000> mem 0xfc000000-0xfc3fffff irq 10 compat rockchip,rk3588-dwc3 (no driver attached)
ofwbus0: <usb@fc800000> mem 0xfc800000-0xfc83ffff irq 11 disabled compat rockchip,rk3588-ehci (no driver attached)
ofwbus0: <usb@fc840000> mem 0xfc840000-0xfc87ffff irq 12 disabled compat rockchip,rk3588-ohci (no driver attached)
ehci0: <Generic EHCI Controller> mem 0xfc880000-0xfc8bffff irq 13 on ofwbus0
usbus0: EHCI version 1.0
usbus0 on ehci0
ehci0: usbpf: Attached
ofwbus0: <usb@fc8c0000> mem 0xfc8c0000-0xfc8fffff irq 14 disabled compat rockchip,rk3588-ohci (no driver attached)
ofwbus0: <usb@fcd00000> mem 0xfcd00000-0xfd0fffff irq 15 disabled compat rockchip,rk3588-dwc3 (no driver attached)
ofwbus0: <iommu@fc900000> mem 0xfc900000-0xfcafffff irq 16,17,18,19 compat arm,smmu-v3 (no driver attached)
ofwbus0: <iommu@fcb00000> mem 0xfcb00000-0xfccfffff irq 20,21,22,23 disabled compat arm,smmu-v3 (no driver attached)
syscon_generic_dev0: <syscon> mem 0xfd58c000-0xfd58cfff on ofwbus0
syscon_generic_dev0: Cannot allocate memory resource
device_attach: syscon_generic_dev0 attach returned 6
syscon_generic_dev0: <syscon> mem 0xfd5e8000-0xfd5ebfff on ofwbus0
syscon_generic_dev1: <syscon> mem 0xfd5ec000-0xfd5effff on ofwbus0
syscon_generic_dev2: <syscon> mem 0xfd5a4000-0xfd5a5fff on ofwbus0
syscon_generic_dev3: <syscon> mem 0xfd5a6000-0xfd5a7fff on ofwbus0
syscon_generic_dev4: <syscon> mem 0xfd5a8000-0xfd5abfff on ofwbus0
syscon_generic_dev5: <syscon> mem 0xfd5ac000-0xfd5affff on ofwbus0
syscon_generic_dev6: <syscon> mem 0xfd5b0000-0xfd5b0fff on ofwbus0
syscon_generic_dev7: <syscon> mem 0xfd5b4000-0xfd5b4fff on ofwbus0
syscon_generic_dev8: <syscon> mem 0xfd5b5000-0xfd5b5fff on ofwbus0
syscon_generic_dev9: <syscon> mem 0xfd5bc000-0xfd5bc0ff on ofwbus0
syscon_generic_dev10: <syscon> mem 0xfd5c4000-0xfd5c40ff on ofwbus0
syscon_generic_dev11: <syscon> mem 0xfd5c8000-0xfd5cbfff on ofwbus0
simple_mfd1: <usb2phy@0> mem 0-0xfd5cffff,0-0x3fff irq 171 compat rockchip,rk3588-usb2phy (no driver attached)
simple_mfd2: <usb2phy@8000> mem 0-0xfd5d7fff,0-0x3fff irq 172 disabled compat rockchip,rk3588-usb2phy (no driver attached)
simple_mfd3: <usb2phy@c000> mem 0-0xfd5dbfff,0-0x3fff irq 173 compat rockchip,rk3588-usb2phy (no driver attached)
syscon_generic_dev12: <syscon> mem 0xfd5e0000-0xfd5e00ff on ofwbus0
syscon_generic_dev13: <syscon> mem 0xfd5f0000-0xfd5fffff on ofwbus0
ofwbus0: <clock-controller@fd7c0000> mem 0xfd7c0000-0xfd81bfff compat rockchip,rk3588-cru (no driver attached)
rk_i2c0: <RockChip I2C> mem 0xfd880000-0xfd880fff irq 24 on ofwbus0
rk_i2c0: cannot get i2c clock
usbus0: 480Mbps High Speed USB v2.0
device_attach: rk_i2c0 attach returned 19
ofwbus0: <serial@fd890000> mem 0xfd890000-0xfd8900ff irq 25 disabled compat rockchip,rk3588-uart (no driver attached)
ofwbus0: <pwm@fd8b0000> mem 0xfd8b0000-0xfd8b000f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@fd8b0010> mem 0xfd8b0010-0xfd8b001f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@fd8b0020> mem 0xfd8b0020-0xfd8b002f compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@fd8b0030> mem 0xfd8b0030-0xfd8b003f disabled compat rockchip,rk3588-pwm (no driver attached)
simple_mfd4: <power-controller> mem 0xfd8d8000-0xfd8d83ff compat rockchip,rk3588-power-controller (no driver attached)
ofwbus0: <npu@fdab0000> mem 0xfdab0000-0xfdab0fff,0xfdab1000-0xfdab1fff,0xfdab3000-0xfdab3fff irq 26 compat rockchip,rk3588-rknn-core (no driver attached)
ofwbus0: <iommu@fdab9000> mem 0xfdab9000-0xfdab90ff,0xfdaba000-0xfdaba0ff irq 27 compat rockchip,rk3588-iommu (no driver attached)
ofwbus0: <npu@fdac0000> mem 0xfdac0000-0xfdac0fff,0xfdac1000-0xfdac1fff,0xfdac3000-0xfdac3fff irq 28 compat rockchip,rk3588-rknn-core (no driver attached)
ofwbus0: <iommu@fdaca000> mem 0xfdaca000-0xfdaca0ff irq 29 compat rockchip,rk3588-iommu (no driver attached)
ofwbus0: <npu@fdad0000> mem 0xfdad0000-0xfdad0fff,0xfdad1000-0xfdad1fff,0xfdad3000-0xfdad3fff irq 30 compat rockchip,rk3588-rknn-core (no driver attached)
ofwbus0: <iommu@fdada000> mem 0xfdada000-0xfdada0ff irq 31 compat rockchip,rk3588-iommu (no driver attached)
ofwbus0: <video-codec@fdb50000> mem 0xfdb50000-0xfdb507ff irq 32 compat rockchip,rk3588-vpu121 (no driver attached)
ofwbus0: <iommu@fdb50800> mem 0xfdb50800-0xfdb5083f irq 33 compat rockchip,rk3588-iommu (no driver attached)
ofwbus0: <rga@fdb80000> mem 0xfdb80000-0xfdb8017f irq 34 compat rockchip,rk3588-rga (no driver attached)
ofwbus0: <video-codec@fdba0000> mem 0xfdba0000-0xfdba07ff irq 35 compat rockchip,rk3588-vepu121 (no driver attached)
ofwbus0: <iommu@fdba0800> mem 0xfdba0800-0xfdba083f irq 36 compat rockchip,rk3588-iommu (no driver attached)
ofwbus0: <video-codec@fdba4000> mem 0xfdba4000-0xfdba47ff irq 37 compat rockchip,rk3588-vepu121 (no driver attached)
ofwbus0: <iommu@fdba4800> mem 0xfdba4800-0xfdba483f irq 38 compat rockchip,rk3588-iommu (no driver attached)
ofwbus0: <video-codec@fdba8000> mem 0xfdba8000-0xfdba87ff irq 39 compat rockchip,rk3588-vepu121 (no driver attached)
ofwbus0: <iommu@fdba8800> mem 0xfdba8800-0xfdba883f irq 40 compat rockchip,rk3588-iommu (no driver attached)
ofwbus0: <video-codec@fdbac000> mem 0xfdbac000-0xfdbac7ff irq 41 compat rockchip,rk3588-vepu121 (no driver attached)
ofwbus0: <iommu@fdbac800> mem 0xfdbac800-0xfdbac83f irq 42 compat rockchip,rk3588-iommu (no driver attached)
ofwbus0: <video-codec@fdc38000> mem 0xfdc38100-0xfdc385ff,0xfdc38000-0xfdc380ff,0xfdc38600-0xfdc386ff irq 43 compat rockchip,rk3588-vdec (no driver attached)
ofwbus0: <iommu@fdc38700> mem 0xfdc38700-0xfdc3873f,0xfdc38740-0xfdc3877f irq 44 compat rockchip,rk3588-iommu (no driver attached)
ofwbus0: <video-codec@fdc40000> mem 0xfdc40100-0xfdc405ff,0xfdc40000-0xfdc400ff,0xfdc40600-0xfdc406ff irq 45 compat rockchip,rk3588-vdec (no driver attached)
ofwbus0: <iommu@fdc40700> mem 0xfdc40700-0xfdc4073f,0xfdc40740-0xfdc4077f irq 46 compat rockchip,rk3588-iommu (no driver attached)
ofwbus0: <video-codec@fdc70000> mem 0xfdc70000-0xfdc707ff irq 47 compat rockchip,rk3588-av1-vpu (no driver attached)
ofwbus0: <vop@fdd90000> mem 0xfdd90000-0xfdd941ff,0xfdd95000-0xfdd95fff irq 48 compat rockchip,rk3588-vop (no driver attached)
ofwbus0: <iommu@fdd97e00> mem 0xfdd97e00-0xfdd97eff,0xfdd97f00-0xfdd97fff irq 49 compat rockchip,rk3588-iommu (no driver attached)
ofwbus0: <spdif-tx@fddb0000> mem 0xfddb0000-0xfddb0fff irq 50 disabled compat rockchip,rk3588-spdif (no driver attached)
ofwbus0: <i2s@fddc0000> mem 0xfddc0000-0xfddc0fff irq 51 disabled compat rockchip,rk3588-i2s-tdm (no driver attached)
ofwbus0: <spdif-tx@fdde0000> mem 0xfdde0000-0xfdde0fff irq 52 disabled compat rockchip,rk3588-spdif (no driver attached)
ofwbus0: <i2s@fddf0000> mem 0xfddf0000-0xfddf0fff irq 53 compat rockchip,rk3588-i2s-tdm (no driver attached)
ofwbus0: <i2s@fddfc000> mem 0xfddfc000-0xfddfcfff irq 54 disabled compat rockchip,rk3588-i2s-tdm (no driver attached)
ofwbus0: <dsi@fde20000> mem 0xfde20000-0xfde2ffff irq 55 disabled compat rockchip,rk3588-mipi-dsi2 (no driver attached)
ofwbus0: <dsi@fde30000> mem 0xfde30000-0xfde3ffff irq 56 disabled compat rockchip,rk3588-mipi-dsi2 (no driver attached)
ofwbus0: <dp@fde50000> mem 0xfde50000-0xfde53fff irq 57 compat rockchip,rk3588-dp (no driver attached)
ofwbus0: <hdmi@fde80000> mem 0xfde80000-0xfde9ffff irq 58,59,60,61,62 compat rockchip,rk3588-dw-hdmi-qp (no driver attached)
ofwbus0: <edp@fdec0000> mem 0xfdec0000-0xfdec0fff irq 63 disabled compat rockchip,rk3588-edp (no driver attached)
syscon_generic_dev14: <syscon> mem 0xfdf35000-0xfdf3501f on ofwbus0
syscon_generic_dev15: <syscon> mem 0xfdf35200-0xfdf3521f on ofwbus0
syscon_generic_dev16: <syscon> mem 0xfdf35400-0xfdf3541f on ofwbus0
syscon_generic_dev17: <syscon> mem 0xfdf35600-0xfdf3561f on ofwbus0
syscon_generic_dev18: <syscon> mem 0xfdf36000-0xfdf3601f on ofwbus0
syscon_generic_dev19: <syscon> mem 0xfdf39000-0xfdf3901f on ofwbus0
syscon_generic_dev20: <syscon> mem 0xfdf3d800-0xfdf3d81f on ofwbus0
syscon_generic_dev21: <syscon> mem 0xfdf3e000-0xfdf3e01f on ofwbus0
syscon_generic_dev22: <syscon> mem 0xfdf3e200-0xfdf3e21f on ofwbus0
syscon_generic_dev23: <syscon> mem 0xfdf3e400-0xfdf3e41f on ofwbus0
syscon_generic_dev24: <syscon> mem 0xfdf3e600-0xfdf3e61f on ofwbus0
syscon_generic_dev25: <syscon> mem 0xfdf40000-0xfdf4001f on ofwbus0
syscon_generic_dev26: <syscon> mem 0xfdf40200-0xfdf4021f on ofwbus0
syscon_generic_dev27: <syscon> mem 0xfdf40400-0xfdf4041f on ofwbus0
syscon_generic_dev28: <syscon> mem 0xfdf40500-0xfdf4051f on ofwbus0
syscon_generic_dev29: <syscon> mem 0xfdf40600-0xfdf4061f on ofwbus0
syscon_generic_dev30: <syscon> mem 0xfdf40800-0xfdf4081f on ofwbus0
syscon_generic_dev31: <syscon> mem 0xfdf41000-0xfdf4101f on ofwbus0
syscon_generic_dev32: <syscon> mem 0xfdf41100-0xfdf4111f on ofwbus0
syscon_generic_dev33: <syscon> mem 0xfdf60000-0xfdf6001f on ofwbus0
syscon_generic_dev34: <syscon> mem 0xfdf60200-0xfdf6021f on ofwbus0
syscon_generic_dev35: <syscon> mem 0xfdf60400-0xfdf6041f on ofwbus0
syscon_generic_dev36: <syscon> mem 0xfdf61000-0xfdf6101f on ofwbus0
syscon_generic_dev37: <syscon> mem 0xfdf61200-0xfdf6121f on ofwbus0
syscon_generic_dev38: <syscon> mem 0xfdf61400-0xfdf6141f on ofwbus0
syscon_generic_dev39: <syscon> mem 0xfdf62000-0xfdf6201f on ofwbus0
syscon_generic_dev40: <syscon> mem 0xfdf63000-0xfdf6301f on ofwbus0
syscon_generic_dev41: <syscon> mem 0xfdf64000-0xfdf6401f on ofwbus0
syscon_generic_dev42: <syscon> mem 0xfdf66000-0xfdf6601f on ofwbus0
syscon_generic_dev43: <syscon> mem 0xfdf66200-0xfdf6621f on ofwbus0
syscon_generic_dev44: <syscon> mem 0xfdf66400-0xfdf6641f on ofwbus0
syscon_generic_dev45: <syscon> mem 0xfdf66600-0xfdf6661f on ofwbus0
syscon_generic_dev46: <syscon> mem 0xfdf66800-0xfdf6681f on ofwbus0
syscon_generic_dev47: <syscon> mem 0xfdf66a00-0xfdf66a1f on ofwbus0
syscon_generic_dev48: <syscon> mem 0xfdf66c00-0xfdf66c1f on ofwbus0
syscon_generic_dev49: <syscon> mem 0xfdf66e00-0xfdf66e1f on ofwbus0
syscon_generic_dev50: <syscon> mem 0xfdf67000-0xfdf6701f on ofwbus0
syscon_generic_dev51: <syscon> mem 0xfdf67200-0xfdf6721f on ofwbus0
syscon_generic_dev52: <syscon> mem 0xfdf70000-0xfdf7001f on ofwbus0
syscon_generic_dev53: <syscon> mem 0xfdf71000-0xfdf7101f on ofwbus0
syscon_generic_dev54: <syscon> mem 0xfdf72000-0xfdf7201f on ofwbus0
syscon_generic_dev55: <syscon> mem 0xfdf72200-0xfdf7221f on ofwbus0
syscon_generic_dev56: <syscon> mem 0xfdf72400-0xfdf7241f on ofwbus0
syscon_generic_dev57: <syscon> mem 0xfdf80000-0xfdf8001f on ofwbus0
syscon_generic_dev58: <syscon> mem 0xfdf81000-0xfdf8101f on ofwbus0
syscon_generic_dev59: <syscon> mem 0xfdf81200-0xfdf8121f on ofwbus0
syscon_generic_dev60: <syscon> mem 0xfdf82000-0xfdf8201f on ofwbus0
syscon_generic_dev61: <syscon> mem 0xfdf82200-0xfdf8221f on ofwbus0
ofwbus0: <dfi@fe060000> mem 0xfe060000-0xfe06ffff irq 64,65,66,67 compat rockchip,rk3588-dfi (no driver attached)
pcib0: <RockChip RK3568 PCI-express controller> mem 0xa40c00000-0xa40ffffff,0xfe180000-0xfe18ffff,0xf3000000-0xf30fffff irq 68,69,70,71,72 on ofwbus0
pcib0: Can not get reset
device_attach: pcib0 attach returned 6
pcib0: <RockChip RK3568 PCI-express controller> mem 0xa41000000-0xa413fffff,0xfe190000-0xfe19ffff,0xf4000000-0xf40fffff irq 73,74,75,76,77 on ofwbus0
pcib0: Can not get reset
device_attach: pcib0 attach returned 6
ofwbus0: <ethernet@fe1c0000> mem 0xfe1c0000-0xfe1cffff irq 78,79 disabled compat rockchip,rk3588-gmac (no driver attached)
ofwbus0: <sata@fe210000> mem 0xfe210000-0xfe210fff irq 80 disabled compat rockchip,rk3588-dwc-ahci (no driver attached)
ofwbus0: <sata@fe230000> mem 0xfe230000-0xfe230fff irq 81 disabled compat rockchip,rk3588-dwc-ahci (no driver attached)
ofwbus0: <spi@fe2b0000> mem 0xfe2b0000-0xfe2b3fff irq 82 compat rockchip,sfc (no driver attached)
rockchip_dwmmc0: <Synopsys DesignWare Mobile Storage Host Controller (RockChip)> mem 0xfe2c0000-0xfe2c3fff irq 83 on ofwbus0
rockchip_dwmmc0: No bus speed provided
rockchip_dwmmc0: Can't get FDT property.
rockchip_dwmmc0: Disabling HS200+ (tuning code not written)
device_attach: rockchip_dwmmc0 attach returned 6
ofwbus0: <mmc@fe2d0000> mem 0xfe2d0000-0xfe2d3fff irq 84 disabled compat rockchip,rk3588-dw-mshc (no driver attached)
ofwbus0: <mmc@fe2e0000> mem 0xfe2e0000-0xfe2effff irq 85 compat rockchip,rk3588-dwcmshc (no driver attached)
ofwbus0: <rng@fe378000> mem 0xfe378000-0xfe3781ff irq 86 compat rockchip,rk3588-rng (no driver attached)
ofwbus0: <i2s@fe470000> mem 0xfe470000-0xfe470fff irq 87 compat rockchip,rk3588-i2s-tdm (no driver attached)
ofwbus0: <i2s@fe480000> mem 0xfe480000-0xfe480fff irq 88 disabled compat rockchip,rk3588-i2s-tdm (no driver attached)
ofwbus0: <i2s@fe490000> mem 0xfe490000-0xfe490fff irq 89 disabled compat rockchip,rk3588-i2s (no driver attached)
ofwbus0: <i2s@fe4a0000> mem 0xfe4a0000-0xfe4a0fff irq 90 disabled compat rockchip,rk3588-i2s (no driver attached)
ofwbus0: <spdif-tx@fe4e0000> mem 0xfe4e0000-0xfe4e0fff irq 91 disabled compat rockchip,rk3588-spdif (no driver attached)
ofwbus0: <spdif-tx@fe4f0000> mem 0xfe4f0000-0xfe4f0fff irq 92 disabled compat rockchip,rk3588-spdif (no driver attached)
ofwbus0: <dma-controller@fea10000> mem 0xfea10000-0xfea13fff irq 94,95 compat arm,pl330 (no driver attached)
ofwbus0: <dma-controller@fea30000> mem 0xfea30000-0xfea33fff irq 96,97 compat arm,pl330 (no driver attached)
rk_i2c0: <RockChip I2C> mem 0xfea90000-0xfea90fff irq 98 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
ofwbus0: <i2c@feaa0000> mem 0xfeaa0000-0xfeaa0fff irq 99 disabled compat rockchip,rk3588-i2c (no driver attached)
rk_i2c0: <RockChip I2C> mem 0xfeab0000-0xfeab0fff irq 100 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfeac0000-0xfeac0fff irq 101 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
ofwbus0: <i2c@fead0000> mem 0xfead0000-0xfead0fff irq 102 disabled compat rockchip,rk3588-i2c (no driver attached)
ofwbus0: <timer@feae0000> mem 0xfeae0000-0xfeae001f irq 103 compat rockchip,rk3588-timer (no driver attached)
ofwbus0: <watchdog@feaf0000> mem 0xfeaf0000-0xfeaf00ff irq 104 compat rockchip,rk3588-wdt (no driver attached)
ofwbus0: <spi@feb00000> mem 0xfeb00000-0xfeb00fff irq 105 disabled compat rockchip,rk3588-spi (no driver attached)
ofwbus0: <spi@feb10000> mem 0xfeb10000-0xfeb10fff irq 106 disabled compat rockchip,rk3588-spi (no driver attached)
ofwbus0: <spi@feb20000> mem 0xfeb20000-0xfeb20fff irq 107 compat rockchip,rk3588-spi (no driver attached)
ofwbus0: <spi@feb30000> mem 0xfeb30000-0xfeb30fff irq 108 disabled compat rockchip,rk3588-spi (no driver attached)
ofwbus0: <serial@feb40000> mem 0xfeb40000-0xfeb400ff irq 109 disabled compat rockchip,rk3588-uart (no driver attached)
ofwbus0: no default resources for rid = 0, type = 4
ofwbus0: no default resources for rid = 0, type = 4
uart0: <16750 or compatible> mem 0xfeb50000-0xfeb500ff irq 110 on ofwbus0
uart0: console (1500000,n,8,1)
uart0: fast interrupt
uart0: PPS capture mode: DCD
ofwbus0: <serial@feb60000> mem 0xfeb60000-0xfeb600ff irq 111 disabled compat rockchip,rk3588-uart (no driver attached)
uart1: could not determine frequency
ofwbus0: no default resources for rid = 0, type = 4
uart1: could not determine frequency
ofwbus0: no default resources for rid = 0, type = 4
uart1: <16750 or compatible> mem 0xfeb70000-0xfeb700ff irq 112 on ofwbus0
uart1: fast interrupt
uart1: PPS capture mode: DCD
ofwbus0: <serial@feb80000> mem 0xfeb80000-0xfeb800ff irq 113 disabled compat rockchip,rk3588-uart (no driver attached)
ofwbus0: <serial@feb90000> mem 0xfeb90000-0xfeb900ff irq 114 disabled compat rockchip,rk3588-uart (no driver attached)
ofwbus0: <serial@feba0000> mem 0xfeba0000-0xfeba00ff irq 115 disabled compat rockchip,rk3588-uart (no driver attached)
ofwbus0: <serial@febb0000> mem 0xfebb0000-0xfebb00ff irq 116 disabled compat rockchip,rk3588-uart (no driver attached)
ofwbus0: <serial@febc0000> mem 0xfebc0000-0xfebc00ff irq 117 disabled compat rockchip,rk3588-uart (no driver attached)
ofwbus0: <pwm@febd0000> mem 0xfebd0000-0xfebd000f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@febd0010> mem 0xfebd0010-0xfebd001f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@febd0020> mem 0xfebd0020-0xfebd002f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@febd0030> mem 0xfebd0030-0xfebd003f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@febe0000> mem 0xfebe0000-0xfebe000f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@febe0010> mem 0xfebe0010-0xfebe001f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@febe0020> mem 0xfebe0020-0xfebe002f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@febe0030> mem 0xfebe0030-0xfebe003f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@febf0000> mem 0xfebf0000-0xfebf000f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@febf0010> mem 0xfebf0010-0xfebf001f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@febf0020> mem 0xfebf0020-0xfebf002f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <pwm@febf0030> mem 0xfebf0030-0xfebf003f disabled compat rockchip,rk3588-pwm (no driver attached)
ofwbus0: <tsadc@fec00000> mem 0xfec00000-0xfec003ff irq 118 compat rockchip,rk3588-tsadc (no driver attached)
ofwbus0: <adc@fec10000> mem 0xfec10000-0xfec1ffff irq 119 compat rockchip,rk3588-saradc (no driver attached)
rk_i2c0: <RockChip I2C> mem 0xfec80000-0xfec80fff irq 120 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
rk_i2c0: <RockChip I2C> mem 0xfec90000-0xfec90fff irq 121 on ofwbus0
rk_i2c0: cannot get i2c clock
device_attach: rk_i2c0 attach returned 19
ofwbus0: <i2c@feca0000> mem 0xfeca0000-0xfeca0fff irq 122 disabled compat rockchip,rk3588-i2c (no driver attached)
ofwbus0: <spi@fecb0000> mem 0xfecb0000-0xfecb0fff irq 123 disabled compat rockchip,rk3588-spi (no driver attached)
ofwbus0: <efuse@fecc0000> mem 0xfecc0000-0xfecc03ff compat rockchip,rk3588-otp (no driver attached)
ofwbus0: <dma-controller@fed10000> mem 0xfed10000-0xfed13fff irq 124,125 compat arm,pl330 (no driver attached)
ofwbus0: <phy@fed60000> mem 0xfed60000-0xfed61fff compat rockchip,rk3588-hdptx-phy (no driver attached)
ofwbus0: <phy@fed80000> mem 0xfed80000-0xfed8ffff compat rockchip,rk3588-usbdp-phy (no driver attached)
ofwbus0: <phy@feda0000> mem 0xfeda0000-0xfedaffff disabled compat rockchip,rk3588-mipi-dcphy (no driver attached)
ofwbus0: <phy@fedb0000> mem 0xfedb0000-0xfedbffff disabled compat rockchip,rk3588-mipi-dcphy (no driver attached)
ofwbus0: <phy@fedc0000> mem 0xfedc0000-0xfedc7fff disabled compat rockchip,rk3588-csi-dphy (no driver attached)
ofwbus0: <phy@fedc8000> mem 0xfedc8000-0xfedcffff disabled compat rockchip,rk3588-csi-dphy (no driver attached)
ofwbus0: <phy@fee00000> mem 0xfee00000-0xfee000ff compat rockchip,rk3588-naneng-combphy (no driver attached)
ofwbus0: <phy@fee20000> mem 0xfee20000-0xfee200ff compat rockchip,rk3588-naneng-combphy (no driver attached)
ofwbus0: <pinctrl> compat rockchip,rk3588-pinctrl (no driver attached)
ofwbus0: <pinctrl> compat rockchip,rk3588-pinctrl (no driver attached)
pcm1: <simple-audio-card> on ofwbus0
snps_dwc3_fdt0: <Synopsys Designware DWC3> mem 0xfc400000-0xfc7fffff irq 126 on ofwbus0
snps_dwc3_fdt0: SNPS Version: DWC3 (5533 300a)
snps_dwc3_fdt0: 64 bytes context size, 32-bit DMA
snps_dwc3_fdt0: xECP capabilities <LEGACY,PROTO,PROTO>
usbus1: trying to attach
usbus1 on snps_dwc3_fdt0
snps_dwc3_fdt0: usbpf: Attached
syscon_generic_dev62: <syscon> mem 0xfd5b8000-0xfd5c7fff on ofwbus0
syscon_generic_dev62: Cannot allocate memory resource
device_attach: syscon_generic_dev62 attach returned 6
syscon_generic_dev62: <syscon> mem 0xfd5c0000-0xfd5c00ff on ofwbus0
syscon_generic_dev63: <syscon> mem 0xfd5cc000-0xfd5cffff on ofwbus0
simple_mfd5: <usb2phy@4000> mem 0-0xfd5d3fff,0-0x3fff irq 174 compat rockchip,rk3588-usb2phy (no driver attached)
syscon_generic_dev64: <syscon> mem 0xfd5e4000-0xfd5e40ff on ofwbus0
ofwbus0: <spdif-tx@fddb8000> mem 0xfddb8000-0xfddb8fff irq 127 disabled compat rockchip,rk3588-spdif (no driver attached)
ofwbus0: <i2s@fddc8000> mem 0xfddc8000-0xfddc8fff irq 128 disabled compat rockchip,rk3588-i2s-tdm (no driver attached)
ofwbus0: <spdif-tx@fdde8000> mem 0xfdde8000-0xfdde8fff irq 129 disabled compat rockchip,rk3588-spdif (no driver attached)
ofwbus0: <i2s@fddf4000> mem 0xfddf4000-0xfddf4fff irq 130 compat rockchip,rk3588-i2s-tdm (no driver attached)
ofwbus0: <i2s@fddf8000> mem 0xfddf8000-0xfddf8fff irq 131 disabled compat rockchip,rk3588-i2s-tdm (no driver attached)
ofwbus0: <i2s@fde00000> mem 0xfde00000-0xfde00fff irq 132 disabled compat rockchip,rk3588-i2s-tdm (no driver attached)
ofwbus0: <dp@fde60000> mem 0xfde60000-0xfde63fff irq 133 disabled compat rockchip,rk3588-dp (no driver attached)
ofwbus0: <hdmi@fdea0000> mem 0xfdea0000-0xfdebffff irq 134,135,136,137,138 compat rockchip,rk3588-dw-hdmi-qp (no driver attached)
ofwbus0: <edp@fded0000> mem 0xfded0000-0xfded0fff irq 139 disabled compat rockchip,rk3588-edp (no driver attached)
ofwbus0: <hdmi_receiver@fdee0000> mem 0xfdee0000-0xfdee5fff irq 140,141,142 compat rockchip,rk3588-hdmirx-ctrler (no driver attached)
pcib0: <RockChip RK3568 PCI-express controller> mem 0xa40000000-0xa403fffff,0xfe150000-0xfe15ffff,0xf0000000-0xf00fffff irq 143,144,145,146,147 on ofwbus0
pcib0: Can not get reset
device_attach: pcib0 attach returned 6
ofwbus0: <pcie-ep@fe150000> mem 0xa40000000-0xa400fffff,0xa40100000-0xa401fffff,0xfe150000-0xfe15ffff,0x900000000-0x93fffffff,0xa40300000-0xa403fffff irq 148,149,150,151,152,153,154,155,15
ofwbus0: <pcie@fe160000> mem 0xa40400000-0xa407fffff,0xfe160000-0xfe16ffff,0xf1000000-0xf10fffff irq 157,158,159,160,161 disabled type pci compat rockchip,rk3588-pcie (no driver attached)
pcib0: <RockChip RK3568 PCI-express controller> mem 0xa40800000-0xa40bfffff,0xfe170000-0xfe17ffff,0xf2000000-0xf20fffff irq 162,163,164,165,166 on ofwbus0
pcib0: Can not get reset
device_attach: pcib0 attach returned 6
ofwbus0: <ethernet@fe1b0000> mem 0xfe1b0000-0xfe1bffff irq 167,168 disabled compat rockchip,rk3588-gmac (no driver attached)
ofwbus0: <sata@fe220000> mem 0xfe220000-0xfe220fff irq 169 disabled compat rockchip,rk3588-dwc-ahci (no driver attached)
ofwbus0: <phy@fed70000> mem 0xfed70000-0xfed71fff compat rockchip,rk3588-hdptx-phy (no driver attached)
ofwbus0: <phy@fed90000> mem 0xfed90000-0xfed9ffff compat rockchip,rk3588-usbdp-phy (no driver attached)
ofwbus0: <phy@fee10000> mem 0xfee10000-0xfee100ff compat rockchip,rk3588-naneng-combphy (no driver attached)
ofwbus0: <phy@fee80000> mem 0xfee80000-0xfee9ffff compat rockchip,rk3588-pcie3-phy (no driver attached)
ofwbus0: <opp-table-cluster0> compat operating-points-v2 (no driver attached)
ofwbus0: <opp-table-cluster1> compat operating-points-v2 (no driver attached)
ofwbus0: <opp-table-cluster2> compat operating-points-v2 (no driver attached)
ofwbus0: <opp-table-gpu> compat operating-points-v2 (no driver attached)
ofwbus0: <adc-keys> compat adc-keys (no driver attached)
simpleamp0: <Simple Amplifier> on ofwbus0
simpleamp0: no VCC supplypcm2: <simple-audio-card> on ofwbus0
ofwbus0: <hdmi0-con> compat hdmi-connector (no driver attached)
ofwbus0: <hdmi1-con> compat hdmi-connector (no driver attached)
gpioled0: <GPIO LEDs> on ofwbus0
gpioled0: <led-red> failed to map pin
gpioled0: <led-green> failed to map pin
gpioled0: <led-blue> failed to map pin
ofwbus0: <pwm-fan> irq 170 compat pwm-fan (no driver attached)
ofwbus0: <dmc> compat rockchip,rk3588-dmc (no driver attached)
crypto: assign cryptosoft0 driver id 0, flags 0x6000000
armv8crypto0: <AES-CBC,AES-XTS,AES-GCM>
crypto: assign armv8crypto0 driver id 1, flags 0xe000000
Enabling LSE atomics in the kernel
Device configuration finished.
procfs registered
Timecounters tick every 1.000 msec
vlan: initialized, using hash tables with chaining
lo0: bpf attached
IPsec: Initialized Security Association Processing.
tcp_init: net.inet.tcp.tcbhashsize auto tuned to 131072
usbus1: 5.0Gbps Super Speed USB v3.0
ugen1.1: <Synopsys XHCI root HUB> at usbus1
uhub0 on usbus1
uhub0: <Synopsys XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus1
ugen0.1: <Generic EHCI root HUB> at usbus0
uhub1 on usbus0
uhub1: <Generic EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus0
pcm0: no driver attached to cpu node
pcm1: no driver attached to cpu node
pcm2: no driver attached to cpu node
CPU  0: ARM Cortex-A55 r2p0 affinity:  0  0
                   Cache Type = <64 byte CWG,64 byte ERG,64 byte D-cacheline,VIPT I-cache,64 byte I-cacheline>
 Instruction Set Attributes 0 = <DP,RDM,Atomic,CRC32,SHA2,SHA1,AES+PMULL>
 Instruction Set Attributes 1 = <RCPC-8.3,DCPoP>
 Instruction Set Attributes 2 = <>
         Processor Features 0 = <RAS,GIC,AdvSIMD+HP,FP+HP,EL3 32,EL2 32,EL1 32,EL0 32>
         Processor Features 1 = <MTE_frac,PSTATE.SSBS>
         Processor Features 2 = <>
      Memory Model Features 0 = <TGran4,TGran64,TGran16,SNSMem,BigEnd,16bit ASID,1TB PA>
      Memory Model Features 1 = <XNX,PAN+ATS1E1,LO,HPD+TTPBHA,VH,16bit VMID,HAF+DS>
      Memory Model Features 2 = <32bit CCIDX,48bit VA,IESB,UAO,CnP>
      Memory Model Features 3 = <>
      Memory Model Features 4 = <>
             Debug Features 0 = <DoubleLock,2 CTX BKPTs,4 Watchpoints,6 Breakpoints,PMUv3p1,Debugv8p2>
             Debug Features 1 = <>
         Auxiliary Features 0 = <>
         Auxiliary Features 1 = <>
AArch32 Instruction Set Attributes 5 = <RDM,CRC32,SHA2,SHA1,AES+VMULL,SEVL>
AArch32 Media and VFP Features 0 = <FPRound,FPSqrt,FPDivide,DP VFPv3+v4,SP VFPv3+v4,AdvSIMD>
AArch32 Media and VFP Features 1 = <SIMDFMAC,FPHP Arith,SIMDHP Arith,SIMDSP,SIMDInt,SIMDLS,FPDNaN,FPFtZ>
 L1 cache: 32KB (instruction)
 L2 cache: 128KB (unified)
 L3 cache: 4096KB (unified)
CPU  1: ARM Cortex-A55 r2p0 affinity:  1  0
 L1 cache: 32KB (instruction)
 L2 cache: 128KB (unified)
 L3 cache: 4096KB (unified)
CPU  2: ARM Cortex-A55 r2p0 affinity:  2  0
 L1 cache: 32KB (instruction)
 L2 cache: 128KB (unified)
 L3 cache: 4096KB (unified)
CPU  3: ARM Cortex-A55 r2p0 affinity:  3  0
 L1 cache: 32KB (instruction)
 L2 cache: 128KB (unified)
 L3 cache: 4096KB (unified)
CPU  4: ARM Cortex-A76 r4p0 affinity:  4  0
                   Cache Type = <IDC,64 byte CWG,64 byte ERG,64 byte D-cacheline,PIPT I-cache,64 byte I-cacheline>
         Processor Features 0 = <CSV3,CSV2,RAS,GIC,AdvSIMD+HP,FP+HP,EL3,EL2,EL1,EL0 32>
 L1 cache: 64KB (instruction)
 L2 cache: 512KB (unified)
 L3 cache: 4096KB (unified)
CPU  5: ARM Cortex-A76 r4p0 affinity:  5  0
 L1 cache: 64KB (instruction)
 L2 cache: 512KB (unified)
 L3 cache: 4096KB (unified)
CPU  6: ARM Cortex-A76 r4p0 affinity:  6  0
 L1 cache: 64KB (instruction)
 L2 cache: 512KB (unified)
 L3 cache: 4096KB (unified)
CPU  7: ARM Cortex-A76 r4p0 affinity:  7  0
 L1 cache: 64KB (instruction)
 L2 cache: 512KB (unified)
 L3 cache: 4096KB (unified)
gic0: using for IPIs
Release APs...gic0: Start searching for Re-Distributor
gic0: Start searching for Re-Distributor
gic0: Start searching for Re-Distributor
gic0: Start searching for Re-Distributor
gic0: CPU7 Re-Distributor has been found
gic0: CPU5 Re-Distributor has been found
gic0: Start searching for Re-Distributor
gic0: CPU5 Re-Distributor woke up
gic0: CPU7 Re-Distributor woke up
gic0: Start searching for Re-Distributor
gic0: CPU5 enabled CPU interface via system registers
gic0: CPU7 enabled CPU interface via system registers
gic0: CPU4 Re-Distributor has been found
gic0: CPU6 Re-Distributor has been found
gic0: CPU6 Re-Distributor woke up
gic0: CPU4 Re-Distributor woke up
gic0: using PENDBASE of 0x100280000 on cpu 7
gic0: CPU6 enabled CPU interface via system registers
gic0: Start searching for Re-Distributor
gic0: CPU4 enabled CPU interface via system registers
gic0: using PENDBASE of 0x1043f0000 on cpu 6
gic0: CPU3 Re-Distributor has been found
gic0: CPU1 Re-Distributor has been found
gic0: using PENDBASE of 0x1043d0000 on cpu 4
gic0: CPU3 Re-Distributor woke up
gic0: using PENDBASE of 0x1043e0000 on cpu 5
gic0: CPU1 Re-Distributor woke up
gic0: CPU2 Re-Distributor has been found
gic0: CPU3 enabled CPU interface via system registers
gic0: CPU1 enabled CPU interface via system registers
gic0: using PENDBASE of 0x1043c0000 on cpu 3
gic0: using PENDBASE of 0x100260000 on cpu 1
gic0: CPU2 Re-Distributor woke up
gic0: CPU2 enabled CPU interface via system registers
gic0: using PENDBASE of 0x100270000 on cpu 2
done
Enabling CnP
TCP_ratelimit: Is now initialized
WARNING: WITNESS option enabled, expect reduced performance.
Trying to mount root from ufs:/dev/md0 [rw]...
regulator: shutting down unused regulators
Warning: no time-of-day clock registered, system time will not be set accurately
failed to load CTF for kernel: 2
failed to load CTF for umodem.ko: 2
failed to load CTF for ucom.ko: 2
Dual Console: Serial Primary, Video Secondary
start_init: trying /sbin/init
Enter full pathname of shell or RETURN for /rescue/sh: uhub0: 2 ports with 2 removable, self powered
uhub1: 1 port with 1 removable, self powered

Cannot read termcap database;
using dumb terminal settings.
#

Reproducing

In case anyone else is interested to reproduce this on a similar board, I've included my imaging scripts below.

The first script turns an existing FreeBSD CURRENT image into one with my modifications applied to use the image as a root filesystem. This script is designed to run on FreeBSD, since most other systems can't read the UFS2 images. NB: You still need to remember to interrupt the boot and disable the OHCI device from the U-Boot console (until that's properly supported).

Image build script
#!/bin/sh

set -eux

# This script takes a FreeBSD SD card image
# and converts it to a new image that bootstraps via RAMDISKs loaded from EFI.
#
# Usage: patch-image-with-mini-ramdisk.sh [in_img]
#
# Takes a FreeBSD SD card image as input and outputs $PWD/out.img
#
# This was created out of necessity while trying to bring up an RK3588 board.
# The vendor and edge Armbian U-Boot are capable of SD card bootstrap,
# but once the FreeBSD kernel takes over, it doesn't (yet!) know how to talk to either
# (let alone NVMe), so we work around with a tiny rescue image as the initial root,
# along with a highly compressed full root FS image.
#
# Both are loaded into RAM, the system boots with the rescue as the root,
# and then we decompress and mount the "full" image after.
#
# Assumptions:
#
# - The script runs as root
# - The kernel includes `options MD`, `device md`, and `options FFS`
# - The bootstrap total RAM usage is < 1GiB (per https://cgit.freebsd.org/src/tree/sys/arm64/arm64/locore.S?id=355f02cddbf017706d3293f09ed6c2b5570936c1#n385)

# Copy the input image to the work image path (overwrites)
IN_IMG=$1
WORK_IMG="$PWD/out.img"
cp "$IN_IMG" "$WORK_IMG"

# Mount it
MD=$(mdconfig -a -t vnode -f "$WORK_IMG")
mkdir -p /mnt/baseimgroot
mount /dev/${MD}p2 /mnt/baseimgroot

# Repack the root filesystem as a UFS2 root with a 20% buffer.

makefs \
    -t ffs \
    -b 20% \
    -o version=2,label=mfsroot \
    /tmp/mfsroot.ufs \
    /mnt/baseimgroot

# Attach the new filesystem at /mnt/mfsroot
MFSMD=$(mdconfig -a -t vnode -f /tmp/mfsroot.ufs)
mkdir -p /mnt/mfsroot
mount /dev/${MFSMD} /mnt/mfsroot

# Replace fstab with a minimal one specialized for what we're doing.
tee /mnt/mfsroot/etc/fstab >/dev/null <<'EOF'
# RAM-root bring-up
/dev/md0        /       ufs     rw              0       0
tmpfs           /tmp    tmpfs   rw,mode=1777    0       0
EOF

# Append options to /etc/rc.conf
tee -a /mnt/mfsroot/etc/rc.conf >/dev/null <<'EOF'
growfs_enable="NO" 
EOF

# Unmount the mfsroot image
umount /mnt/mfsroot
mdconfig -d -u "${MFSMD#md}"

# Create a compressed mfsroot image from the "real" root image (will be loaded as a RAMDISK later)
rm -f /tmp/mfsroot.ufs.xz
xz -T0 -3 -k /tmp/mfsroot.ufs

SIZE=$(stat -f '%z' "/tmp/mfsroot.ufs.xz")
PADDED=$(( (SIZE + 4095) / 4096 * 4096 ))

truncate -s "$PADDED" "/tmp/mfsroot.ufs.xz"

cp /tmp/mfsroot.ufs.xz /mnt/baseimgroot/boot/fullroot.ufs.xz

# Append options to loader.conf
tee -a /mnt/baseimgroot/boot/loader.conf >/dev/null <<'EOF'

# Bring-up: preload root filesystem into RAM
mfsroot_load="YES"
mfsroot_type="mfs_root"
mfsroot_name="/boot/mfsroot"
vfs.root.mountfrom="ufs:/dev/md0"
vfs.root.mountfrom.options="rw"

# Full root filesystem (load deterministically after the minimal root)
mfsroot_after="load -t md_image /boot/fullroot.ufs.xz"
# fullroot_load="YES"
# fullroot_name="/boot/fullroot.ufs.xz"
# fullroot_type="md_image"

# Give us time to interrupt loader during bring-up
autoboot_delay="5"

# Single-user mode; verbose boot
boot_single="YES"
boot_verbose="YES"
EOF

# Create a rescue root for initial boot
rm -rf /tmp/rescueroot
mkdir -p /tmp/rescueroot

# Copy the rescue files and /etc from the base image to the rescue root (weird tar invocation is to preserve attributes and hard links)
tar -C /mnt/baseimgroot -cf - rescue etc | tar -C /tmp/rescueroot -xpf -

# Create a minimal directory structure
mkdir -p \
    /tmp/rescueroot/bin \
    /tmp/rescueroot/sbin \
    /tmp/rescueroot/dev \
    /tmp/rescueroot/tmp \
    /tmp/rescueroot/root \
    /tmp/rescueroot/mnt \
    /tmp/rescueroot/usr \
    /tmp/rescueroot/var/tmp \
    /tmp/rescueroot/var/run

# Point a few paths at the static rescue version
ln -s ../rescue/sh \
    /tmp/rescueroot/bin/sh
ln -s ../rescue/init \
    /tmp/rescueroot/sbin/init

# Set up the fstab for the rescue partition too
tee /tmp/rescueroot/etc/fstab >/dev/null <<'EOF'
/dev/md0        /       ufs     rw              0       0
tmpfs           /tmp    tmpfs   rw,mode=1777    0       0
EOF

# Add a script to load the full root FS
tee /tmp/rescueroot/rescue/loadroot.sh >/dev/null <<'EOF'
#!/rescue/sh

set -eux

# Single-user root is initially read-only...
mount -uw /

# Load the image
mdconfig -a -t swap -s 3584m -u 2
xzcat /dev/md1 > /dev/md2

mkdir -p /mnt/fullroot
mount /dev/md2 /mnt/fullroot
mount -t devfs devfs /mnt/fullroot/dev
mount -t tmpfs tmpfs /mnt/fullroot/tmp
chroot /mnt/fullroot /bin/sh
EOF

chmod a+x /tmp/rescueroot/rescue/loadroot.sh

# Create the mini rescue image
rm -f /tmp/mfsroot-rescue.ufs
makefs \
    -t ffs \
    -s 32m \
    -o version=2,label=mfsroot \
    /tmp/mfsroot-rescue.ufs \
    /tmp/rescueroot

# Copy it to the main image
cp /tmp/mfsroot-rescue.ufs /mnt/baseimgroot/boot/mfsroot

# Unmount the finalized image
sync
umount /mnt/baseimgroot
fsck_ufs -n /dev/${MD}p2
mdconfig -d -u "${MD#md}"

echo "Final image at ${WORK_IMG}"

This probably has some room for improvement (e.g. I think it's technically including a bunch of data which isn't ever read), but it works.

And here is the script I use to flash the SD card. This one assumes that you have downloaded an Armbian edge U-Boot image as described in the previous post, and have it in the current directory as u-boot-rockchip.bin. I am running this from my Mac, since my other FreeBSD boxes don't have SD card readers.

Image flashing script (macOS)
#!/bin/sh

set -eux

# This script flashes a FreeBSD SD card image.
# My main FreeBSD boxes don't have an SD card reader,
# so I am assuming macOS in this script.
#
# Usage: flash-sd-image-macos.sh [n]
#
# n is a drive number to be interpolated into device nodes
# (e.g. 4 = /dev/disk4).
#
# Assumptions:
#
# - The script runs as root

DEV_NUM=$1

# Precautionary unmount
diskutil unmountdisk /dev/disk$DEV_NUM

# Write the main image and sync
dd if=out.img of=/dev/rdisk$DEV_NUM bs=1048576
sync

# Write the bootloader; we need to explicitly unmount again since macOS sometimes auto-remounts it -_-
diskutil unmountdisk /dev/disk$DEV_NUM
dd if=u-boot-rockchip.bin  of=/dev/rdisk$DEV_NUM bs=32768 seek=1 conv=notrunc
sync

diskutil eject /dev/disk$DEV_NUM

Next Steps

Next, I need to configure my own development setup, initially probably cross-compiling from another box. Once I have a clear process to making source changes -> compiling -> flashing a new image, we can start tackling the hardware support! An experimental driver for the NICs already exists is the ports collection, and hopefully the common bits like USB aren't too much trouble. The GPU will probably be the most difficult though, since I'm not sure there have been any recent ARM Mali driver efforts on FreeBSD.

Posts from blogs I follow

Why fsyncing a File Isn't Safe Enough

Recently I learnt something interesting about writing files to disk. Something that connects my first ever low-level database PR with the reason you can’t pull a USB disk out of your laptop without ejecting it first. As you may know, when y...

via Kris Jenkins' Blog

Four levels of in-place initialization

IntroductionThe goal of in-place initialization is to enable the construction of types directly into a memory location without any additional moves or copies. When working with big types this can be more efficient and even prevent stack ove...

via Yosh Wuyts β€” Blog

Generated by openring-rs from my blogroll.