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:
parent
cbb1a82e56
commit
742547b73d
|
@ -38,6 +38,12 @@ config DRM_KMS_FB_HELPER
|
||||||
select FRAMEBUFFER_CONSOLE if !EXPERT
|
select FRAMEBUFFER_CONSOLE if !EXPERT
|
||||||
select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
|
select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
|
||||||
select FB_SYS_FOPS
|
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
|
help
|
||||||
FBDEV helpers for KMS drivers.
|
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);
|
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,
|
static int setcolreg(struct drm_crtc *crtc, u16 red, u16 green,
|
||||||
u16 blue, u16 regno, struct fb_info *info)
|
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,
|
ssize_t drm_fb_helper_sys_write(struct fb_info *info, const char __user *buf,
|
||||||
size_t count, loff_t *ppos);
|
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_setcmap(struct fb_cmap *cmap, struct fb_info *info);
|
||||||
|
|
||||||
int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper);
|
int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper);
|
||||||
|
|
Loading…
Reference in New Issue