drm/msm: Clear aperture ownership outside of fbdev code
authorThomas Zimmermann <tzimmermann@suse.de>
Mon, 3 Apr 2023 12:45:32 +0000 (14:45 +0200)
committerDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Thu, 6 Apr 2023 17:29:40 +0000 (20:29 +0300)
Move aperture management out of the fbdev code. It is unrelated
and needs to run even if fbdev support has been disabled. Call
the helper at the top of msm_drm_init() to take over hardware
from other drivers.

v2:
* bind all subdevices before acquiring device (Dmitri)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/530553/
Link: https://lore.kernel.org/r/20230403124538.8497-3-tzimmermann@suse.de
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drivers/gpu/drm/msm/msm_drv.c
drivers/gpu/drm/msm/msm_fbdev.c

index 8972331fa0bb7b78095b3c84fc67a7dd2c0443d5..2119060ae1fefe2936de8ea7a87b4bf831e01697 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/uaccess.h>
 #include <uapi/linux/sched/types.h>
 
+#include <drm/drm_aperture.h>
 #include <drm/drm_bridge.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_file.h>
@@ -465,6 +466,11 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
        if (ret)
                goto err_deinit_vram;
 
+       /* the fw fb could be anywhere in memory */
+       ret = drm_aperture_remove_framebuffers(false, drv);
+       if (ret)
+               goto err_msm_uninit;
+
        dma_set_max_seg_size(dev, UINT_MAX);
 
        msm_gem_shrinker_init(ddev);
index d26aa52217ce198f1b99f4e86b6269c1053c9977..fc7d0406a9f9d43462a79884ebbd8190525fc4d0 100644 (file)
@@ -4,7 +4,6 @@
  * Author: Rob Clark <robdclark@gmail.com>
  */
 
-#include <drm/drm_aperture.h>
 #include <drm/drm_crtc.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
@@ -154,11 +153,6 @@ struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev)
                goto fail;
        }
 
-       /* the fw fb could be anywhere in memory */
-       ret = drm_aperture_remove_framebuffers(false, dev->driver);
-       if (ret)
-               goto fini;
-
        ret = drm_fb_helper_initial_config(helper);
        if (ret)
                goto fini;