drm/fb_helper: Create wrappers for blit, copyarea and fillrect funcs
drm drivers that emulate fbdev populate their fb_fillrect, fb_copyarea and fb_imageblit fb_ops with the help of cfb_* or sys_* fbdev core helper functions. Create drm_fb_helper functions that wrap around these calls. This is part of an effort to prevent drm drivers from calling fbdev functions directly, in order to make fbdev emulation a top level drm option. v3: - Fixed kerneldoc errors v2: - Added kerneldocs - Follow the drm way of aligning of arguments in func definitions - Remove unnecessary checks for non NULL fb_info Signed-off-by: Archit Taneja <architt@codeaurora.org> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
Родитель
cbb1a82e56
Коммит
742547b73d
|
@ -38,6 +38,12 @@ config DRM_KMS_FB_HELPER
|
|||
select FRAMEBUFFER_CONSOLE if !EXPERT
|
||||
select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
|
||||
select FB_SYS_FOPS
|
||||
select FB_SYS_FILLRECT
|
||||
select FB_SYS_COPYAREA
|
||||
select FB_SYS_IMAGEBLIT
|
||||
select FB_CFB_FILLRECT
|
||||
select FB_CFB_COPYAREA
|
||||
select FB_CFB_IMAGEBLIT
|
||||
help
|
||||
FBDEV helpers for KMS drivers.
|
||||
|
||||
|
|
|
@ -793,6 +793,90 @@ ssize_t drm_fb_helper_sys_write(struct fb_info *info, const char __user *buf,
|
|||
}
|
||||
EXPORT_SYMBOL(drm_fb_helper_sys_write);
|
||||
|
||||
/**
|
||||
* drm_fb_helper_sys_fillrect - wrapper around sys_fillrect
|
||||
* @info: fbdev registered by the helper
|
||||
* @rect: info about rectangle to fill
|
||||
*
|
||||
* A wrapper around sys_fillrect implemented by fbdev core
|
||||
*/
|
||||
void drm_fb_helper_sys_fillrect(struct fb_info *info,
|
||||
const struct fb_fillrect *rect)
|
||||
{
|
||||
sys_fillrect(info, rect);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_fb_helper_sys_fillrect);
|
||||
|
||||
/**
|
||||
* drm_fb_helper_sys_copyarea - wrapper around sys_copyarea
|
||||
* @info: fbdev registered by the helper
|
||||
* @area: info about area to copy
|
||||
*
|
||||
* A wrapper around sys_copyarea implemented by fbdev core
|
||||
*/
|
||||
void drm_fb_helper_sys_copyarea(struct fb_info *info,
|
||||
const struct fb_copyarea *area)
|
||||
{
|
||||
sys_copyarea(info, area);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_fb_helper_sys_copyarea);
|
||||
|
||||
/**
|
||||
* drm_fb_helper_sys_imageblit - wrapper around sys_imageblit
|
||||
* @info: fbdev registered by the helper
|
||||
* @image: info about image to blit
|
||||
*
|
||||
* A wrapper around sys_imageblit implemented by fbdev core
|
||||
*/
|
||||
void drm_fb_helper_sys_imageblit(struct fb_info *info,
|
||||
const struct fb_image *image)
|
||||
{
|
||||
sys_imageblit(info, image);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_fb_helper_sys_imageblit);
|
||||
|
||||
/**
|
||||
* drm_fb_helper_cfb_fillrect - wrapper around cfb_fillrect
|
||||
* @info: fbdev registered by the helper
|
||||
* @rect: info about rectangle to fill
|
||||
*
|
||||
* A wrapper around cfb_imageblit implemented by fbdev core
|
||||
*/
|
||||
void drm_fb_helper_cfb_fillrect(struct fb_info *info,
|
||||
const struct fb_fillrect *rect)
|
||||
{
|
||||
cfb_fillrect(info, rect);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_fb_helper_cfb_fillrect);
|
||||
|
||||
/**
|
||||
* drm_fb_helper_cfb_copyarea - wrapper around cfb_copyarea
|
||||
* @info: fbdev registered by the helper
|
||||
* @area: info about area to copy
|
||||
*
|
||||
* A wrapper around cfb_copyarea implemented by fbdev core
|
||||
*/
|
||||
void drm_fb_helper_cfb_copyarea(struct fb_info *info,
|
||||
const struct fb_copyarea *area)
|
||||
{
|
||||
cfb_copyarea(info, area);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_fb_helper_cfb_copyarea);
|
||||
|
||||
/**
|
||||
* drm_fb_helper_cfb_imageblit - wrapper around cfb_imageblit
|
||||
* @info: fbdev registered by the helper
|
||||
* @image: info about image to blit
|
||||
*
|
||||
* A wrapper around cfb_imageblit implemented by fbdev core
|
||||
*/
|
||||
void drm_fb_helper_cfb_imageblit(struct fb_info *info,
|
||||
const struct fb_image *image)
|
||||
{
|
||||
cfb_imageblit(info, image);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_fb_helper_cfb_imageblit);
|
||||
|
||||
static int setcolreg(struct drm_crtc *crtc, u16 red, u16 green,
|
||||
u16 blue, u16 regno, struct fb_info *info)
|
||||
{
|
||||
|
|
|
@ -152,6 +152,20 @@ ssize_t drm_fb_helper_sys_read(struct fb_info *info, char __user *buf,
|
|||
ssize_t drm_fb_helper_sys_write(struct fb_info *info, const char __user *buf,
|
||||
size_t count, loff_t *ppos);
|
||||
|
||||
void drm_fb_helper_sys_fillrect(struct fb_info *info,
|
||||
const struct fb_fillrect *rect);
|
||||
void drm_fb_helper_sys_copyarea(struct fb_info *info,
|
||||
const struct fb_copyarea *area);
|
||||
void drm_fb_helper_sys_imageblit(struct fb_info *info,
|
||||
const struct fb_image *image);
|
||||
|
||||
void drm_fb_helper_cfb_fillrect(struct fb_info *info,
|
||||
const struct fb_fillrect *rect);
|
||||
void drm_fb_helper_cfb_copyarea(struct fb_info *info,
|
||||
const struct fb_copyarea *area);
|
||||
void drm_fb_helper_cfb_imageblit(struct fb_info *info,
|
||||
const struct fb_image *image);
|
||||
|
||||
int drm_fb_helper_setcmap(struct fb_cmap *cmap, struct fb_info *info);
|
||||
|
||||
int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper);
|
||||
|
|
Загрузка…
Ссылка в новой задаче