Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6f166e3833d953f0acf77eb7d426840da9e1a87f
Commit:     6f166e3833d953f0acf77eb7d426840da9e1a87f
Parent:     4ef7af50373778ee248a2493c9cf62a2299806a8
Author:     Anton Vorontsov <[EMAIL PROTECTED]>
AuthorDate: Tue Jul 31 00:38:43 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Tue Jul 31 15:39:40 2007 -0700

    spidev supports more communications modes
    
    The spidev driver doesn't currently expose all SPI communications modes to
    userspace.  This passes them all through to the driver.
    
    Two of them are potentially troublesome, in the sense that they could cause
    hardware conflicts on shared busses.  It might be appropriate to add some
    privilege checks for for those modes.
    
    Signed-off-by: Anton Vorontsov <[EMAIL PROTECTED]>
    Signed-off-by: David Brownell <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 drivers/spi/spidev.c       |   13 ++++++++++---
 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 38b60ad..630f781 100644
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
@@ -55,9 +55,16 @@
 static unsigned long   minors[N_SPI_MINORS / BITS_PER_LONG];
 
 
-/* Bit masks for spi_device.mode management */
-#define SPI_MODE_MASK                  (SPI_CPHA | SPI_CPOL)
-
+/* Bit masks for spi_device.mode management.  Note that incorrect
+ * settings for CS_HIGH and 3WIRE can cause *lots* of trouble for other
+ * devices on a shared bus:  CS_HIGH, because this device will be
+ * active when it shouldn't be;  3WIRE, because when active it won't
+ * behave as it should.
+ *
+ * REVISIT should changing those two modes be privileged?
+ */
+#define SPI_MODE_MASK          (SPI_CPHA | SPI_CPOL | SPI_CS_HIGH \
+                               | SPI_LSB_FIRST | SPI_3WIRE | SPI_LOOP)
 
 struct spidev_data {
        struct device           dev;
diff --git a/include/linux/spi/spidev.h b/include/linux/spi/spidev.h
index 7d700be..c93ef9d 100644
--- a/include/linux/spi/spidev.h
+++ b/include/linux/spi/spidev.h
@@ -35,6 +35,10 @@
 #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
 
 /*---------------------------------------------------------------------------*/
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to