Lines Matching refs:spi
35 void (*cs_control)(struct spi_device *spi, bool on);
63 static int mpc52xx_psc_spi_transfer_setup(struct spi_device *spi, in mpc52xx_psc_spi_transfer_setup() argument
66 struct mpc52xx_psc_spi_cs *cs = spi->controller_state; in mpc52xx_psc_spi_transfer_setup()
69 ? t->speed_hz : spi->max_speed_hz; in mpc52xx_psc_spi_transfer_setup()
71 ? t->bits_per_word : spi->bits_per_word; in mpc52xx_psc_spi_transfer_setup()
76 static void mpc52xx_psc_spi_activate_cs(struct spi_device *spi) in mpc52xx_psc_spi_activate_cs() argument
78 struct mpc52xx_psc_spi_cs *cs = spi->controller_state; in mpc52xx_psc_spi_activate_cs()
79 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_activate_cs()
87 if (spi->mode & SPI_CPHA) in mpc52xx_psc_spi_activate_cs()
91 if (spi->mode & SPI_CPOL) in mpc52xx_psc_spi_activate_cs()
96 if (spi->mode & SPI_LSB_FIRST) in mpc52xx_psc_spi_activate_cs()
116 mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 1 : 0); in mpc52xx_psc_spi_activate_cs()
119 static void mpc52xx_psc_spi_deactivate_cs(struct spi_device *spi) in mpc52xx_psc_spi_deactivate_cs() argument
121 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_deactivate_cs()
124 mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 0 : 1); in mpc52xx_psc_spi_deactivate_cs()
131 static int mpc52xx_psc_spi_transfer_rxtx(struct spi_device *spi, in mpc52xx_psc_spi_transfer_rxtx() argument
134 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_transfer_rxtx()
161 dev_dbg(&spi->dev, "send %d bytes...\n", send_at_once); in mpc52xx_psc_spi_transfer_rxtx()
188 dev_dbg(&spi->dev, "%d bytes received\n", recv_at_once); in mpc52xx_psc_spi_transfer_rxtx()
214 struct spi_device *spi; in mpc52xx_psc_spi_work() local
223 spi = m->spi; in mpc52xx_psc_spi_work()
228 status = mpc52xx_psc_spi_transfer_setup(spi, t); in mpc52xx_psc_spi_work()
234 mpc52xx_psc_spi_activate_cs(spi); in mpc52xx_psc_spi_work()
237 status = mpc52xx_psc_spi_transfer_rxtx(spi, t); in mpc52xx_psc_spi_work()
246 mpc52xx_psc_spi_deactivate_cs(spi); in mpc52xx_psc_spi_work()
254 mpc52xx_psc_spi_deactivate_cs(spi); in mpc52xx_psc_spi_work()
256 mpc52xx_psc_spi_transfer_setup(spi, NULL); in mpc52xx_psc_spi_work()
264 static int mpc52xx_psc_spi_setup(struct spi_device *spi) in mpc52xx_psc_spi_setup() argument
266 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_setup()
267 struct mpc52xx_psc_spi_cs *cs = spi->controller_state; in mpc52xx_psc_spi_setup()
270 if (spi->bits_per_word%8) in mpc52xx_psc_spi_setup()
277 spi->controller_state = cs; in mpc52xx_psc_spi_setup()
280 cs->bits_per_word = spi->bits_per_word; in mpc52xx_psc_spi_setup()
281 cs->speed_hz = spi->max_speed_hz; in mpc52xx_psc_spi_setup()
285 mpc52xx_psc_spi_deactivate_cs(spi); in mpc52xx_psc_spi_setup()
291 static int mpc52xx_psc_spi_transfer(struct spi_device *spi, in mpc52xx_psc_spi_transfer() argument
294 struct mpc52xx_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc52xx_psc_spi_transfer()
308 static void mpc52xx_psc_spi_cleanup(struct spi_device *spi) in mpc52xx_psc_spi_cleanup() argument
310 kfree(spi->controller_state); in mpc52xx_psc_spi_cleanup()