Lines Matching refs:spi

59 	void (*cs_control)(struct spi_device *spi, bool on);
83 static int mpc512x_psc_spi_transfer_setup(struct spi_device *spi, in mpc512x_psc_spi_transfer_setup() argument
86 struct mpc512x_psc_spi_cs *cs = spi->controller_state; in mpc512x_psc_spi_transfer_setup()
89 ? t->speed_hz : spi->max_speed_hz; in mpc512x_psc_spi_transfer_setup()
91 ? t->bits_per_word : spi->bits_per_word; in mpc512x_psc_spi_transfer_setup()
96 static void mpc512x_psc_spi_activate_cs(struct spi_device *spi) in mpc512x_psc_spi_activate_cs() argument
98 struct mpc512x_psc_spi_cs *cs = spi->controller_state; in mpc512x_psc_spi_activate_cs()
99 struct mpc512x_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc512x_psc_spi_activate_cs()
108 if (spi->mode & SPI_CPHA) in mpc512x_psc_spi_activate_cs()
113 if (spi->mode & SPI_CPOL) in mpc512x_psc_spi_activate_cs()
118 if (spi->mode & SPI_LSB_FIRST) in mpc512x_psc_spi_activate_cs()
135 if (mps->cs_control && gpio_is_valid(spi->cs_gpio)) in mpc512x_psc_spi_activate_cs()
136 mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 1 : 0); in mpc512x_psc_spi_activate_cs()
139 static void mpc512x_psc_spi_deactivate_cs(struct spi_device *spi) in mpc512x_psc_spi_deactivate_cs() argument
141 struct mpc512x_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc512x_psc_spi_deactivate_cs()
143 if (mps->cs_control && gpio_is_valid(spi->cs_gpio)) in mpc512x_psc_spi_deactivate_cs()
144 mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 0 : 1); in mpc512x_psc_spi_deactivate_cs()
153 static int mpc512x_psc_spi_transfer_rxtx(struct spi_device *spi, in mpc512x_psc_spi_transfer_rxtx() argument
156 struct mpc512x_psc_spi *mps = spi_master_get_devdata(spi->master); in mpc512x_psc_spi_transfer_rxtx()
274 dev_warn(&spi->dev, in mpc512x_psc_spi_transfer_rxtx()
296 struct spi_device *spi; in mpc512x_psc_spi_msg_xfer() local
301 spi = m->spi; in mpc512x_psc_spi_msg_xfer()
305 status = mpc512x_psc_spi_transfer_setup(spi, t); in mpc512x_psc_spi_msg_xfer()
310 mpc512x_psc_spi_activate_cs(spi); in mpc512x_psc_spi_msg_xfer()
313 status = mpc512x_psc_spi_transfer_rxtx(spi, t); in mpc512x_psc_spi_msg_xfer()
322 mpc512x_psc_spi_deactivate_cs(spi); in mpc512x_psc_spi_msg_xfer()
330 mpc512x_psc_spi_deactivate_cs(spi); in mpc512x_psc_spi_msg_xfer()
332 mpc512x_psc_spi_transfer_setup(spi, NULL); in mpc512x_psc_spi_msg_xfer()
368 static int mpc512x_psc_spi_setup(struct spi_device *spi) in mpc512x_psc_spi_setup() argument
370 struct mpc512x_psc_spi_cs *cs = spi->controller_state; in mpc512x_psc_spi_setup()
373 if (spi->bits_per_word % 8) in mpc512x_psc_spi_setup()
381 if (gpio_is_valid(spi->cs_gpio)) { in mpc512x_psc_spi_setup()
382 ret = gpio_request(spi->cs_gpio, dev_name(&spi->dev)); in mpc512x_psc_spi_setup()
384 dev_err(&spi->dev, "can't get CS gpio: %d\n", in mpc512x_psc_spi_setup()
389 gpio_direction_output(spi->cs_gpio, in mpc512x_psc_spi_setup()
390 spi->mode & SPI_CS_HIGH ? 0 : 1); in mpc512x_psc_spi_setup()
393 spi->controller_state = cs; in mpc512x_psc_spi_setup()
396 cs->bits_per_word = spi->bits_per_word; in mpc512x_psc_spi_setup()
397 cs->speed_hz = spi->max_speed_hz; in mpc512x_psc_spi_setup()
402 static void mpc512x_psc_spi_cleanup(struct spi_device *spi) in mpc512x_psc_spi_cleanup() argument
404 if (gpio_is_valid(spi->cs_gpio)) in mpc512x_psc_spi_cleanup()
405 gpio_free(spi->cs_gpio); in mpc512x_psc_spi_cleanup()
406 kfree(spi->controller_state); in mpc512x_psc_spi_cleanup()
484 static void mpc512x_spi_cs_control(struct spi_device *spi, bool onoff) in mpc512x_spi_cs_control() argument
486 gpio_set_value(spi->cs_gpio, onoff); in mpc512x_spi_cs_control()