• Douglas Anderson's avatar
    drm/bridge: ti-sn65dsi86: Export bridge GPIOs to Linux · 27ed2b3f
    Douglas Anderson authored
    The ti-sn65dsi86 MIPI DSI to eDP bridge chip has 4 pins on it that can
    be used as GPIOs in a system.  Each pin can be configured as input,
    output, or a special function for the bridge chip.  These are:
    - GPIO1: SUSPEND Input
    - GPIO2: DSIA VSYNC
    - GPIO3: DSIA HSYNC or VSYNC
    - GPIO4: PWM
    
    Let's expose these pins as GPIOs.  A few notes:
    - Access to ti-sn65dsi86 is via i2c so we set "can_sleep".
    - These pins can't be configured for IRQ.
    - There are no programmable pulls or other fancy features.
    - Keeping the bridge chip powered might be expensive.  The driver is
      setup such that if all used GPIOs are only inputs we'll power the
      bridge chip on just long enough to read the GPIO and then power it
      off again.  Setting a GPIO as output will keep the bridge powered.
    - If someone releases a GPIO we'll implicitly switch it to an input so
      we no longer need to keep the bridge powered for it.
    
    Because of all of the above limitations we just need to implement a
    bare-bones GPIO driver.  The device tree bindings already account for
    this device being a GPIO controller so we only need the driver changes
    for it.
    
    NOTE: Despite the fact that these pins are nominally muxable I don't
    believe it makes sense to expose them through the pinctrl interface as
    well as the GPIO interface.  The special functions are things that the
    bridge chip driver itself would care about and it can just configure
    the pins as needed.
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Reviewed-by: default avatarStephen Boyd <swboyd@chromium.org>
    Reviewed-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
    Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    [added pdata->gchip.base = -1;]
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200507143354.v5.1.Ia50267a5549392af8b37e67092ca653a59c95886@changeid
    27ed2b3f
ti-sn65dsi86.c 34.2 KB