Lines Matching defs:spi
15 #include <linux/spi/spi.h>
16 #include <linux/spi/spi_bitbang.h>
42 u32 (*txrx_word)(struct spi_device *spi, unsigned nsecs,
46 struct spi_device *spi,
55 struct spi_device *spi,
56 u32 (*txrx_word)(struct spi_device *spi,
75 word = txrx_word(spi, ns, word, bits, flags);
84 struct spi_device *spi,
85 u32 (*txrx_word)(struct spi_device *spi,
104 word = txrx_word(spi, ns, word, bits, flags);
113 struct spi_device *spi,
114 u32 (*txrx_word)(struct spi_device *spi,
133 word = txrx_word(spi, ns, word, bits, flags);
141 int spi_bitbang_setup_transfer(struct spi_device *spi, struct spi_transfer *t)
143 struct spi_bitbang_cs *cs = spi->controller_state;
157 bits_per_word = spi->bits_per_word;
169 hz = spi->max_speed_hz;
183 int spi_bitbang_setup(struct spi_device *spi)
185 struct spi_bitbang_cs *cs = spi->controller_state;
190 bitbang = spi_master_get_devdata(spi->master);
196 spi->controller_state = cs;
201 cs->txrx_word = bitbang->txrx_word[spi->mode & (SPI_CPOL|SPI_CPHA)];
208 retval = bitbang->setup_transfer(spi, NULL);
213 dev_dbg(&spi->dev, "%s, %u nsec/bit\n", __func__, 2 * cs->nsecs);
227 void spi_bitbang_cleanup(struct spi_device *spi)
229 kfree(spi->controller_state);
233 static int spi_bitbang_bufs(struct spi_device *spi, struct spi_transfer *t)
235 struct spi_bitbang_cs *cs = spi->controller_state;
239 bitbang = spi_master_get_devdata(spi->master);
243 err = bitbang->set_line_direction(spi, !!(t->tx_buf));
248 if (spi->mode & SPI_3WIRE) {
252 return cs->txrx_bufs(spi, cs->txrx_word, nsecs, t, flags);
254 return cs->txrx_bufs(spi, cs->txrx_word, nsecs, t, 0);
271 static int spi_bitbang_prepare_hardware(struct spi_master *spi)
275 bitbang = spi_master_get_devdata(spi);
285 struct spi_device *spi,
292 status = bitbang->setup_transfer(spi, transfer);
298 status = bitbang->txrx_bufs(spi, transfer);
311 static int spi_bitbang_unprepare_hardware(struct spi_master *spi)
315 bitbang = spi_master_get_devdata(spi);
324 static void spi_bitbang_set_cs(struct spi_device *spi, bool enable)
326 struct spi_bitbang *bitbang = spi_master_get_devdata(spi->master);
330 * spi device driver takes care of handling SPI_CS_HIGH
332 enable = (!!(spi->mode & SPI_CS_HIGH) == enable);
335 bitbang->chipselect(spi, enable ? BITBANG_CS_ACTIVE :
410 * spi_bitbang_cleanup and spi_bitbang_setup_transfer to handle those spi
444 * spi_bitbang_stop - stops the task providing spi communication