Lines Matching refs:spi

15 #include <linux/spi/spi.h>

19 #define DRIVER_NAME "rockchip-spi"
153 /* sclk_out: spi master internal logic in rk3x can support 50Mhz */
206 bool cs_inactive; /* spi slave tansmition stop when cs inactive */
232 dev_warn(rs->dev, "spi controller is in busy state!\n");
250 static void rockchip_spi_set_cs(struct spi_device *spi, bool enable)
252 struct spi_controller *ctlr = spi->controller;
254 bool cs_asserted = spi->mode & SPI_CS_HIGH ? enable : !enable;
257 if (cs_asserted == rs->cs_asserted[spi->chip_select]) {
265 if (spi->cs_gpiod) {
268 ROCKCHIP_SPI_SET_BITS(rs->regs + ROCKCHIP_SPI_SER, BIT(spi->chip_select));
271 if (spi->cs_gpiod) {
274 ROCKCHIP_SPI_CLR_BITS(rs->regs + ROCKCHIP_SPI_SER, BIT(spi->chip_select));
281 rs->cs_asserted[spi->chip_select] = cs_asserted;
288 /* stop running spi transfer
332 * level while spi is enabled, so instead make sure to leave
366 /* When int_cs_inactive comes, spi slave abort */
509 /* rx must be started before tx due to spi instinct */
532 static int rockchip_spi_config(struct rockchip_spi *rs, struct spi_device *spi, struct spi_transfer *xfer, bool use_dma,
546 cr0 |= (spi->mode & 0x3U) << CR0_SCPH_OFFSET;
547 if (spi->mode & SPI_LSB_FIRST) {
550 if (spi->mode & SPI_CS_HIGH) {
551 cr0 |= BIT(spi->chip_select) << CR0_SOI_OFFSET;
632 static size_t rockchip_spi_max_transfer_size(struct spi_device *spi)
694 static int rockchip_spi_transfer_one(struct spi_controller *ctlr, struct spi_device *spi, struct spi_transfer *xfer)
714 use_dma = ctlr->can_dma ? ctlr->can_dma(ctlr, spi, xfer) : false;
716 ret = rockchip_spi_config(rs, spi, xfer, use_dma, ctlr->slave);
728 static bool rockchip_spi_can_dma(struct spi_controller *ctlr, struct spi_device *spi, struct spi_transfer *xfer)
733 /* if the numbor of spi words to transfer is less than the fifo
750 slave_mode = of_property_read_bool(np, "spi-slave");
1051 .compatible = "rockchip,px30-spi",
1054 .compatible = "rockchip,rk3036-spi",
1057 .compatible = "rockchip,rk3066-spi",
1060 .compatible = "rockchip,rk3188-spi",
1063 .compatible = "rockchip,rk3228-spi",
1066 .compatible = "rockchip,rk3288-spi",
1069 .compatible = "rockchip,rk3308-spi",
1072 .compatible = "rockchip,rk3328-spi",
1075 .compatible = "rockchip,rk3368-spi",
1078 .compatible = "rockchip,rk3399-spi",
1081 .compatible = "rockchip,rv1108-spi",
1084 .compatible = "rockchip,rv1126-spi",