The TFP410 has a powerdown pin that can be connected to a GPIO to
control power saving. The DT bindings define a corresponding property,
but the driver doesn't implement support for it. Fix that.

Signed-off-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
Reviewed-by: Tomi Valkeinen <tomi.valkei...@ti.com>
Reviewed-by: Jyri Sarha <jsa...@ti.com>
---
 drivers/gpu/drm/bridge/ti-tfp410.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c 
b/drivers/gpu/drm/bridge/ti-tfp410.c
index e4280f5af9f5..d25d23cfe3f5 100644
--- a/drivers/gpu/drm/bridge/ti-tfp410.c
+++ b/drivers/gpu/drm/bridge/ti-tfp410.c
@@ -32,6 +32,7 @@ struct tfp410 {
        struct i2c_adapter      *ddc;
        struct gpio_desc        *hpd;
        struct delayed_work     hpd_work;
+       struct gpio_desc        *powerdown;
 
        struct device *dev;
 };
@@ -139,8 +140,24 @@ static int tfp410_attach(struct drm_bridge *bridge)
        return 0;
 }
 
+static void tfp410_enable(struct drm_bridge *bridge)
+{
+       struct tfp410 *dvi = drm_bridge_to_tfp410(bridge);
+
+       gpiod_set_value_cansleep(dvi->powerdown, 0);
+}
+
+static void tfp410_disable(struct drm_bridge *bridge)
+{
+       struct tfp410 *dvi = drm_bridge_to_tfp410(bridge);
+
+       gpiod_set_value_cansleep(dvi->powerdown, 1);
+}
+
 static const struct drm_bridge_funcs tfp410_bridge_funcs = {
        .attach         = tfp410_attach,
+       .enable         = tfp410_enable,
+       .disable        = tfp410_disable,
 };
 
 static void tfp410_hpd_work_func(struct work_struct *work)
@@ -229,6 +246,13 @@ static int tfp410_init(struct device *dev)
        if (ret)
                goto fail;
 
+       dvi->powerdown = devm_gpiod_get_optional(dev, "powerdown",
+                                                GPIOD_OUT_HIGH);
+       if (IS_ERR(dvi->powerdown)) {
+               dev_err(dev, "failed to parse powerdown gpio\n");
+               return PTR_ERR(dvi->powerdown);
+       }
+
        if (dvi->hpd) {
                INIT_DELAYED_WORK(&dvi->hpd_work, tfp410_hpd_work_func);
 
-- 
Regards,

Laurent Pinchart

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to