Hello @romainletendart ,
as the first point, let me briefly describe the device architecture:
Every Neuron device consists of one, two or three coprocessor boards. In the device-tree overlay, the full three-boards configuration is always supposed.
During the driver-load phase (probe), the driver tries to contact all three boards (messages in the syslog come from this phase). In case of success, the driver creates the sysfs structure for every responding board (called io_groupX).
This routine is invoked at driver load only - ie. at the boot time.
To your questions:
There is no way how to check the presence of a non-coprocessor board. These boards are just simple I/Os without any "intelligence".
In case a co-processor board does not present at the boot time, no sysfs structure is created for this io_group.
This status is a link to the currently loaded device tree. As mentioned above, all three boards are still active there, so you always read the "okay" string.
In case the board is not found during the boot phase, no sysfs structure is created.
Maybe standard Linux SPI subsystem statistics can be useful for you, e.g.:
/sys/devices/platform/unipi_plc/io_group1/driver/spi0.1/statistics
If you provide more details about your application, I can try to give you some more specific tips.