"OSError: [Errno 16] Device or resource busy" for SPI device

We have procured some units for integration.

No, I tried sudo dd if=/dev/zero of=/dev/fb1 and then sudo dd if=/dev/urandom of=/dev/fb1, everytime I made any change. oled never shows anything.

We have completed the integration of the SPI version of the ssd1306 to libretech-wiring-tool and the I2C one as well.

Which precise product are you using?

Updated the repo and tried the latest dts files. It is still not working by using dd command.



I tried it with my raspberry pi many times with no sweat.

Anyway I will turn to oled ili9341 as I found the resolution of ssd1306 is too low. I need to show lots of chinese characters on the oled screen and the smallest ttf I can find is at 8 pixel. The ssd1306 cannot suffice as it cannot present the entire clean content.

I will be glad to assist any test for ssd1306 if needed.

sudo dd if=/dev/urandom of=/dev/fbX bs=2

If the block size is larger than the buswidth, the transfer will fail and nothing will change on the display.

Can you provide a clearer picture of your GPIO wiring?

Both the ILI9341 and ILI9486 are already tuned for this board. If you need higher resolution, you can also consider the ST7735R and ST7789V. ST7789V does not support the DRM interface yet though, only FBTFT.

Thank you for taking time.

I tried it to both ssd1309 and ili9341, still not working.

For GPIO pictures, 7 lines with 7 different color. The oled in the picture is ili9341.


Relevant cmdlines are,

sudo ldto enable spicc spicc-ili9341
sudo ldto merge spicc spicc-ili9341
sudo reboot

Entire dmesg log after rebooting,

