예제 #1
0
static void unifb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
{
	struct fb_copyarea modded;
	u32 vxres, vyres;
	modded.sx = area->sx;
	modded.sy = area->sy;
	modded.dx = area->dx;
	modded.dy = area->dy;
	modded.width = area->width;
	modded.height = area->height;

	if (info->flags & FBINFO_HWACCEL_DISABLED) {
		sys_copyarea(info, area);
		return;
	}

	vxres = info->var.xres_virtual;
	vyres = info->var.yres_virtual;

	if (!modded.width || !modded.height ||
	    modded.sx >= vxres || modded.sy >= vyres ||
	    modded.dx >= vxres || modded.dy >= vyres)
		return;

	if (modded.sx + modded.width > vxres)
		modded.width = vxres - modded.sx;
	if (modded.dx + modded.width > vxres)
		modded.width = vxres - modded.dx;
	if (modded.sy + modded.height > vyres)
		modded.height = vyres - modded.sy;
	if (modded.dy + modded.height > vyres)
		modded.height = vyres - modded.dy;

	unifb_prim_copyarea(info, &modded);
}
예제 #2
0
void st7735fb_copyarea(struct fb_info *info, const struct fb_copyarea *area) 
{
	struct st7735fb_par *par = info->par;

	sys_copyarea(info, area);

	st7735fb_update_display(par);
}
예제 #3
0
void st7586fb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
{
	struct st7586fb_par *par = info->par;

	sys_copyarea(info, area);

	schedule_delayed_work(&par->dwork, FB_ST7586_UPDATE_DELAY);
}
예제 #4
0
static void hecubafb_copyarea(struct fb_info *info,
				   const struct fb_copyarea *area)
{
	struct hecubafb_par *par = info->par;

	sys_copyarea(info, area);

	hecubafb_dpy_update(par);
}
예제 #5
0
void ws_eink_fb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
{
	int ret;
	struct ws_eink_fb_par *par = info->par;
	sys_copyarea(info, area);
	ret = ws_eink_update_display(par);
	if (ret)
		dev_err(info->device, "%s: failed to update display", __func__);
}
예제 #6
0
static void evdi_fb_copyarea(struct fb_info *info,
			     const struct fb_copyarea *region)
{
	struct evdi_fbdev *ufbdev = info->par;

	EVDI_CHECKPT();
	sys_copyarea(info, region);
	evdi_handle_damage(&ufbdev->ufb, region->dx, region->dy, region->width,
			   region->height);
}
예제 #7
0
static void sh_mobile_lcdc_copyarea(struct fb_info *info,
				    const struct fb_copyarea *area)
{
	sys_copyarea(info, area);
	sh_mobile_lcdc_deferred_io_touch(info);
}
예제 #8
0
static void st7585_copyarea(struct fb_info *info, const struct fb_copyarea *area)
{
	sys_copyarea(info, area);
	st7585fb_schedule_refresh(info, NULL);
}
예제 #9
0
static void ls027b7dh01_copyarea(struct fb_info *p, const struct fb_copyarea *area)
{
	sys_copyarea(p, area);
	ls027b7dh01_invalidate(p, area->dx, area->dy, area->width, area->height);
}
예제 #10
0
static void ili9341_copyarea(struct fb_info *p, const struct fb_copyarea *area) 
{
	sys_copyarea(p, area);
	ili9341_touch(p, area->dx, area->dy, area->width, area->height);
}