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); }
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); }
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); }
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); }
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__); }
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); }
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); }
static void st7585_copyarea(struct fb_info *info, const struct fb_copyarea *area) { sys_copyarea(info, area); st7585fb_schedule_refresh(info, NULL); }
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); }
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); }