From 41615d2f7ef228bf7edff4de9d1b70c653e79b20 Mon Sep 17 00:00:00 2001 From: WangHao Date: Mon, 25 Mar 2024 13:29:59 +0000 Subject: [PATCH] drm/phytium: Replace default efi fb0 with dc fb phytium inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I9REDQ CVE: NA ------------------------------------------------------------ When enable efi fb, replace the original efi fb0 when loading the dc driver. Fixes: b80df10f8458 ("DRM: Phytium display DRM driver") Signed-off-by: WangHao Signed-off-by: Yang Xun Signed-off-by: Wang Yinfeng Signed-off-by: Jiakun Shuai --- drivers/gpu/drm/phytium/phytium_pci.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/gpu/drm/phytium/phytium_pci.c b/drivers/gpu/drm/phytium/phytium_pci.c index 7ed2f58a2942..e849830540a1 100644 --- a/drivers/gpu/drm/phytium/phytium_pci.c +++ b/drivers/gpu/drm/phytium/phytium_pci.c @@ -6,6 +6,7 @@ #include #include +#include #include #include "phytium_display_drv.h" #include "phytium_pci.h" @@ -238,12 +239,30 @@ phytium_pci_private_fini(struct pci_dev *pdev, struct phytium_display_private *p devm_kfree(&pdev->dev, pci_priv); } +static int phytium_remove_conflicting_framebuffers(struct pci_dev *pdev) +{ + resource_size_t base, size; + + base = pci_resource_start(pdev, 2); + size = pci_resource_len(pdev, 2); + + return drm_aperture_remove_conflicting_framebuffers(base, size, + &phytium_display_drm_driver); + +} + static int phytium_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { struct phytium_display_private *priv = NULL; struct drm_device *dev = NULL; int ret = 0; + ret = phytium_remove_conflicting_framebuffers(pdev); + if (ret) { + DRM_ERROR("failed to remove conflicting phytium framebuffers\n"); + return ret; + } + dev = drm_dev_alloc(&phytium_display_drm_driver, &pdev->dev); if (IS_ERR(dev)) { DRM_ERROR("failed to allocate drm_device\n"); -- Gitee