Hi Paul and Neil,
Am 03.03.2022 um 17:46 schrieb Paul Cercueil paul@crapouillou.net:
Hi Neil,
Le jeu., mars 3 2022 at 17:23:02 +0100, Neil Armstrong narmstrong@baylibre.com a écrit :
Hi, On 26/02/2022 18:12, H. Nikolaus Schaller wrote:
so that specialization drivers like ingenic-dw-hdmi can enable polling. Signed-off-by: H. Nikolaus Schaller hns@goldelico.com
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 9 +++++++++ include/drm/bridge/dw_hdmi.h | 1 + 2 files changed, 10 insertions(+) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index 4befc104d2200..43e375da131e8 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -3217,6 +3217,15 @@ static int dw_hdmi_parse_dt(struct dw_hdmi *hdmi) return 0; } +void dw_hdmi_enable_poll(struct dw_hdmi *hdmi, bool enable) +{
- if (hdmi->bridge.dev)
hdmi->bridge.dev->mode_config.poll_enabled = enable;
- else
dev_warn(hdmi->dev, "no hdmi->bridge.dev");
+} +EXPORT_SYMBOL_GPL(dw_hdmi_enable_poll);
struct dw_hdmi *dw_hdmi_probe(struct platform_device *pdev, const struct dw_hdmi_plat_data *plat_data) { diff --git a/include/drm/bridge/dw_hdmi.h b/include/drm/bridge/dw_hdmi.h index 2a1f85f9a8a3f..963960794b40e 100644 --- a/include/drm/bridge/dw_hdmi.h +++ b/include/drm/bridge/dw_hdmi.h @@ -196,5 +196,6 @@ enum drm_connector_status dw_hdmi_phy_read_hpd(struct dw_hdmi *hdmi, void dw_hdmi_phy_update_hpd(struct dw_hdmi *hdmi, void *data, bool force, bool disabled, bool rxsense); void dw_hdmi_phy_setup_hpd(struct dw_hdmi *hdmi, void *data); +void dw_hdmi_enable_poll(struct dw_hdmi *hdmi, bool enable); #endif /* __IMX_HDMI_H__ */
As I understand, this is because the IRQ line of the dw-hdmi IP isn't connected right ? and you use the display-connector ddc gpio instead ?
Ah, I should finish work for today since I am no longer reading every word properly...
No, we do NOT use the display connector for HPD. We use HPD of the dw-hdmi. Either IRQ is not enabled properly or not working in IRQ mode. But it works if polling is enabled.
According to the CI20 schematic, it is wired properly. So that's strange.
Yes, HTPLG input goes through an 1kΩ + 1µF low-pass filter to debounce HDMI_HTPLG. This goes to the HPD (BGA ball N19). There is an optional Q14 driving HDMI_DETE_N. This could become the hpd-gpios property of the connector in the device tree. But it is optional.
So we have to use dw-hdmi HPD and make it work (in combination with a chained hdmi-connector).
In this case I think the Ingenic DRM core should call drm_kms_helper_poll_init(drm) instead.
Yes, the ingenic-drm driver does not poll for connectors because until now it never has been needed.
Well, if we go back a while we only needed it after introducing the hdmi-connectors and making dw-hdmi a bridge.
Originally the dw-hdmi driver did properly take care of everything (by registering its own connector).
BR and thanks, Nikolaus