From 726122dc14c6bbde2cc2c351b5eaf45257307003 Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Wed, 12 Sep 2018 16:17:52 +0800 Subject: [PATCH] drm/rockchip: framebuffer: Add support /dev/graphics/fb0 read For support some application only can support framebuffer display framework and need to read display buffer from /dev/graphics/fb0. besides, you need to add the following patch to get kvddr: rockchip_gem_create_with_handle()@file: drivers/gpu/drm/rockchip/rockchip_drm_gem.c -rk_obj = rockchip_gem_create_object(drm, size, false, flags); +rk_obj = rockchip_gem_create_object(drm, size, true, flags); Change-Id: Iec83dba8295268ba418e802a1cf5eeccd3880ab5 Signed-off-by: Sandy Huang --- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 5 +++++ drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c | 2 ++ 2 files changed, 7 insertions(+) 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, };