diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c index 5cbe6a0b0172..eb6ba3763eb5 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c @@ -100,6 +100,8 @@ rockchip_fb_alloc(struct drm_device *dev, struct drm_mode_fb_cmd2 *mode_cmd, { struct rockchip_drm_fb *rockchip_fb; struct rockchip_gem_object *rk_obj; + struct rockchip_drm_private *private = dev->dev_private; + struct drm_fb_helper *fb_helper = private->fbdev_helper; int ret = 0; int i; @@ -125,6 +127,9 @@ rockchip_fb_alloc(struct drm_device *dev, struct drm_mode_fb_cmd2 *mode_cmd, rk_obj = to_rockchip_obj(obj[i]); rockchip_fb->dma_addr[i] = rk_obj->dma_addr; rockchip_fb->kvaddr[i] = rk_obj->kvaddr; + private->fbdev_bo = &rk_obj->base; + if (fb_helper && fb_helper->fbdev && rk_obj->kvaddr) + fb_helper->fbdev->screen_base = rk_obj->kvaddr; } #ifndef MODULE } else if (logo) { diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c index 5bd8444a8059..c86ac833a9db 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c @@ -60,6 +60,8 @@ static struct fb_ops rockchip_drm_fbdev_ops = { .fb_set_par = drm_fb_helper_set_par, .fb_blank = drm_fb_helper_blank, .fb_pan_display = drm_fb_helper_pan_display, + .fb_read = drm_fb_helper_sys_read, + .fb_write = drm_fb_helper_sys_write, .fb_setcmap = drm_fb_helper_setcmap, .fb_dmabuf_export = rockchip_fbdev_get_dma_buf, };