I'm a little bit in over my head.
This soundcard relies on the snd_ctxfi module to run.
And I picked up this to have a pcie slot on the Raspberry Pi 5: https://wiki.52pi.com/index.php?title=EP-0219
Of course I then combined it with a ASM1083 Chip based riser card: https://www.aliexpress.com/item/1005005434818846.html
The card's detected, amazingly.
stanto@sound:~ $ lspci
0000:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21)
0000:01:00.0 PCI bridge: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge (rev 04)
0000:02:01.0 Multimedia audio controller: Creative Labs EMU20k1 [Sound Blaster X-Fi Series]
0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21)
0001:01:00.0 Ethernet controller: Raspberry Pi Ltd RP1 PCIe 2.0 South Bridge
Sadly, the module didn't exist. No fear, it appears to be around for aarch64, I'll just compile it?
sudo apt install build-essential raspberrypi-kernel-headers git bc bison flex libssl-dev make gcc libncurses-dev pkg-config
git clone --depth=1 https://github.com/raspberrypi/linux
cd linux
KERNEL=kernel8
make -j$(nproc) bcm2712_defconfig
make -j$(nproc) menuconfig
make -j$(nproc) && make -j$(nproc) modules_install
sudo make -j$(nproc) install
And when we 'make menuconfig' we navigate to Device Drivers > Sound card support > Advanced Linux Sound Architecture > PCI sound devices, and ensure Creative Sound Blaster X-Fi (snd_ctxfi) is enabled as a module.
Surely all we do now is load the module. Right?
stanto@sound:~/linux $ sudo depmod -a
stanto@sound:~/linux $ sudo modprobe snd_ctxfi
Segmentation fault
Crap.
stanto@sound:~/linux $ dmesg | tail -50
[ 3375.071721] user pgtable: 16k pages, 47-bit VAs, pgdp=000000000b4a8000
[ 3375.078272] [0000000000000000] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000
[ 3375.087007] Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP
[ 3375.093295] Modules linked in: snd_ctxfi(+) rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device algif_hash algif_skcipher af_alg bnep binfmt_misc vc4 aes_ce_blk aes_ce_cipher snd_soc_hdmi_codec ghash_ce gf128mul spidev brcmfmac_wcc hci_uart btbcm sha2_ce sha256_arm64 bluetooth sha1_ce drm_display_helper ecdh_generic cec ecc libaes brcmfmac drm_dma_helper brcmutil drm_kms_helper raspberrypi_hwmon rpivid_hevc(C) pisp_be snd_soc_core cfg80211 v4l2_mem2mem videobuf2_dma_contig videobuf2_memops snd_compress sg spi_bcm2835 i2c_brcmstb videobuf2_v4l2 snd_pcm_dmaengine snd_pcm rfkill gpio_keys videodev v3d gpu_sched rp1_pio videobuf2_common snd_timer drm_shmem_helper pwm_fan snd mc rp1 nvmem_rmem raspberrypi_gpiomem rp1_mailbox rp1_adc uio_pdrv_genirq uio i2c_dev ledtrig_pattern fuse drm drm_panel_orientation_quirks backlight dm_mod ip_tables x_tables ipv6
[ 3375.169196] CPU: 3 PID: 112072 Comm: modprobe Tainted: G C 6.6.66-v8-16k+ #1830
[ 3375.177927] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
[ 3375.183777] pstate: a0400009 (NzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 3375.190763] pc : ct_vm_destroy+0x48/0xf8 [snd_ctxfi]
[ 3375.195753] lr : ct_vm_create+0x134/0x148 [snd_ctxfi]
[ 3375.200825] sp : ffffc00089503720
[ 3375.204144] x29: ffffc00089503720 x28: 0000000000000000 x27: 000000000000bb80
[ 3375.211305] x26: ffffd000850e2bc8 x25: 000000000000ffff x24: ffffd000850e2bc8
[ 3375.218466] x23: ffff80000700d838 x22: dead000000000100 x21: dead000000000122
[ 3375.225627] x20: ffff80000700caf8 x19: ffff80000700ca00 x18: ffffffffffffffff
[ 3375.232788] x17: 6620736920296666 x16: ffffd00084137b30 x15: 206e776f6e6b6e55
[ 3375.239949] x14: 206c65646f6d2031 x13: 646e756f66207369 x12: 2029666666663a66
[ 3375.247110] x11: 66666628206e776f x10: ffffd00085716a30 x9 : ffffd0002ea5387c
[ 3375.254270] x8 : ffffff8000064d88 x7 : ffffff80000b7e88 x6 : 0000000000000000
[ 3375.261431] x5 : ffff80003f7e80c0 x4 : 0000000000000000 x3 : 0000000000000000
[ 3375.268592] x2 : 0000000000000000 x1 : 0000000000000000 x0 : fffffffffffffff8
[ 3375.275753] Call trace:
[ 3375.278200] ct_vm_destroy+0x48/0xf8 [snd_ctxfi]
[ 3375.282835] ct_vm_create+0x134/0x148 [snd_ctxfi]
[ 3375.287558] ct_atc_create+0x26c/0x890 [snd_ctxfi]
[ 3375.292368] ct_card_probe+0xf0/0x290 [snd_ctxfi]
[ 3375.297090] local_pci_probe+0x48/0xd0
[ 3375.300849] pci_device_probe+0xac/0x1c8
[ 3375.304780] really_probe+0x150/0x2c0
[ 3375.308450] __driver_probe_device+0x80/0x140
[ 3375.312817] driver_probe_device+0x44/0x170
[ 3375.317010] __driver_attach+0x9c/0x1b0
[ 3375.320853] bus_for_each_dev+0x7c/0xe8
[ 3375.324699] driver_attach+0x2c/0x40
[ 3375.328279] bus_add_driver+0xec/0x218
[ 3375.332035] driver_register+0x68/0x138
[ 3375.335878] __pci_register_driver+0x4c/0x60
[ 3375.340158] ct_driver_init+0x30/0x3ff8 [snd_ctxfi]
[ 3375.345055] do_one_initcall+0x4c/0x298
[ 3375.348900] do_init_module+0x60/0x218
[ 3375.352658] load_module+0x1c08/0x1d38
[ 3375.356415] __do_sys_init_module+0x1a8/0x1e8
[ 3375.360783] __arm64_sys_init_module+0x24/0x38
[ 3375.365238] invoke_syscall+0x50/0x128
[ 3375.368996] el0_svc_common.constprop.0+0x48/0xf8
[ 3375.373713] do_el0_svc+0x28/0x40
[ 3375.377033] el0_svc+0x38/0xd8
[ 3375.380093] el0t_64_sync_handler+0x13c/0x158
[ 3375.384460] el0t_64_sync+0x190/0x198
[ 3375.388130] Code: f2fbd5b6 f2fbd5b5 f9407e61 d1002020 (a9400823)
[ 3375.394242] ---[ end trace 0000000000000000 ]---
Oops.
stanto@sound:~/linux $ lspci -vvv -s 02:01.0
0000:02:01.0 Multimedia audio controller: Creative Labs EMU20k1 [Sound Blaster X-Fi Series]
!!! Unknown header type 7f
Interrupt: pin ? routed to IRQ 188
Region 1: Memory at 1b84000000 (64-bit, non-prefetchable) [size=2M]
Region 3: Memory at 1b80000000 (32-bit, non-prefetchable) [size=64M]
Kernel driver in use: snd_ctxfi
Kernel modules: snd_ctxfi
Well, it was never intended for arm. Maybe I'll see if I can plugin a VGA adapter and use a Voodoo 1? Though it would be nice and fun to get this working, it's a nice soundcard.