• Kris Bahnsen's avatar
    spi: spi-gpio: Don't set MOSI as an input if not 3WIRE mode · 3a6f994f
    Kris Bahnsen authored
    The addition of 3WIRE support would affect MOSI direction even
    when still in standard (4 wire) mode. This can lead to MOSI being
    at an invalid logic level when a device driver sets an SPI
    message with a NULL tx_buf.
    
    spi.h states that if tx_buf is NULL then "zeros will be shifted
    out ... " If MOSI is tristated then the data shifted out is subject
    to pull resistors, keepers, or in the absence of those, noise.
    
    This issue came to light when using spi-gpio connected to an
    ADS7843 touchscreen controller. MOSI pulled high when clocking
    MISO data in caused the SPI device to interpret this as a command
    which would put the device in an unexpected and non-functional
    state.
    
    Fixes: 4b859db2 ("spi: spi-gpio: add SPI_3WIRE support")
    Fixes: 5132b3d2 ("spi: gpio: Support 3WIRE high-impedance turn-around")
    Signed-off-by: default avatarKris Bahnsen <kris@embeddedTS.com>
    Link: https://lore.kernel.org/r/20221207230853.6174-1-kris@embeddedTS.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    3a6f994f
spi-gpio.c 14 KB