• Martin Sperl's avatar
    spi: bcm2835: set up spi-mode before asserting cs-gpio · ca861dd0
    Martin Sperl authored
    When using reverse polarity for clock (spi-cpol) on a device
    the clock line gets altered after chip-select has been asserted
    resulting in an additional clock beat, which confuses hardware.
    
    This did not show when using native-CS, as the same register
    is used to control cs as well as polarity, so the changes came
    into effect at the same time. Unfortunately this is not true
    with gpio-cs.
    
    To avoid this situation this patch moves the setup of polarity
    (spi-cpol and spi-cpha) outside of the chip-select into
    prepare_message, which is run prior to asserting chip-select.
    
    Also fixes resetting 3-wire mode after use of rx-mode, so that
    a 3-Wire sequence TX, RX, TX works as well (right now it runs
    TX, RX, RX instead)
    Reported-by: default avatarNoralf Tronnes <noralf@tronnes.org>
    Signed-off-by: default avatarMartin Sperl <kernel@martin.sperl.org>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    ca861dd0
spi-bcm2835.c 23.2 KB