]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
drm/bridge: ti-sn65dsi86: Enable HPD polling if IRQ is not used
authorFranz Schnyder <franz.schnyder@toradex.com>
Fri, 6 Feb 2026 12:37:36 +0000 (13:37 +0100)
committerDouglas Anderson <dianders@chromium.org>
Fri, 13 Feb 2026 20:42:34 +0000 (12:42 -0800)
Fallback to polling to detect hotplug events on systems without
interrupts.

On systems where the interrupt line of the bridge is not connected,
the bridge cannot notify hotplug events. Only add the
DRM_BRIDGE_OP_HPD flag if an interrupt has been registered
otherwise remain in polling mode.

Fixes: 55e8ff842051 ("drm/bridge: ti-sn65dsi86: Add HPD for DisplayPort connector type")
Cc: stable@vger.kernel.org # 6.16: 9133bc3f0564: drm/bridge: ti-sn65dsi86: Add
Signed-off-by: Franz Schnyder <franz.schnyder@toradex.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
[dianders: Adjusted Fixes/stable line based on discussion]
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Link: https://patch.msgid.link/20260206123758.374555-1-fra.schnyder@gmail.com
drivers/gpu/drm/bridge/ti-sn65dsi86.c

index 276d05d25ad8b81633b405e74e944d302e6f0935..98d64ad791d04009236c8e0ff98abf364c86f644 100644 (file)
@@ -1415,6 +1415,7 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev,
 {
        struct ti_sn65dsi86 *pdata = dev_get_drvdata(adev->dev.parent);
        struct device_node *np = pdata->dev->of_node;
+       const struct i2c_client *client = to_i2c_client(pdata->dev);
        int ret;
 
        pdata->next_bridge = devm_drm_of_get_bridge(&adev->dev, np, 1, 0);
@@ -1433,8 +1434,9 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev,
                           ? DRM_MODE_CONNECTOR_DisplayPort : DRM_MODE_CONNECTOR_eDP;
 
        if (pdata->bridge.type == DRM_MODE_CONNECTOR_DisplayPort) {
-               pdata->bridge.ops = DRM_BRIDGE_OP_EDID | DRM_BRIDGE_OP_DETECT |
-                                   DRM_BRIDGE_OP_HPD;
+               pdata->bridge.ops = DRM_BRIDGE_OP_EDID | DRM_BRIDGE_OP_DETECT;
+               if (client->irq)
+                       pdata->bridge.ops |= DRM_BRIDGE_OP_HPD;
                /*
                 * If comms were already enabled they would have been enabled
                 * with the wrong value of HPD_DISABLE. Update it now. Comms