Lines Matching +full:spi +full:- +full:slave

2  * SPI slave handler reporting uptime at reception of previous SPI message
4 * This SPI slave handler sends the time of reception of the last SPI message
5 * as two 32-bit unsigned integers in binary format and in network byte order,
9 * Copyright (C) 2016-2017 Glider bvba
15 * Usage (assuming /dev/spidev2.0 corresponds to the SPI master on the remote
18 * # spidev_test -D /dev/spidev2.0 -p dummy-8B
19 * spi mode: 0x0
30 #include <linux/spi/spi.h>
34 struct spi_device *spi; member
48 ret = priv->msg.status; in spi_slave_time_complete()
59 dev_info(&priv->spi->dev, "Terminating\n"); in spi_slave_time_complete()
60 complete(&priv->finished); in spi_slave_time_complete()
72 priv->buf[0] = cpu_to_be32(ts); in spi_slave_time_submit()
73 priv->buf[1] = cpu_to_be32(rem_us); in spi_slave_time_submit()
75 spi_message_init_with_transfers(&priv->msg, &priv->xfer, 1); in spi_slave_time_submit()
77 priv->msg.complete = spi_slave_time_complete; in spi_slave_time_submit()
78 priv->msg.context = priv; in spi_slave_time_submit()
80 ret = spi_async(priv->spi, &priv->msg); in spi_slave_time_submit()
82 dev_err(&priv->spi->dev, "spi_async() failed %d\n", ret); in spi_slave_time_submit()
87 static int spi_slave_time_probe(struct spi_device *spi) in spi_slave_time_probe() argument
92 priv = devm_kzalloc(&spi->dev, sizeof(*priv), GFP_KERNEL); in spi_slave_time_probe()
94 return -ENOMEM; in spi_slave_time_probe()
96 priv->spi = spi; in spi_slave_time_probe()
97 init_completion(&priv->finished); in spi_slave_time_probe()
98 priv->xfer.tx_buf = priv->buf; in spi_slave_time_probe()
99 priv->xfer.len = sizeof(priv->buf); in spi_slave_time_probe()
105 spi_set_drvdata(spi, priv); in spi_slave_time_probe()
109 static int spi_slave_time_remove(struct spi_device *spi) in spi_slave_time_remove() argument
111 struct spi_slave_time_priv *priv = spi_get_drvdata(spi); in spi_slave_time_remove()
113 spi_slave_abort(spi); in spi_slave_time_remove()
114 wait_for_completion(&priv->finished); in spi_slave_time_remove()
120 .name = "spi-slave-time",
128 MODULE_DESCRIPTION("SPI slave reporting uptime at previous SPI message");