Lines Matching refs:spi

34 	void (*cs_control)(struct spi_device *spi, bool on);
57 static int mpc512x_psc_spi_transfer_setup(struct spi_device *spi, in mpc512x_psc_spi_transfer_setup() argument
60 struct mpc512x_psc_spi_cs *cs = spi->controller_state; in mpc512x_psc_spi_transfer_setup()
63 ? t->speed_hz : spi->max_speed_hz; in mpc512x_psc_spi_transfer_setup()
65 ? t->bits_per_word : spi->bits_per_word; in mpc512x_psc_spi_transfer_setup()
70 static void mpc512x_psc_spi_activate_cs(struct spi_device *spi) in mpc512x_psc_spi_activate_cs() argument
72 struct mpc512x_psc_spi_cs *cs = spi->controller_state; in mpc512x_psc_spi_activate_cs()
73 struct mpc512x_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc512x_psc_spi_activate_cs()
83 if (spi->mode & SPI_CPHA) in mpc512x_psc_spi_activate_cs()
88 if (spi->mode & SPI_CPOL) in mpc512x_psc_spi_activate_cs()
93 if (spi->mode & SPI_LSB_FIRST) in mpc512x_psc_spi_activate_cs()
110 if (mps->cs_control && gpio_is_valid(spi->cs_gpio)) in mpc512x_psc_spi_activate_cs()
111 mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 1 : 0); in mpc512x_psc_spi_activate_cs()
114 static void mpc512x_psc_spi_deactivate_cs(struct spi_device *spi) in mpc512x_psc_spi_deactivate_cs() argument
116 struct mpc512x_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc512x_psc_spi_deactivate_cs()
118 if (mps->cs_control && gpio_is_valid(spi->cs_gpio)) in mpc512x_psc_spi_deactivate_cs()
119 mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 0 : 1); in mpc512x_psc_spi_deactivate_cs()
128 static int mpc512x_psc_spi_transfer_rxtx(struct spi_device *spi, in mpc512x_psc_spi_transfer_rxtx() argument
131 struct mpc512x_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc512x_psc_spi_transfer_rxtx()
249 dev_warn(&spi->dev, in mpc512x_psc_spi_transfer_rxtx()
271 struct spi_device *spi; in mpc512x_psc_spi_msg_xfer() local
276 spi = m->spi; in mpc512x_psc_spi_msg_xfer()
281 status = mpc512x_psc_spi_transfer_setup(spi, t); in mpc512x_psc_spi_msg_xfer()
287 mpc512x_psc_spi_activate_cs(spi); in mpc512x_psc_spi_msg_xfer()
290 status = mpc512x_psc_spi_transfer_rxtx(spi, t); in mpc512x_psc_spi_msg_xfer()
299 mpc512x_psc_spi_deactivate_cs(spi); in mpc512x_psc_spi_msg_xfer()
307 mpc512x_psc_spi_deactivate_cs(spi); in mpc512x_psc_spi_msg_xfer()
309 mpc512x_psc_spi_transfer_setup(spi, NULL); in mpc512x_psc_spi_msg_xfer()
347 static int mpc512x_psc_spi_setup(struct spi_device *spi) in mpc512x_psc_spi_setup() argument
349 struct mpc512x_psc_spi_cs *cs = spi->controller_state; in mpc512x_psc_spi_setup()
352 if (spi->bits_per_word % 8) in mpc512x_psc_spi_setup()
360 if (gpio_is_valid(spi->cs_gpio)) { in mpc512x_psc_spi_setup()
361 ret = gpio_request(spi->cs_gpio, dev_name(&spi->dev)); in mpc512x_psc_spi_setup()
363 dev_err(&spi->dev, "can't get CS gpio: %d\n", in mpc512x_psc_spi_setup()
368 gpio_direction_output(spi->cs_gpio, in mpc512x_psc_spi_setup()
369 spi->mode & SPI_CS_HIGH ? 0 : 1); in mpc512x_psc_spi_setup()
372 spi->controller_state = cs; in mpc512x_psc_spi_setup()
375 cs->bits_per_word = spi->bits_per_word; in mpc512x_psc_spi_setup()
376 cs->speed_hz = spi->max_speed_hz; in mpc512x_psc_spi_setup()
381 static void mpc512x_psc_spi_cleanup(struct spi_device *spi) in mpc512x_psc_spi_cleanup() argument
383 if (gpio_is_valid(spi->cs_gpio)) in mpc512x_psc_spi_cleanup()
384 gpio_free(spi->cs_gpio); in mpc512x_psc_spi_cleanup()
385 kfree(spi->controller_state); in mpc512x_psc_spi_cleanup()
464 static void mpc512x_spi_cs_control(struct spi_device *spi, bool onoff) in mpc512x_spi_cs_control() argument
466 gpio_set_value(spi->cs_gpio, onoff); in mpc512x_spi_cs_control()