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 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 a new issue