49int
SPI::transfer_messages(struct spi_ioc_transfer *msgs,
int num)
58 for (
int i = 0; i < num; ++i, ++msgs)
62 result = transfer(msgs);
63 if (UNLIKELY(result < 0))
73 if (UNLIKELY(msgs->delay_usec))
75 usleep(msgs->delay_usec);
172 struct spi_ioc_transfer *msgs = (
struct spi_ioc_transfer*)data;
173 int result = transfer_messages(msgs,
IOC_SIZE(key) /
174 sizeof(
struct spi_ioc_transfer));
185 case SPI_IOC_GET_OBJECT_REFERENCE:
191 case SPI_IOC_RD_MODE:
193 uint8_t *m = (uint8_t*)data;
197 case SPI_IOC_WR_MODE:
199 uint8_t *m = (uint8_t*)data;
204 case SPI_IOC_RD_LSB_FIRST:
206 uint8_t *lsbf = (uint8_t*)data;
210 case SPI_IOC_WR_LSB_FIRST:
212 uint8_t *lsbf = (uint8_t*)data;
216 case SPI_IOC_RD_BITS_PER_WORD:
218 uint8_t *bpw = (uint8_t*)data;
222 case SPI_IOC_WR_BITS_PER_WORD:
224 uint8_t *bpw = (uint8_t*)data;
228 case SPI_IOC_RD_MAX_SPEED_HZ:
230 uint32_t *hz = (uint32_t*)data;
234 case SPI_IOC_WR_MAX_SPEED_HZ:
236 uint32_t *hz = (uint32_t*)data;
244 int result = update_configuration();