• Sourav Poddar's avatar
    spi: conditional checking of mode and transfer bits. · db90a441
    Sourav Poddar authored
    There is a bug in the following patch:
    http://comments.gmane.org/gmane.linux.kernel.spi.devel/14420
    
    spi: DUAL and QUAD support
    
        fix the previous patch some mistake below:
        1. DT in slave node, use "spi-tx-nbits = <1/2/4>" in place of using
           "spi-tx-dual, spi-tx-quad" directly, same to rx. So correct the
           previous way to get the property in @of_register_spi_devices().
        2. Change the value of transfer bit macro(SPI_NBITS_SINGLE, SPI_NBITS_DUAL
           SPI_NBITS_QUAD) to 0x01, 0x02 and 0x04 to match the actual wires.
        3. Add the following check
           (1)keep the tx_nbits and rx_nbits in spi_transfer is not beyond the
              single, dual and quad.
           (2)keep tx_nbits and rx_nbits are contained by @spi_device->mode
              example: if @spi_device->mode = DUAL, then tx/rx_nbits can not be set
                       to QUAD(SPI_NBITS_QUAD)
           (3)if "@spi_device->mode & SPI_3WIRE", then tx/rx_nbits should be in
              single(SPI_NBITS_SINGLE)
    
    Checking of the tx/rx transfer bits and mode bits should be done conditionally
    based on type of buffer filled else EINVAL condition will
    always get hit either for rx or tx.
    Signed-off-by: default avatarSourav Poddar <sourav.poddar@ti.com>
    Signed-off-by: default avatarMark Brown <broonie@linaro.org>
    db90a441
spi.c 50.7 KB