diff options
Diffstat (limited to 'include/linux/spi/spi.h')
| -rw-r--r-- | include/linux/spi/spi.h | 34 | 
1 files changed, 27 insertions, 7 deletions
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index 9a32495fbb1f..4fa26b9a3572 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h @@ -26,6 +26,7 @@ struct spi_controller;  struct spi_transfer;  struct spi_controller_mem_ops;  struct spi_controller_mem_caps; +struct spi_message;  /*   * INTERFACES between SPI master-side drivers and SPI slave protocol handlers, @@ -119,6 +120,8 @@ struct spi_delay {  extern int spi_delay_to_ns(struct spi_delay *_delay, struct spi_transfer *xfer);  extern int spi_delay_exec(struct spi_delay *_delay, struct spi_transfer *xfer); +extern void spi_transfer_cs_change_delay_exec(struct spi_message *msg, +						  struct spi_transfer *xfer);  /**   * struct spi_device - Controller side proxy for an SPI slave device @@ -223,7 +226,7 @@ struct spi_device {  static_assert((SPI_MODE_KERNEL_MASK & SPI_MODE_USER_MASK) == 0,  	      "SPI_MODE_USER_MASK & SPI_MODE_KERNEL_MASK must not overlap"); -static inline struct spi_device *to_spi_device(struct device *dev) +static inline struct spi_device *to_spi_device(const struct device *dev)  {  	return dev ? container_of(dev, struct spi_device, dev) : NULL;  } @@ -263,7 +266,25 @@ static inline void *spi_get_drvdata(struct spi_device *spi)  	return dev_get_drvdata(&spi->dev);  } -struct spi_message; +static inline u8 spi_get_chipselect(struct spi_device *spi, u8 idx) +{ +	return spi->chip_select; +} + +static inline void spi_set_chipselect(struct spi_device *spi, u8 idx, u8 chipselect) +{ +	spi->chip_select = chipselect; +} + +static inline struct gpio_desc *spi_get_csgpiod(struct spi_device *spi, u8 idx) +{ +	return spi->cs_gpiod; +} + +static inline void spi_set_csgpiod(struct spi_device *spi, u8 idx, struct gpio_desc *csgpiod) +{ +	spi->cs_gpiod = csgpiod; +}  /**   * struct spi_driver - Host side "protocol" driver @@ -1001,6 +1022,9 @@ struct spi_transfer {  	void		*rx_buf;  	unsigned	len; +#define SPI_TRANS_FAIL_NO_START	BIT(0) +	u16		error; +  	dma_addr_t	tx_dma;  	dma_addr_t	rx_dma;  	struct sg_table tx_sg; @@ -1011,6 +1035,7 @@ struct spi_transfer {  	unsigned	cs_change:1;  	unsigned	tx_nbits:3;  	unsigned	rx_nbits:3; +	unsigned	timestamped:1;  #define	SPI_NBITS_SINGLE	0x01 /* 1bit transfer */  #define	SPI_NBITS_DUAL		0x02 /* 2bits transfer */  #define	SPI_NBITS_QUAD		0x04 /* 4bits transfer */ @@ -1027,12 +1052,7 @@ struct spi_transfer {  	struct ptp_system_timestamp *ptp_sts; -	bool		timestamped; -  	struct list_head transfer_list; - -#define SPI_TRANS_FAIL_NO_START	BIT(0) -	u16		error;  };  /**  |