Lines Matching defs:spi

14 #include <linux/spi/spi.h>
73 * have both is for managing the armada-370-spi case with old
135 static int orion_spi_baudrate_set(struct spi_device *spi, unsigned int speed)
144 orion_spi = spi_controller_get_devdata(spi->controller);
233 orion_spi_mode_set(struct spi_device *spi)
238 orion_spi = spi_controller_get_devdata(spi->controller);
242 if (spi->mode & SPI_CPOL)
244 if (spi->mode & SPI_CPHA)
246 if (spi->mode & SPI_LSB_FIRST)
255 orion_spi_50mhz_ac_timing_erratum(struct spi_device *spi, unsigned int speed)
260 orion_spi = spi_controller_get_devdata(spi->controller);
280 speed == 50000000 && spi->mode & SPI_CPOL &&
281 spi->mode & SPI_CPHA)
293 orion_spi_setup_transfer(struct spi_device *spi, struct spi_transfer *t)
296 unsigned int speed = spi->max_speed_hz;
297 unsigned int bits_per_word = spi->bits_per_word;
300 orion_spi = spi_controller_get_devdata(spi->controller);
308 orion_spi_mode_set(spi);
311 orion_spi_50mhz_ac_timing_erratum(spi, speed);
313 rc = orion_spi_baudrate_set(spi, speed);
327 static void orion_spi_set_cs(struct spi_device *spi, bool enable)
333 orion_spi = spi_controller_get_devdata(spi->controller);
348 val |= ORION_SPI_CS(spi_get_chipselect(spi, 0));
382 orion_spi_write_read_8bit(struct spi_device *spi,
389 cs_single_byte = spi->mode & SPI_CS_WORD;
391 orion_spi = spi_controller_get_devdata(spi->controller);
394 orion_spi_set_cs(spi, 0);
410 orion_spi_set_cs(spi, 1);
414 dev_err(&spi->dev, "TXS timed out\n");
422 orion_spi_set_cs(spi, 1);
431 orion_spi_write_read_16bit(struct spi_device *spi,
437 if (spi->mode & SPI_CS_WORD) {
438 dev_err(&spi->dev, "SPI_CS_WORD is only supported for 8 bit words\n");
442 orion_spi = spi_controller_get_devdata(spi->controller);
456 dev_err(&spi->dev, "TXS timed out\n");
467 orion_spi_write_read(struct spi_device *spi, struct spi_transfer *xfer)
472 int cs = spi_get_chipselect(spi, 0);
475 word_len = spi->bits_per_word;
478 orion_spi = spi_controller_get_devdata(spi->controller);
487 if (vaddr && xfer->tx_buf && word_len == 8 && (spi->mode & SPI_CS_WORD) == 0) {
510 if (orion_spi_write_read_8bit(spi, &tx, &rx) < 0)
520 if (orion_spi_write_read_16bit(spi, &tx, &rx) < 0)
532 struct spi_device *spi,
537 status = orion_spi_setup_transfer(spi, t);
542 orion_spi_write_read(spi, t);
547 static int orion_spi_setup(struct spi_device *spi)
551 struct orion_spi *orion_spi = spi_controller_get_devdata(spi->controller);
557 ret = orion_spi_setup_transfer(spi, NULL);
616 .compatible = "marvell,orion-spi",
620 .compatible = "marvell,armada-370-spi",
624 .compatible = "marvell,armada-375-spi",
628 .compatible = "marvell,armada-380-spi",
632 .compatible = "marvell,armada-390-spi",
636 .compatible = "marvell,armada-xp-spi",
648 struct orion_spi *spi;
654 host = spi_alloc_host(&pdev->dev, sizeof(*spi));
683 spi = spi_controller_get_devdata(host);
684 spi->host = host;
685 spi->dev = &pdev->dev;
689 spi->devdata = devdata;
691 spi->clk = devm_clk_get_enabled(&pdev->dev, NULL);
692 if (IS_ERR(spi->clk)) {
693 status = PTR_ERR(spi->clk);
698 spi->axi_clk = devm_clk_get(&pdev->dev, "axi");
699 if (PTR_ERR(spi->axi_clk) == -EPROBE_DEFER) {
703 if (!IS_ERR(spi->axi_clk))
704 clk_prepare_enable(spi->axi_clk);
706 tclk_hz = clk_get_rate(spi->clk);
709 * With old device tree, armada-370-spi could be used with
716 "marvell,armada-370-spi"))
726 spi->base = devm_platform_get_and_ioremap_resource(pdev, 0, &r);
727 if (IS_ERR(spi->base)) {
728 status = PTR_ERR(spi->base);
762 dir_acc = &spi->child[cs].direct_access;
779 status = orion_spi_reset(spi);
793 clk_disable_unprepare(spi->axi_clk);
803 struct orion_spi *spi = spi_controller_get_devdata(host);
806 clk_disable_unprepare(spi->axi_clk);
818 struct orion_spi *spi = spi_controller_get_devdata(host);
820 clk_disable_unprepare(spi->axi_clk);
821 clk_disable_unprepare(spi->clk);
828 struct orion_spi *spi = spi_controller_get_devdata(host);
830 if (!IS_ERR(spi->axi_clk))
831 clk_prepare_enable(spi->axi_clk);
832 return clk_prepare_enable(spi->clk);