AI-64: BONE-SPI0_0 overlay loads, but no /dev/spidevX.Y

BONE-SPI0_0 overlay loads, but no /dev/spidevX.Y
AI-64 D11.8 5.10.168-ti-arm64-r113

ls /dev/*spi*
/bin/ls: cannot access '/dev/*spi*': No such file or directory

What am I missing? Thanks in advance.
I have done the usual stuff:

apt update
apt install --only-upgrade bb-j721e-evm-firmware generic-sys-mods bb-u-boot-beagleboneai64
apt upgrade
/opt/u-boot/bb-u-boot-beagleboneai64/install-emmc.sh
/opt/u-boot/bb-u-boot-beagleboneai64/install-microsd.sh
reboot

cat /boot/firmware/extlinux/extlinux.conf
label Linux eMMC
    kernel /Image
    append console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait net.ifnames=0
    fdtdir /
    fdtoverlays /overlays/BONE-SPI0_0.dtbo
    initrd /initrd.img
Note below:
"U-Boot SPL 2021.01-gea96725b" and
"UBOOT: Loaded Overlay:[BONE-SPI0_0.kernel]"

beagle-version
eeprom:[BBONEAI-64-B0-B0007801B00001641922BBBBBB0005]
model:[BeagleBoard.org_BeagleBone_AI-64]
dogtag:[BeagleBoard.org Debian Bullseye Xfce Image 2022-01-14]
bootloader:[/dev/mmcblk0boot0]:[tiboot3.bin]:[U-Boot SPL 2021.01-gea96725b (Dec 28 2023 - 17:34:28 +0000)]
bootloader:[/dev/mmcblk0]:[/boot/firmware/tiboot3.bin]:[U-Boot SPL 2021.01-gea96725b (Dec 28 2023 - 17:34:28 +0000)]
bootloader:[/dev/mmcblk0]:[/boot/firmware/tispl.bin]:[U-Boot SPL 2021.01-gea96725b (Dec 28 2023 - 17:34:28 +0000)]
bootloader:[/dev/mmcblk0]:[/boot/firmware/u-boot.img]:[U-Boot 2021.01-gea96725b (Dec 28 2023 - 17:34:28 +0000)]
UBOOT: Booted Device-Tree:[k3-j721e-beagleboneai64.dts]
UBOOT: Loaded Overlay:[BONE-SPI0_0.kernel]
kernel:[5.10.168-ti-arm64-r113]
nodejs:[v12.22.12]
pkg check: to individually upgrade run: [sudo apt install --only-upgrade <pkg>]
pkg:[bb-u-boot-beagleboneai64]:[2021.10.20230216.15-0~bullseye+20231228]
pkg:[bb-customizations]:[1.20231201.0-0~bullseye+20231201]
pkg:[bb-usb-gadgets]:[1.20230922.1-0~bullseye+20230925]
WARNING:pkg:[bb-wl18xx-firmware]:[NOT_INSTALLED]
cmdline:[console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait net.ifnames=0]
ti-sci:
optee:
dmesg | grep remote
[    7.574550] remoteproc remoteproc0: b034000.pru is available
[    7.607903] remoteproc remoteproc1: b004000.rtu is available
[    7.613826] remoteproc remoteproc2: b00a000.txpru is available
[    7.619841] remoteproc remoteproc3: b038000.pru is available
[    7.625659] remoteproc remoteproc4: b006000.rtu is available
[    7.631496] remoteproc remoteproc5: b00c000.txpru is available
[    7.637533] remoteproc remoteproc6: b134000.pru is available
[    7.643350] remoteproc remoteproc7: b104000.rtu is available
[    7.649199] remoteproc remoteproc8: b10a000.txpru is available
[    7.655203] remoteproc remoteproc9: b138000.pru is available
[    7.661021] remoteproc remoteproc10: b106000.rtu is available
[    7.666963] remoteproc remoteproc11: b10c000.txpru is available
[   10.447912] k3-dsp-rproc 4d80800000.dsp: configured DSP for remoteproc mode
[   10.523121] remoteproc remoteproc12: 4d80800000.dsp is available
[   10.529540] remoteproc remoteproc12: Direct firmware load for vision_apps_eaik/vx_app_rtos_linux_c6x_1.out failed with error -2
[   10.541055] remoteproc remoteproc12: powering up 4d80800000.dsp
[   10.547029] remoteproc remoteproc12: Direct firmware load for vision_apps_eaik/vx_app_rtos_linux_c6x_1.out failed with error -2
[   10.558527] remoteproc remoteproc12: request_firmware failed: -2
[   10.820399] k3-dsp-rproc 4d81800000.dsp: configured DSP for remoteproc mode
[   11.186953] remoteproc remoteproc13: 4d81800000.dsp is available
[   11.193342] remoteproc remoteproc13: Direct firmware load for vision_apps_eaik/vx_app_rtos_linux_c6x_2.out failed with error -2
[   11.204882] remoteproc remoteproc13: powering up 4d81800000.dsp
[   11.210919] remoteproc remoteproc13: Direct firmware load for vision_apps_eaik/vx_app_rtos_linux_c6x_2.out failed with error -2
[   11.222418] remoteproc remoteproc13: request_firmware failed: -2
[   11.347202] k3-dsp-rproc 64800000.dsp: configured DSP for remoteproc mode
[   11.357152] remoteproc remoteproc14: 64800000.dsp is available
[   11.368927] remoteproc remoteproc14: Direct firmware load for vision_apps_eaik/vx_app_rtos_linux_c7x_1.out failed with error -2
[   11.368936] remoteproc remoteproc14: powering up 64800000.dsp
[   11.368953] remoteproc remoteproc14: Direct firmware load for vision_apps_eaik/vx_app_rtos_linux_c7x_1.out failed with error -2
[   11.368956] remoteproc remoteproc14: request_firmware failed: -2
[   11.640492] remoteproc remoteproc15: 41000000.r5f is available
[   11.646403] remoteproc remoteproc15: attaching to 41000000.r5f
[   11.659192]  remoteproc15#vdev0buffer: assigned reserved memory node vision-apps-r5f-dma-memory@a0000000
[   11.668782]  remoteproc15#vdev0buffer: registered virtio0 (type 7)
[   11.674971] remoteproc remoteproc15: remote processor 41000000.r5f is now attached
[   11.940942] platform 5c00000.r5f: configured R5F for remoteproc mode
[   11.954525] remoteproc remoteproc16: 5c00000.r5f is available
[   11.954658] remoteproc remoteproc16: Direct firmware load for vision_apps_eaik/vx_app_rtos_linux_mcu2_0.dontload failed with error -2
[   11.954664] remoteproc remoteproc16: powering up 5c00000.r5f
[   11.954679] remoteproc remoteproc16: Direct firmware load for vision_apps_eaik/vx_app_rtos_linux_mcu2_0.dontload failed with error -2
[   11.954683] remoteproc remoteproc16: request_firmware failed: -2
[   11.968073] platform 5d00000.r5f: configured R5F for remoteproc mode
[   12.045237] remoteproc remoteproc17: 5d00000.r5f is available
[   12.047180] remoteproc remoteproc17: Direct firmware load for vision_apps_eaik/vx_app_rtos_linux_mcu2_1.dontload failed with error -2
[   12.047189] remoteproc remoteproc17: powering up 5d00000.r5f
[   12.047206] remoteproc remoteproc17: Direct firmware load for vision_apps_eaik/vx_app_rtos_linux_mcu2_1.dontload failed with error -2
[   12.047210] remoteproc remoteproc17: request_firmware failed: -2
[   12.098391] platform 5e00000.r5f: configured R5F for remoteproc mode
[   12.112808] remoteproc remoteproc18: 5e00000.r5f is available
[   12.248257] remoteproc remoteproc18: Direct firmware load for j7-main-r5f1_0-fw failed with error -2
[   12.257495] remoteproc remoteproc18: powering up 5e00000.r5f
[   12.257540] remoteproc remoteproc18: Direct firmware load for j7-main-r5f1_0-fw failed with error -2
[   12.257544] remoteproc remoteproc18: request_firmware failed: -2
[   12.295111] platform 5f00000.r5f: configured R5F for remoteproc mode
[   12.312900] remoteproc remoteproc19: 5f00000.r5f is available
[   12.313941] remoteproc remoteproc19: Direct firmware load for j7-main-r5f1_1-fw failed with error -2
[   12.313951] remoteproc remoteproc19: powering up 5f00000.r5f
[   12.313967] remoteproc remoteproc19: Direct firmware load for j7-main-r5f1_1-fw failed with error -2
[   12.313971] remoteproc remoteproc19: request_firmware failed: -2
dmesg | grep pru
[    7.574550] remoteproc remoteproc0: b034000.pru is available
[    7.613826] remoteproc remoteproc2: b00a000.txpru is available
[    7.619841] remoteproc remoteproc3: b038000.pru is available
[    7.631496] remoteproc remoteproc5: b00c000.txpru is available
[    7.637533] remoteproc remoteproc6: b134000.pru is available
[    7.649199] remoteproc remoteproc8: b10a000.txpru is available
[    7.655203] remoteproc remoteproc9: b138000.pru is available
[    7.666963] remoteproc remoteproc11: b10c000.txpru is available
dmesg | grep pinctrl-single
[    1.412449] pinctrl-single 4301c000.pinctrl: 94 pins, size 376
[    1.418734] pinctrl-single 11c000.pinctrl: 173 pins, size 692
dmesg | grep gpio-of-helper
lsusb
Bus 002 Device 002: ID 0451:8140 Texas Instruments, Inc. TUSB8041 4-Port Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 0451:8142 Texas Instruments, Inc. TUSB8041 4-Port Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
lspci
00:00.0 PCI bridge: Texas Instruments Device b00d
END

/dev/bone/spi/ ?

Really? When did /dev/bone happen? lol
It’s not in there though. Only /dev/bone/uart/0 → …/…/ttyS2

I think this happened a while back, i.e. not too sure on the date.

Somewhere between bullseye with kernel 5.10.x and overlays 5.10.x-ti-unified.

There were some other overlay builds without the -unified versioning that may have not had the /dev/bone/* files.

Now, solely discussing BBAI-64, I cannot go into detail because it is a new board and I am sure people are porting new overlays at times.

Anyway, I will check my kernel and image and return service.

I am not even sure I have /dev/bone/spi/ on my BBAI-64 as of now. I need to install it in /boot/firmware/extlinux/extlinux.conf and reboot first.

Seth

P.S. I hope this helps. The image I think that is installed is Bullseye with kernel 5.10.x and 10-07-2023 from this forums.

https://forum.beagleboard.org/tag/latest-images

That link has the images for the BBAI-64 that I have been using.

Seth

I know /dev/spidevX.Y on the AI-64 with D11.8 works. Because my standard way of dodging the shifting-sands of loadable overlays is to directly edit the base .dts files to get what I want.

Terrible practice. But it works. And I’ve got hundreds of AI-64s in the field that have been running for over a year this way. But every time there’s a new Debian release I try to “conform” and move to loadable overlays. And every time it turns out to be a nightmare…

/dev/bone/pwm:
total 0

/dev/bone/uart:
total 0
lrwxrwxrwx 1 root root 11 Nov 10 00:25 0 -> ../../ttyS2

I tried to use the /dev/bone/spi/* overlays and notta. So, my current image is this:

uname -a: Linux BeagleBone-AI64 5.10.168-ti-arm64-r113 #1bookworm SMP Sun Dec 17 00:12:52 UTC 2023 aarch64 GNU/Linux

and…

cat /etc/dogtag: BeagleBoard.org Debian Bookworm Minimal Image 2023-10-07

So, I think for now, my overlay is not in working order for some reason.

Seth

P.S. I have not found out which overlays build while which overlays available fail. I am sorry. I can test, i.e. as I would like to test this board more.

@jks ,

Maybe /dev/class/?

Seth

P.S. I do not know how to use it for now but there are two major /spi/ files in that file.

once

modprobe spidev

Persistent

sudo sh -c 'echo spidev >> /etc/modules'

module should be loaded.

1 Like

Well, okay. Thank you. But I hardly expected that.

My current hack is to edit k3-j721e-beaglebone64-bone-buses.dtsi
from

bone_spi_0: &main_spi6 {
};

to

bone_spi_0: &main_spi6 {
        pinctrl-names = "default";
        pinctrl-0 = <
            &P9_17_spi_pin /* spi6_cs0 */
            &P9_22_spi_pin /* spi6_sclk */
            &P9_21_spi_pin /* spi6_miso */
            &P9_18_spi_pin /* spi6_d1 */
        >;
        ti,spi-num-cs = <2>;
        ti,pindir-d0-out-d1-in;

        spidev0: spidev@0{
            symlink = "bone/spi/0.0";
            compatible = "spidev";
            reg = <0>;	/* CE0 */
            #address-cells = <1>;
            #size-cells = <0>;
            spi-max-frequency = <125000000>;
        };

        spidev1: spidev@1{
            symlink = "bone/spi/0.1";
            compatible = "spidev";
            reg = <1>;	/* CE1 */
            #address-cells = <1>;
            #size-cells = <0>;
            spi-max-frequency = <125000000>;
        };
};

And I don’t have to do any driver loading. I probably just don’t understand the finer points of device trees. I’m probably not alone on that…

Thanks again.