• Johan Hovold's avatar
    Revert "gpiolib: Split GPIO flags parsing and GPIO configuration" · 85b03b30
    Johan Hovold authored
    This reverts commit 923b93e4.
    Make sure consumers do not overwrite gpio flags for pins that have
    already been claimed.
    While adding support for gpio drivers to refuse a request using
    unsupported flags, the order of when the requested flag was checked and
    the new flags were applied was reversed to that consumers could
    overwrite flags for already requested gpios.
    This not only affects device-tree setups where two drivers could request
    the same gpio using conflicting configurations, but also allowed user
    space to clear gpio flags for already claimed pins simply by attempting
    to export them through the sysfs interface. By for example clearing the
    FLAG_ACTIVE_LOW flag this way, user space could effectively change the
    polarity of a signal.
    Reverting this change obviously prevents gpio drivers from doing sanity
    checks on the flags in their request callbacks. Fortunately only one
    recently added driver (gpio-tps65218 in v4.6) appears to do this, and a
    follow up patch could restore this functionality through a different
    Cc: stable <stable@vger.kernel.org>	# 4.4
    Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
    Signed-off-by: Linus Walleij's avatarLinus Walleij <linus.walleij@linaro.org>
gpiolib.c 82.9 KB