+static int dsp_x_pos(int mirror_en, struct rk_screen *screen,
+ struct rk_lcdc_win_area *area)
+{
+ int pos;
+
+ if (screen->x_mirror && mirror_en)
+ pr_err("not support both win and global mirror\n");
+
+ if ((!mirror_en) && (!screen->x_mirror))
+ pos = area->xpos + screen->mode.left_margin +
+ screen->mode.hsync_len;
+ else
+ pos = screen->mode.xres - area->xpos -
+ area->xsize + screen->mode.left_margin +
+ screen->mode.hsync_len;
+
+ return pos;
+}
+
+static int dsp_y_pos(int mirror_en, struct rk_screen *screen,
+ struct rk_lcdc_win_area *area)
+{
+ int pos;
+
+ if (screen->y_mirror && mirror_en)
+ pr_err("not support both win and global mirror\n");
+
+ if ((!mirror_en) && (!screen->y_mirror))
+ pos = area->ypos + screen->mode.upper_margin +
+ screen->mode.vsync_len;
+ else
+ pos = screen->mode.yres - area->ypos -
+ area->ysize + screen->mode.upper_margin +
+ screen->mode.vsync_len;
+
+ return pos;
+}
+