mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 19:08:57 +09:00
drm/rockchip: gem: Convert sg to page
This make cpu can dump fb data allocated by ION. Change-Id: I639e7cbbe6957d2bb02e4577805343cdbf5f5bf7 Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
This commit is contained in:
@@ -656,6 +656,7 @@ void rockchip_gem_free_object(struct drm_gem_object *obj)
|
||||
dma_unmap_sgtable(drm->dev, rk_obj->sgt,
|
||||
DMA_BIDIRECTIONAL, 0);
|
||||
}
|
||||
drm_free_large(rk_obj->pages);
|
||||
drm_prime_gem_destroy(obj, rk_obj->sgt);
|
||||
} else {
|
||||
rockchip_gem_free_buf(rk_obj);
|
||||
@@ -817,6 +818,21 @@ rockchip_gem_prime_import_sg_table(struct drm_device *drm,
|
||||
goto err_free_rk_obj;
|
||||
}
|
||||
|
||||
rk_obj->num_pages = rk_obj->base.size >> PAGE_SHIFT;
|
||||
rk_obj->pages = drm_calloc_large(rk_obj->num_pages, sizeof(*rk_obj->pages));
|
||||
if (!rk_obj->pages) {
|
||||
DRM_ERROR("failed to allocate pages.\n");
|
||||
ret = -ENOMEM;
|
||||
goto err_free_rk_obj;
|
||||
}
|
||||
|
||||
ret = drm_prime_sg_to_page_addr_arrays(sg, rk_obj->pages, NULL, rk_obj->num_pages);
|
||||
if (ret < 0) {
|
||||
DRM_ERROR("invalid sgtable.\n");
|
||||
drm_free_large(rk_obj->pages);
|
||||
goto err_free_rk_obj;
|
||||
}
|
||||
|
||||
return &rk_obj->base;
|
||||
|
||||
err_free_rk_obj:
|
||||
|
||||
Reference in New Issue
Block a user