]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/display: bridge-connector: attach the encoder to the created connector
authorLuca Ceresoli <luca.ceresoli@bootlin.com>
Thu, 23 Apr 2026 09:16:55 +0000 (11:16 +0200)
committerLuca Ceresoli <luca.ceresoli@bootlin.com>
Thu, 30 Apr 2026 08:22:52 +0000 (10:22 +0200)
Currently all users of the bridge-connector must call
drm_connector_attach_encoder() immediately after a successful
drm_bridge_connector_init().

This is an unnecessary burden for users. Move the call to the end of
drm_bridge_connector_init() so all callers can be simplified.

Update documentation accordingly, rewording a bit the whole paragraph which
would otherwise become poorly readable due to the growing list of actions.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://patch.msgid.link/20260423-drm-bridge-connector-attach_encoder-v2-1-2ae6ca69b390@bootlin.com
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
drivers/gpu/drm/display/drm_bridge_connector.c

index 39cc18f78eda11ba35954f75315f646c0cb0d8e6..d85ceb80c1379c0eab23845e401781d2cc603fb7 100644 (file)
@@ -773,8 +773,11 @@ static void drm_bridge_connector_put_bridges(struct drm_device *dev, void *data)
  * @drm: the DRM device
  * @encoder: the encoder where the bridge chain starts
  *
- * Allocate, initialise and register a &drm_bridge_connector with the @drm
- * device. The connector is associated with a chain of bridges that starts at
+ * Create a new &drm_bridge_connector for the @drm device. The connector is
+ * allocated, initialised, registered with the @drm device and attached to
+ * @encoder.
+ *
+ * The connector is associated with a chain of bridges that starts at
  * the @encoder. All bridges in the chain shall report bridge operation flags
  * (&drm_bridge->ops) and bridge output type (&drm_bridge->type), and none of
  * them may create a DRM connector directly.
@@ -1055,6 +1058,10 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm,
            IS_ENABLED(CONFIG_DRM_DISPLAY_HDCP_HELPER))
                drm_connector_attach_content_protection_property(connector, true);
 
+       ret = drm_connector_attach_encoder(connector, encoder);
+       if (ret)
+               return ERR_PTR(ret);
+
        return connector;
 }
 EXPORT_SYMBOL_GPL(drm_bridge_connector_init);