diff options
author | Rongrong Zou | 2016-11-16 13:52:37 +0100 |
---|---|---|
committer | Rongrong Zou | 2016-11-17 08:26:25 +0100 |
commit | d1667b86795a6a1f904c5c30e38d6f8f3c8dfa64 (patch) | |
tree | b100f49ceab3ebde223e96c58e0d22eb79e5b763 /drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h | |
parent | drm/hisilicon/hibmc: Add video memory management (diff) | |
download | kernel-qcow2-linux-d1667b86795a6a1f904c5c30e38d6f8f3c8dfa64.tar.gz kernel-qcow2-linux-d1667b86795a6a1f904c5c30e38d6f8f3c8dfa64.tar.xz kernel-qcow2-linux-d1667b86795a6a1f904c5c30e38d6f8f3c8dfa64.zip |
drm/hisilicon/hibmc: Add support for frame buffer
Add support for fbdev and kms fb management.
Signed-off-by: Rongrong Zou <zourongrong@gmail.com>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Xinliang Liu <xinliang.liu@linaro.org>
Acked-by: Sean Paul <seanpaul@chromium.org>
Diffstat (limited to 'drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h')
-rw-r--r-- | drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h index dcd304d66c8f..d283d663371e 100644 --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.h @@ -20,9 +20,21 @@ #define HIBMC_DRM_DRV_H #include <drm/drmP.h> +#include <drm/drm_fb_helper.h> #include <drm/drm_gem.h> #include <drm/ttm/ttm_bo_driver.h> +struct hibmc_framebuffer { + struct drm_framebuffer fb; + struct drm_gem_object *obj; +}; + +struct hibmc_fbdev { + struct drm_fb_helper helper; + struct hibmc_framebuffer *fb; + int size; +}; + struct hibmc_drm_private { /* hw */ void __iomem *mmio; @@ -39,9 +51,13 @@ struct hibmc_drm_private { struct ttm_bo_device bdev; bool initialized; + /* fbdev */ + struct hibmc_fbdev *fbdev; bool mm_inited; }; +#define to_hibmc_framebuffer(x) container_of(x, struct hibmc_framebuffer, fb) + struct hibmc_bo { struct ttm_buffer_object bo; struct ttm_placement placement; @@ -66,8 +82,16 @@ void hibmc_set_power_mode(struct hibmc_drm_private *priv, void hibmc_set_current_gate(struct hibmc_drm_private *priv, unsigned int gate); +int hibmc_fbdev_init(struct hibmc_drm_private *priv); +void hibmc_fbdev_fini(struct hibmc_drm_private *priv); + int hibmc_gem_create(struct drm_device *dev, u32 size, bool iskernel, struct drm_gem_object **obj); +struct hibmc_framebuffer * +hibmc_framebuffer_init(struct drm_device *dev, + const struct drm_mode_fb_cmd2 *mode_cmd, + struct drm_gem_object *obj); + int hibmc_mm_init(struct hibmc_drm_private *hibmc); void hibmc_mm_fini(struct hibmc_drm_private *hibmc); int hibmc_bo_pin(struct hibmc_bo *bo, u32 pl_flag, u64 *gpu_addr); |