Lines Matching defs:spi
24 #include <linux/spi/spi.h>
55 void (*cs_control)(struct spi_device *spi, bool on);
79 static int mpc512x_psc_spi_transfer_setup(struct spi_device *spi,
82 struct mpc512x_psc_spi_cs *cs = spi->controller_state;
85 ? t->speed_hz : spi->max_speed_hz;
87 ? t->bits_per_word : spi->bits_per_word;
92 static void mpc512x_psc_spi_activate_cs(struct spi_device *spi)
94 struct mpc512x_psc_spi_cs *cs = spi->controller_state;
95 struct mpc512x_psc_spi *mps = spi_master_get_devdata(spi->master);
104 if (spi->mode & SPI_CPHA)
109 if (spi->mode & SPI_CPOL)
114 if (spi->mode & SPI_LSB_FIRST)
131 if (mps->cs_control && gpio_is_valid(spi->cs_gpio))
132 mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 1 : 0);
135 static void mpc512x_psc_spi_deactivate_cs(struct spi_device *spi)
137 struct mpc512x_psc_spi *mps = spi_master_get_devdata(spi->master);
139 if (mps->cs_control && gpio_is_valid(spi->cs_gpio))
140 mps->cs_control(spi, (spi->mode & SPI_CS_HIGH) ? 0 : 1);
149 static int mpc512x_psc_spi_transfer_rxtx(struct spi_device *spi,
152 struct mpc512x_psc_spi *mps = spi_master_get_devdata(spi->master);
270 dev_warn(&spi->dev,
292 struct spi_device *spi;
297 spi = m->spi;
301 status = mpc512x_psc_spi_transfer_setup(spi, t);
306 mpc512x_psc_spi_activate_cs(spi);
309 status = mpc512x_psc_spi_transfer_rxtx(spi, t);
317 mpc512x_psc_spi_deactivate_cs(spi);
325 mpc512x_psc_spi_deactivate_cs(spi);
327 mpc512x_psc_spi_transfer_setup(spi, NULL);
363 static int mpc512x_psc_spi_setup(struct spi_device *spi)
365 struct mpc512x_psc_spi_cs *cs = spi->controller_state;
368 if (spi->bits_per_word % 8)
376 if (gpio_is_valid(spi->cs_gpio)) {
377 ret = gpio_request(spi->cs_gpio, dev_name(&spi->dev));
379 dev_err(&spi->dev, "can't get CS gpio: %d\n",
384 gpio_direction_output(spi->cs_gpio,
385 spi->mode & SPI_CS_HIGH ? 0 : 1);
388 spi->controller_state = cs;
391 cs->bits_per_word = spi->bits_per_word;
392 cs->speed_hz = spi->max_speed_hz;
397 static void mpc512x_psc_spi_cleanup(struct spi_device *spi)
399 if (gpio_is_valid(spi->cs_gpio))
400 gpio_free(spi->cs_gpio);
401 kfree(spi->controller_state);
479 static void mpc512x_spi_cs_control(struct spi_device *spi, bool onoff)
481 gpio_set_value(spi->cs_gpio, onoff);
529 "mpc512x-psc-spi", mps);
608 { .compatible = "fsl,mpc5121-psc-spi", .data = (void *)TYPE_MPC5121 },
609 { .compatible = "fsl,mpc5125-psc-spi", .data = (void *)TYPE_MPC5125 },
619 .name = "mpc512x-psc-spi",