mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	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
					
				
					 3 changed files with 104 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue