mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	spi: uapi: unify SPI modes into a single spi.h header
This change moves all the SPI mode bits into a separate 'spi.h' header in uAPI. This is meant to re-use these definitions inside the kernel as well as export them to userspace (via uAPI). The SPI mode definitions have usually been duplicated between between 'include/linux/spi/spi.h' and 'include/uapi/linux/spi/spidev.h', so whenever adding a new entry, this would need to be put in both headers. They've been moved from 'include/linux/spi/spi.h', since that seems a bit more complete; the bits have descriptions and there is the SPI_MODE_X_MASK. This change also does a conversion of these bitfields to _BITUL() macro. Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> Link: https://lore.kernel.org/r/20201221152936.53873-1-alexandru.ardelean@analog.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
		
							parent
							
								
									22a6d41c87
								
							
						
					
					
						commit
						f7005142da
					
				
					 3 changed files with 34 additions and 50 deletions
				
			
		| 
						 | 
					@ -15,6 +15,8 @@
 | 
				
			||||||
#include <linux/gpio/consumer.h>
 | 
					#include <linux/gpio/consumer.h>
 | 
				
			||||||
#include <linux/ptp_clock_kernel.h>
 | 
					#include <linux/ptp_clock_kernel.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <uapi/linux/spi/spi.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct dma_chan;
 | 
					struct dma_chan;
 | 
				
			||||||
struct property_entry;
 | 
					struct property_entry;
 | 
				
			||||||
struct spi_controller;
 | 
					struct spi_controller;
 | 
				
			||||||
