diff options
author | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2020-12-14 14:10:24 +0100 |
---|---|---|
committer | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2021-01-21 10:17:31 +0100 |
commit | b2f265ab9f54bf8b53c198bc6d370bc672119b7a (patch) | |
tree | 70234b64749e379346ed58f73c1bda586f373520 | |
parent | bsps/imxrt: Add DMA numbers to dtsi (diff) | |
download | rtems-b2f265ab9f54bf8b53c198bc6d370bc672119b7a.tar.bz2 |
cpukit/spi: Allow driver specific ioctl
This allows a SPI driver to add a hardware specific ioctl.
-rw-r--r-- | cpukit/dev/spi/spi-bus.c | 3 | ||||
-rw-r--r-- | cpukit/include/dev/spi/spi.h | 7 |
2 files changed, 10 insertions, 0 deletions
diff --git a/cpukit/dev/spi/spi-bus.c b/cpukit/dev/spi/spi-bus.c index 5308603216..42b70aa6c9 100644 --- a/cpukit/dev/spi/spi-bus.c +++ b/cpukit/dev/spi/spi-bus.c @@ -199,6 +199,8 @@ static int spi_bus_ioctl( arg, IOCPARM_LEN(command) / sizeof(struct spi_ioc_transfer) ); + } else if (bus->ioctl != NULL) { + err = (*bus->ioctl)(bus, command, arg); } else { err = -EINVAL; } @@ -300,6 +302,7 @@ static int spi_bus_do_init( bus->transfer = spi_bus_transfer_default; bus->setup = spi_bus_setup_default; bus->destroy = destroy; + bus->ioctl = NULL; bus->bits_per_word = 8; return 0; diff --git a/cpukit/include/dev/spi/spi.h b/cpukit/include/dev/spi/spi.h index dfe9cf512b..8850b288fe 100644 --- a/cpukit/include/dev/spi/spi.h +++ b/cpukit/include/dev/spi/spi.h @@ -141,6 +141,13 @@ struct spi_bus { * devices. */ uint16_t delay_usecs; + + /** + * @brief Driver specific ioctl. + * + * @param[in] bus The bus control. + */ + int (*ioctl)(spi_bus *bus, ioctl_command_t command, void *arg); }; /** |