spi: add spi_master flag word
[deliverable/linux.git] / include / linux / spi / spi.h
index a0faa18f7b1b343fcf68e18f7aecb48128a37afb..c47c4b4da97e5a606ab2823d3126a32f42e446f0 100644 (file)
@@ -80,6 +80,8 @@ struct spi_device {
 #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 */
        u8                      bits_per_word;
        int                     irq;
        void                    *controller_state;
@@ -245,6 +247,13 @@ struct spi_master {
         */
        u16                     dma_alignment;
 
+       /* spi_device.mode flags understood by this controller driver */
+       u16                     mode_bits;
+
+       /* other constraints relevant to this driver */
+       u16                     flags;
+#define SPI_MASTER_HALF_DUPLEX BIT(0)          /* can't do full duplex */
+
        /* Setup mode and clock, etc (spi driver may call many times).
         *
         * IMPORTANT:  this may be called when transfers to another
@@ -523,30 +532,7 @@ static inline void spi_message_free(struct spi_message *m)
        kfree(m);
 }
 
-/**
- * spi_setup - setup SPI mode and clock rate
- * @spi: the device whose settings are being modified
- * Context: can sleep, and no requests are queued to the device
- *
- * SPI protocol drivers may need to update the transfer mode if the
- * device doesn't work with its default.  They may likewise need
- * to update clock rates or word sizes from initial values.  This function
- * changes those settings, and must be called from a context that can sleep.
- * Except for SPI_CS_HIGH, which takes effect immediately, the changes take
- * effect the next time the device is selected and data is transferred to
- * or from it.  When this function returns, the spi device is deselected.
- *
- * Note that this call will fail if the protocol driver specifies an option
- * that the underlying controller or its driver does not support.  For
- * example, not all hardware supports wire transfers using nine bit words,
- * LSB-first wire encoding, or active-high chipselects.
- */
-static inline int
-spi_setup(struct spi_device *spi)
-{
-       return spi->master->setup(spi);
-}
-
+extern int spi_setup(struct spi_device *spi);
 
 /**
  * spi_async - asynchronous SPI transfer
This page took 0.027604 seconds and 5 git commands to generate.