• Jan Kotas's avatar
    gpio: mmio: Fix bgpio_get_set & bgpio_get_set_multiple · 4f2f95e9
    Jan Kotas authored
    During my regression testing I noticed the cadence GPIO driver
    fails on the latest gpio for-next tree.
    
    I think the reason is this patch:
    commit 96cd559817f2 ("Merge branch 'devel' into for-next")
    
    Here is a part of the test log:
    
    Loopback 8 -> 24
    TESTING: gpio: 488: output direction PASSED
    TESTING: gpio: 504: input direction PASSED
    TESTING: gpio: 488: 0 PASSED
    TESTING: gpio: 488 -> 504: 0 PASSED
    TESTING: gpio: 488: 1 FAILED
    TESTING: gpio: 488 -> 504: 1 FAILED
    TESTING: gpio: 488: 0 PASSED
    TESTING: gpio: 488 -> 504: 0 PASSED
    
    It looks like the issue is that gc->bgpio_dir has changed its meaning.
    It used to be set to the register value (so it was being inverted).
    
    Now it's always set to 1 for output and 0 for input.
    However the bgpio_get_set functions were not updated.
    So they invert the bit again, which means a wrong register
    is being accessed.
    
    This patch fixes that by removing the unnecessary inversion.
    Signed-off-by: default avatarJan Kotas <jank@cadence.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    4f2f95e9
gpio-mmio.c 20.8 KB