diff options
author | Maxime Ripard <maxime@cerno.tech> | 2022-08-29 15:47:31 +0200 |
---|---|---|
committer | Maxime Ripard <maxime@cerno.tech> | 2022-09-13 16:25:00 +0100 |
commit | 68ded02cb2c23f1aebf026196a793959bd0463dc (patch) | |
tree | 2e7890a1afac53d308cf49cad1e40b768de48dc6 /drivers/gpu/drm/display | |
parent | 6bed2ea3cb3856edf37cca20753e689ee8774793 (diff) | |
download | linux-68ded02cb2c23f1aebf026196a793959bd0463dc.tar.gz |
drm/scdc: Document hotplug gotchas
There's some interactions between the SCDC setup and the disconnection /
reconnection of displays. Let's document it and a solution.
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://lore.kernel.org/r/20220829134731.213478-9-maxime@cerno.tech
Diffstat (limited to 'drivers/gpu/drm/display')
-rw-r--r-- | drivers/gpu/drm/display/drm_scdc_helper.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/drm/display/drm_scdc_helper.c b/drivers/gpu/drm/display/drm_scdc_helper.c index 81881e81ceae..c3ad4ab2b456 100644 --- a/drivers/gpu/drm/display/drm_scdc_helper.c +++ b/drivers/gpu/drm/display/drm_scdc_helper.c @@ -35,6 +35,19 @@ * HDMI 2.0 specification. It is a point-to-point protocol that allows the * HDMI source and HDMI sink to exchange data. The same I2C interface that * is used to access EDID serves as the transport mechanism for SCDC. + * + * Note: The SCDC status is going to be lost when the display is + * disconnected. This can happen physically when the user disconnects + * the cable, but also when a display is switched on (such as waking up + * a TV). + * + * This is further complicated by the fact that, upon a disconnection / + * reconnection, KMS won't change the mode on its own. This means that + * one can't just rely on setting the SCDC status on enable, but also + * has to track the connector status changes using interrupts and + * restore the SCDC status. The typical solution for this is to trigger an + * empty modeset in drm_connector_helper_funcs.detect_ctx(), like what vc4 does + * in vc4_hdmi_reset_link(). */ #define SCDC_I2C_SLAVE_ADDRESS 0x54 |