Lines Matching refs:spi
42 u32 (*txrx_word)(struct spi_device *spi, unsigned nsecs,
46 struct spi_device *spi,
55 struct spi_device *spi, in bitbang_txrx_8() argument
56 u32 (*txrx_word)(struct spi_device *spi, in bitbang_txrx_8() argument
75 word = txrx_word(spi, ns, word, bits, flags); in bitbang_txrx_8()
84 struct spi_device *spi, in bitbang_txrx_16() argument
85 u32 (*txrx_word)(struct spi_device *spi, in bitbang_txrx_16() argument
104 word = txrx_word(spi, ns, word, bits, flags); in bitbang_txrx_16()
113 struct spi_device *spi, in bitbang_txrx_32() argument
114 u32 (*txrx_word)(struct spi_device *spi, in bitbang_txrx_32() argument
133 word = txrx_word(spi, ns, word, bits, flags); in bitbang_txrx_32()
141 int spi_bitbang_setup_transfer(struct spi_device *spi, struct spi_transfer *t) in spi_bitbang_setup_transfer() argument
143 struct spi_bitbang_cs *cs = spi->controller_state; in spi_bitbang_setup_transfer()
157 bits_per_word = spi->bits_per_word; in spi_bitbang_setup_transfer()
169 hz = spi->max_speed_hz; in spi_bitbang_setup_transfer()
183 int spi_bitbang_setup(struct spi_device *spi) in spi_bitbang_setup() argument
185 struct spi_bitbang_cs *cs = spi->controller_state; in spi_bitbang_setup()
190 bitbang = spi_master_get_devdata(spi->master); in spi_bitbang_setup()
196 spi->controller_state = cs; in spi_bitbang_setup()
201 cs->txrx_word = bitbang->txrx_word[spi->mode & (SPI_CPOL|SPI_CPHA)]; in spi_bitbang_setup()
208 retval = bitbang->setup_transfer(spi, NULL); in spi_bitbang_setup()
213 dev_dbg(&spi->dev, "%s, %u nsec/bit\n", __func__, 2 * cs->nsecs); in spi_bitbang_setup()
227 void spi_bitbang_cleanup(struct spi_device *spi) in spi_bitbang_cleanup() argument
229 kfree(spi->controller_state); in spi_bitbang_cleanup()
233 static int spi_bitbang_bufs(struct spi_device *spi, struct spi_transfer *t) in spi_bitbang_bufs() argument
235 struct spi_bitbang_cs *cs = spi->controller_state; in spi_bitbang_bufs()
239 bitbang = spi_master_get_devdata(spi->master); in spi_bitbang_bufs()
243 err = bitbang->set_line_direction(spi, !!(t->tx_buf)); in spi_bitbang_bufs()
248 if (spi->mode & SPI_3WIRE) { in spi_bitbang_bufs()
252 return cs->txrx_bufs(spi, cs->txrx_word, nsecs, t, flags); in spi_bitbang_bufs()
254 return cs->txrx_bufs(spi, cs->txrx_word, nsecs, t, 0); in spi_bitbang_bufs()
271 static int spi_bitbang_prepare_hardware(struct spi_master *spi) in spi_bitbang_prepare_hardware() argument
275 bitbang = spi_master_get_devdata(spi); in spi_bitbang_prepare_hardware()
285 struct spi_device *spi, in spi_bitbang_transfer_one() argument
292 status = bitbang->setup_transfer(spi, transfer); in spi_bitbang_transfer_one()
298 status = bitbang->txrx_bufs(spi, transfer); in spi_bitbang_transfer_one()
311 static int spi_bitbang_unprepare_hardware(struct spi_master *spi) in spi_bitbang_unprepare_hardware() argument
315 bitbang = spi_master_get_devdata(spi); in spi_bitbang_unprepare_hardware()
324 static void spi_bitbang_set_cs(struct spi_device *spi, bool enable) in spi_bitbang_set_cs() argument
326 struct spi_bitbang *bitbang = spi_master_get_devdata(spi->master); in spi_bitbang_set_cs()
332 enable = (!!(spi->mode & SPI_CS_HIGH) == enable); in spi_bitbang_set_cs()
335 bitbang->chipselect(spi, enable ? BITBANG_CS_ACTIVE : in spi_bitbang_set_cs()