• Charles Keepax's avatar
    spi: dw: Correct handling of native chipselect · ada9e3fc
    Charles Keepax authored
    This patch reverts commit 6e0a32d6 ("spi: dw: Fix default polarity
    of native chipselect").
    
    The SPI framework always called the set_cs callback with the logic
    level it desired on the chip select line, which is what the drivers
    original handling supported. commit f3186dd8 ("spi: Optionally
    use GPIO descriptors for CS GPIOs") changed these symantics, but only
    in the case of drivers that also support GPIO chip selects, to true
    meaning apply slave select rather than logic high. This left things in
    an odd state where a driver that only supports hardware chip selects,
    the core would handle polarity but if the driver supported GPIOs as
    well the driver should handle polarity.  At this point the reverted
    change was applied to change the logic in the driver to match new
    system.
    
    This was then broken by commit 3e5ec1db ("spi: Fix SPI_CS_HIGH
    setting when using native and GPIO CS") which reverted the core back
    to consistently calling set_cs with a logic level.
    
    This fix reverts the driver code back to its original state to match
    the current core code. This is probably a better fix as a) the set_cs
    callback is always called with consistent symantics and b) the
    inversion for SPI_CS_HIGH can be handled in the core and doesn't need
    to be coded in each driver supporting it.
    
    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/20191127153936.29719-1-ckeepax@opensource.cirrus.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    ada9e3fc
spi-dw.c 14.2 KB