+static int rk_fb_config_debug(struct rk_lcdc_driver *dev_drv,
+ struct rk_fb_win_cfg_data *win_data,
+ struct rk_fb_reg_data *regs, u32 cmd)
+{
+ int i, j;
+ struct rk_fb_win_par *win_par;
+ struct rk_fb_area_par *area_par;
+ struct rk_fb_reg_win_data *reg_win_data;
+ struct rk_fb_reg_area_data *area_data;
+
+ fb_dbg(cmd, "-------------frame start-------------\n");
+ fb_dbg(cmd, "user config:\n");
+ for (i = 0; i < dev_drv->lcdc_win_num; i++) {
+ win_par = &(win_data->win_par[i]);
+ if ((win_par->area_par[0].ion_fd <= 0) &&
+ (win_par->area_par[0].phy_addr <= 0))
+ continue;
+ fb_dbg(cmd, "win[%d]:z_order=%d,galhpa_v=%d\n",
+ win_par->win_id, win_par->z_order,
+ win_par->g_alpha_val);
+ for (j = 0; j < RK_WIN_MAX_AREA; j++) {
+ area_par = &(win_par->area_par[j]);
+ if (((j > 0) && (dev_drv->area_support[i] == 1)) ||
+ ((win_par->area_par[j].ion_fd <= 0) &&
+ (win_par->area_par[j].phy_addr <= 0)))
+ continue;
+ fb_dbg(cmd, " area[%d]:fmt=%d,ion_fd=%d,phy_add=0x%x,xoff=%d,yoff=%d\n",
+ j, area_par->data_format, area_par->ion_fd,
+ area_par->phy_addr, area_par->x_offset,
+ area_par->y_offset);
+ fb_dbg(cmd, " xpos=%d,ypos=%d,xsize=%d,ysize=%d\n",
+ area_par->xpos, area_par->ypos,
+ area_par->xsize, area_par->ysize);
+ fb_dbg(cmd, " xact=%d,yact=%d,xvir=%d,yvir=%d\n",
+ area_par->xact, area_par->yact,
+ area_par->xvir, area_par->yvir);
+ }
+ }
+
+ fb_dbg(cmd, "regs data:\n");
+ fb_dbg(cmd, "win_num=%d,buf_num=%d\n",
+ regs->win_num, regs->buf_num);
+ for (i = 0; i < dev_drv->lcdc_win_num; i++) {
+ reg_win_data = &(regs->reg_win_data[i]);
+ if (reg_win_data->reg_area_data[0].smem_start <= 0)
+ continue;
+ fb_dbg(cmd, "win[%d]:z_order=%d,area_num=%d,area_buf_num=%d\n",
+ reg_win_data->win_id, reg_win_data->z_order,
+ reg_win_data->area_num, reg_win_data->area_buf_num);
+ for (j = 0; j < RK_WIN_MAX_AREA; j++) {
+ area_data = &(reg_win_data->reg_area_data[j]);
+ if (((j > 0) && (dev_drv->area_support[i] == 1)) ||
+ (area_data->smem_start <= 0))
+ continue;
+ fb_dbg(cmd, " area[%d]:fmt=%d,ion=%p,smem_star=0x%lx,cbr_star=0x%lx\n",
+ j, area_data->data_format, area_data->ion_handle,
+ area_data->smem_start, area_data->cbr_start);
+ fb_dbg(cmd, " yoff=0x%x,coff=0x%x,area_data->buff_len=%x\n",
+ area_data->y_offset, area_data->c_offset,area_data->buff_len);
+ fb_dbg(cmd, " xpos=%d,ypos=%d,xsize=%d,ysize=%d\n",
+ area_data->xpos, area_data->ypos,
+ area_data->xsize, area_data->ysize);
+ fb_dbg(cmd, " xact=%d,yact=%d,xvir=%d,yvir=%d\n",
+ area_data->xact, area_data->yact,
+ area_data->xvir, area_data->yvir);
+ }
+ }
+ fb_dbg(cmd, "-------------frame end---------------\n");
+
+ return 0;
+}
+static int rk_fb_config_backup(struct rk_lcdc_driver *dev_drv,
+ struct rk_fb_win_cfg_data *win_cfg,
+ struct rk_fb_reg_data *regs)
+{
+ int i;
+
+ /*2->1->0: 0 is newest*/
+ for (i = 0; i < DUMP_FRAME_NUM - 1; i++) {
+ memcpy(&(dev_drv->tmp_win_cfg[DUMP_FRAME_NUM-1-i]),
+ &(dev_drv->tmp_win_cfg[DUMP_FRAME_NUM-2-i]),
+ sizeof(struct rk_fb_win_cfg_data));
+ memcpy(&(dev_drv->tmp_regs[DUMP_FRAME_NUM-1-i]),
+ &(dev_drv->tmp_regs[DUMP_FRAME_NUM-2-i]),
+ sizeof(struct rk_fb_reg_data));
+ }
+
+ memcpy(&(dev_drv->tmp_win_cfg[0]), win_cfg,
+ sizeof(struct rk_fb_win_cfg_data));
+ memcpy(&(dev_drv->tmp_regs[0]), regs,
+ sizeof(struct rk_fb_reg_data));
+
+ return 0;
+}