...
[    2.050238] i2c_dev: i2c /dev entries driver
[    2.054158] sdhci: Secure Digital Host Controller Interface driver
[    2.054193] sdhci: Copyright(c) Pierre Ossman
[    2.054611] Synopsys Designware Multimedia Card Interface Driver
[    2.055265] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.056424] ledtrig-cpu: registered to indicate activity on CPUs
[    2.057584] meson-sm: secure-monitor enabled
[    2.058217] hid: raw HID events driver (C) Jiri Kosina
[    2.058347] usbcore: registered new interface driver usbhid
[    2.058362] usbhid: USB HID core driver
[    2.058749] platform-mhu c883c404.mailbox: Platform MHU Mailbox registered
[    2.060161] meson-saradc c1108680.adc: Looking up vref-supply from device tree
[    2.134314] NET: Registered PF_PACKET protocol family
[    2.134717] 9pnet: Installing 9P2000 support
[    2.134793] Key type dns_resolver registered
[    2.135268] registered taskstats version 1
[    2.135315] Loading compiled-in X.509 certificates
[    2.137764] zswap: loaded using pool zstd/z3fold
[    2.138317] Key type .fscrypt registered
[    2.138345] Key type fscrypt-provisioning registered
[    2.139374] Btrfs loaded, crc32c=crc32c-generic, zoned=yes, fsverity=yes
[    2.155733] phy phy-d0078020.phy.0: Looking up phy-supply from device tree
[    2.155756] phy phy-d0078020.phy.0: Looking up phy-supply property in node /soc/apb@d0000000/phy@78020 failed
[    2.159586] c81004c0.serial: ttyAML0 at MMIO 0xc81004c0 (irq = 22, base_baud = 1500000) is a meson_uart
[    3.520439] printk: console [ttyAML0] enabled
[    3.531973] meson-gx-mmc d0074000.mmc: Looking up vmmc-supply from device tree
[    3.532205] meson-gx-mmc d0074000.mmc: Looking up vqmmc-supply from device tree
[    3.532451] meson-gx-mmc d0074000.mmc: allocated mmc-pwrseq
[    3.533289] scpi_protocol scpi: SCP Protocol legacy pre-1.0 firmware
[    3.550509] HDMI_5V: 5000 mV, enabled
[    3.550638] reg-fixed-voltage regulator-hdmi-5v: HDMI_5V supplying 5000000uV
[    3.550923] VCC_CARD: 1800 <--> 3300 mV at 3300 mV, enabled
[    3.551341] phy phy-d0078000.phy.1: Looking up phy-supply from device tree
[    3.551366] HDMI_5V: could not add device link phy-d0078000.phy.1: -ENOENT
[    3.552946] dwc3-meson-g12a d0078080.usb: Looking up vbus-supply from device tree
[    3.552972] dwc3-meson-g12a d0078080.usb: Looking up vbus-supply property in node /soc/usb@d0078080 failed
[    3.553157] dwc3-meson-g12a d0078080.usb: USB2 ports: 2
[    3.553198] dwc3-meson-g12a d0078080.usb: USB3 ports: 0
[    3.637670] mmc0: new HS200 MMC card at address 0001
[    3.638519] mmcblk0: mmc0:0001 BJTD4R 29.1 GiB 
[    3.643380]  mmcblk0: p1 p2
[    3.645170] mmcblk0boot0: mmc0:0001 BJTD4R 4.00 MiB 
[    3.650987] mmcblk0boot1: mmc0:0001 BJTD4R 4.00 MiB 
[    3.655619] mmcblk0rpmb: mmc0:0001 BJTD4R 4.00 MiB, chardev (243:0)
[    4.097954] dwc2 c9100000.usb: Looking up vusb_d-supply from device tree
[    4.097977] dwc2 c9100000.usb: Looking up vusb_d-supply property in node /soc/usb@d0078080/usb@c9100000 failed
[    4.098002] dwc2 c9100000.usb: supply vusb_d not found, using dummy regulator
[    4.099663] dwc2 c9100000.usb: Looking up vusb_a-supply from device tree
[    4.099672] dwc2 c9100000.usb: Looking up vusb_a-supply property in node /soc/usb@d0078080/usb@c9100000 failed
[    4.099689] dwc2 c9100000.usb: supply vusb_a not found, using dummy regulator
[    4.106729] dwc2 c9100000.usb: Looking up vbus-supply from device tree
[    4.106737] dwc2 c9100000.usb: Looking up vbus-supply property in node /soc/usb@d0078080/usb@c9100000 failed
[    4.106877] dwc2 c9100000.usb: EPs: 7, dedicated fifos, 712 entries in SPRAM
[    4.115228] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
[    4.119038] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
[    4.126708] xhci-hcd xhci-hcd.0.auto: USB3 root hub has no ports
[    4.132546] xhci-hcd xhci-hcd.0.auto: hcc params 0x0228f664 hci version 0x100 quirks 0x0000000002010010
[    4.141895] xhci-hcd xhci-hcd.0.auto: irq 26, io mem 0xc9000000
[    4.147971] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
[    4.155919] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    4.163072] usb usb1: Product: xHCI Host Controller
[    4.167902] usb usb1: Manufacturer: Linux 6.1.43-08467-g9b183cb29b85 xhci-hcd
[    4.174972] usb usb1: SerialNumber: xhci-hcd.0.auto
[    4.180229] hub 1-0:1.0: USB hub found
[    4.183547] hub 1-0:1.0: 2 ports detected
[    4.189877] meson-gx-mmc d0072000.mmc: Looking up vmmc-supply from device tree
[    4.190008] meson-gx-mmc d0072000.mmc: Looking up vqmmc-supply from device tree
[    4.190180] meson-gx-mmc d0072000.mmc: Got CD GPIO
[    4.190990] of_cfs_init
[    4.194710] of_cfs_init: OK
[    4.197774] ALSA device list:
[    4.200352]   No soundcards found.
[    4.219581] gpio irq setup: hwirq: 0x3A irqfirst: 0x34 irqlast: 0x3A pin[48]
[    4.221238] genirq: Setting trigger mode 3 for irq 28 failed (meson_gpio_irq_set_type+0x0/0x70)
[    4.236180] Freeing unused kernel memory: 7488K
[    4.278481] Checked W+X mappings: passed, no W+X pages found
[    4.278564] Run /init as init process
[    4.282205]   with arguments:
[    4.282210]     /init
[    4.282214]     noquiet
[    4.282218]   with environment:
[    4.282222]     HOME=/
[    4.282226]     TERM=linux
[    4.282230]     BOOT_IMAGE=/boot/vmlinuz-6.1.43-08467-g9b183cb29b85
[    4.450926] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[    4.604327] usb 1-1: New USB device found, idVendor=05e3, idProduct=0610, bcdDevice=32.98
[    4.606909] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[    4.613991] usb 1-1: Product: USB2.0 Hub
[    4.660361] hub 1-1:1.0: USB hub found
[    4.660738] hub 1-1:1.0: 4 ports detected
[    4.671404] [drm] Initialized simpledrm 1.0.0 20200625 for 7fe5b000.framebuffer on minor 0
[    4.677919] Console: switching to colour frame buffer device 90x36
[    4.687519] simple-framebuffer 7fe5b000.framebuffer: [drm] fb0: simpledrmdrmfb frame buffer device
[    4.723306] simple-framebuffer simple-framebuffer.0: [drm] *ERROR* could not acquire memory range [mem 0x7fe5b000-0x7ffeffff flags 0x200]: error -16
[    4.731947] simple-framebuffer: probe of simple-framebuffer.0 failed with error -16
[    4.772011] panel-ilitek-ili9341 spi0.0: Looking up vcc-supply from device tree
[    4.772032] panel-ilitek-ili9341 spi0.0: Looking up vcc-supply property in node /soc/bus@c1100000/spi@8d80/display@0 failed
[    4.772064] panel-ilitek-ili9341 spi0.0: get optional vcc failed
[    4.782190] [drm] Initialized ili9341 1.0.0 20210716 for spi0.0 on minor 1
[    4.789611] panel-ilitek-ili9341 spi0.0: [drm] fb1: ili9341drmfb frame buffer device
[    4.802634] meson-drm d0100000.vpu: Queued 2 outputs on vpu
[    4.814966] meson8b-dwmac c9410000.ethernet: IRQ eth_wake_irq not found
[    4.817775] lima d00c0000.gpu: Looking up mali-supply from device tree
[    4.817797] lima d00c0000.gpu: Looking up mali-supply property in node /soc/apb@d0000000/gpu@c0000 failed
[    4.821546] lima d00c0000.gpu: gp - mali450 version major 0 minor 0
[    4.823818] meson8b-dwmac c9410000.ethernet: IRQ eth_lpi not found
[    4.828716] lima d00c0000.gpu: pp0 - mali450 version major 0 minor 0
[    4.838741] lima d00c0000.gpu: pp1 - mali450 version major 0 minor 0
[    4.845000] Console: switching to colour dummy device 80x25
[    4.845484] meson8b-dwmac c9410000.ethernet: PTP uses main clock
[    4.845789] lima d00c0000.gpu: pp2 - mali450 version major 0 minor 0
[    4.845859] lima d00c0000.gpu: l2 cache 8K, 4-way, 64byte cache line, 128bit external bus
[    4.845872] lima d00c0000.gpu: l2 cache 64K, 4-way, 64byte cache line, 128bit external bus
[    4.851236] lima d00c0000.gpu: bus rate = 166666667
[    4.881006] Trying to free nonexistent resource <000000007fe5b000-000000007ffeffff>
[    4.883558] meson8b-dwmac c9410000.ethernet: User ID: 0x11, Synopsys ID: 0x37
[    4.888249] meson-dw-hdmi c883a000.hdmi-tx: Looking up hdmi-supply from device tree
[    4.888535] lima d00c0000.gpu: mod rate = 24000000
[    4.888677] lima d00c0000.gpu: Looking up mali-supply from device tree
[    4.888688] lima d00c0000.gpu: Looking up mali-supply property in node /soc/apb@d0000000/gpu@c0000 failed
[    4.888732] lima d00c0000.gpu: error -ENODEV: _opp_set_regulators: no regulator (mali) found
[    4.895734] meson8b-dwmac c9410000.ethernet: 	DWMAC1000
[    4.899774] [drm] Initialized lima 1.1.0 20191231 for d00c0000.gpu on minor 2
[    4.908824] meson8b-dwmac c9410000.ethernet: DMA HW capability register supported
[    4.929109] meson8b-dwmac c9410000.ethernet: RX Checksum Offload Engine supported
[    4.935773] meson8b-dwmac c9410000.ethernet: COE Type 2
[    4.939993] meson8b-dwmac c9410000.ethernet: TX Checksum insertion supported
[    4.947198] meson8b-dwmac c9410000.ethernet: Wake-Up On Lan supported
[    4.959033] meson-dw-hdmi c883a000.hdmi-tx: Detected HDMI TX controller v2.01a with HDCP (meson_dw_hdmi_phy)
[    4.960838] meson8b-dwmac c9410000.ethernet: Normal descriptors
[    4.971118] meson8b-dwmac c9410000.ethernet: Ring mode enabled
[    4.974923] meson8b-dwmac c9410000.ethernet: Enable RX Mitigation via HW Watchdog Timer
[    4.988501] meson-dw-hdmi c883a000.hdmi-tx: registered DesignWare HDMI I2C bus driver
[    4.992696] meson-drm d0100000.vpu: bound c883a000.hdmi-tx (ops meson_dw_hdmi_ops [meson_dw_hdmi])
[    5.000518] [drm] Initialized meson 1.0.0 20161109 for d0100000.vpu on minor 3
[    5.022465] Console: switching to colour frame buffer device 90x36
[    5.045691] meson-drm d0100000.vpu: [drm] fb0: mesondrmfb frame buffer device
[    5.154428] BTRFS: device label rootfs devid 1 transid 27626 /dev/mmcblk0p2 scanned by btrfs (237)
[    5.245195] BTRFS info (device mmcblk0p2): using crc32c (crc32c-generic) checksum algorithm
[    5.253631] BTRFS info (device mmcblk0p2): disk space caching is enabled
[    5.268678] BTRFS info (device mmcblk0p2): enabling ssd optimizations
[    5.671253] systemd[1]: System time before build time, advancing clock.
[    5.738168] NET: Registered PF_INET6 protocol family
[    5.766089] Segment Routing with IPv6
[    5.768503] RPL Segment Routing with IPv6
[    5.770438] In-situ OAM (IOAM) with IPv6
[    5.879122] systemd[1]: systemd 247.3-7+deb11u4 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +ZSTD +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=unified)
[    5.914442] systemd[1]: Detected architecture arm64.
[    5.923904] systemd[1]: Set hostname to <raspberrypi>.
[    6.353193] systemd[1]: /lib/systemd/system/plymouth-start.service:16: Unit configured to use KillMode=none. This is unsafe, as it disables systemd's process lifecycle management for the service. Please update your service to use a safer KillMode=, such as 'mixed' or 'control-group'. Support for KillMode=none is deprecated and will eventually be removed.
[    6.466521] systemd[1]: Queued start job for default target Graphical Interface.
[    6.544384] systemd[1]: Created slice system-getty.slice.
[    6.548737] systemd[1]: Created slice system-modprobe.slice.
[    6.560281] systemd[1]: Created slice system-serial\x2dgetty.slice.
[    6.573086] systemd[1]: Created slice system-systemd\x2dfsck.slice.
[    6.584004] systemd[1]: Created slice User and Session Slice.
[    6.593927] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    6.607657] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[    6.624236] systemd[1]: Reached target Slices.
[    6.630823] systemd[1]: Reached target Swap.
[    6.639109] systemd[1]: Listening on Syslog Socket.
[    6.644980] systemd[1]: Listening on fsck to fsckd communication Socket.
[    6.653646] systemd[1]: Listening on initctl Compatibility Named Pipe.
[    6.662660] systemd[1]: Listening on Journal Audit Socket.
[    6.669987] systemd[1]: Listening on Journal Socket (/dev/log).
[    6.678128] systemd[1]: Listening on Journal Socket.
[    6.686100] systemd[1]: Listening on udev Control Socket.
[    6.692575] systemd[1]: Listening on udev Kernel Socket.
[    6.735346] systemd[1]: Mounting Huge Pages File System...
[    6.748116] systemd[1]: Mounting POSIX Message Queue File System...
[    6.759859] systemd[1]: Mounting RPC Pipe File System...
[    6.770588] systemd[1]: Mounting Kernel Debug File System...
[    6.781849] systemd[1]: Mounting Kernel Trace File System...
[    6.788571] systemd[1]: Condition check resulted in Kernel Module supporting RPCSEC_GSS being skipped.
[    6.794499] systemd[1]: Starting Restore / save the current clock...
[    6.815241] systemd[1]: Starting Set the console keyboard layout...
[    6.826306] systemd[1]: Starting Create list of static device nodes for the current kernel...
[    6.841132] systemd[1]: Starting Load Kernel Module configfs...
[    6.852564] systemd[1]: Starting Load Kernel Module drm...
[    6.862894] systemd[1]: Starting Load Kernel Module fuse...
[    6.870152] systemd[1]: Condition check resulted in Set Up Additional Binary Formats being skipped.
[    6.870339] systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
[    6.891578] fuse: init (API version 7.37)
[    6.895291] systemd[1]: Starting Journal Service...
[    6.911909] systemd[1]: Starting Load Kernel Modules...
[    6.926697] systemd[1]: Starting Remount Root and Kernel File Systems...
[    6.940597] systemd[1]: Starting Coldplug All udev Devices...
[    6.955402] systemd[1]: Mounted Huge Pages File System.
[    6.966986] systemd[1]: Mounted POSIX Message Queue File System.
[    6.973837] systemd[1]: Mounted RPC Pipe File System.
[    6.983809] systemd[1]: Mounted Kernel Debug File System.
[    6.994761] lp: driver loaded but no devices found
[    7.000658] systemd[1]: Mounted Kernel Trace File System.
[    7.007783] systemd[1]: Finished Restore / save the current clock.
[    7.016814] systemd[1]: Finished Create list of static device nodes for the current kernel.
[    7.036930] ppdev: user-space parallel port driver
[    7.060069] systemd[1]: modprobe@configfs.service: Succeeded.
[    7.063377] systemd[1]: Finished Load Kernel Module configfs.
[    7.069666] systemd[1]: modprobe@drm.service: Succeeded.
[    7.071154] systemd[1]: Finished Load Kernel Module drm.
[    7.084426] systemd[1]: modprobe@fuse.service: Succeeded.
[    7.085663] systemd[1]: Finished Load Kernel Module fuse.
[    7.100428] systemd[1]: Finished Load Kernel Modules.
[    7.109535] systemd[1]: Finished Remount Root and Kernel File Systems.
[    7.163526] systemd[1]: Mounting FUSE Control File System...
[    7.169991] systemd[1]: Mounting Kernel Configuration File System...
[    7.178507] systemd[1]: Condition check resulted in Rebuild Hardware Database being skipped.
[    7.188467] systemd[1]: Condition check resulted in Platform Persistent Storage Archival being skipped.
[    7.204302] systemd[1]: Starting Load/Save Random Seed...
[    7.211347] systemd[1]: Starting Apply Kernel Variables...
[    7.221603] systemd[1]: Starting Create System Users...
[    7.233787] systemd[1]: Started Journal Service.
[    7.314120] systemd-journald[330]: Received client request to flush runtime journal.
[    7.321586] systemd-journald[330]: File /var/log/journal/2a2c051812214fb9a450cf5b7fd24b55/system.journal corrupted or uncleanly shut down, renaming and replacing.
[    8.452267] t9015-codec c8832000.audio-controller: Looking up AVDD-supply from device tree
[    8.476988] mc: Linux media interface: v0.10
[    8.482316] Registered IR keymap rc-empty
[    8.508610] Registered IR keymap rc-cec
[    8.508799] rc rc1: meson_ao_cec as /devices/platform/soc/c8100000.bus/c8100100.cec/rc/rc1
[    8.514074] input: meson_ao_cec as /devices/platform/soc/c8100000.bus/c8100100.cec/rc/rc1/input1
[    8.526188] videodev: Linux video capture interface: v2.00
[    8.530199] rc rc0: meson-ir as /devices/platform/soc/c8100000.bus/c8100580.ir/rc/rc0
[    8.534798] rc rc0: lirc_dev: driver meson-ir registered at minor = 0, raw IR receiver, no transmitter
[    8.601925] input: meson-ir as /devices/platform/soc/c8100000.bus/c8100580.ir/rc/rc0/input0
[    8.602492] meson-ir c8100580.ir: receiver initialized
[    8.615945] simple-amplifier analog-amplifier: Looking up VCC-supply from device tree
[    8.646094] gxl-crypto c883e000.crypto: will run requests pump with realtime priority
[    8.646324] gxl-crypto c883e000.crypto: will run requests pump with realtime priority
[    8.652815] meson_vdec: module is from the staging directory, the quality is unknown, you have been warned.
[    9.895524] 8021q: 802.1Q VLAN Support v1.8
[    9.976307] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[   10.019708] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[   10.028286] cfg80211: loaded regulatory.db is malformed or signature is missing/invalid
[   10.166526] meson8b-dwmac c9410000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0
[   10.232378] Adding 102396k swap on /var/swap.  Priority:-2 extents:1 across:102396k FS
[   10.261665] meson8b-dwmac c9410000.ethernet eth0: PHY [mdio_mux-0.e40908ff:08] driver [Meson GXL Internal PHY] (irq=42)
[   10.303564] meson8b-dwmac c9410000.ethernet eth0: No Safety Features support found
[   10.303593] meson8b-dwmac c9410000.ethernet eth0: PTP not supported by HW
[   10.309775] meson8b-dwmac c9410000.ethernet eth0: configuring for phy/rmii link mode
[   11.428554] panel-ilitek-ili9341 spi0.0: [drm] Initialized display serial interface
[   11.806613] meson8b-dwmac c9410000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[   11.806684] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   12.145200] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[   12.149939] Bridge firewalling registered
[   12.474238] Initializing XFRM netlink socket

