diff options
-rw-r--r-- | drivers/spi/spidev.c | 13 | ||||
-rw-r--r-- | include/linux/spi/spidev.h | 4 |
2 files changed, 14 insertions, 3 deletions
diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c index 38b60ad0eda0..630f781aeb19 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c | |||
@@ -55,9 +55,16 @@ | |||
55 | static unsigned long minors[N_SPI_MINORS / BITS_PER_LONG]; | 55 | static unsigned long minors[N_SPI_MINORS / BITS_PER_LONG]; |
56 | 56 | ||
57 | 57 | ||
58 | /* Bit masks for spi_device.mode management */ | 58 | /* Bit masks for spi_device.mode management. Note that incorrect |
59 | #define SPI_MODE_MASK (SPI_CPHA | SPI_CPOL) | 59 | * settings for CS_HIGH and 3WIRE can cause *lots* of trouble for other |
60 | 60 | * devices on a shared bus: CS_HIGH, because this device will be | |
61 | * active when it shouldn't be; 3WIRE, because when active it won't | ||
62 | * behave as it should. | ||
63 | * | ||
64 | * REVISIT should changing those two modes be privileged? | ||
65 | */ | ||
66 | #define SPI_MODE_MASK (SPI_CPHA | SPI_CPOL | SPI_CS_HIGH \ | ||
67 | | SPI_LSB_FIRST | SPI_3WIRE | SPI_LOOP) | ||
61 | 68 | ||
62 | struct spidev_data { | 69 | struct spidev_data { |
63 | struct device dev; | 70 | struct device dev; |
diff --git a/include/linux/spi/spidev.h b/include/linux/spi/spidev.h index 7d700be57490..c93ef9d42a01 100644 --- a/include/linux/spi/spidev.h +++ b/include/linux/spi/spidev.h | |||
@@ -35,6 +35,10 @@ | |||
35 | #define SPI_MODE_2 (SPI_CPOL|0) | 35 | #define SPI_MODE_2 (SPI_CPOL|0) |
36 | #define SPI_MODE_3 (SPI_CPOL|SPI_CPHA) | 36 | #define SPI_MODE_3 (SPI_CPOL|SPI_CPHA) |
37 | 37 | ||
38 | #define SPI_CS_HIGH 0x04 | ||
39 | #define SPI_LSB_FIRST 0x08 | ||
40 | #define SPI_3WIRE 0x10 | ||
41 | #define SPI_LOOP 0x20 | ||
38 | 42 | ||
39 | /*---------------------------------------------------------------------------*/ | 43 | /*---------------------------------------------------------------------------*/ |
40 | 44 | ||