• Charles Keepax's avatar
    spi: cadence: Correct handling of native chipselect · 61acd19f
    Charles Keepax authored
    To fix a regression on the Cadence SPI driver, this patch reverts
    commit 6046f540 ("spi: cadence: Fix default polarity of native
    chipselect").
    
    This patch was not the correct fix for the issue. The SPI framework
    calls the set_cs line with the logic level it desires on the chip select
    line, as such the old is_high handling was correct. However, this was
    broken by the fact that before commit 3e5ec1db ("spi: Fix SPI_CS_HIGH
    setting when using native and GPIO CS") all controllers that offered
    the use of a GPIO chip select had SPI_CS_HIGH applied, even for hardware
    chip selects. This caused the value passed into the driver to be inverted.
    Which unfortunately makes it look like a logical enable the chip select
    value.
    
    Since the core was corrected to not unconditionally apply SPI_CS_HIGH,
    the Cadence driver, whilst using the hardware chip select, will deselect
    the chip select every time we attempt to communicate with the device,
    which results in failed communications.
    
    Fixes: 3e5ec1db ("spi: Fix SPI_CS_HIGH setting when using native and GPIO CS")
    Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
    Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20191126164140.6240-1-ckeepax@opensource.cirrus.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    61acd19f
spi-cadence.c 20.7 KB