Avoids two forward declarations, and more importantly, matches what
I've done in my fbcon scrolling restore patches - so I need this to
avoid a bunch of conflicts in rebasing since we ended up merging
Helge's series instead.

Signed-off-by: Daniel Vetter <daniel.vet...@intel.com>
Cc: Helge Deller <del...@gmx.de>
Cc: Daniel Vetter <dan...@ffwll.ch>
Cc: Thomas Zimmermann <tzimmerm...@suse.de>
Cc: Du Cheng <duche...@gmail.com>
Cc: Tetsuo Handa <penguin-ker...@i-love.sakura.ne.jp>
Cc: Claudio Suarez <c...@net-c.es>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
---
 drivers/video/fbdev/core/fbcon.c | 134 +++++++++++++++----------------
 1 file changed, 65 insertions(+), 69 deletions(-)

diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index 235eaab37d84..e925bb608e25 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -164,15 +164,11 @@ static int fbcon_cursor_noblink;
  */
 
 static void fbcon_clear_margins(struct vc_data *vc, int bottom_only);
-static void fbcon_bmove(struct vc_data *vc, int sy, int sx, int dy, int dx,
-                       int height, int width);
 static void fbcon_set_palette(struct vc_data *vc, const unsigned char *table);
 
 /*
  *  Internal routines
  */
-static void fbcon_bmove_rec(struct vc_data *vc, struct fbcon_display *p, int 
sy, int sx,
-                           int dy, int dx, int height, int width, u_int 
y_break);
 static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
                           int unit);
 static void fbcon_redraw_move(struct vc_data *vc, struct fbcon_display *p,
@@ -1667,6 +1663,71 @@ static void fbcon_redraw(struct vc_data *vc, struct 
fbcon_display *p,
        }
 }
 
+static void fbcon_bmove_rec(struct vc_data *vc, struct fbcon_display *p, int 
sy, int sx,
+                           int dy, int dx, int height, int width, u_int 
y_break)
+{
+       struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]];
+       struct fbcon_ops *ops = info->fbcon_par;
+       u_int b;
+
+       if (sy < y_break && sy + height > y_break) {
+               b = y_break - sy;
+               if (dy < sy) {  /* Avoid trashing self */
+                       fbcon_bmove_rec(vc, p, sy, sx, dy, dx, b, width,
+                                       y_break);
+                       fbcon_bmove_rec(vc, p, sy + b, sx, dy + b, dx,
+                                       height - b, width, y_break);
+               } else {
+                       fbcon_bmove_rec(vc, p, sy + b, sx, dy + b, dx,
+                                       height - b, width, y_break);
+                       fbcon_bmove_rec(vc, p, sy, sx, dy, dx, b, width,
+                                       y_break);
+               }
+               return;
+       }
+
+       if (dy < y_break && dy + height > y_break) {
+               b = y_break - dy;
+               if (dy < sy) {  /* Avoid trashing self */
+                       fbcon_bmove_rec(vc, p, sy, sx, dy, dx, b, width,
+                                       y_break);
+                       fbcon_bmove_rec(vc, p, sy + b, sx, dy + b, dx,
+                                       height - b, width, y_break);
+               } else {
+                       fbcon_bmove_rec(vc, p, sy + b, sx, dy + b, dx,
+                                       height - b, width, y_break);
+                       fbcon_bmove_rec(vc, p, sy, sx, dy, dx, b, width,
+                                       y_break);
+               }
+               return;
+       }
+       ops->bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx,
+                  height, width);
+}
+
+static void fbcon_bmove(struct vc_data *vc, int sy, int sx, int dy, int dx,
+                       int height, int width)
+{
+       struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]];
+       struct fbcon_display *p = &fb_display[vc->vc_num];
+
+       if (fbcon_is_inactive(vc, info))
+               return;
+
+       if (!width || !height)
+               return;
+
+       /*  Split blits that cross physical y_wrap case.
+        *  Pathological case involves 4 blits, better to use recursive
+        *  code rather than unrolled case
+        *
+        *  Recursive invocations don't need to erase the cursor over and
+        *  over again, so we use fbcon_bmove_rec()
+        */
+       fbcon_bmove_rec(vc, p, sy, sx, dy, dx, height, width,
+                       p->vrows - p->yscroll);
+}
+
 static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b,
                enum con_scroll dir, unsigned int count)
 {
@@ -1867,71 +1928,6 @@ static bool fbcon_scroll(struct vc_data *vc, unsigned 
int t, unsigned int b,
 }
 
 
-static void fbcon_bmove(struct vc_data *vc, int sy, int sx, int dy, int dx,
-                       int height, int width)
-{
-       struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]];
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-
-       if (fbcon_is_inactive(vc, info))
-               return;
-
-       if (!width || !height)
-               return;
-
-       /*  Split blits that cross physical y_wrap case.
-        *  Pathological case involves 4 blits, better to use recursive
-        *  code rather than unrolled case
-        *
-        *  Recursive invocations don't need to erase the cursor over and
-        *  over again, so we use fbcon_bmove_rec()
-        */
-       fbcon_bmove_rec(vc, p, sy, sx, dy, dx, height, width,
-                       p->vrows - p->yscroll);
-}
-
-static void fbcon_bmove_rec(struct vc_data *vc, struct fbcon_display *p, int 
sy, int sx,
-                           int dy, int dx, int height, int width, u_int 
y_break)
-{
-       struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]];
-       struct fbcon_ops *ops = info->fbcon_par;
-       u_int b;
-
-       if (sy < y_break && sy + height > y_break) {
-               b = y_break - sy;
-               if (dy < sy) {  /* Avoid trashing self */
-                       fbcon_bmove_rec(vc, p, sy, sx, dy, dx, b, width,
-                                       y_break);
-                       fbcon_bmove_rec(vc, p, sy + b, sx, dy + b, dx,
-                                       height - b, width, y_break);
-               } else {
-                       fbcon_bmove_rec(vc, p, sy + b, sx, dy + b, dx,
-                                       height - b, width, y_break);
-                       fbcon_bmove_rec(vc, p, sy, sx, dy, dx, b, width,
-                                       y_break);
-               }
-               return;
-       }
-
-       if (dy < y_break && dy + height > y_break) {
-               b = y_break - dy;
-               if (dy < sy) {  /* Avoid trashing self */
-                       fbcon_bmove_rec(vc, p, sy, sx, dy, dx, b, width,
-                                       y_break);
-                       fbcon_bmove_rec(vc, p, sy + b, sx, dy + b, dx,
-                                       height - b, width, y_break);
-               } else {
-                       fbcon_bmove_rec(vc, p, sy + b, sx, dy + b, dx,
-                                       height - b, width, y_break);
-                       fbcon_bmove_rec(vc, p, sy, sx, dy, dx, b, width,
-                                       y_break);
-               }
-               return;
-       }
-       ops->bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx,
-                  height, width);
-}
-
 static void updatescrollmode_accel(struct fbcon_display *p,
                                        struct fb_info *info,
                                        struct vc_data *vc)
-- 
2.34.1

Reply via email to