]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/hisilicon/hibmc: fix dp and vga cannot show together
authorBaihan Li <libaihan@huawei.com>
Wed, 13 Aug 2025 09:42:34 +0000 (17:42 +0800)
committerDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Sun, 17 Aug 2025 15:32:31 +0000 (18:32 +0300)
If VGA and DP connected together, there will be only one can get crtc.
Add encoder possible_clones to support two connectors enable.

Fixes: 3c7623fb5bb6 ("drm/hisilicon/hibmc: Enable this hot plug detect of irq feature")
Signed-off-by: Baihan Li <libaihan@huawei.com>
Signed-off-by: Yongbang Shi <shiyongbang@huawei.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250813094238.3722345-8-shiyongbang@huawei.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c

index ac552c339671a47375c6f059fcb7a29ea2d8ecc1..289304500ab097bc9e53917dcde3328bfc6da7c1 100644 (file)
@@ -115,6 +115,8 @@ static const struct drm_mode_config_funcs hibmc_mode_funcs = {
 static int hibmc_kms_init(struct hibmc_drm_private *priv)
 {
        struct drm_device *dev = &priv->dev;
+       struct drm_encoder *encoder;
+       u32 clone_mask = 0;
        int ret;
 
        ret = drmm_mode_config_init(dev);
@@ -154,6 +156,12 @@ static int hibmc_kms_init(struct hibmc_drm_private *priv)
                return ret;
        }
 
+       drm_for_each_encoder(encoder, dev)
+               clone_mask |= drm_encoder_mask(encoder);
+
+       drm_for_each_encoder(encoder, dev)
+               encoder->possible_clones = clone_mask;
+
        return 0;
 }