By and large, the current situation is I still cannot make either the previous ssd1309 or the ili9341 to present anything by using fb device. The oled screen is never intended to be used to show the system output or desktop.
I’m trying to use it to show some information such as Chinese lunar calender and that’s it.

Did you move the jumper for the ILI9341 display? Without the jumper change, it will not display anything.

Also with regards to your previous screen where the corner was showing white static, it’s actually working.

  1. The reason for the static square is that the width/height are flipped. There’s a secondary problem of addressing.
  2. The fbtft does not have a way to configure the addressing mode or start offset and the display area is on the other side of the buffer. For example, the st7789 has a 240x320 buffer, but the LCD is only showing 240x135 attached to the wrong end of the buffer.
  3. The way to fix it with fbtft is to set the screen size to the full display area of the chip with the LCD only showing the half of the display area. This has the problem in that Linux will think the unshown half is shown.
  4. We are working on a DRM solution for this problem so we can skip fbtft’s limitation.
1 Like

Regarding this question,


I moved it from right to left. Is it correct for ili9341?

1 Like

Yes, then reboot. Also do not put heatsinks on DRAM. They don’t need it.

Thank you. I removed the black heatsink from dram. The oled is not working.

Is the ILI341 working?

The ssd1306 overlay was tested against the display without CS. For your display, it might need to be tweaked. Do you have the link to where you bought it?

ili9341 not working, I will get back to take a close look later. I still think it’s pretty close to success, only I’m not familiar with the usage, I guess. I’m planning to test it on raspberry pi firstly to make sure it is fine.

For ssd1309: https://m.tb.cn/h.5203giw?tk=kcmndEifDdn

They send me the spec issued by solomon technology just those ones can be googled. If needed, I can send it to you later.

For the OLED, did you change the compatible ID to match your display?

For ili9341, I applied the dts file “spicc-ili9341.dts” written by your team.
For ssd1309, I simply used compatible ssd1306. The major difference between the two is the oled size, one is 0.96’‘, the other is 2.42’', so I didn’t change anything in the file “spicc-ssd1306-128x64.dts” and directly applied it.

If you don’t switch the compatible, it send the wrong parameters over SPI since the clocking is different.

ILI9341 should work as it’s been tested against a few screens already.