summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mauderer <christian.mauderer@embedded-brains.de>2020-12-14 14:10:24 +0100
committerChristian Mauderer <christian.mauderer@embedded-brains.de>2021-01-21 10:17:31 +0100
commitb2f265ab9f54bf8b53c198bc6d370bc672119b7a (patch)
tree70234b64749e379346ed58f73c1bda586f373520
parentbsps/imxrt: Add DMA numbers to dtsi (diff)
downloadrtems-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.c3
-rw-r--r--cpukit/include/dev/spi/spi.h7
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);
};
/**