Lines Matching defs:spi

25 #include <linux/spi/spi.h>
259 struct spi_device *spi, struct tegra_spi_data *tspi,
720 static int tegra_spi_set_hw_cs_timing(struct spi_device *spi,
725 struct tegra_spi_data *tspi = spi_master_get_devdata(spi->master);
735 dev_err(&spi->dev,
750 spi->chip_select,
763 SPI_SET_CS_ACTIVE_BETWEEN_PACKETS(spi_cs_timing, spi->chip_select,
765 SPI_SET_CYCLES_BETWEEN_PACKETS(spi_cs_timing, spi->chip_select,
775 static u32 tegra_spi_setup_transfer_one(struct spi_device *spi,
780 struct tegra_spi_data *tspi = spi_master_get_devdata(spi->master);
781 struct tegra_spi_client_data *cdata = spi->controller_data;
793 tspi->cur_spi = spi;
806 req_mode = spi->mode & 0x3;
816 if (spi->mode & SPI_LSB_FIRST)
821 if (spi->mode & SPI_3WIRE)
827 if (tspi->cs_control != spi)
834 if (spi->cs_gpiod)
835 gpiod_set_value(spi->cs_gpiod, 1);
843 if (spi->mode & SPI_CS_HIGH)
849 if (tspi->last_used_cs != spi->chip_select) {
858 tspi->last_used_cs = spi->chip_select;
870 static int tegra_spi_start_transfer_one(struct spi_device *spi,
873 struct tegra_spi_data *tspi = spi_master_get_devdata(spi->master);
877 total_fifo_words = tegra_spi_calculate_curr_xfer_param(spi, tspi, t);
899 command1 |= SPI_CS_SEL(spi->chip_select);
917 *tegra_spi_parse_cdata_dt(struct spi_device *spi)
922 slave_np = spi->dev.of_node;
924 dev_dbg(&spi->dev, "device node not found\n");
939 static void tegra_spi_cleanup(struct spi_device *spi)
941 struct tegra_spi_client_data *cdata = spi->controller_data;
943 spi->controller_data = NULL;
944 if (spi->dev.of_node)
948 static int tegra_spi_setup(struct spi_device *spi)
950 struct tegra_spi_data *tspi = spi_master_get_devdata(spi->master);
951 struct tegra_spi_client_data *cdata = spi->controller_data;
956 dev_dbg(&spi->dev, "setup %d bpw, %scpol, %scpha, %dHz\n",
957 spi->bits_per_word,
958 spi->mode & SPI_CPOL ? "" : "~",
959 spi->mode & SPI_CPHA ? "" : "~",
960 spi->max_speed_hz);
963 cdata = tegra_spi_parse_cdata_dt(spi);
964 spi->controller_data = cdata;
972 tegra_spi_cleanup(spi);
984 if (spi->cs_gpiod)
985 gpiod_set_value(spi->cs_gpiod, 0);
988 if (spi->mode & SPI_CS_HIGH)
989 val &= ~SPI_CS_POL_INACTIVE(spi->chip_select);
991 val |= SPI_CS_POL_INACTIVE(spi->chip_select);
1000 static void tegra_spi_transfer_end(struct spi_device *spi)
1002 struct tegra_spi_data *tspi = spi_master_get_devdata(spi->master);
1003 int cs_val = (spi->mode & SPI_CS_HIGH) ? 0 : 1;
1006 if (spi->cs_gpiod)
1007 gpiod_set_value(spi->cs_gpiod, 0);
1040 struct spi_device *spi = msg->spi;
1054 cmd1 = tegra_spi_setup_transfer_one(spi, xfer, is_first_msg,
1063 ret = tegra_spi_start_transfer_one(spi, xfer, cmd1);
1066 "spi can not start transfer, err %d\n", ret);
1075 "spi transfer timeout, err %d\n", ret);
1102 tegra_spi_transfer_end(spi);
1108 tspi->cs_control = spi;
1110 tegra_spi_transfer_end(spi);
1114 tegra_spi_transfer_end(spi);
1288 .compatible = "nvidia,tegra114-spi",
1291 .compatible = "nvidia,tegra124-spi",
1294 .compatible = "nvidia,tegra210-spi",
1317 if (of_property_read_u32(pdev->dev.of_node, "spi-max-frequency",
1321 /* the spi->mode bits understood by this driver: */
1332 bus_num = of_alias_get_id(pdev->dev.of_node, "spi");
1362 tspi->clk = devm_clk_get(&pdev->dev, "spi");
1369 tspi->rst = devm_reset_control_get_exclusive(&pdev->dev, "spi");
1528 .name = "spi-tegra114",
1537 MODULE_ALIAS("platform:spi-tegra114");