Message ID | 20220919-v1-9-4844816c9808@baylibre.com |
---|---|
State | Superseded |
Headers | show |
Series | Add MT8195 HDMI support | expand |
Il 19/09/22 18:56, Guillaume Ranquet ha scritto: > Add a flag to indicate support for an external connector > > Signed-off-by: Guillaume Ranquet <granquet@baylibre.com> > > diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi_common.c b/drivers/gpu/drm/mediatek/mtk_hdmi_common.c > index 86653ebaacfd..30407603d693 100644 > --- a/drivers/gpu/drm/mediatek/mtk_hdmi_common.c > +++ b/drivers/gpu/drm/mediatek/mtk_hdmi_common.c > @@ -199,20 +199,22 @@ int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi, struct platform_device *pdev, > goto put_device; > } > > - remote = of_graph_get_remote_node(np, 1, 0); > - if (!remote) { > - ret = -EINVAL; > - goto put_device; > - } > - > - if (!of_device_is_compatible(remote, "hdmi-connector")) { > - hdmi->next_bridge = of_drm_find_bridge(remote); > - if (!hdmi->next_bridge) { > - dev_err(dev, "Waiting for external bridge\n"); > - of_node_put(remote); > - ret = -EPROBE_DEFER; > + if (hdmi->conf->has_connector) { If MT8195's DPI uses the internal HDMI->DP converter, I say that the external DP has HDMI input and DP output. Logically, you can't have a HDMI port that's connected to nothing. Please, rethink this change. Regards, Angelo
On Tue, 20 Sep 2022 12:38, AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> wrote: >Il 19/09/22 18:56, Guillaume Ranquet ha scritto: >> Add a flag to indicate support for an external connector >> >> Signed-off-by: Guillaume Ranquet <granquet@baylibre.com> >> >> diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi_common.c b/drivers/gpu/drm/mediatek/mtk_hdmi_common.c >> index 86653ebaacfd..30407603d693 100644 >> --- a/drivers/gpu/drm/mediatek/mtk_hdmi_common.c >> +++ b/drivers/gpu/drm/mediatek/mtk_hdmi_common.c >> @@ -199,20 +199,22 @@ int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi, struct platform_device *pdev, >> goto put_device; >> } >> >> - remote = of_graph_get_remote_node(np, 1, 0); >> - if (!remote) { >> - ret = -EINVAL; >> - goto put_device; >> - } >> - >> - if (!of_device_is_compatible(remote, "hdmi-connector")) { >> - hdmi->next_bridge = of_drm_find_bridge(remote); >> - if (!hdmi->next_bridge) { >> - dev_err(dev, "Waiting for external bridge\n"); >> - of_node_put(remote); >> - ret = -EPROBE_DEFER; >> + if (hdmi->conf->has_connector) { > >If MT8195's DPI uses the internal HDMI->DP converter, I say that the external >DP has HDMI input and DP output. >Logically, you can't have a HDMI port that's connected to nothing. > >Please, rethink this change. > >Regards, >Angelo Hi Angelo, Sorry for the late answer. I have reworked this for V2, to use an hdmi connector device node to "bind" both the hdmi and hdmi-ddc driver together as with "legacy" code. So this patch is dropped in V2 (hopefully ready soon). Just to make things clear, the hardware path on mt8195 is: DPI1 -> HDMI Tx -> HDMI Phy DP Intf1 -> DP Tx -> USB Type C Mux -> DP over USB-C So there's no HDMI->DP converter involved. Thx, Guillaume.
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi_common.c b/drivers/gpu/drm/mediatek/mtk_hdmi_common.c index 86653ebaacfd..30407603d693 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi_common.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi_common.c @@ -199,20 +199,22 @@ int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi, struct platform_device *pdev, goto put_device; } - remote = of_graph_get_remote_node(np, 1, 0); - if (!remote) { - ret = -EINVAL; - goto put_device; - } - - if (!of_device_is_compatible(remote, "hdmi-connector")) { - hdmi->next_bridge = of_drm_find_bridge(remote); - if (!hdmi->next_bridge) { - dev_err(dev, "Waiting for external bridge\n"); - of_node_put(remote); - ret = -EPROBE_DEFER; + if (hdmi->conf->has_connector) { + remote = of_graph_get_remote_node(np, 1, 0); + if (!remote) { + ret = -EINVAL; goto put_device; } + + if (!of_device_is_compatible(remote, "hdmi-connector")) { + hdmi->next_bridge = of_drm_find_bridge(remote); + if (!hdmi->next_bridge) { + dev_err(dev, "Waiting for external bridge\n"); + of_node_put(remote); + ret = -EPROBE_DEFER; + goto put_device; + } + } } i2c_np = of_parse_phandle(remote, "ddc-i2c-bus", 0); @@ -325,6 +327,7 @@ int mtk_drm_hdmi_remove(struct platform_device *pdev) static const struct mtk_hdmi_conf mtk_hdmi_conf_mt2701 = { .tz_disabled = true, .has_cec = true, + .has_connector = true, .bridge_funcs = &mtk_mt8183_hdmi_bridge_funcs, .mtk_hdmi_output_init = mtk_hdmi_output_init_mt8183, .mtk_hdmi_clk_disable = mtk_hdmi_clk_disable_audio_mt8183, @@ -338,6 +341,7 @@ static const struct mtk_hdmi_conf mtk_hdmi_conf_mt8167 = { .max_mode_clock = 148500, .cea_modes_only = true, .has_cec = true, + .has_connector = true, .bridge_funcs = &mtk_mt8183_hdmi_bridge_funcs, .mtk_hdmi_output_init = mtk_hdmi_output_init_mt8183, .mtk_hdmi_clk_disable = mtk_hdmi_clk_disable_audio_mt8183, diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi_common.h b/drivers/gpu/drm/mediatek/mtk_hdmi_common.h index 921bde150e11..62a14435be69 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi_common.h +++ b/drivers/gpu/drm/mediatek/mtk_hdmi_common.h @@ -32,6 +32,7 @@ struct mtk_hdmi_conf { bool tz_disabled; bool cea_modes_only; bool has_cec; + bool has_connector; unsigned long max_mode_clock; const struct drm_bridge_funcs *bridge_funcs; void (*mtk_hdmi_output_init)(struct mtk_hdmi *hdmi);
Add a flag to indicate support for an external connector Signed-off-by: Guillaume Ranquet <granquet@baylibre.com>