typedef struct {
  int addr;
  void *extra;
  void (*select)(CTL_SPI_DEVICE_s *, int);
  CTL_SPI_DEVICE_s *__next;
  CTL_SPI_PROTOCOL_t __protocol;
  CTL_SPI_BUS_t *__bus;

CTL_SPI_DEVICE_t defines the device selection method and protocol to use when communicating with a device on an SPI bus.

Client-side data. If you are using a single method to select multiple devices, you can use the addr member of each SPI device structure to distinguish the device.
Client-side data. You can use this member to point to additional data associated with the SPI device.
Method to select the device. When the API requires a device to become selected, it calls select with the appropriate SPI device instance and state as 0. When a device needs to be deselected, it calls select with the device instance and state non-zero.
Private member that links SPI device instances attached to the same SPI bus.
Private member that contains the SPI protocol associated with the device instance.
Private member that points to the bus the SPI device is attached to. If the device is not attached to a bus, this member is null.