[Letux-kernel] [PATCH 8/8] drm/ingenic: Attach bridge chain to encoders

H. Nikolaus Schaller hns at goldelico.com
Sun Aug 29 18:04:53 CEST 2021



> Am 29.08.2021 um 17:26 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
> 
> So Paul C's code assumes that there is a connector. While dw-hdmi
> assumes there is none.

Just a rough idea:

we could define our own connector driver compatible to
"dw-hdmi-display-connector" and wrapping dw_hdmi_connector_create()
or doing almost the same in its probe function.

Unfortunately that code is declared static, i.e. not available for a second
driver.

Or is it possible to have two functionally different drivers in one?
I.e. add compatble = "dw-hdmi-display-connector" to ingenic_dw_hdmi_dt_ids
and decode that in the proble function? But we still have the problem
that most dw_hdmi_connector_create() internals are not exported.

But refactoring dw-hdmi.c does not seem to be our turf at all...

So I think the right way would be to ask Paul C to modify his patches
so that a bridge without explicit connector can still be handled.

BR,
Nikolaus

PS: this patch makes it also show a green screen without touching dw_hdmi code:

diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 1465eab218e0..6dd90c9c70a7 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -1262,12 +1262,13 @@ static int ingenic_drm_bind(struct device *dev, bool has_components)
                ib->next_bridge = bridge;
 
                ret = drm_bridge_attach(encoder, &ib->bridge, NULL,
-                                       DRM_BRIDGE_ATTACH_NO_CONNECTOR);
+                                       0);
                if (ret) {
                        dev_err(dev, "Unable to attach bridge\n");
                        return ret;
                }
 
+#if 0
                connector = drm_bridge_connector_init(drm, encoder);
                if (IS_ERR(connector)) {
                        dev_err(dev, "Unable to init connector: err = %d\n", PTR_ERR(connector));
@@ -1275,6 +1276,7 @@ static int ingenic_drm_bind(struct device *dev, bool has_components)
                }
 
                drm_connector_attach_encoder(connector, encoder);
+#endif
        }
 
        drm_for_each_encoder(encoder, drm) {




More information about the Letux-kernel mailing list