| 
						 | 
					@ -165,27 +167,6 @@ struct spi_device {
 | 
				
			||||||
	u8			bits_per_word;
 | 
						u8			bits_per_word;
 | 
				
			||||||
	bool			rt;
 | 
						bool			rt;
 | 
				
			||||||
	u32			mode;
 | 
						u32			mode;
 | 
				
			||||||
#define	SPI_CPHA	0x01			/* clock phase */
 | 
					 | 
				
			||||||
#define	SPI_CPOL	0x02			/* clock polarity */
 | 
					 | 
				
			||||||
#define	SPI_MODE_0	(0|0)			/* (original MicroWire) */
 | 
					 | 
				
			||||||
#define	SPI_MODE_1	(0|SPI_CPHA)
 | 
					 | 
				
			||||||
#define	SPI_MODE_2	(SPI_CPOL|0)
 | 
					 | 
				
			||||||
#define	SPI_MODE_3	(SPI_CPOL|SPI_CPHA)
 | 
					 | 
				
			||||||
#define	SPI_MODE_X_MASK	(SPI_CPOL|SPI_CPHA)
 | 
					 | 
				
			||||||
#define	SPI_CS_HIGH	0x04			/* chipselect active high? */
 | 
					 | 
				
			||||||
#define	SPI_LSB_FIRST	0x08			/* per-word bits-on-wire */
 | 
					 | 
				
			||||||
#define	SPI_3WIRE	0x10			/* SI/SO signals shared */
 | 
					 | 
				
			||||||
#define	SPI_LOOP	0x20			/* loopback mode */
 | 
					 | 
				
			||||||
#define	SPI_NO_CS	0x40			/* 1 dev/bus, no chipselect */
 | 
					 | 
				
			||||||
#define	SPI_READY	0x80			/* slave pulls low to pause */
 | 
					 | 
				
			||||||
#define	SPI_TX_DUAL	0x100			/* transmit with 2 wires */
 | 
					 | 
				
			||||||
#define	SPI_TX_QUAD	0x200			/* transmit with 4 wires */
 | 
					 | 
				
			||||||
#define	SPI_RX_DUAL	0x400			/* receive with 2 wires */
 | 
					 | 
				
			||||||
#define	SPI_RX_QUAD	0x800			/* receive with 4 wires */
 | 
					 | 
				
			||||||
#define	SPI_CS_WORD	0x1000			/* toggle cs after each word */
 | 
					 | 
				
			||||||
#define	SPI_TX_OCTAL	0x2000			/* transmit with 8 wires */
 | 
					 | 
				
			||||||
#define	SPI_RX_OCTAL	0x4000			/* receive with 8 wires */
 | 
					 | 
				
			||||||
#define	SPI_3WIRE_HIZ	0x8000			/* high impedance turnaround */
 | 
					 | 
				
			||||||
	int			irq;
 | 
						int			irq;
 | 
				
			||||||
	void			*controller_state;
 | 
						void			*controller_state;
 | 
				
			||||||
	void			*controller_data;
 | 
						void			*controller_data;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										31
									
								
								include/uapi/linux/spi/spi.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								include/uapi/linux/spi/spi.h
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
 | 
				
			||||||
 | 
					#ifndef _UAPI_SPI_H
 | 
				
			||||||
 | 
					#define _UAPI_SPI_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <linux/const.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define	SPI_CPHA		_BITUL(0)	/* clock phase */
 | 
				
			||||||
 | 
					#define	SPI_CPOL		_BITUL(1)	/* clock polarity */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define	SPI_MODE_0		(0|0)		/* (original MicroWire) */
 | 
				
			||||||
 | 
					#define	SPI_MODE_1		(0|SPI_CPHA)
 | 
				
			||||||
 | 
					#define	SPI_MODE_2		(SPI_CPOL|0)
 | 
				
			||||||
 | 
					#define	SPI_MODE_3		(SPI_CPOL|SPI_CPHA)
 | 
				
			||||||
 | 
					#define	SPI_MODE_X_MASK		(SPI_CPOL|SPI_CPHA)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define	SPI_CS_HIGH		_BITUL(2)	/* chipselect active high? */
 | 
				
			||||||
 | 
					#define	SPI_LSB_FIRST		_BITUL(3)	/* per-word bits-on-wire */
 | 
				
			||||||
 | 
					#define	SPI_3WIRE		_BITUL(4)	/* SI/SO signals shared */
 | 
				
			||||||
 | 
					#define	SPI_LOOP		_BITUL(5)	/* loopback mode */
 | 
				
			||||||
 | 
					#define	SPI_NO_CS		_BITUL(6)	/* 1 dev/bus, no chipselect */
 | 
				
			||||||
 | 
					#define	SPI_READY		_BITUL(7)	/* slave pulls low to pause */
 | 
				
			||||||
 | 
					#define	SPI_TX_DUAL		_BITUL(8)	/* transmit with 2 wires */
 | 
				
			||||||
 | 
					#define	SPI_TX_QUAD		_BITUL(9)	/* transmit with 4 wires */
 | 
				
			||||||
 | 
					#define	SPI_RX_DUAL		_BITUL(10)	/* receive with 2 wires */
 | 
				
			||||||
 | 
					#define	SPI_RX_QUAD		_BITUL(11)	/* receive with 4 wires */
 | 
				
			||||||
 | 
					#define	SPI_CS_WORD		_BITUL(12)	/* toggle cs after each word */
 | 
				
			||||||
 | 
					#define	SPI_TX_OCTAL		_BITUL(13)	/* transmit with 8 wires */
 | 
				
			||||||
 | 
					#define	SPI_RX_OCTAL		_BITUL(14)	/* receive with 8 wires */
 | 
				
			||||||
 | 
					#define	SPI_3WIRE_HIZ		_BITUL(15)	/* high impedance turnaround */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* _UAPI_SPI_H */
 | 
				
			||||||
| 
						 | 
					@ -25,35 +25,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <linux/types.h>
 | 
					#include <linux/types.h>
 | 
				
			||||||
#include <linux/ioctl.h>
 | 
					#include <linux/ioctl.h>
 | 
				
			||||||
 | 
					#include <linux/spi/spi.h>
 | 
				
			||||||
/* User space versions of kernel symbols for SPI clocking modes,
 | 
					 | 
				
			||||||
 * matching <linux/spi/spi.h>
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPI_CPHA		0x01
 | 
					 | 
				
			||||||
#define SPI_CPOL		0x02
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPI_MODE_0		(0|0)
 | 
					 | 
				
			||||||
#define SPI_MODE_1		(0|SPI_CPHA)
 | 
					 | 
				
			||||||
#define SPI_MODE_2		(SPI_CPOL|0)
 | 
					 | 
				
			||||||
#define SPI_MODE_3		(SPI_CPOL|SPI_CPHA)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SPI_CS_HIGH		0x04
 | 
					 | 
				
			||||||
#define SPI_LSB_FIRST		0x08
 | 
					 | 
				
			||||||
#define SPI_3WIRE		0x10
 | 
					 | 
				
			||||||
#define SPI_LOOP		0x20
 | 
					 | 
				
			||||||
#define SPI_NO_CS		0x40
 | 
					 | 
				
			||||||
#define SPI_READY		0x80
 | 
					 | 
				
			||||||
#define SPI_TX_DUAL		0x100
 | 
					 | 
				
			||||||
#define SPI_TX_QUAD		0x200
 | 
					 | 
				
			||||||
#define SPI_RX_DUAL		0x400
 | 
					 | 
				
			||||||
#define SPI_RX_QUAD		0x800
 | 
					 | 
				
			||||||
#define SPI_CS_WORD		0x1000
 | 
					 | 
				
			||||||
#define SPI_TX_OCTAL		0x2000
 | 
					 | 
				
			||||||
#define SPI_RX_OCTAL		0x4000
 | 
					 | 
				
			||||||
#define SPI_3WIRE_HIZ		0x8000
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*---------------------------------------------------------------------------*/
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* IOCTL commands */
 | 
					/* IOCTL commands */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue