gpu: drm: verisilicon: Add framebuffer console support
authorChanghuang Liang <changhuang.liang@starfivetech.com>
Tue, 14 Mar 2023 06:02:08 +0000 (14:02 +0800)
committerChanghuang Liang <changhuang.liang@starfivetech.com>
Tue, 14 Mar 2023 06:02:08 +0000 (14:02 +0800)
Add framebuffer console support.

Signed-off-by: Changhuang Liang <changhuang.liang@starfivetech.com>
drivers/gpu/drm/verisilicon/vs_drv.c
drivers/gpu/drm/verisilicon/vs_gem.c

index af5abe8..4a9a5f8 100644 (file)
@@ -251,6 +251,8 @@ static int vs_drm_bind(struct device *dev)
        if (ret)
                goto err_helper;
 
+       drm_fbdev_generic_setup(drm_dev, 32);
+
        return 0;
 
 err_helper:
index d823de4..528d24c 100755 (executable)
@@ -121,7 +121,7 @@ static int vs_gem_alloc_buf(struct vs_gem_object *vs_obj)
                                                &vs_obj->dma_addr, GFP_KERNEL,
                                                vs_obj->dma_attrs);
 
-       DRM_DEV_DEBUG(dev->dev,"Allocated coherent memory, vaddr: 0x%0llX, paddr: 0x%0llX, size: %d\n", 
+       DRM_DEV_DEBUG(dev->dev,"Allocated coherent memory, vaddr: 0x%0llX, paddr: 0x%0llX, size: %d\n",
                (u64)vs_obj->cookie,vs_obj->dma_addr,vs_obj->size);
        if (!vs_obj->cookie) {
 #ifdef CONFIG_VERISILICON_MMU
@@ -388,6 +388,13 @@ struct sg_table *vs_gem_prime_get_sg_table(struct drm_gem_object *obj)
 
 int vs_gem_prime_vmap(struct drm_gem_object *obj, struct dma_buf_map *map)
 {
+       struct vs_gem_object *vs_obj = to_vs_gem_object(obj);
+
+       void * vaddr = vs_obj->dma_attrs & DMA_ATTR_NO_KERNEL_MAPPING ?
+                      page_address(vs_obj->cookie) : vs_obj->cookie;
+
+       dma_buf_map_set_vaddr(map, vaddr);
+
        return 0;
 }