If a specific design doesn't wire IT66121's interrupt signal output pin up
to the display controller side, then we should not register the interrupt
handler. Such a decision is valid usage, as we can fall back to polling
mode. So, don't make the assumption that a specific board always supports
HPD. Carry out a sanity check on 'client->irq' before using it, fall back
to polling mode if client->irq < 0 is true. Such a design increases the
overall flexibility.

Signed-off-by: Sui Jingfeng <sui.jingf...@linux.dev>
---
 drivers/gpu/drm/bridge/ite-it66121.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/bridge/ite-it66121.c 
b/drivers/gpu/drm/bridge/ite-it66121.c
index 1c3433b5e366..052884058644 100644
--- a/drivers/gpu/drm/bridge/ite-it66121.c
+++ b/drivers/gpu/drm/bridge/ite-it66121.c
@@ -1586,13 +1586,18 @@ static int it66121_probe(struct i2c_client *client)
        ctx->bridge.funcs = &it66121_bridge_funcs;
        ctx->bridge.of_node = dev->of_node;
        ctx->bridge.type = DRM_MODE_CONNECTOR_HDMIA;
-       ctx->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID | 
DRM_BRIDGE_OP_HPD;
-
-       ret = devm_request_threaded_irq(dev, client->irq, NULL, 
it66121_irq_threaded_handler,
-                                       IRQF_ONESHOT, dev_name(dev), ctx);
-       if (ret < 0) {
-               dev_err(dev, "Failed to request irq %d:%d\n", client->irq, ret);
-               return ret;
+       ctx->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID;
+       if (client->irq > 0) {
+               ctx->bridge.ops |= DRM_BRIDGE_OP_HPD;
+
+               ret = devm_request_threaded_irq(dev, client->irq, NULL,
+                                               it66121_irq_threaded_handler,
+                                               IRQF_ONESHOT, dev_name(dev),
+                                               ctx);
+               if (ret < 0) {
+                       dev_err(dev, "Failed to request irq %d:%d\n", 
client->irq, ret);
+                       return ret;
+               }
        }
 
        it66121_audio_codec_init(ctx, dev);
-- 
2.34.1

Reply via email to