Currently the struct drm_device pointer is only needed during the initial
drm_bridge_connector_init() and in drm_bridge_connector_handle_hpd() which
gets it from the struct drm_connector.

This will be insufficient when introducing bridge hotplugging, because:

 * some of the actions in drm_bridge_connector_init() will have to be
   performed later on, when a bridge is hot(un)plugged
 * the connector will be removed and re-added based on hotplug events,
   so the drm_connector might just not exist or its content be cleared

Store the drm_device pointer in struct drm_bridge_connector for any later
needs. Also convert drm_bridge_connector_handle_hpd() to use the newly
stored value.

Signed-off-by: Luca Ceresoli <[email protected]>
---
 drivers/gpu/drm/display/drm_bridge_connector.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c 
b/drivers/gpu/drm/display/drm_bridge_connector.c
index bf9b8a6bca78..62c4cb1e241f 100644
--- a/drivers/gpu/drm/display/drm_bridge_connector.c
+++ b/drivers/gpu/drm/display/drm_bridge_connector.c
@@ -60,6 +60,10 @@ struct drm_bridge_connector {
         * @base: The base DRM connector
         */
        struct drm_connector base;
+       /**
+        * @drm: The DRM device we belong to
+        */
+       struct drm_device *drm;
        /**
         * @encoder:
         *
@@ -157,7 +161,7 @@ static void drm_bridge_connector_handle_hpd(struct 
drm_bridge_connector *bridge_
                                            enum drm_connector_status status)
 {
        struct drm_connector *connector = &bridge_connector->base;
-       struct drm_device *dev = connector->dev;
+       struct drm_device *dev = bridge_connector->drm;
 
        mutex_lock(&dev->mode_config.mutex);
        connector->status = status;
@@ -806,6 +810,7 @@ struct drm_connector *drm_bridge_connector_init(struct 
drm_device *drm,
        if (ret)
                return ERR_PTR(ret);
 
+       bridge_connector->drm = drm;
        bridge_connector->encoder = encoder;
 
        /*

-- 
2.54.0

Reply via email to