return dev_drv->ops->poll_vblank(dev_drv);
else
return RK_LF_STATUS_NC;
- } else
+ } else {
return RK_LF_STATUS_NC;
+ }
}
bool rk_fb_poll_wait_frame_complete(void)
info->fix.smem_start = win->reserved;
info->var.xres = dev_drv->screen0->mode.xres;
info->var.yres = dev_drv->screen0->mode.yres;
+ /*
info->var.grayscale |=
(info->var.xres << 8) + (info->var.yres << 20);
+ */
info->var.xres_virtual = info->var.xres;
info->var.yres_virtual = info->var.yres;
#if defined(CONFIG_LOGO_LINUX_BMP)
*dst_vir_w = *dst_w;
}
} else {
-
if ((*dst_w & align64) != 0)
*dst_w = (*dst_w + align64) & (~align64);
if ((fmt > IPP_RGB_565) && ((*dst_h & 1) == 1))
if (*dst_vir_w < *dst_w)
*dst_vir_w = *dst_w;
}
-
}
static void fb_copy_by_ipp(struct fb_info *dst_info,
default:
rotation = IPP_ROT_270;
break;
-
}
dst_w = dst_info->var.xres;
ipp_req.timeout = 100;
ipp_req.flag = rotation;
ipp_blit_sync(&ipp_req);
-
}
#endif
static int rk_fb_get_list_stat(struct rk_lcdc_driver *dev_drv)
{
int i, j;
+
i = list_empty(&dev_drv->update_regs_list);
j = list_empty(&saved_list);
return i == j ? 0 : 1;
-
}
void rk_fd_fence_wait(struct rk_lcdc_driver *dev_drv, struct sync_fence *fence)
win->z_order = -1;
*/
}
-
}
static struct rk_fb_reg_win_data *rk_fb_get_win_data(struct rk_fb_reg_data
}
g_last_win_num = regs->win_num;
g_first_buf = 0;
-
}
static void rk_fb_update_regs_handler(struct kthread_work *work)
reg_win_data->data_format = fb_data_fmt;
pixel_width = rk_fb_pixel_width(fb_data_fmt);
- ppixel_a = ((fb_data_fmt == ARGB888)
- || (fb_data_fmt == ABGR888)) ? 1 : 0;
+ ppixel_a = ((fb_data_fmt == ARGB888) ||
+ (fb_data_fmt == ABGR888)) ? 1 : 0;
global_a = (win_par->g_alpha_val == 0) ? 0 : 1;
reg_win_data->alpha_en = ppixel_a | global_a;
reg_win_data->g_alpha_val = win_par->g_alpha_val;
xoffset * pixel_width / 8;
}
}
-
}
switch (fb_data_fmt) {
case YUV422:
if (copy_from_user(yuv_phy, argp, 8))
return -EFAULT;
- if (!dev_drv->iommu_enabled) {
+ if (!dev_drv->iommu_enabled || !strcmp(info->fix.id, "fb0")) {
fix->smem_start = yuv_phy[0];
fix->mmio_start = yuv_phy[1];
} else {
if (win_id < 0)
return -ENODEV;
#if defined(CONFIG_RK_HDMI)
- if ((rk_fb->disp_mode == ONE_DUAL)
- && (hdmi_get_hotplug() == HDMI_HPD_ACTIVED)) {
+ if ((rk_fb->disp_mode == ONE_DUAL) &&
+ (hdmi_get_hotplug() == HDMI_HPD_ACTIVED)) {
printk(KERN_INFO "hdmi is connect , not blank lcdc\n");
} else
#endif
if (!buffer)
return -ENOMEM;
- src = (u8 __iomem *) (info->screen_base + p + win->area[0].y_offset);
+ src = (u8 __iomem *)(info->screen_base + p + win->area[0].y_offset);
while (count) {
c = (count > PAGE_SIZE) ? PAGE_SIZE : count;
if (!buffer)
return -ENOMEM;
- dst = (u8 __iomem *) (info->screen_base + p + win->area[0].y_offset);
+ dst = (u8 __iomem *)(info->screen_base + p + win->area[0].y_offset);
while (count) {
c = (count > PAGE_SIZE) ? PAGE_SIZE : count;
kfree(buffer);
return (cnt) ? cnt : err;
-
}
static int rk_fb_set_par(struct fb_info *info)
/*save winameter set by android*/
if (rk_fb->disp_mode != DUAL) {
if (screen->screen_id == 0) {
-
dev_drv->screen0->xsize = xsize;
dev_drv->screen0->ysize = ysize;
dev_drv->screen0->xpos = xpos;
win->area[0].ypos = ypos*screen->mode.yres/screen_primary.mode.yres;
win->area[0].xsize = screen->mode.xres*xsize/screen_primary.mode.xres;
win->area[0].ysize = screen->mode.yres*ysize/screen_primary.mode.yres;
-
win->area[0].xact = var->xres; /* winx active window height,is a wint of vir */
win->area[0].yact = var->yres;
win->area[0].xvir = var->xres_virtual; /* virtual resolution stride --->LCDC_WINx_VIR */
win->area_num = 1;
win->alpha_mode = 4; /* AB_SRC_OVER; */
- win->alpha_en = ((win->format == ARGB888)
- || (win->format == ABGR888)) ? 1 : 0;
+ win->alpha_en = ((win->format == ARGB888) ||
+ (win->format == ABGR888)) ? 1 : 0;
win->g_alpha_val = 0;
if (rk_fb->disp_mode == DUAL) {
win->area[0].y_vir_stride;
extend_win->area[0].uv_vir_stride =
win->area[0].uv_vir_stride;
- if (win->area[0].xpos != 0
- || win->area[0].ypos != 0) {
+ if (win->area[0].xpos != 0 ||
+ win->area[0].ypos != 0) {
extend_win->area[0].xsize =
(extend_dev_drv->cur_screen->xsize * win->area[0].xsize) / screen->mode.xres;
extend_win->area[0].ysize =
}
return 0;
-
}
#endif
int rk_fb_dpi_open(bool open)
if (rk_fb->disp_mode != DUAL) {
dev_drv = rk_fb->lcdc_dev_drv[0];
} else {
-
for (i = 0; i < rk_fb->num_lcdc; i++) {
if (rk_fb->lcdc_dev_drv[i]->prop == EXTEND) {
dev_drv = rk_fb->lcdc_dev_drv[i];
rk29_backlight_set(1);
*/
return 0;
-
}
#endif
/*
if (rk_fb_alloc_buffer_by_ion(fbi, win, fb_mem_size) < 0)
return -ENOMEM;
#else
- fb_mem_virt = dma_alloc_writecombine(fbi->dev,
- fb_mem_size, &fb_mem_phys, GFP_KERNEL);
+ fb_mem_virt =
+ dma_alloc_writecombine(fbi->dev,
+ fb_mem_size,
+ &fb_mem_phys,
+ GFP_KERNEL);
if (!fb_mem_virt) {
pr_err("%s: Failed to allocate framebuffer\n",
__func__);
iounmap(fbi->screen_base);
release_mem_region(fbi->fix.smem_start, fbi->fix.smem_len);
return 0;
-
}
#endif
dev_drv->cur_screen = screen;
/* devie use one lcdc + rk61x scaler for dual display */
if (rk_fb->disp_mode == ONE_DUAL) {
- struct rk_screen *screen1 = devm_kzalloc(dev_drv->dev,
- sizeof(struct rk_screen),
- GFP_KERNEL);
+ struct rk_screen *screen1 =
+ devm_kzalloc(dev_drv->dev,
+ sizeof(struct rk_screen),
+ GFP_KERNEL);
if (screen1) {
dev_err(dev_drv->dev, "malloc screen1 for lcdc%d fail!",
dev_drv->id);