Lines Matching defs:spi

24 #include <linux/spi/spi.h>
258 struct spi_device *spi, struct tegra_spi_data *tspi,
719 static int tegra_spi_set_hw_cs_timing(struct spi_device *spi)
721 struct tegra_spi_data *tspi = spi_master_get_devdata(spi->master);
722 struct spi_delay *setup = &spi->cs_setup;
723 struct spi_delay *hold = &spi->cs_hold;
724 struct spi_delay *inactive = &spi->cs_inactive;
734 dev_err(&spi->dev,
745 spi_get_chipselect(spi, 0),
758 SPI_SET_CS_ACTIVE_BETWEEN_PACKETS(spi_cs_timing, spi_get_chipselect(spi, 0),
760 SPI_SET_CYCLES_BETWEEN_PACKETS(spi_cs_timing, spi_get_chipselect(spi, 0),
770 static u32 tegra_spi_setup_transfer_one(struct spi_device *spi,
775 struct tegra_spi_data *tspi = spi_master_get_devdata(spi->master);
776 struct tegra_spi_client_data *cdata = spi->controller_data;
788 tspi->cur_spi = spi;
801 req_mode = spi->mode & 0x3;
811 if (spi->mode & SPI_LSB_FIRST)
816 if (spi->mode & SPI_3WIRE)
822 if (tspi->cs_control != spi)
829 if (spi_get_csgpiod(spi, 0))
830 gpiod_set_value(spi_get_csgpiod(spi, 0), 1);
838 if (spi->mode & SPI_CS_HIGH)
844 if (tspi->last_used_cs != spi_get_chipselect(spi, 0)) {
853 tspi->last_used_cs = spi_get_chipselect(spi, 0);
865 static int tegra_spi_start_transfer_one(struct spi_device *spi,
868 struct tegra_spi_data *tspi = spi_master_get_devdata(spi->master);
872 total_fifo_words = tegra_spi_calculate_curr_xfer_param(spi, tspi, t);
894 command1 |= SPI_CS_SEL(spi_get_chipselect(spi, 0));
912 *tegra_spi_parse_cdata_dt(struct spi_device *spi)
917 slave_np = spi->dev.of_node;
919 dev_dbg(&spi->dev, "device node not found\n");
934 static void tegra_spi_cleanup(struct spi_device *spi)
936 struct tegra_spi_client_data *cdata = spi->controller_data;
938 spi->controller_data = NULL;
939 if (spi->dev.of_node)
943 static int tegra_spi_setup(struct spi_device *spi)
945 struct tegra_spi_data *tspi = spi_master_get_devdata(spi->master);
946 struct tegra_spi_client_data *cdata = spi->controller_data;
951 dev_dbg(&spi->dev, "setup %d bpw, %scpol, %scpha, %dHz\n",
952 spi->bits_per_word,
953 spi->mode & SPI_CPOL ? "" : "~",
954 spi->mode & SPI_CPHA ? "" : "~",
955 spi->max_speed_hz);
958 cdata = tegra_spi_parse_cdata_dt(spi);
959 spi->controller_data = cdata;
966 tegra_spi_cleanup(spi);
978 if (spi_get_csgpiod(spi, 0))
979 gpiod_set_value(spi_get_csgpiod(spi, 0), 0);
982 if (spi->mode & SPI_CS_HIGH)
983 val &= ~SPI_CS_POL_INACTIVE(spi_get_chipselect(spi, 0));
985 val |= SPI_CS_POL_INACTIVE(spi_get_chipselect(spi, 0));
994 static void tegra_spi_transfer_end(struct spi_device *spi)
996 struct tegra_spi_data *tspi = spi_master_get_devdata(spi->master);
997 int cs_val = (spi->mode & SPI_CS_HIGH) ? 0 : 1;
1000 if (spi_get_csgpiod(spi, 0))
1001 gpiod_set_value(spi_get_csgpiod(spi, 0), 0);
1034 struct spi_device *spi = msg->spi;
1048 cmd1 = tegra_spi_setup_transfer_one(spi, xfer, is_first_msg,
1057 ret = tegra_spi_start_transfer_one(spi, xfer, cmd1);
1060 "spi can not start transfer, err %d\n", ret);
1068 dev_err(tspi->dev, "spi transfer timeout\n");
1095 tegra_spi_transfer_end(spi);
1101 tspi->cs_control = spi;
1103 tegra_spi_transfer_end(spi);
1107 tegra_spi_transfer_end(spi);
1281 .compatible = "nvidia,tegra114-spi",
1284 .compatible = "nvidia,tegra124-spi",
1287 .compatible = "nvidia,tegra210-spi",
1310 if (of_property_read_u32(pdev->dev.of_node, "spi-max-frequency",
1314 /* the spi->mode bits understood by this driver: */
1325 bus_num = of_alias_get_id(pdev->dev.of_node, "spi");
1354 tspi->clk = devm_clk_get(&pdev->dev, "spi");
1361 tspi->rst = devm_reset_control_get_exclusive(&pdev->dev, "spi");
1516 .name = "spi-tegra114",
1525 MODULE_ALIAS("platform:spi-tegra114");