drm/panel: Add prepare_prev_first flag to drm_panel
authorDave Stevenson <dave.stevenson@raspberrypi.com>
Mon, 5 Dec 2022 17:33:27 +0000 (17:33 +0000)
committerMaxime Ripard <maxime@cerno.tech>
Thu, 8 Dec 2022 08:56:57 +0000 (09:56 +0100)
Mapping to the drm_bridge flag pre_enable_prev_first,
add a new flag prepare_prev_first to drm_panel to allow
the panel driver to request that the upstream bridge should
be pre_enabled before the panel prepare.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20221205173328.1395350-6-dave.stevenson@raspberrypi.com
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
drivers/gpu/drm/bridge/panel.c
include/drm/drm_panel.h

index 216af76d00427b52b5a9392969798fe2c5f1f62c..03c3274dc3d9d246cf1264a316285de8add89470 100644 (file)
@@ -364,6 +364,8 @@ struct drm_bridge *devm_drm_panel_bridge_add_typed(struct device *dev,
                devres_free(ptr);
        }
 
+       bridge->pre_enable_prev_first = panel->prepare_prev_first;
+
        return bridge;
 }
 EXPORT_SYMBOL(devm_drm_panel_bridge_add_typed);
index 994bfcdd84c559f88d57496b1117490ec9f3b31e..432fab2347ebf5d56dba149797510ab959c0612a 100644 (file)
@@ -188,6 +188,16 @@ struct drm_panel {
         * Panel entry in registry.
         */
        struct list_head list;
+
+       /**
+        * @prepare_prev_first:
+        *
+        * The previous controller should be prepared first, before the prepare
+        * for the panel is called. This is largely required for DSI panels
+        * where the DSI host controller should be initialised to LP-11 before
+        * the panel is powered up.
+        */
+       bool prepare_prev_first;
 };
 
 void drm_panel_init(struct drm_panel *panel, struct device *dev,