]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Aug 2025 14:34:46 +0000 (16:34 +0200)
[ Upstream commit 3271faf42d135bcf569c3ff6af55c21858eec212 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
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;
 }