Signed-off-by: Adrian Fiergolski <adrian.fiergol...@cern.ch>
---
 drivers/spi/spi.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 0239b45..d2267e9 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -1549,6 +1549,17 @@ of_register_spi_device(struct spi_master *master, struct 
device_node *nc)
        }
        spi->max_speed_hz = value;
 
+       /* Device bits-per-word */
+       if( ! of_property_read_u32(nc, "spi-bits-per-word", &value) ){
+         if( value > 32 )
+           dev_warn(&master->dev,
+                    "bits-per-word %d not supported\n",
+                    value);
+         else
+           spi->bits_per_word = value;
+       }
+
+
        /* Store a pointer to the node in the device structure */
        of_node_get(nc);
        spi->dev.of_node = nc;
@@ -1626,6 +1637,13 @@ static int acpi_spi_add_resource(struct acpi_resource 
*ares, void *data)
 
                        spi->max_speed_hz = sb->connection_speed;
 
+                       if(sb->data_bit_length > 32)
+                                   dev_warn(&master->dev,
+                                            "bits-per-word %d not supported\n",
+                                            sb->data_bit_length);
+                       else
+                         spi->bits_per_word = sb->data_bit_length;
+
                        if (sb->clock_phase == ACPI_SPI_SECOND_PHASE)
                                spi->mode |= SPI_CPHA;
                        if (sb->clock_polarity == ACPI_SPI_START_HIGH)
--
2.9.3

Reply via email to