This reverts commit 60da2f7440f22dba48944602c2a0373068f13880.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=216119
Fixes: 087451f372bf ("drm/amdgpu: use generic fb helpers instead of setting up 
AMD own's.")
Signed-off-by: Mario Limonciello <mario.limoncie...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 25 +++++++++++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h    |  5 +++++
 2 files changed, 30 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
index 97fff4727724..92281e57f3ac 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
@@ -1075,6 +1075,31 @@ static int amdgpu_display_get_fb_info(const struct 
amdgpu_framebuffer *amdgpu_fb
        return r;
 }
 
+int amdgpu_display_gem_fb_init(struct drm_device *dev,
+                              struct amdgpu_framebuffer *rfb,
+                              const struct drm_mode_fb_cmd2 *mode_cmd,
+                              struct drm_gem_object *obj)
+{
+       int ret;
+
+       rfb->base.obj[0] = obj;
+       drm_helper_mode_fill_fb_struct(dev, &rfb->base, mode_cmd);
+
+       ret = amdgpu_display_framebuffer_init(dev, rfb, mode_cmd, obj);
+       if (ret)
+               goto err;
+
+       ret = drm_framebuffer_init(dev, &rfb->base, &amdgpu_fb_funcs);
+       if (ret)
+               goto err;
+
+       return 0;
+err:
+       drm_dbg_kms(dev, "Failed to init gem fb: %d\n", ret);
+       rfb->base.obj[0] = NULL;
+       return ret;
+}
+
 static int amdgpu_display_gem_fb_verify_and_init(struct drm_device *dev,
                                                 struct amdgpu_framebuffer *rfb,
                                                 struct drm_file *file_priv,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
index dbe2904e015b..fb120abeec96 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
@@ -588,6 +588,11 @@ int amdgpu_display_get_crtc_scanoutpos(struct drm_device 
*dev,
                        int *hpos, ktime_t *stime, ktime_t *etime,
                        const struct drm_display_mode *mode);
 
+int amdgpu_display_gem_fb_init(struct drm_device *dev,
+                              struct amdgpu_framebuffer *rfb,
+                              const struct drm_mode_fb_cmd2 *mode_cmd,
+                              struct drm_gem_object *obj);
+
 int amdgpufb_remove(struct drm_device *dev, struct drm_framebuffer *fb);
 
 void amdgpu_enc_destroy(struct drm_encoder *encoder);
-- 
2.34.1

Reply via email to