Merge remote-tracking branch 'spi/fix/grant' into spi-linus
[linux-2.6-block.git] / drivers / spi / spi.c
index 3738e7cbff33208acd6963111d342d7df05914e3..32b7bb111eb6b53d9e96808f7bd5fd0982cffd9d 100644 (file)
@@ -1379,6 +1379,14 @@ static int __spi_async(struct spi_device *spi, struct spi_message *message)
                        xfer->bits_per_word = spi->bits_per_word;
                if (!xfer->speed_hz)
                        xfer->speed_hz = spi->max_speed_hz;
+               if (master->bits_per_word_mask) {
+                       /* Only 32 bits fit in the mask */
+                       if (xfer->bits_per_word > 32)
+                               return -EINVAL;
+                       if (!(master->bits_per_word_mask &
+                                       BIT(xfer->bits_per_word - 1)))
+                               return -EINVAL;
+               }
        }
 
        message->spi = spi;