]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop fbcon patches from some queues
authorSasha Levin <sashal@kernel.org>
Sun, 22 Feb 2026 10:22:29 +0000 (05:22 -0500)
committerSasha Levin <sashal@kernel.org>
Sun, 22 Feb 2026 10:22:29 +0000 (05:22 -0500)
Signed-off-by: Sasha Levin <sashal@kernel.org>
15 files changed:
queue-6.12/fbcon-fbcon_cursor_noblink-fbcon_cursor_blink.patch [deleted file]
queue-6.12/fbcon-fbcon_is_inactive-fbcon_is_active.patch [deleted file]
queue-6.12/fbcon-introduce-get_-fg-bg-_color.patch [deleted file]
queue-6.12/fbcon-move-fbcon-callbacks-into-struct-fbcon_bitops.patch [deleted file]
queue-6.12/fbcon-rename-struct-fbcon_ops-to-struct-fbcon_par.patch [deleted file]
queue-6.12/fbcon-set-rotate_font-callback-with-related-callback.patch [deleted file]
queue-6.12/printk-vt-fbcon-remove-console_conditional_schedule.patch [deleted file]
queue-6.12/series
queue-6.18/fbcon-move-fbcon-callbacks-into-struct-fbcon_bitops.patch [deleted file]
queue-6.18/fbcon-rename-struct-fbcon_ops-to-struct-fbcon_par.patch [deleted file]
queue-6.18/fbcon-set-rotate_font-callback-with-related-callback.patch [deleted file]
queue-6.18/printk-vt-fbcon-remove-console_conditional_schedule.patch [deleted file]
queue-6.18/series
queue-6.19/printk-vt-fbcon-remove-console_conditional_schedule.patch [deleted file]
queue-6.19/series

diff --git a/queue-6.12/fbcon-fbcon_cursor_noblink-fbcon_cursor_blink.patch b/queue-6.12/fbcon-fbcon_cursor_noblink-fbcon_cursor_blink.patch
deleted file mode 100644 (file)
index 13c8b83..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-From a47bd9ea62a9f78a8a6f9cc3b5bc00b8443eda74 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 23 Sep 2024 23:48:53 +0300
-Subject: fbcon: fbcon_cursor_noblink -> fbcon_cursor_blink
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Ville Syrjälä <ville.syrjala@linux.intel.com>
-
-[ Upstream commit 91a256467eed9e4449969163e3c93bc4bd990145 ]
-
-Invert fbcon_cursor_noblink into fbcon_cursor_blink so that:
-- it matches the sysfs attribute exactly
-- avoids having to do these NOT operations all over the place
-- use bool instead of int
-
-Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
-Signed-off-by: Helge Deller <deller@gmx.de>
-Stable-dep-of: 8e9bf8b9e8c0 ("printk, vt, fbcon: Remove console_conditional_schedule()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/video/fbdev/core/fbcon.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
-index e681066736dea..f8ea11b988090 100644
---- a/drivers/video/fbdev/core/fbcon.c
-+++ b/drivers/video/fbdev/core/fbcon.c
-@@ -174,7 +174,7 @@ static const struct consw fb_con;
- #define advance_row(p, delta) (unsigned short *)((unsigned long)(p) + (delta) * vc->vc_size_row)
--static int fbcon_cursor_noblink;
-+static bool fbcon_cursor_blink = true;
- #define divides(a, b) ((!(a) || (b)%(a)) ? 0 : 1)
-@@ -409,7 +409,7 @@ static void fbcon_add_cursor_work(struct fb_info *info)
- {
-       struct fbcon_ops *ops = info->fbcon_par;
--      if (!fbcon_cursor_noblink)
-+      if (fbcon_cursor_blink)
-               queue_delayed_work(system_power_efficient_wq, &ops->cursor_work,
-                                  ops->cur_blink_jiffies);
- }
-@@ -3310,10 +3310,10 @@ static ssize_t store_cursor_blink(struct device *device,
-       blink = simple_strtoul(buf, last, 0);
-       if (blink) {
--              fbcon_cursor_noblink = 0;
-+              fbcon_cursor_blink = true;
-               fbcon_add_cursor_work(info);
-       } else {
--              fbcon_cursor_noblink = 1;
-+              fbcon_cursor_blink = false;
-               fbcon_del_cursor_work(info);
-       }
--- 
-2.51.0
-
diff --git a/queue-6.12/fbcon-fbcon_is_inactive-fbcon_is_active.patch b/queue-6.12/fbcon-fbcon_is_inactive-fbcon_is_active.patch
deleted file mode 100644 (file)
index 9755edb..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-From 56bec22b9e384402ccf77349a0041fcb1bf92a48 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 23 Sep 2024 18:57:47 +0300
-Subject: fbcon: fbcon_is_inactive() -> fbcon_is_active()
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Ville Syrjälä <ville.syrjala@linux.intel.com>
-
-[ Upstream commit ffc825a27f5503136196cb38f41641b58bf2df31 ]
-
-Invert fbcon_is_inactive() into fbcon_is_active(). Much easier
-on the poor brain when you don't have to do dobule negations
-all over the place.
-
-Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
-Acked-by: Helge Deller <deller@gmx.de>
-Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
-Signed-off-by: Helge Deller <deller@gmx.de>
-Stable-dep-of: 8e9bf8b9e8c0 ("printk, vt, fbcon: Remove console_conditional_schedule()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/video/fbdev/core/fbcon.c | 30 +++++++++++++++---------------
- 1 file changed, 15 insertions(+), 15 deletions(-)
-
-diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
-index f8ea11b988090..800c9e1724f16 100644
---- a/drivers/video/fbdev/core/fbcon.c
-+++ b/drivers/video/fbdev/core/fbcon.c
-@@ -291,12 +291,12 @@ static bool fbcon_skip_panic(struct fb_info *info)
- #endif
- }
--static inline int fbcon_is_inactive(struct vc_data *vc, struct fb_info *info)
-+static inline int fbcon_is_active(struct vc_data *vc, struct fb_info *info)
- {
-       struct fbcon_ops *ops = info->fbcon_par;
--      return (info->state != FBINFO_STATE_RUNNING ||
--              vc->vc_mode != KD_TEXT || ops->graphics || fbcon_skip_panic(info));
-+      return info->state == FBINFO_STATE_RUNNING &&
-+              vc->vc_mode == KD_TEXT && !ops->graphics && !fbcon_skip_panic(info);
- }
- static int get_color(struct vc_data *vc, struct fb_info *info,
-@@ -1270,7 +1270,7 @@ static void __fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       u_int y_break;
--      if (fbcon_is_inactive(vc, info))
-+      if (!fbcon_is_active(vc, info))
-               return;
-       if (!height || !width)
-@@ -1314,7 +1314,7 @@ static void fbcon_putcs(struct vc_data *vc, const u16 *s, unsigned int count,
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       struct fbcon_ops *ops = info->fbcon_par;
--      if (!fbcon_is_inactive(vc, info))
-+      if (fbcon_is_active(vc, info))
-               ops->putcs(vc, info, s, count, real_y(p, ypos), xpos,
-                          get_color(vc, info, scr_readw(s), 1),
-                          get_color(vc, info, scr_readw(s), 0));
-@@ -1325,7 +1325,7 @@ static void fbcon_clear_margins(struct vc_data *vc, int bottom_only)
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
-       struct fbcon_ops *ops = info->fbcon_par;
--      if (!fbcon_is_inactive(vc, info))
-+      if (fbcon_is_active(vc, info))
-               ops->clear_margins(vc, info, margin_color, bottom_only);
- }
-@@ -1337,7 +1337,7 @@ static void fbcon_cursor(struct vc_data *vc, bool enable)
-       ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
--      if (fbcon_is_inactive(vc, info) || vc->vc_deccm != 1)
-+      if (!fbcon_is_active(vc, info) || vc->vc_deccm != 1)
-               return;
-       if (vc->vc_cursor_type & CUR_SW)
-@@ -1743,7 +1743,7 @@ static void fbcon_bmove(struct vc_data *vc, int sy, int sx, int dy, int dx,
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
-       struct fbcon_display *p = &fb_display[vc->vc_num];
--      if (fbcon_is_inactive(vc, info))
-+      if (!fbcon_is_active(vc, info))
-               return;
-       if (!width || !height)
-@@ -1767,7 +1767,7 @@ static bool fbcon_scroll(struct vc_data *vc, unsigned int t, unsigned int b,
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       int scroll_partial = info->flags & FBINFO_PARTIAL_PAN_OK;
--      if (fbcon_is_inactive(vc, info))
-+      if (!fbcon_is_active(vc, info))
-               return true;
-       fbcon_cursor(vc, false);
-@@ -2151,7 +2151,7 @@ static bool fbcon_switch(struct vc_data *vc)
-                       fbcon_del_cursor_work(old_info);
-       }
--      if (fbcon_is_inactive(vc, info) ||
-+      if (!fbcon_is_active(vc, info) ||
-           ops->blank_state != FB_BLANK_UNBLANK)
-               fbcon_del_cursor_work(info);
-       else
-@@ -2191,7 +2191,7 @@ static bool fbcon_switch(struct vc_data *vc)
-       scrollback_max = 0;
-       scrollback_current = 0;
--      if (!fbcon_is_inactive(vc, info)) {
-+      if (fbcon_is_active(vc, info)) {
-           ops->var.xoffset = ops->var.yoffset = p->yscroll = 0;
-           ops->update_start(info);
-       }
-@@ -2247,7 +2247,7 @@ static bool fbcon_blank(struct vc_data *vc, enum vesa_blank_mode blank,
-               }
-       }
--      if (!fbcon_is_inactive(vc, info)) {
-+      if (fbcon_is_active(vc, info)) {
-               if (ops->blank_state != blank) {
-                       ops->blank_state = blank;
-                       fbcon_cursor(vc, !blank);
-@@ -2261,7 +2261,7 @@ static bool fbcon_blank(struct vc_data *vc, enum vesa_blank_mode blank,
-                       update_screen(vc);
-       }
--      if (mode_switch || fbcon_is_inactive(vc, info) ||
-+      if (mode_switch || !fbcon_is_active(vc, info) ||
-           ops->blank_state != FB_BLANK_UNBLANK)
-               fbcon_del_cursor_work(info);
-       else
-@@ -2598,7 +2598,7 @@ static void fbcon_set_palette(struct vc_data *vc, const unsigned char *table)
-       int i, j, k, depth;
-       u8 val;
--      if (fbcon_is_inactive(vc, info))
-+      if (!fbcon_is_active(vc, info))
-               return;
-       if (!con_is_visible(vc))
-@@ -2698,7 +2698,7 @@ static void fbcon_modechanged(struct fb_info *info)
-               scrollback_max = 0;
-               scrollback_current = 0;
--              if (!fbcon_is_inactive(vc, info)) {
-+              if (fbcon_is_active(vc, info)) {
-                   ops->var.xoffset = ops->var.yoffset = p->yscroll = 0;
-                   ops->update_start(info);
-               }
--- 
-2.51.0
-
diff --git a/queue-6.12/fbcon-introduce-get_-fg-bg-_color.patch b/queue-6.12/fbcon-introduce-get_-fg-bg-_color.patch
deleted file mode 100644 (file)
index 5318a71..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-From 5b78f9e637bdacf8b66b09cd4b230be8fa24aa7f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 23 Sep 2024 18:57:48 +0300
-Subject: fbcon: Introduce get_{fg,bg}_color()
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Ville Syrjälä <ville.syrjala@linux.intel.com>
-
-[ Upstream commit 311b07842fb0bb69b5b266b3dfd6037260a3ec2a ]
-
-Make the code more legible by adding get_{fg,bg}_color()
-which hide the obscure 'is_fg' parameter of get_color()
-from the caller.
-
-Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
-Acked-by: Helge Deller <deller@gmx.de>
-Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
-Signed-off-by: Helge Deller <deller@gmx.de>
-Stable-dep-of: 8e9bf8b9e8c0 ("printk, vt, fbcon: Remove console_conditional_schedule()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/video/fbdev/core/fbcon.c | 24 ++++++++++++++++++------
- 1 file changed, 18 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
-index 800c9e1724f16..890c6f79f24f6 100644
---- a/drivers/video/fbdev/core/fbcon.c
-+++ b/drivers/video/fbdev/core/fbcon.c
-@@ -366,6 +366,16 @@ static int get_color(struct vc_data *vc, struct fb_info *info,
-       return color;
- }
-+static int get_fg_color(struct vc_data *vc, struct fb_info *info, u16 c)
-+{
-+      return get_color(vc, info, c, 1);
-+}
-+
-+static int get_bg_color(struct vc_data *vc, struct fb_info *info, u16 c)
-+{
-+      return get_color(vc, info, c, 0);
-+}
-+
- static void fb_flashcursor(struct work_struct *work)
- {
-       struct fbcon_ops *ops = container_of(work, struct fbcon_ops, cursor_work.work);
-@@ -397,8 +407,9 @@ static void fb_flashcursor(struct work_struct *work)
-       c = scr_readw((u16 *) vc->vc_pos);
-       enable = ops->cursor_flash && !ops->cursor_state.enable;
--      ops->cursor(vc, info, enable, get_color(vc, info, c, 1),
--                  get_color(vc, info, c, 0));
-+      ops->cursor(vc, info, enable,
-+                  get_fg_color(vc, info, c),
-+                  get_bg_color(vc, info, c));
-       console_unlock();
-       queue_delayed_work(system_power_efficient_wq, &ops->cursor_work,
-@@ -1316,8 +1327,8 @@ static void fbcon_putcs(struct vc_data *vc, const u16 *s, unsigned int count,
-       if (fbcon_is_active(vc, info))
-               ops->putcs(vc, info, s, count, real_y(p, ypos), xpos,
--                         get_color(vc, info, scr_readw(s), 1),
--                         get_color(vc, info, scr_readw(s), 0));
-+                         get_fg_color(vc, info, scr_readw(s)),
-+                         get_bg_color(vc, info, scr_readw(s)));
- }
- static void fbcon_clear_margins(struct vc_data *vc, int bottom_only)
-@@ -1350,8 +1361,9 @@ static void fbcon_cursor(struct vc_data *vc, bool enable)
-       if (!ops->cursor)
-               return;
--      ops->cursor(vc, info, enable, get_color(vc, info, c, 1),
--                  get_color(vc, info, c, 0));
-+      ops->cursor(vc, info, enable,
-+                  get_fg_color(vc, info, c),
-+                  get_bg_color(vc, info, c));
- }
- static int scrollback_phys_max = 0;
--- 
-2.51.0
-
diff --git a/queue-6.12/fbcon-move-fbcon-callbacks-into-struct-fbcon_bitops.patch b/queue-6.12/fbcon-move-fbcon-callbacks-into-struct-fbcon_bitops.patch
deleted file mode 100644 (file)
index f747e5a..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-From fbf85f230d07d459c01a529a1cd5ce7fc4cdb10b Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 9 Sep 2025 14:44:44 +0200
-Subject: fbcon: Move fbcon callbacks into struct fbcon_bitops
-
-From: Thomas Zimmermann <tzimmermann@suse.de>
-
-[ Upstream commit 217cb07be424d127293dc0b32dbd077ad37c24f6 ]
-
-Depending on rotation settings, fbcon sets different callback
-functions in struct fbcon_par from within fbcon_set_bitops(). Declare
-the callback functions in the new type struct fbcon_bitops. Then
-only replace the single bitops pointer in struct fbcon_par.
-
-Keeping callbacks in constant instances of struct fbcon_bitops
-makes it harder to exploit the callbacks. Also makes the code slightly
-easier to maintain.
-
-For tile-based consoles, there's a separate instance of the bitops
-structure.
-
-Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
-Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
-Link: https://lore.kernel.org/r/20250909124616.143365-5-tzimmermann@suse.de
-Stable-dep-of: 8e9bf8b9e8c0 ("printk, vt, fbcon: Remove console_conditional_schedule()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/video/fbdev/core/bitblit.c   | 17 ++++---
- drivers/video/fbdev/core/fbcon.c     | 67 +++++++++++++++-------------
- drivers/video/fbdev/core/fbcon.h     |  7 ++-
- drivers/video/fbdev/core/fbcon_ccw.c | 18 +++++---
- drivers/video/fbdev/core/fbcon_cw.c  | 18 +++++---
- drivers/video/fbdev/core/fbcon_ud.c  | 18 +++++---
- drivers/video/fbdev/core/tileblit.c  | 16 ++++---
- 7 files changed, 94 insertions(+), 67 deletions(-)
-
-diff --git a/drivers/video/fbdev/core/bitblit.c b/drivers/video/fbdev/core/bitblit.c
-index bed8ba18222b9..8b5819877469e 100644
---- a/drivers/video/fbdev/core/bitblit.c
-+++ b/drivers/video/fbdev/core/bitblit.c
-@@ -409,15 +409,18 @@ static int bit_update_start(struct fb_info *info)
-       return err;
- }
-+static const struct fbcon_bitops bit_fbcon_bitops = {
-+      .bmove = bit_bmove,
-+      .clear = bit_clear,
-+      .putcs = bit_putcs,
-+      .clear_margins = bit_clear_margins,
-+      .cursor = bit_cursor,
-+      .update_start = bit_update_start,
-+};
-+
- void fbcon_set_bitops(struct fbcon_par *par)
- {
--      par->bmove = bit_bmove;
--      par->clear = bit_clear;
--      par->putcs = bit_putcs;
--      par->clear_margins = bit_clear_margins;
--      par->cursor = bit_cursor;
--      par->update_start = bit_update_start;
--      par->rotate_font = NULL;
-+      par->bitops = &bit_fbcon_bitops;
-       if (par->rotate)
-               fbcon_set_rotate(par);
-diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
-index 665c400a2d3a9..3cc68324f297b 100644
---- a/drivers/video/fbdev/core/fbcon.c
-+++ b/drivers/video/fbdev/core/fbcon.c
-@@ -407,9 +407,9 @@ static void fb_flashcursor(struct work_struct *work)
-       c = scr_readw((u16 *) vc->vc_pos);
-       enable = par->cursor_flash && !par->cursor_state.enable;
--      par->cursor(vc, info, enable,
--                  get_fg_color(vc, info, c),
--                  get_bg_color(vc, info, c));
-+      par->bitops->cursor(vc, info, enable,
-+                          get_fg_color(vc, info, c),
-+                          get_bg_color(vc, info, c));
-       console_unlock();
-       queue_delayed_work(system_power_efficient_wq, &par->cursor_work,
-@@ -1164,7 +1164,7 @@ static void fbcon_init(struct vc_data *vc, bool init)
-       if (logo)
-               fbcon_prepare_logo(vc, info, cols, rows, new_cols, new_rows);
--      if (par->rotate_font && par->rotate_font(info, vc)) {
-+      if (par->bitops->rotate_font && par->bitops->rotate_font(info, vc)) {
-               par->rotate = FB_ROTATE_UR;
-               set_blitting_type(vc, info);
-       }
-@@ -1305,10 +1305,11 @@ static void __fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
-       y_break = p->vrows - p->yscroll;
-       if (sy < y_break && sy + height - 1 >= y_break) {
-               u_int b = y_break - sy;
--              par->clear(vc, info, real_y(p, sy), sx, b, width, fg, bg);
--              par->clear(vc, info, real_y(p, sy + b), sx, height - b, width, fg, bg);
-+              par->bitops->clear(vc, info, real_y(p, sy), sx, b, width, fg, bg);
-+              par->bitops->clear(vc, info, real_y(p, sy + b), sx, height - b,
-+                                   width, fg, bg);
-       } else
--              par->clear(vc, info, real_y(p, sy), sx, height, width, fg, bg);
-+              par->bitops->clear(vc, info, real_y(p, sy), sx, height, width, fg, bg);
- }
- static void fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
-@@ -1325,9 +1326,9 @@ static void fbcon_putcs(struct vc_data *vc, const u16 *s, unsigned int count,
-       struct fbcon_par *par = info->fbcon_par;
-       if (fbcon_is_active(vc, info))
--              par->putcs(vc, info, s, count, real_y(p, ypos), xpos,
--                         get_fg_color(vc, info, scr_readw(s)),
--                         get_bg_color(vc, info, scr_readw(s)));
-+              par->bitops->putcs(vc, info, s, count, real_y(p, ypos), xpos,
-+                                 get_fg_color(vc, info, scr_readw(s)),
-+                                 get_bg_color(vc, info, scr_readw(s)));
- }
- static void fbcon_clear_margins(struct vc_data *vc, int bottom_only)
-@@ -1336,7 +1337,7 @@ static void fbcon_clear_margins(struct vc_data *vc, int bottom_only)
-       struct fbcon_par *par = info->fbcon_par;
-       if (fbcon_is_active(vc, info))
--              par->clear_margins(vc, info, margin_color, bottom_only);
-+              par->bitops->clear_margins(vc, info, margin_color, bottom_only);
- }
- static void fbcon_cursor(struct vc_data *vc, bool enable)
-@@ -1357,12 +1358,12 @@ static void fbcon_cursor(struct vc_data *vc, bool enable)
-       par->cursor_flash = enable;
--      if (!par->cursor)
-+      if (!par->bitops->cursor)
-               return;
--      par->cursor(vc, info, enable,
--                  get_fg_color(vc, info, c),
--                  get_bg_color(vc, info, c));
-+      par->bitops->cursor(vc, info, enable,
-+                          get_fg_color(vc, info, c),
-+                          get_bg_color(vc, info, c));
- }
- static int scrollback_phys_max = 0;
-@@ -1446,7 +1447,7 @@ static __inline__ void ywrap_up(struct vc_data *vc, int count)
-       par->var.xoffset = 0;
-       par->var.yoffset = p->yscroll * vc->vc_font.height;
-       par->var.vmode |= FB_VMODE_YWRAP;
--      par->update_start(info);
-+      par->bitops->update_start(info);
-       scrollback_max += count;
-       if (scrollback_max > scrollback_phys_max)
-               scrollback_max = scrollback_phys_max;
-@@ -1465,7 +1466,7 @@ static __inline__ void ywrap_down(struct vc_data *vc, int count)
-       par->var.xoffset = 0;
-       par->var.yoffset = p->yscroll * vc->vc_font.height;
-       par->var.vmode |= FB_VMODE_YWRAP;
--      par->update_start(info);
-+      par->bitops->update_start(info);
-       scrollback_max -= count;
-       if (scrollback_max < 0)
-               scrollback_max = 0;
-@@ -1480,15 +1481,15 @@ static __inline__ void ypan_up(struct vc_data *vc, int count)
-       p->yscroll += count;
-       if (p->yscroll > p->vrows - vc->vc_rows) {
--              par->bmove(vc, info, p->vrows - vc->vc_rows,
--                          0, 0, 0, vc->vc_rows, vc->vc_cols);
-+              par->bitops->bmove(vc, info, p->vrows - vc->vc_rows,
-+                                 0, 0, 0, vc->vc_rows, vc->vc_cols);
-               p->yscroll -= p->vrows - vc->vc_rows;
-       }
-       par->var.xoffset = 0;
-       par->var.yoffset = p->yscroll * vc->vc_font.height;
-       par->var.vmode &= ~FB_VMODE_YWRAP;
--      par->update_start(info);
-+      par->bitops->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max += count;
-       if (scrollback_max > scrollback_phys_max)
-@@ -1512,7 +1513,7 @@ static __inline__ void ypan_up_redraw(struct vc_data *vc, int t, int count)
-       par->var.xoffset = 0;
-       par->var.yoffset = p->yscroll * vc->vc_font.height;
-       par->var.vmode &= ~FB_VMODE_YWRAP;
--      par->update_start(info);
-+      par->bitops->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max += count;
-       if (scrollback_max > scrollback_phys_max)
-@@ -1528,15 +1529,15 @@ static __inline__ void ypan_down(struct vc_data *vc, int count)
-       p->yscroll -= count;
-       if (p->yscroll < 0) {
--              par->bmove(vc, info, 0, 0, p->vrows - vc->vc_rows,
--                          0, vc->vc_rows, vc->vc_cols);
-+              par->bitops->bmove(vc, info, 0, 0, p->vrows - vc->vc_rows,
-+                                 0, vc->vc_rows, vc->vc_cols);
-               p->yscroll += p->vrows - vc->vc_rows;
-       }
-       par->var.xoffset = 0;
-       par->var.yoffset = p->yscroll * vc->vc_font.height;
-       par->var.vmode &= ~FB_VMODE_YWRAP;
--      par->update_start(info);
-+      par->bitops->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max -= count;
-       if (scrollback_max < 0)
-@@ -1560,7 +1561,7 @@ static __inline__ void ypan_down_redraw(struct vc_data *vc, int t, int count)
-       par->var.xoffset = 0;
-       par->var.yoffset = p->yscroll * vc->vc_font.height;
-       par->var.vmode &= ~FB_VMODE_YWRAP;
--      par->update_start(info);
-+      par->bitops->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max -= count;
-       if (scrollback_max < 0)
-@@ -1622,8 +1623,8 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
-                       if (c == scr_readw(d)) {
-                               if (s > start) {
--                                      par->bmove(vc, info, line + ycount, x,
--                                                 line, x, 1, s - start);
-+                                      par->bitops->bmove(vc, info, line + ycount, x,
-+                                                         line, x, 1, s - start);
-                                       x += s - start + 1;
-                                       start = s + 1;
-                               } else {
-@@ -1638,7 +1639,8 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
-                       d++;
-               } while (s < le);
-               if (s > start)
--                      par->bmove(vc, info, line + ycount, x, line, x, 1, s - start);
-+                      par->bitops->bmove(vc, info, line + ycount, x, line, x, 1,
-+                                           s - start);
-               console_conditional_schedule();
-               if (ycount > 0)
-                       line++;
-@@ -1743,7 +1745,8 @@ static void fbcon_bmove_rec(struct vc_data *vc, struct fbcon_display *p, int sy,
-               }
-               return;
-       }
--      par->bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx, height, width);
-+      par->bitops->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,
-@@ -2163,7 +2166,7 @@ static bool fbcon_switch(struct vc_data *vc)
-       set_blitting_type(vc, info);
-       par->cursor_reset = 1;
--      if (par->rotate_font && par->rotate_font(info, vc)) {
-+      if (par->bitops->rotate_font && par->bitops->rotate_font(info, vc)) {
-               par->rotate = FB_ROTATE_UR;
-               set_blitting_type(vc, info);
-       }
-@@ -2196,7 +2199,7 @@ static bool fbcon_switch(struct vc_data *vc)
-       if (fbcon_is_active(vc, info)) {
-               par->var.xoffset = par->var.yoffset = p->yscroll = 0;
--              par->update_start(info);
-+              par->bitops->update_start(info);
-       }
-       fbcon_set_palette(vc, color_table);
-@@ -2702,7 +2705,7 @@ static void fbcon_modechanged(struct fb_info *info)
-               if (fbcon_is_active(vc, info)) {
-                       par->var.xoffset = par->var.yoffset = p->yscroll = 0;
--                      par->update_start(info);
-+                      par->bitops->update_start(info);
-               }
-               fbcon_set_palette(vc, color_table);
-diff --git a/drivers/video/fbdev/core/fbcon.h b/drivers/video/fbdev/core/fbcon.h
-index 31ee2d5912219..69ae6b965a103 100644
---- a/drivers/video/fbdev/core/fbcon.h
-+++ b/drivers/video/fbdev/core/fbcon.h
-@@ -51,7 +51,7 @@ struct fbcon_display {
-     const struct fb_videomode *mode;
- };
--struct fbcon_par {
-+struct fbcon_bitops {
-       void (*bmove)(struct vc_data *vc, struct fb_info *info, int sy,
-                     int sx, int dy, int dx, int height, int width);
-       void (*clear)(struct vc_data *vc, struct fb_info *info, int sy,
-@@ -65,6 +65,9 @@ struct fbcon_par {
-                      bool enable, int fg, int bg);
-       int  (*update_start)(struct fb_info *info);
-       int  (*rotate_font)(struct fb_info *info, struct vc_data *vc);
-+};
-+
-+struct fbcon_par {
-       struct fb_var_screeninfo var;  /* copy of the current fb_var_screeninfo */
-       struct delayed_work cursor_work; /* Cursor timer */
-       struct fb_cursor cursor_state;
-@@ -86,6 +89,8 @@ struct fbcon_par {
-       u8    *cursor_src;
-       u32    cursor_size;
-       u32    fd_size;
-+
-+      const struct fbcon_bitops *bitops;
- };
-     /*
-      *  Attribute Decoding
-diff --git a/drivers/video/fbdev/core/fbcon_ccw.c b/drivers/video/fbdev/core/fbcon_ccw.c
-index ba744b67a4fd9..4721f4b5e29a5 100644
---- a/drivers/video/fbdev/core/fbcon_ccw.c
-+++ b/drivers/video/fbdev/core/fbcon_ccw.c
-@@ -390,13 +390,17 @@ static int ccw_update_start(struct fb_info *info)
-       return err;
- }
-+static const struct fbcon_bitops ccw_fbcon_bitops = {
-+      .bmove = ccw_bmove,
-+      .clear = ccw_clear,
-+      .putcs = ccw_putcs,
-+      .clear_margins = ccw_clear_margins,
-+      .cursor = ccw_cursor,
-+      .update_start = ccw_update_start,
-+      .rotate_font = fbcon_rotate_font,
-+};
-+
- void fbcon_rotate_ccw(struct fbcon_par *par)
- {
--      par->bmove = ccw_bmove;
--      par->clear = ccw_clear;
--      par->putcs = ccw_putcs;
--      par->clear_margins = ccw_clear_margins;
--      par->cursor = ccw_cursor;
--      par->update_start = ccw_update_start;
--      par->rotate_font = fbcon_rotate_font;
-+      par->bitops = &ccw_fbcon_bitops;
- }
-diff --git a/drivers/video/fbdev/core/fbcon_cw.c b/drivers/video/fbdev/core/fbcon_cw.c
-index 974bd9d9b7702..2771924d0fb72 100644
---- a/drivers/video/fbdev/core/fbcon_cw.c
-+++ b/drivers/video/fbdev/core/fbcon_cw.c
-@@ -373,13 +373,17 @@ static int cw_update_start(struct fb_info *info)
-       return err;
- }
-+static const struct fbcon_bitops cw_fbcon_bitops = {
-+      .bmove = cw_bmove,
-+      .clear = cw_clear,
-+      .putcs = cw_putcs,
-+      .clear_margins = cw_clear_margins,
-+      .cursor = cw_cursor,
-+      .update_start = cw_update_start,
-+      .rotate_font = fbcon_rotate_font,
-+};
-+
- void fbcon_rotate_cw(struct fbcon_par *par)
- {
--      par->bmove = cw_bmove;
--      par->clear = cw_clear;
--      par->putcs = cw_putcs;
--      par->clear_margins = cw_clear_margins;
--      par->cursor = cw_cursor;
--      par->update_start = cw_update_start;
--      par->rotate_font = fbcon_rotate_font;
-+      par->bitops = &cw_fbcon_bitops;
- }
-diff --git a/drivers/video/fbdev/core/fbcon_ud.c b/drivers/video/fbdev/core/fbcon_ud.c
-index 1a214a4d538fb..148ca9b539d19 100644
---- a/drivers/video/fbdev/core/fbcon_ud.c
-+++ b/drivers/video/fbdev/core/fbcon_ud.c
-@@ -417,13 +417,17 @@ static int ud_update_start(struct fb_info *info)
-       return err;
- }
-+static const struct fbcon_bitops ud_fbcon_bitops = {
-+      .bmove = ud_bmove,
-+      .clear = ud_clear,
-+      .putcs = ud_putcs,
-+      .clear_margins = ud_clear_margins,
-+      .cursor = ud_cursor,
-+      .update_start = ud_update_start,
-+      .rotate_font = fbcon_rotate_font,
-+};
-+
- void fbcon_rotate_ud(struct fbcon_par *par)
- {
--      par->bmove = ud_bmove;
--      par->clear = ud_clear;
--      par->putcs = ud_putcs;
--      par->clear_margins = ud_clear_margins;
--      par->cursor = ud_cursor;
--      par->update_start = ud_update_start;
--      par->rotate_font = fbcon_rotate_font;
-+      par->bitops = &ud_fbcon_bitops;
- }
-diff --git a/drivers/video/fbdev/core/tileblit.c b/drivers/video/fbdev/core/tileblit.c
-index 4428f2bcd3f8c..a9db668caf727 100644
---- a/drivers/video/fbdev/core/tileblit.c
-+++ b/drivers/video/fbdev/core/tileblit.c
-@@ -161,17 +161,21 @@ static int tile_update_start(struct fb_info *info)
-       return err;
- }
-+static const struct fbcon_bitops tile_fbcon_bitops = {
-+      .bmove = tile_bmove,
-+      .clear = tile_clear,
-+      .putcs = tile_putcs,
-+      .clear_margins = tile_clear_margins,
-+      .cursor = tile_cursor,
-+      .update_start = tile_update_start,
-+};
-+
- void fbcon_set_tileops(struct vc_data *vc, struct fb_info *info)
- {
-       struct fb_tilemap map;
-       struct fbcon_par *par = info->fbcon_par;
--      par->bmove = tile_bmove;
--      par->clear = tile_clear;
--      par->putcs = tile_putcs;
--      par->clear_margins = tile_clear_margins;
--      par->cursor = tile_cursor;
--      par->update_start = tile_update_start;
-+      par->bitops = &tile_fbcon_bitops;
-       if (par->p) {
-               map.width = vc->vc_font.width;
--- 
-2.51.0
-
diff --git a/queue-6.12/fbcon-rename-struct-fbcon_ops-to-struct-fbcon_par.patch b/queue-6.12/fbcon-rename-struct-fbcon_ops-to-struct-fbcon_par.patch
deleted file mode 100644 (file)
index 474c957..0000000
+++ /dev/null
@@ -1,2478 +0,0 @@
-From fd6811ebe8165d0d74eabf975e3744b6a308634b Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 9 Sep 2025 14:44:42 +0200
-Subject: fbcon: Rename struct fbcon_ops to struct fbcon_par
-
-From: Thomas Zimmermann <tzimmermann@suse.de>
-
-[ Upstream commit a6adbbc4c32a016146e117b1e9e5242724a75e10 ]
-
-The type struct fbcon_ops contains fbcon state and callbacks. As the
-callbacks will be removed from struct fbcon_ops, rename the data type
-to struct fbcon_par. Also rename the variables from ops to par.
-
-The _par postfix ("private access registers") is used throughout the
-fbdev subsystem for per-driver state. The fbcon pointer within struct
-fb_info is also named fbcon_par. Hence, the new naming fits existing
-practice.
-
-v2:
-- rename struct fbcon_ops to struct fbcon_par
-- fix build for CONFIG_FB_TILEBITTING=n (kernel test robot)
-- fix indention
-
-Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
-Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
-Link: https://lore.kernel.org/r/20250909124616.143365-3-tzimmermann@suse.de
-Stable-dep-of: 8e9bf8b9e8c0 ("printk, vt, fbcon: Remove console_conditional_schedule()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/video/fbdev/core/bitblit.c      | 122 +++----
- drivers/video/fbdev/core/fbcon.c        | 419 ++++++++++++------------
- drivers/video/fbdev/core/fbcon.h        |   6 +-
- drivers/video/fbdev/core/fbcon_ccw.c    | 146 ++++-----
- drivers/video/fbdev/core/fbcon_cw.c     | 146 ++++-----
- drivers/video/fbdev/core/fbcon_rotate.c |  40 +--
- drivers/video/fbdev/core/fbcon_rotate.h |   6 +-
- drivers/video/fbdev/core/fbcon_ud.c     | 162 ++++-----
- drivers/video/fbdev/core/softcursor.c   |  18 +-
- drivers/video/fbdev/core/tileblit.c     |  28 +-
- 10 files changed, 541 insertions(+), 552 deletions(-)
-
-diff --git a/drivers/video/fbdev/core/bitblit.c b/drivers/video/fbdev/core/bitblit.c
-index dc5ad3fcc7be4..bed8ba18222b9 100644
---- a/drivers/video/fbdev/core/bitblit.c
-+++ b/drivers/video/fbdev/core/bitblit.c
-@@ -261,10 +261,10 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                      int fg, int bg)
- {
-       struct fb_cursor cursor;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       int w = DIV_ROUND_UP(vc->vc_font.width, 8), c;
--      int y = real_y(ops->p, vc->state.y);
-+      int y = real_y(par->p, vc->state.y);
-       int attribute, use_sw = vc->vc_cursor_type & CUR_SW;
-       int err = 1;
-       char *src;
-@@ -278,10 +278,10 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-       attribute = get_attribute(info, c);
-       src = vc->vc_font.data + ((c & charmask) * (w * vc->vc_font.height));
--      if (ops->cursor_state.image.data != src ||
--          ops->cursor_reset) {
--          ops->cursor_state.image.data = src;
--          cursor.set |= FB_CUR_SETIMAGE;
-+      if (par->cursor_state.image.data != src ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.data = src;
-+              cursor.set |= FB_CUR_SETIMAGE;
-       }
-       if (attribute) {
-@@ -290,46 +290,46 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               dst = kmalloc_array(w, vc->vc_font.height, GFP_ATOMIC);
-               if (!dst)
-                       return;
--              kfree(ops->cursor_data);
--              ops->cursor_data = dst;
-+              kfree(par->cursor_data);
-+              par->cursor_data = dst;
-               update_attr(dst, src, attribute, vc);
-               src = dst;
-       }
--      if (ops->cursor_state.image.fg_color != fg ||
--          ops->cursor_state.image.bg_color != bg ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.fg_color = fg;
--              ops->cursor_state.image.bg_color = bg;
-+      if (par->cursor_state.image.fg_color != fg ||
-+          par->cursor_state.image.bg_color != bg ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.fg_color = fg;
-+              par->cursor_state.image.bg_color = bg;
-               cursor.set |= FB_CUR_SETCMAP;
-       }
--      if ((ops->cursor_state.image.dx != (vc->vc_font.width * vc->state.x)) ||
--          (ops->cursor_state.image.dy != (vc->vc_font.height * y)) ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.dx = vc->vc_font.width * vc->state.x;
--              ops->cursor_state.image.dy = vc->vc_font.height * y;
-+      if ((par->cursor_state.image.dx != (vc->vc_font.width * vc->state.x)) ||
-+          (par->cursor_state.image.dy != (vc->vc_font.height * y)) ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.dx = vc->vc_font.width * vc->state.x;
-+              par->cursor_state.image.dy = vc->vc_font.height * y;
-               cursor.set |= FB_CUR_SETPOS;
-       }
--      if (ops->cursor_state.image.height != vc->vc_font.height ||
--          ops->cursor_state.image.width != vc->vc_font.width ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.height = vc->vc_font.height;
--              ops->cursor_state.image.width = vc->vc_font.width;
-+      if (par->cursor_state.image.height != vc->vc_font.height ||
-+          par->cursor_state.image.width != vc->vc_font.width ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.height = vc->vc_font.height;
-+              par->cursor_state.image.width = vc->vc_font.width;
-               cursor.set |= FB_CUR_SETSIZE;
-       }
--      if (ops->cursor_state.hot.x || ops->cursor_state.hot.y ||
--          ops->cursor_reset) {
--              ops->cursor_state.hot.x = cursor.hot.y = 0;
-+      if (par->cursor_state.hot.x || par->cursor_state.hot.y ||
-+          par->cursor_reset) {
-+              par->cursor_state.hot.x = cursor.hot.y = 0;
-               cursor.set |= FB_CUR_SETHOT;
-       }
-       if (cursor.set & FB_CUR_SETSIZE ||
--          vc->vc_cursor_type != ops->p->cursor_shape ||
--          ops->cursor_state.mask == NULL ||
--          ops->cursor_reset) {
-+          vc->vc_cursor_type != par->p->cursor_shape ||
-+          par->cursor_state.mask == NULL ||
-+          par->cursor_reset) {
-               char *mask = kmalloc_array(w, vc->vc_font.height, GFP_ATOMIC);
-               int cur_height, size, i = 0;
-               u8 msk = 0xff;
-@@ -337,13 +337,13 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               if (!mask)
-                       return;
--              kfree(ops->cursor_state.mask);
--              ops->cursor_state.mask = mask;
-+              kfree(par->cursor_state.mask);
-+              par->cursor_state.mask = mask;
--              ops->p->cursor_shape = vc->vc_cursor_type;
-+              par->p->cursor_shape = vc->vc_cursor_type;
-               cursor.set |= FB_CUR_SETSHAPE;
--              switch (CUR_SIZE(ops->p->cursor_shape)) {
-+              switch (CUR_SIZE(par->p->cursor_shape)) {
-               case CUR_NONE:
-                       cur_height = 0;
-                       break;
-@@ -372,19 +372,19 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                       mask[i++] = msk;
-       }
--      ops->cursor_state.enable = enable && !use_sw;
-+      par->cursor_state.enable = enable && !use_sw;
-       cursor.image.data = src;
--      cursor.image.fg_color = ops->cursor_state.image.fg_color;
--      cursor.image.bg_color = ops->cursor_state.image.bg_color;
--      cursor.image.dx = ops->cursor_state.image.dx;
--      cursor.image.dy = ops->cursor_state.image.dy;
--      cursor.image.height = ops->cursor_state.image.height;
--      cursor.image.width = ops->cursor_state.image.width;
--      cursor.hot.x = ops->cursor_state.hot.x;
--      cursor.hot.y = ops->cursor_state.hot.y;
--      cursor.mask = ops->cursor_state.mask;
--      cursor.enable = ops->cursor_state.enable;
-+      cursor.image.fg_color = par->cursor_state.image.fg_color;
-+      cursor.image.bg_color = par->cursor_state.image.bg_color;
-+      cursor.image.dx = par->cursor_state.image.dx;
-+      cursor.image.dy = par->cursor_state.image.dy;
-+      cursor.image.height = par->cursor_state.image.height;
-+      cursor.image.width = par->cursor_state.image.width;
-+      cursor.hot.x = par->cursor_state.hot.x;
-+      cursor.hot.y = par->cursor_state.hot.y;
-+      cursor.mask = par->cursor_state.mask;
-+      cursor.enable = par->cursor_state.enable;
-       cursor.image.depth = 1;
-       cursor.rop = ROP_XOR;
-@@ -394,31 +394,31 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-       if (err)
-               soft_cursor(info, &cursor);
--      ops->cursor_reset = 0;
-+      par->cursor_reset = 0;
- }
- static int bit_update_start(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int err;
--      err = fb_pan_display(info, &ops->var);
--      ops->var.xoffset = info->var.xoffset;
--      ops->var.yoffset = info->var.yoffset;
--      ops->var.vmode = info->var.vmode;
-+      err = fb_pan_display(info, &par->var);
-+      par->var.xoffset = info->var.xoffset;
-+      par->var.yoffset = info->var.yoffset;
-+      par->var.vmode = info->var.vmode;
-       return err;
- }
--void fbcon_set_bitops(struct fbcon_ops *ops)
-+void fbcon_set_bitops(struct fbcon_par *par)
- {
--      ops->bmove = bit_bmove;
--      ops->clear = bit_clear;
--      ops->putcs = bit_putcs;
--      ops->clear_margins = bit_clear_margins;
--      ops->cursor = bit_cursor;
--      ops->update_start = bit_update_start;
--      ops->rotate_font = NULL;
--
--      if (ops->rotate)
--              fbcon_set_rotate(ops);
-+      par->bmove = bit_bmove;
-+      par->clear = bit_clear;
-+      par->putcs = bit_putcs;
-+      par->clear_margins = bit_clear_margins;
-+      par->cursor = bit_cursor;
-+      par->update_start = bit_update_start;
-+      par->rotate_font = NULL;
-+
-+      if (par->rotate)
-+              fbcon_set_rotate(par);
- }
-diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
-index 890c6f79f24f6..665c400a2d3a9 100644
---- a/drivers/video/fbdev/core/fbcon.c
-+++ b/drivers/video/fbdev/core/fbcon.c
-@@ -200,27 +200,27 @@ static struct device *fbcon_device;
- #ifdef CONFIG_FRAMEBUFFER_CONSOLE_ROTATION
- static inline void fbcon_set_rotation(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       if (!(info->flags & FBINFO_MISC_TILEBLITTING) &&
--          ops->p->con_rotate < 4)
--              ops->rotate = ops->p->con_rotate;
-+          par->p->con_rotate < 4)
-+              par->rotate = par->p->con_rotate;
-       else
--              ops->rotate = 0;
-+              par->rotate = 0;
- }
- static void fbcon_rotate(struct fb_info *info, u32 rotate)
- {
--      struct fbcon_ops *ops= info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_info *fb_info;
--      if (!ops || ops->currcon == -1)
-+      if (!par || par->currcon == -1)
-               return;
--      fb_info = fbcon_info_from_console(ops->currcon);
-+      fb_info = fbcon_info_from_console(par->currcon);
-       if (info == fb_info) {
--              struct fbcon_display *p = &fb_display[ops->currcon];
-+              struct fbcon_display *p = &fb_display[par->currcon];
-               if (rotate < 4)
-                       p->con_rotate = rotate;
-@@ -233,12 +233,12 @@ static void fbcon_rotate(struct fb_info *info, u32 rotate)
- static void fbcon_rotate_all(struct fb_info *info, u32 rotate)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct vc_data *vc;
-       struct fbcon_display *p;
-       int i;
--      if (!ops || ops->currcon < 0 || rotate > 3)
-+      if (!par || par->currcon < 0 || rotate > 3)
-               return;
-       for (i = first_fb_vc; i <= last_fb_vc; i++) {
-@@ -256,9 +256,9 @@ static void fbcon_rotate_all(struct fb_info *info, u32 rotate)
- #else
- static inline void fbcon_set_rotation(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      ops->rotate = FB_ROTATE_UR;
-+      par->rotate = FB_ROTATE_UR;
- }
- static void fbcon_rotate(struct fb_info *info, u32 rotate)
-@@ -274,9 +274,9 @@ static void fbcon_rotate_all(struct fb_info *info, u32 rotate)
- static int fbcon_get_rotate(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      return (ops) ? ops->rotate : 0;
-+      return (par) ? par->rotate : 0;
- }
- static bool fbcon_skip_panic(struct fb_info *info)
-@@ -293,10 +293,10 @@ static bool fbcon_skip_panic(struct fb_info *info)
- static inline int fbcon_is_active(struct vc_data *vc, struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       return info->state == FBINFO_STATE_RUNNING &&
--              vc->vc_mode == KD_TEXT && !ops->graphics && !fbcon_skip_panic(info);
-+              vc->vc_mode == KD_TEXT && !par->graphics && !fbcon_skip_panic(info);
- }
- static int get_color(struct vc_data *vc, struct fb_info *info,
-@@ -378,7 +378,7 @@ static int get_bg_color(struct vc_data *vc, struct fb_info *info, u16 c)
- static void fb_flashcursor(struct work_struct *work)
- {
--      struct fbcon_ops *ops = container_of(work, struct fbcon_ops, cursor_work.work);
-+      struct fbcon_par *par = container_of(work, struct fbcon_par, cursor_work.work);
-       struct fb_info *info;
-       struct vc_data *vc = NULL;
-       int c;
-@@ -393,10 +393,10 @@ static void fb_flashcursor(struct work_struct *work)
-               return;
-       /* protected by console_lock */
--      info = ops->info;
-+      info = par->info;
--      if (ops->currcon != -1)
--              vc = vc_cons[ops->currcon].d;
-+      if (par->currcon != -1)
-+              vc = vc_cons[par->currcon].d;
-       if (!vc || !con_is_visible(vc) ||
-           fbcon_info_from_console(vc->vc_num) != info ||
-@@ -406,30 +406,30 @@ static void fb_flashcursor(struct work_struct *work)
-       }
-       c = scr_readw((u16 *) vc->vc_pos);
--      enable = ops->cursor_flash && !ops->cursor_state.enable;
--      ops->cursor(vc, info, enable,
-+      enable = par->cursor_flash && !par->cursor_state.enable;
-+      par->cursor(vc, info, enable,
-                   get_fg_color(vc, info, c),
-                   get_bg_color(vc, info, c));
-       console_unlock();
--      queue_delayed_work(system_power_efficient_wq, &ops->cursor_work,
--                         ops->cur_blink_jiffies);
-+      queue_delayed_work(system_power_efficient_wq, &par->cursor_work,
-+                         par->cur_blink_jiffies);
- }
- static void fbcon_add_cursor_work(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       if (fbcon_cursor_blink)
--              queue_delayed_work(system_power_efficient_wq, &ops->cursor_work,
--                                 ops->cur_blink_jiffies);
-+              queue_delayed_work(system_power_efficient_wq, &par->cursor_work,
-+                                 par->cur_blink_jiffies);
- }
- static void fbcon_del_cursor_work(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      cancel_delayed_work_sync(&ops->cursor_work);
-+      cancel_delayed_work_sync(&par->cursor_work);
- }
- #ifndef MODULE
-@@ -589,7 +589,7 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
-                              int cols, int rows, int new_cols, int new_rows)
- {
-       /* Need to make room for the logo */
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int cnt, erase = vc->vc_video_erase_char, step;
-       unsigned short *save = NULL, *r, *q;
-       int logo_height;
-@@ -605,7 +605,7 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
-        */
-       if (fb_get_color_depth(&info->var, &info->fix) == 1)
-               erase &= ~0x400;
--      logo_height = fb_prepare_logo(info, ops->rotate);
-+      logo_height = fb_prepare_logo(info, par->rotate);
-       logo_lines = DIV_ROUND_UP(logo_height, vc->vc_font.height);
-       q = (unsigned short *) (vc->vc_origin +
-                               vc->vc_size_row * rows);
-@@ -677,15 +677,15 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
- #ifdef CONFIG_FB_TILEBLITTING
- static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      ops->p = &fb_display[vc->vc_num];
-+      par->p = &fb_display[vc->vc_num];
-       if ((info->flags & FBINFO_MISC_TILEBLITTING))
-               fbcon_set_tileops(vc, info);
-       else {
-               fbcon_set_rotation(info);
--              fbcon_set_bitops(ops);
-+              fbcon_set_bitops(par);
-       }
- }
-@@ -702,12 +702,12 @@ static int fbcon_invalid_charcount(struct fb_info *info, unsigned charcount)
- #else
- static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       info->flags &= ~FBINFO_MISC_TILEBLITTING;
--      ops->p = &fb_display[vc->vc_num];
-+      par->p = &fb_display[vc->vc_num];
-       fbcon_set_rotation(info);
--      fbcon_set_bitops(ops);
-+      fbcon_set_bitops(par);
- }
- static int fbcon_invalid_charcount(struct fb_info *info, unsigned charcount)
-@@ -727,13 +727,13 @@ static void fbcon_release(struct fb_info *info)
-       module_put(info->fbops->owner);
-       if (info->fbcon_par) {
--              struct fbcon_ops *ops = info->fbcon_par;
-+              struct fbcon_par *par = info->fbcon_par;
-               fbcon_del_cursor_work(info);
--              kfree(ops->cursor_state.mask);
--              kfree(ops->cursor_data);
--              kfree(ops->cursor_src);
--              kfree(ops->fontbuffer);
-+              kfree(par->cursor_state.mask);
-+              kfree(par->cursor_data);
-+              kfree(par->cursor_src);
-+              kfree(par->fontbuffer);
-               kfree(info->fbcon_par);
-               info->fbcon_par = NULL;
-       }
-@@ -741,7 +741,7 @@ static void fbcon_release(struct fb_info *info)
- static int fbcon_open(struct fb_info *info)
- {
--      struct fbcon_ops *ops;
-+      struct fbcon_par *par;
-       if (!try_module_get(info->fbops->owner))
-               return -ENODEV;
-@@ -755,16 +755,16 @@ static int fbcon_open(struct fb_info *info)
-       }
-       unlock_fb_info(info);
--      ops = kzalloc(sizeof(struct fbcon_ops), GFP_KERNEL);
--      if (!ops) {
-+      par = kzalloc(sizeof(*par), GFP_KERNEL);
-+      if (!par) {
-               fbcon_release(info);
-               return -ENOMEM;
-       }
--      INIT_DELAYED_WORK(&ops->cursor_work, fb_flashcursor);
--      ops->info = info;
--      info->fbcon_par = ops;
--      ops->cur_blink_jiffies = HZ / 5;
-+      INIT_DELAYED_WORK(&par->cursor_work, fb_flashcursor);
-+      par->info = info;
-+      info->fbcon_par = par;
-+      par->cur_blink_jiffies = HZ / 5;
-       return 0;
- }
-@@ -811,12 +811,12 @@ static void con2fb_release_oldinfo(struct vc_data *vc, struct fb_info *oldinfo,
- static void con2fb_init_display(struct vc_data *vc, struct fb_info *info,
-                               int unit, int show_logo)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int ret;
--      ops->currcon = fg_console;
-+      par->currcon = fg_console;
--      if (info->fbops->fb_set_par && !ops->initialized) {
-+      if (info->fbops->fb_set_par && !par->initialized) {
-               ret = info->fbops->fb_set_par(info);
-               if (ret)
-@@ -825,8 +825,8 @@ static void con2fb_init_display(struct vc_data *vc, struct fb_info *info,
-                               "error code %d\n", ret);
-       }
--      ops->initialized = true;
--      ops->graphics = 0;
-+      par->initialized = true;
-+      par->graphics = 0;
-       fbcon_set_disp(info, &info->var, unit);
-       if (show_logo) {
-@@ -963,7 +963,7 @@ static const char *fbcon_startup(void)
-       struct vc_data *vc = vc_cons[fg_console].d;
-       const struct font_desc *font = NULL;
-       struct fb_info *info = NULL;
--      struct fbcon_ops *ops;
-+      struct fbcon_par *par;
-       int rows, cols;
-       /*
-@@ -983,10 +983,10 @@ static const char *fbcon_startup(void)
-       if (fbcon_open(info))
-               return NULL;
--      ops = info->fbcon_par;
--      ops->currcon = -1;
--      ops->graphics = 1;
--      ops->cur_rotate = -1;
-+      par = info->fbcon_par;
-+      par->currcon = -1;
-+      par->graphics = 1;
-+      par->cur_rotate = -1;
-       p->con_rotate = initial_rotation;
-       if (p->con_rotate == -1)
-@@ -1009,8 +1009,8 @@ static const char *fbcon_startup(void)
-               vc->vc_font.charcount = font->charcount;
-       }
--      cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
--      rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
-+      cols = FBCON_SWAP(par->rotate, info->var.xres, info->var.yres);
-+      rows = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-       cols /= vc->vc_font.width;
-       rows /= vc->vc_font.height;
-       vc_resize(vc, cols, rows);
-@@ -1028,7 +1028,7 @@ static const char *fbcon_startup(void)
- static void fbcon_init(struct vc_data *vc, bool init)
- {
-       struct fb_info *info;
--      struct fbcon_ops *ops;
-+      struct fbcon_par *par;
-       struct vc_data **default_mode = vc->vc_display_fg;
-       struct vc_data *svc = *default_mode;
-       struct fbcon_display *t, *p = &fb_display[vc->vc_num];
-@@ -1102,8 +1102,8 @@ static void fbcon_init(struct vc_data *vc, bool init)
-       if (!*vc->uni_pagedict_loc)
-               con_copy_unimap(vc, svc);
--      ops = info->fbcon_par;
--      ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
-+      par = info->fbcon_par;
-+      par->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
-       p->con_rotate = initial_rotation;
-       if (p->con_rotate == -1)
-@@ -1115,8 +1115,8 @@ static void fbcon_init(struct vc_data *vc, bool init)
-       cols = vc->vc_cols;
-       rows = vc->vc_rows;
--      new_cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
--      new_rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
-+      new_cols = FBCON_SWAP(par->rotate, info->var.xres, info->var.yres);
-+      new_rows = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-       new_cols /= vc->vc_font.width;
-       new_rows /= vc->vc_font.height;
-@@ -1128,7 +1128,7 @@ static void fbcon_init(struct vc_data *vc, bool init)
-        * We need to do it in fbcon_init() to prevent screen corruption.
-        */
-       if (con_is_visible(vc) && vc->vc_mode == KD_TEXT) {
--              if (info->fbops->fb_set_par && !ops->initialized) {
-+              if (info->fbops->fb_set_par && !par->initialized) {
-                       ret = info->fbops->fb_set_par(info);
-                       if (ret)
-@@ -1137,10 +1137,10 @@ static void fbcon_init(struct vc_data *vc, bool init)
-                                       "error code %d\n", ret);
-               }
--              ops->initialized = true;
-+              par->initialized = true;
-       }
--      ops->graphics = 0;
-+      par->graphics = 0;
- #ifdef CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION
-       if ((info->flags & FBINFO_HWACCEL_COPYAREA) &&
-@@ -1164,12 +1164,12 @@ static void fbcon_init(struct vc_data *vc, bool init)
-       if (logo)
-               fbcon_prepare_logo(vc, info, cols, rows, new_cols, new_rows);
--      if (ops->rotate_font && ops->rotate_font(info, vc)) {
--              ops->rotate = FB_ROTATE_UR;
-+      if (par->rotate_font && par->rotate_font(info, vc)) {
-+              par->rotate = FB_ROTATE_UR;
-               set_blitting_type(vc, info);
-       }
--      ops->p = &fb_display[fg_console];
-+      par->p = &fb_display[fg_console];
- }
- static void fbcon_free_font(struct fbcon_display *p)
-@@ -1207,7 +1207,7 @@ static void fbcon_deinit(struct vc_data *vc)
- {
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       struct fb_info *info;
--      struct fbcon_ops *ops;
-+      struct fbcon_par *par;
-       int idx;
-       fbcon_free_font(p);
-@@ -1221,15 +1221,15 @@ static void fbcon_deinit(struct vc_data *vc)
-       if (!info)
-               goto finished;
--      ops = info->fbcon_par;
-+      par = info->fbcon_par;
--      if (!ops)
-+      if (!par)
-               goto finished;
-       if (con_is_visible(vc))
-               fbcon_del_cursor_work(info);
--      ops->initialized = false;
-+      par->initialized = false;
- finished:
-       fbcon_free_font(p);
-@@ -1276,7 +1276,7 @@ static void __fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
-                         unsigned int height, unsigned int width)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int fg, bg;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       u_int y_break;
-@@ -1291,7 +1291,7 @@ static void __fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
-               vc->vc_top = 0;
-               /*
-                * If the font dimensions are not an integral of the display
--               * dimensions then the ops->clear below won't end up clearing
-+               * dimensions then the par->clear below won't end up clearing
-                * the margins.  Call clear_margins here in case the logo
-                * bitmap stretched into the margin area.
-                */
-@@ -1305,11 +1305,10 @@ static void __fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
-       y_break = p->vrows - p->yscroll;
-       if (sy < y_break && sy + height - 1 >= y_break) {
-               u_int b = y_break - sy;
--              ops->clear(vc, info, real_y(p, sy), sx, b, width, fg, bg);
--              ops->clear(vc, info, real_y(p, sy + b), sx, height - b,
--                               width, fg, bg);
-+              par->clear(vc, info, real_y(p, sy), sx, b, width, fg, bg);
-+              par->clear(vc, info, real_y(p, sy + b), sx, height - b, width, fg, bg);
-       } else
--              ops->clear(vc, info, real_y(p, sy), sx, height, width, fg, bg);
-+              par->clear(vc, info, real_y(p, sy), sx, height, width, fg, bg);
- }
- static void fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
-@@ -1323,10 +1322,10 @@ static void fbcon_putcs(struct vc_data *vc, const u16 *s, unsigned int count,
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
-       struct fbcon_display *p = &fb_display[vc->vc_num];
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       if (fbcon_is_active(vc, info))
--              ops->putcs(vc, info, s, count, real_y(p, ypos), xpos,
-+              par->putcs(vc, info, s, count, real_y(p, ypos), xpos,
-                          get_fg_color(vc, info, scr_readw(s)),
-                          get_bg_color(vc, info, scr_readw(s)));
- }
-@@ -1334,19 +1333,19 @@ static void fbcon_putcs(struct vc_data *vc, const u16 *s, unsigned int count,
- static void fbcon_clear_margins(struct vc_data *vc, int bottom_only)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       if (fbcon_is_active(vc, info))
--              ops->clear_margins(vc, info, margin_color, bottom_only);
-+              par->clear_margins(vc, info, margin_color, bottom_only);
- }
- static void fbcon_cursor(struct vc_data *vc, bool enable)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int c = scr_readw((u16 *) vc->vc_pos);
--      ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
-+      par->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
-       if (!fbcon_is_active(vc, info) || vc->vc_deccm != 1)
-               return;
-@@ -1356,12 +1355,12 @@ static void fbcon_cursor(struct vc_data *vc, bool enable)
-       else
-               fbcon_add_cursor_work(info);
--      ops->cursor_flash = enable;
-+      par->cursor_flash = enable;
--      if (!ops->cursor)
-+      if (!par->cursor)
-               return;
--      ops->cursor(vc, info, enable,
-+      par->cursor(vc, info, enable,
-                   get_fg_color(vc, info, c),
-                   get_bg_color(vc, info, c));
- }
-@@ -1376,7 +1375,7 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
-       struct fbcon_display *p, *t;
-       struct vc_data **default_mode, *vc;
-       struct vc_data *svc;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int rows, cols;
-       unsigned long ret = 0;
-@@ -1409,7 +1408,7 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
-       var->yoffset = info->var.yoffset;
-       var->xoffset = info->var.xoffset;
-       fb_set_var(info, var);
--      ops->var = info->var;
-+      par->var = info->var;
-       vc->vc_can_do_color = (fb_get_color_depth(&info->var, &info->fix)!=1);
-       vc->vc_complement_mask = vc->vc_can_do_color ? 0x7700 : 0x0800;
-       if (vc->vc_font.charcount == 256) {
-@@ -1425,8 +1424,8 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
-       if (!*vc->uni_pagedict_loc)
-               con_copy_unimap(vc, svc);
--      cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
--      rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
-+      cols = FBCON_SWAP(par->rotate, info->var.xres, info->var.yres);
-+      rows = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-       cols /= vc->vc_font.width;
-       rows /= vc->vc_font.height;
-       ret = vc_resize(vc, cols, rows);
-@@ -1438,16 +1437,16 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
- static __inline__ void ywrap_up(struct vc_data *vc, int count)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       p->yscroll += count;
-       if (p->yscroll >= p->vrows)     /* Deal with wrap */
-               p->yscroll -= p->vrows;
--      ops->var.xoffset = 0;
--      ops->var.yoffset = p->yscroll * vc->vc_font.height;
--      ops->var.vmode |= FB_VMODE_YWRAP;
--      ops->update_start(info);
-+      par->var.xoffset = 0;
-+      par->var.yoffset = p->yscroll * vc->vc_font.height;
-+      par->var.vmode |= FB_VMODE_YWRAP;
-+      par->update_start(info);
-       scrollback_max += count;
-       if (scrollback_max > scrollback_phys_max)
-               scrollback_max = scrollback_phys_max;
-@@ -1457,16 +1456,16 @@ static __inline__ void ywrap_up(struct vc_data *vc, int count)
- static __inline__ void ywrap_down(struct vc_data *vc, int count)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       p->yscroll -= count;
-       if (p->yscroll < 0)     /* Deal with wrap */
-               p->yscroll += p->vrows;
--      ops->var.xoffset = 0;
--      ops->var.yoffset = p->yscroll * vc->vc_font.height;
--      ops->var.vmode |= FB_VMODE_YWRAP;
--      ops->update_start(info);
-+      par->var.xoffset = 0;
-+      par->var.yoffset = p->yscroll * vc->vc_font.height;
-+      par->var.vmode |= FB_VMODE_YWRAP;
-+      par->update_start(info);
-       scrollback_max -= count;
-       if (scrollback_max < 0)
-               scrollback_max = 0;
-@@ -1477,19 +1476,19 @@ static __inline__ void ypan_up(struct vc_data *vc, int count)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
-       struct fbcon_display *p = &fb_display[vc->vc_num];
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       p->yscroll += count;
-       if (p->yscroll > p->vrows - vc->vc_rows) {
--              ops->bmove(vc, info, p->vrows - vc->vc_rows,
-+              par->bmove(vc, info, p->vrows - vc->vc_rows,
-                           0, 0, 0, vc->vc_rows, vc->vc_cols);
-               p->yscroll -= p->vrows - vc->vc_rows;
-       }
--      ops->var.xoffset = 0;
--      ops->var.yoffset = p->yscroll * vc->vc_font.height;
--      ops->var.vmode &= ~FB_VMODE_YWRAP;
--      ops->update_start(info);
-+      par->var.xoffset = 0;
-+      par->var.yoffset = p->yscroll * vc->vc_font.height;
-+      par->var.vmode &= ~FB_VMODE_YWRAP;
-+      par->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max += count;
-       if (scrollback_max > scrollback_phys_max)
-@@ -1500,7 +1499,7 @@ static __inline__ void ypan_up(struct vc_data *vc, int count)
- static __inline__ void ypan_up_redraw(struct vc_data *vc, int t, int count)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       p->yscroll += count;
-@@ -1510,10 +1509,10 @@ static __inline__ void ypan_up_redraw(struct vc_data *vc, int t, int count)
-               fbcon_redraw_move(vc, p, t + count, vc->vc_rows - count, t);
-       }
--      ops->var.xoffset = 0;
--      ops->var.yoffset = p->yscroll * vc->vc_font.height;
--      ops->var.vmode &= ~FB_VMODE_YWRAP;
--      ops->update_start(info);
-+      par->var.xoffset = 0;
-+      par->var.yoffset = p->yscroll * vc->vc_font.height;
-+      par->var.vmode &= ~FB_VMODE_YWRAP;
-+      par->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max += count;
-       if (scrollback_max > scrollback_phys_max)
-@@ -1525,19 +1524,19 @@ static __inline__ void ypan_down(struct vc_data *vc, int count)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
-       struct fbcon_display *p = &fb_display[vc->vc_num];
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       p->yscroll -= count;
-       if (p->yscroll < 0) {
--              ops->bmove(vc, info, 0, 0, p->vrows - vc->vc_rows,
-+              par->bmove(vc, info, 0, 0, p->vrows - vc->vc_rows,
-                           0, vc->vc_rows, vc->vc_cols);
-               p->yscroll += p->vrows - vc->vc_rows;
-       }
--      ops->var.xoffset = 0;
--      ops->var.yoffset = p->yscroll * vc->vc_font.height;
--      ops->var.vmode &= ~FB_VMODE_YWRAP;
--      ops->update_start(info);
-+      par->var.xoffset = 0;
-+      par->var.yoffset = p->yscroll * vc->vc_font.height;
-+      par->var.vmode &= ~FB_VMODE_YWRAP;
-+      par->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max -= count;
-       if (scrollback_max < 0)
-@@ -1548,7 +1547,7 @@ static __inline__ void ypan_down(struct vc_data *vc, int count)
- static __inline__ void ypan_down_redraw(struct vc_data *vc, int t, int count)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       p->yscroll -= count;
-@@ -1558,10 +1557,10 @@ static __inline__ void ypan_down_redraw(struct vc_data *vc, int t, int count)
-               fbcon_redraw_move(vc, p, t, vc->vc_rows - count, t + count);
-       }
--      ops->var.xoffset = 0;
--      ops->var.yoffset = p->yscroll * vc->vc_font.height;
--      ops->var.vmode &= ~FB_VMODE_YWRAP;
--      ops->update_start(info);
-+      par->var.xoffset = 0;
-+      par->var.yoffset = p->yscroll * vc->vc_font.height;
-+      par->var.vmode &= ~FB_VMODE_YWRAP;
-+      par->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max -= count;
-       if (scrollback_max < 0)
-@@ -1610,7 +1609,7 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
-       unsigned short *d = (unsigned short *)
-           (vc->vc_origin + vc->vc_size_row * line);
-       unsigned short *s = d + offset;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       while (count--) {
-               unsigned short *start = s;
-@@ -1623,8 +1622,8 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
-                       if (c == scr_readw(d)) {
-                               if (s > start) {
--                                      ops->bmove(vc, info, line + ycount, x,
--                                                 line, x, 1, s-start);
-+                                      par->bmove(vc, info, line + ycount, x,
-+                                                 line, x, 1, s - start);
-                                       x += s - start + 1;
-                                       start = s + 1;
-                               } else {
-@@ -1639,8 +1638,7 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
-                       d++;
-               } while (s < le);
-               if (s > start)
--                      ops->bmove(vc, info, line + ycount, x, line, x, 1,
--                                 s-start);
-+                      par->bmove(vc, info, line + ycount, x, line, x, 1, s - start);
-               console_conditional_schedule();
-               if (ycount > 0)
-                       line++;
-@@ -1711,7 +1709,7 @@ static void fbcon_bmove_rec(struct vc_data *vc, struct fbcon_display *p, int sy,
-                           int dy, int dx, int height, int width, u_int y_break)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u_int b;
-       if (sy < y_break && sy + height > y_break) {
-@@ -1745,8 +1743,7 @@ static void fbcon_bmove_rec(struct vc_data *vc, struct fbcon_display *p, int sy,
-               }
-               return;
-       }
--      ops->bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx,
--                 height, width);
-+      par->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,
-@@ -1973,15 +1970,13 @@ static void updatescrollmode_accel(struct fbcon_display *p,
-                                       struct vc_data *vc)
- {
- #ifdef CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int cap = info->flags;
-       u16 t = 0;
--      int ypan = FBCON_SWAP(ops->rotate, info->fix.ypanstep,
--                                info->fix.xpanstep);
--      int ywrap = FBCON_SWAP(ops->rotate, info->fix.ywrapstep, t);
--      int yres = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
--      int vyres = FBCON_SWAP(ops->rotate, info->var.yres_virtual,
--                                 info->var.xres_virtual);
-+      int ypan = FBCON_SWAP(par->rotate, info->fix.ypanstep, info->fix.xpanstep);
-+      int ywrap = FBCON_SWAP(par->rotate, info->fix.ywrapstep, t);
-+      int yres = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-+      int vyres = FBCON_SWAP(par->rotate, info->var.yres_virtual, info->var.xres_virtual);
-       int good_pan = (cap & FBINFO_HWACCEL_YPAN) &&
-               divides(ypan, vc->vc_font.height) && vyres > yres;
-       int good_wrap = (cap & FBINFO_HWACCEL_YWRAP) &&
-@@ -2014,11 +2009,10 @@ static void updatescrollmode(struct fbcon_display *p,
-                                       struct fb_info *info,
-                                       struct vc_data *vc)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int fh = vc->vc_font.height;
--      int yres = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
--      int vyres = FBCON_SWAP(ops->rotate, info->var.yres_virtual,
--                                 info->var.xres_virtual);
-+      int yres = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-+      int vyres = FBCON_SWAP(par->rotate, info->var.yres_virtual, info->var.xres_virtual);
-       p->vrows = vyres/fh;
-       if (yres > (fh * (vc->vc_rows + 1)))
-@@ -2037,7 +2031,7 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width,
-                       unsigned int height, bool from_user)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       struct fb_var_screeninfo var = info->var;
-       int x_diff, y_diff, virt_w, virt_h, virt_fw, virt_fh;
-@@ -2060,12 +2054,10 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width,
-                       return -EINVAL;
-       }
--      virt_w = FBCON_SWAP(ops->rotate, width, height);
--      virt_h = FBCON_SWAP(ops->rotate, height, width);
--      virt_fw = FBCON_SWAP(ops->rotate, vc->vc_font.width,
--                               vc->vc_font.height);
--      virt_fh = FBCON_SWAP(ops->rotate, vc->vc_font.height,
--                               vc->vc_font.width);
-+      virt_w = FBCON_SWAP(par->rotate, width, height);
-+      virt_h = FBCON_SWAP(par->rotate, height, width);
-+      virt_fw = FBCON_SWAP(par->rotate, vc->vc_font.width, vc->vc_font.height);
-+      virt_fh = FBCON_SWAP(par->rotate, vc->vc_font.height, vc->vc_font.width);
-       var.xres = virt_w * virt_fw;
-       var.yres = virt_h * virt_fh;
-       x_diff = info->var.xres - var.xres;
-@@ -2091,7 +2083,7 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width,
-                       fb_set_var(info, &var);
-               }
-               var_to_display(p, &info->var, info);
--              ops->var = info->var;
-+              par->var = info->var;
-       }
-       updatescrollmode(p, info, vc);
-       return 0;
-@@ -2100,13 +2092,13 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width,
- static bool fbcon_switch(struct vc_data *vc)
- {
-       struct fb_info *info, *old_info = NULL;
--      struct fbcon_ops *ops;
-+      struct fbcon_par *par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       struct fb_var_screeninfo var;
-       int i, ret, prev_console;
-       info = fbcon_info_from_console(vc->vc_num);
--      ops = info->fbcon_par;
-+      par = info->fbcon_par;
-       if (logo_shown >= 0) {
-               struct vc_data *conp2 = vc_cons[logo_shown].d;
-@@ -2117,7 +2109,7 @@ static bool fbcon_switch(struct vc_data *vc)
-               logo_shown = FBCON_LOGO_CANSHOW;
-       }
--      prev_console = ops->currcon;
-+      prev_console = par->currcon;
-       if (prev_console != -1)
-               old_info = fbcon_info_from_console(prev_console);
-       /*
-@@ -2130,9 +2122,9 @@ static bool fbcon_switch(struct vc_data *vc)
-        */
-       fbcon_for_each_registered_fb(i) {
-               if (fbcon_registered_fb[i]->fbcon_par) {
--                      struct fbcon_ops *o = fbcon_registered_fb[i]->fbcon_par;
-+                      struct fbcon_par *par = fbcon_registered_fb[i]->fbcon_par;
--                      o->currcon = vc->vc_num;
-+                      par->currcon = vc->vc_num;
-               }
-       }
-       memset(&var, 0, sizeof(struct fb_var_screeninfo));
-@@ -2146,7 +2138,7 @@ static bool fbcon_switch(struct vc_data *vc)
-       info->var.activate = var.activate;
-       var.vmode |= info->var.vmode & ~FB_VMODE_MASK;
-       fb_set_var(info, &var);
--      ops->var = info->var;
-+      par->var = info->var;
-       if (old_info != NULL && (old_info != info ||
-                                info->flags & FBINFO_MISC_ALWAYS_SETPAR)) {
-@@ -2163,17 +2155,16 @@ static bool fbcon_switch(struct vc_data *vc)
-                       fbcon_del_cursor_work(old_info);
-       }
--      if (!fbcon_is_active(vc, info) ||
--          ops->blank_state != FB_BLANK_UNBLANK)
-+      if (!fbcon_is_active(vc, info) || par->blank_state != FB_BLANK_UNBLANK)
-               fbcon_del_cursor_work(info);
-       else
-               fbcon_add_cursor_work(info);
-       set_blitting_type(vc, info);
--      ops->cursor_reset = 1;
-+      par->cursor_reset = 1;
--      if (ops->rotate_font && ops->rotate_font(info, vc)) {
--              ops->rotate = FB_ROTATE_UR;
-+      if (par->rotate_font && par->rotate_font(info, vc)) {
-+              par->rotate = FB_ROTATE_UR;
-               set_blitting_type(vc, info);
-       }
-@@ -2204,8 +2195,8 @@ static bool fbcon_switch(struct vc_data *vc)
-       scrollback_current = 0;
-       if (fbcon_is_active(vc, info)) {
--          ops->var.xoffset = ops->var.yoffset = p->yscroll = 0;
--          ops->update_start(info);
-+              par->var.xoffset = par->var.yoffset = p->yscroll = 0;
-+              par->update_start(info);
-       }
-       fbcon_set_palette(vc, color_table);
-@@ -2214,7 +2205,7 @@ static bool fbcon_switch(struct vc_data *vc)
-       if (logo_shown == FBCON_LOGO_DRAW) {
-               logo_shown = fg_console;
--              fb_show_logo(info, ops->rotate);
-+              fb_show_logo(info, par->rotate);
-               update_region(vc,
-                             vc->vc_origin + vc->vc_size_row * vc->vc_top,
-                             vc->vc_size_row * (vc->vc_bottom -
-@@ -2243,27 +2234,27 @@ static bool fbcon_blank(struct vc_data *vc, enum vesa_blank_mode blank,
-                       bool mode_switch)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       if (mode_switch) {
-               struct fb_var_screeninfo var = info->var;
--              ops->graphics = 1;
-+              par->graphics = 1;
-               if (!blank) {
-                       var.activate = FB_ACTIVATE_NOW | FB_ACTIVATE_FORCE |
-                               FB_ACTIVATE_KD_TEXT;
-                       fb_set_var(info, &var);
--                      ops->graphics = 0;
--                      ops->var = info->var;
-+                      par->graphics = 0;
-+                      par->var = info->var;
-               }
-       }
-       if (fbcon_is_active(vc, info)) {
--              if (ops->blank_state != blank) {
--                      ops->blank_state = blank;
-+              if (par->blank_state != blank) {
-+                      par->blank_state = blank;
-                       fbcon_cursor(vc, !blank);
--                      ops->cursor_flash = (!blank);
-+                      par->cursor_flash = (!blank);
-                       if (fb_blank(info, blank))
-                               fbcon_generic_blank(vc, info, blank);
-@@ -2273,8 +2264,7 @@ static bool fbcon_blank(struct vc_data *vc, enum vesa_blank_mode blank,
-                       update_screen(vc);
-       }
--      if (mode_switch || !fbcon_is_active(vc, info) ||
--          ops->blank_state != FB_BLANK_UNBLANK)
-+      if (mode_switch || !fbcon_is_active(vc, info) || par->blank_state != FB_BLANK_UNBLANK)
-               fbcon_del_cursor_work(info);
-       else
-               fbcon_add_cursor_work(info);
-@@ -2285,10 +2275,10 @@ static bool fbcon_blank(struct vc_data *vc, enum vesa_blank_mode blank,
- static void fbcon_debug_enter(struct vc_data *vc)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      ops->save_graphics = ops->graphics;
--      ops->graphics = 0;
-+      par->save_graphics = par->graphics;
-+      par->graphics = 0;
-       if (info->fbops->fb_debug_enter)
-               info->fbops->fb_debug_enter(info);
-       fbcon_set_palette(vc, color_table);
-@@ -2297,9 +2287,9 @@ static void fbcon_debug_enter(struct vc_data *vc)
- static void fbcon_debug_leave(struct vc_data *vc)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      ops->graphics = ops->save_graphics;
-+      par->graphics = par->save_graphics;
-       if (info->fbops->fb_debug_leave)
-               info->fbops->fb_debug_leave(info);
- }
-@@ -2434,7 +2424,7 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h, int charcount,
-                            const u8 * data, int userfont)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       int resize, ret, old_userfont, old_width, old_height, old_charcount;
-       u8 *old_data = vc->vc_font.data;
-@@ -2460,8 +2450,8 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h, int charcount,
-       if (resize) {
-               int cols, rows;
--              cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
--              rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
-+              cols = FBCON_SWAP(par->rotate, info->var.xres, info->var.yres);
-+              rows = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-               cols /= w;
-               rows /= h;
-               ret = vc_resize(vc, cols, rows);
-@@ -2660,11 +2650,11 @@ static void fbcon_invert_region(struct vc_data *vc, u16 * p, int cnt)
- void fbcon_suspended(struct fb_info *info)
- {
-       struct vc_data *vc = NULL;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      if (!ops || ops->currcon < 0)
-+      if (!par || par->currcon < 0)
-               return;
--      vc = vc_cons[ops->currcon].d;
-+      vc = vc_cons[par->currcon].d;
-       /* Clear cursor, restore saved data */
-       fbcon_cursor(vc, false);
-@@ -2673,27 +2663,27 @@ void fbcon_suspended(struct fb_info *info)
- void fbcon_resumed(struct fb_info *info)
- {
-       struct vc_data *vc;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      if (!ops || ops->currcon < 0)
-+      if (!par || par->currcon < 0)
-               return;
--      vc = vc_cons[ops->currcon].d;
-+      vc = vc_cons[par->currcon].d;
-       update_screen(vc);
- }
- static void fbcon_modechanged(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct vc_data *vc;
-       struct fbcon_display *p;
-       int rows, cols;
--      if (!ops || ops->currcon < 0)
-+      if (!par || par->currcon < 0)
-               return;
--      vc = vc_cons[ops->currcon].d;
-+      vc = vc_cons[par->currcon].d;
-       if (vc->vc_mode != KD_TEXT ||
--          fbcon_info_from_console(ops->currcon) != info)
-+          fbcon_info_from_console(par->currcon) != info)
-               return;
-       p = &fb_display[vc->vc_num];
-@@ -2701,8 +2691,8 @@ static void fbcon_modechanged(struct fb_info *info)
-       if (con_is_visible(vc)) {
-               var_to_display(p, &info->var, info);
--              cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
--              rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
-+              cols = FBCON_SWAP(par->rotate, info->var.xres, info->var.yres);
-+              rows = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-               cols /= vc->vc_font.width;
-               rows /= vc->vc_font.height;
-               vc_resize(vc, cols, rows);
-@@ -2711,8 +2701,8 @@ static void fbcon_modechanged(struct fb_info *info)
-               scrollback_current = 0;
-               if (fbcon_is_active(vc, info)) {
--                  ops->var.xoffset = ops->var.yoffset = p->yscroll = 0;
--                  ops->update_start(info);
-+                      par->var.xoffset = par->var.yoffset = p->yscroll = 0;
-+                      par->update_start(info);
-               }
-               fbcon_set_palette(vc, color_table);
-@@ -2722,12 +2712,12 @@ static void fbcon_modechanged(struct fb_info *info)
- static void fbcon_set_all_vcs(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct vc_data *vc;
-       struct fbcon_display *p;
-       int i, rows, cols, fg = -1;
--      if (!ops || ops->currcon < 0)
-+      if (!par || par->currcon < 0)
-               return;
-       for (i = first_fb_vc; i <= last_fb_vc; i++) {
-@@ -2744,8 +2734,8 @@ static void fbcon_set_all_vcs(struct fb_info *info)
-               p = &fb_display[vc->vc_num];
-               set_blitting_type(vc, info);
-               var_to_display(p, &info->var, info);
--              cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
--              rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
-+              cols = FBCON_SWAP(par->rotate, info->var.xres, info->var.yres);
-+              rows = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-               cols /= vc->vc_font.width;
-               rows /= vc->vc_font.height;
-               vc_resize(vc, cols, rows);
-@@ -2768,13 +2758,13 @@ EXPORT_SYMBOL(fbcon_update_vcs);
- /* let fbcon check if it supports a new screen resolution */
- int fbcon_modechange_possible(struct fb_info *info, struct fb_var_screeninfo *var)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct vc_data *vc;
-       unsigned int i;
-       WARN_CONSOLE_UNLOCKED();
--      if (!ops)
-+      if (!par)
-               return 0;
-       /* prevent setting a screen size which is smaller than font size */
-@@ -3072,15 +3062,14 @@ int fbcon_fb_registered(struct fb_info *info)
- void fbcon_fb_blanked(struct fb_info *info, int blank)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct vc_data *vc;
--      if (!ops || ops->currcon < 0)
-+      if (!par || par->currcon < 0)
-               return;
--      vc = vc_cons[ops->currcon].d;
--      if (vc->vc_mode != KD_TEXT ||
--                      fbcon_info_from_console(ops->currcon) != info)
-+      vc = vc_cons[par->currcon].d;
-+      if (vc->vc_mode != KD_TEXT || fbcon_info_from_console(par->currcon) != info)
-               return;
-       if (con_is_visible(vc)) {
-@@ -3089,7 +3078,7 @@ void fbcon_fb_blanked(struct fb_info *info, int blank)
-               else
-                       do_unblank_screen(0);
-       }
--      ops->blank_state = blank;
-+      par->blank_state = blank;
- }
- void fbcon_new_modelist(struct fb_info *info)
-@@ -3279,7 +3268,7 @@ static ssize_t show_cursor_blink(struct device *device,
-                                struct device_attribute *attr, char *buf)
- {
-       struct fb_info *info;
--      struct fbcon_ops *ops;
-+      struct fbcon_par *par;
-       int idx, blink = -1;
-       console_lock();
-@@ -3289,12 +3278,12 @@ static ssize_t show_cursor_blink(struct device *device,
-               goto err;
-       info = fbcon_registered_fb[idx];
--      ops = info->fbcon_par;
-+      par = info->fbcon_par;
--      if (!ops)
-+      if (!par)
-               goto err;
--      blink = delayed_work_pending(&ops->cursor_work);
-+      blink = delayed_work_pending(&par->cursor_work);
- err:
-       console_unlock();
-       return sysfs_emit(buf, "%d\n", blink);
-diff --git a/drivers/video/fbdev/core/fbcon.h b/drivers/video/fbdev/core/fbcon.h
-index 4d97e6d8a16a2..31ee2d5912219 100644
---- a/drivers/video/fbdev/core/fbcon.h
-+++ b/drivers/video/fbdev/core/fbcon.h
-@@ -51,7 +51,7 @@ struct fbcon_display {
-     const struct fb_videomode *mode;
- };
--struct fbcon_ops {
-+struct fbcon_par {
-       void (*bmove)(struct vc_data *vc, struct fb_info *info, int sy,
-                     int sx, int dy, int dx, int height, int width);
-       void (*clear)(struct vc_data *vc, struct fb_info *info, int sy,
-@@ -186,7 +186,7 @@ static inline u_short fb_scrollmode(struct fbcon_display *fb)
- #ifdef CONFIG_FB_TILEBLITTING
- extern void fbcon_set_tileops(struct vc_data *vc, struct fb_info *info);
- #endif
--extern void fbcon_set_bitops(struct fbcon_ops *ops);
-+extern void fbcon_set_bitops(struct fbcon_par *par);
- extern int  soft_cursor(struct fb_info *info, struct fb_cursor *cursor);
- #define FBCON_ATTRIBUTE_UNDERLINE 1
-@@ -225,7 +225,7 @@ static inline int get_attribute(struct fb_info *info, u16 c)
-         (i == FB_ROTATE_UR || i == FB_ROTATE_UD) ? _r : _v; })
- #ifdef CONFIG_FRAMEBUFFER_CONSOLE_ROTATION
--extern void fbcon_set_rotate(struct fbcon_ops *ops);
-+extern void fbcon_set_rotate(struct fbcon_par *par);
- #else
- #define fbcon_set_rotate(x) do {} while(0)
- #endif /* CONFIG_FRAMEBUFFER_CONSOLE_ROTATION */
-diff --git a/drivers/video/fbdev/core/fbcon_ccw.c b/drivers/video/fbdev/core/fbcon_ccw.c
-index 89ef4ba7e8672..2ba8ec4c3e2bc 100644
---- a/drivers/video/fbdev/core/fbcon_ccw.c
-+++ b/drivers/video/fbdev/core/fbcon_ccw.c
-@@ -63,9 +63,9 @@ static void ccw_update_attr(u8 *dst, u8 *src, int attribute,
- static void ccw_bmove(struct vc_data *vc, struct fb_info *info, int sy,
-                    int sx, int dy, int dx, int height, int width)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_copyarea area;
--      u32 vyres = GETVYRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-       area.sx = sy * vc->vc_font.height;
-       area.sy = vyres - ((sx + width) * vc->vc_font.width);
-@@ -80,9 +80,9 @@ static void ccw_bmove(struct vc_data *vc, struct fb_info *info, int sy,
- static void ccw_clear(struct vc_data *vc, struct fb_info *info, int sy,
-                    int sx, int height, int width, int fg, int bg)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_fillrect region;
--      u32 vyres = GETVYRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-       region.color = bg;
-       region.dx = sy * vc->vc_font.height;
-@@ -99,13 +99,13 @@ static inline void ccw_putcs_aligned(struct vc_data *vc, struct fb_info *info,
-                                   u32 d_pitch, u32 s_pitch, u32 cellsize,
-                                   struct fb_image *image, u8 *buf, u8 *dst)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u16 charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       u32 idx = (vc->vc_font.height + 7) >> 3;
-       u8 *src;
-       while (cnt--) {
--              src = ops->fontbuffer + (scr_readw(s--) & charmask)*cellsize;
-+              src = par->fontbuffer + (scr_readw(s--) & charmask) * cellsize;
-               if (attr) {
-                       ccw_update_attr(buf, src, attr, vc);
-@@ -130,7 +130,7 @@ static void ccw_putcs(struct vc_data *vc, struct fb_info *info,
-                     int fg, int bg)
- {
-       struct fb_image image;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u32 width = (vc->vc_font.height + 7)/8;
-       u32 cellsize = width * vc->vc_font.width;
-       u32 maxcnt = info->pixmap.size/cellsize;
-@@ -139,9 +139,9 @@ static void ccw_putcs(struct vc_data *vc, struct fb_info *info,
-       u32 cnt, pitch, size;
-       u32 attribute = get_attribute(info, scr_readw(s));
-       u8 *dst, *buf = NULL;
--      u32 vyres = GETVYRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
--      if (!ops->fontbuffer)
-+      if (!par->fontbuffer)
-               return;
-       image.fg_color = fg;
-@@ -221,28 +221,28 @@ static void ccw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                      int fg, int bg)
- {
-       struct fb_cursor cursor;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       int w = (vc->vc_font.height + 7) >> 3, c;
--      int y = real_y(ops->p, vc->state.y);
-+      int y = real_y(par->p, vc->state.y);
-       int attribute, use_sw = vc->vc_cursor_type & CUR_SW;
-       int err = 1, dx, dy;
-       char *src;
--      u32 vyres = GETVYRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
--      if (!ops->fontbuffer)
-+      if (!par->fontbuffer)
-               return;
-       cursor.set = 0;
-       c = scr_readw((u16 *) vc->vc_pos);
-       attribute = get_attribute(info, c);
--      src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
-+      src = par->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
--      if (ops->cursor_state.image.data != src ||
--          ops->cursor_reset) {
--          ops->cursor_state.image.data = src;
--          cursor.set |= FB_CUR_SETIMAGE;
-+      if (par->cursor_state.image.data != src ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.data = src;
-+              cursor.set |= FB_CUR_SETIMAGE;
-       }
-       if (attribute) {
-@@ -251,49 +251,49 @@ static void ccw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               dst = kmalloc_array(w, vc->vc_font.width, GFP_ATOMIC);
-               if (!dst)
-                       return;
--              kfree(ops->cursor_data);
--              ops->cursor_data = dst;
-+              kfree(par->cursor_data);
-+              par->cursor_data = dst;
-               ccw_update_attr(dst, src, attribute, vc);
-               src = dst;
-       }
--      if (ops->cursor_state.image.fg_color != fg ||
--          ops->cursor_state.image.bg_color != bg ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.fg_color = fg;
--              ops->cursor_state.image.bg_color = bg;
-+      if (par->cursor_state.image.fg_color != fg ||
-+          par->cursor_state.image.bg_color != bg ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.fg_color = fg;
-+              par->cursor_state.image.bg_color = bg;
-               cursor.set |= FB_CUR_SETCMAP;
-       }
--      if (ops->cursor_state.image.height != vc->vc_font.width ||
--          ops->cursor_state.image.width != vc->vc_font.height ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.height = vc->vc_font.width;
--              ops->cursor_state.image.width = vc->vc_font.height;
-+      if (par->cursor_state.image.height != vc->vc_font.width ||
-+          par->cursor_state.image.width != vc->vc_font.height ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.height = vc->vc_font.width;
-+              par->cursor_state.image.width = vc->vc_font.height;
-               cursor.set |= FB_CUR_SETSIZE;
-       }
-       dx = y * vc->vc_font.height;
-       dy = vyres - ((vc->state.x + 1) * vc->vc_font.width);
--      if (ops->cursor_state.image.dx != dx ||
--          ops->cursor_state.image.dy != dy ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.dx = dx;
--              ops->cursor_state.image.dy = dy;
-+      if (par->cursor_state.image.dx != dx ||
-+          par->cursor_state.image.dy != dy ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.dx = dx;
-+              par->cursor_state.image.dy = dy;
-               cursor.set |= FB_CUR_SETPOS;
-       }
--      if (ops->cursor_state.hot.x || ops->cursor_state.hot.y ||
--          ops->cursor_reset) {
--              ops->cursor_state.hot.x = cursor.hot.y = 0;
-+      if (par->cursor_state.hot.x || par->cursor_state.hot.y ||
-+          par->cursor_reset) {
-+              par->cursor_state.hot.x = cursor.hot.y = 0;
-               cursor.set |= FB_CUR_SETHOT;
-       }
-       if (cursor.set & FB_CUR_SETSIZE ||
--          vc->vc_cursor_type != ops->p->cursor_shape ||
--          ops->cursor_state.mask == NULL ||
--          ops->cursor_reset) {
-+          vc->vc_cursor_type != par->p->cursor_shape ||
-+          par->cursor_state.mask == NULL ||
-+          par->cursor_reset) {
-               char *tmp, *mask = kmalloc_array(w, vc->vc_font.width,
-                                                GFP_ATOMIC);
-               int cur_height, size, i = 0;
-@@ -309,13 +309,13 @@ static void ccw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                       return;
-               }
--              kfree(ops->cursor_state.mask);
--              ops->cursor_state.mask = mask;
-+              kfree(par->cursor_state.mask);
-+              par->cursor_state.mask = mask;
--              ops->p->cursor_shape = vc->vc_cursor_type;
-+              par->p->cursor_shape = vc->vc_cursor_type;
-               cursor.set |= FB_CUR_SETSHAPE;
--              switch (CUR_SIZE(ops->p->cursor_shape)) {
-+              switch (CUR_SIZE(par->p->cursor_shape)) {
-               case CUR_NONE:
-                       cur_height = 0;
-                       break;
-@@ -348,19 +348,19 @@ static void ccw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               kfree(tmp);
-       }
--      ops->cursor_state.enable = enable && !use_sw;
-+      par->cursor_state.enable = enable && !use_sw;
-       cursor.image.data = src;
--      cursor.image.fg_color = ops->cursor_state.image.fg_color;
--      cursor.image.bg_color = ops->cursor_state.image.bg_color;
--      cursor.image.dx = ops->cursor_state.image.dx;
--      cursor.image.dy = ops->cursor_state.image.dy;
--      cursor.image.height = ops->cursor_state.image.height;
--      cursor.image.width = ops->cursor_state.image.width;
--      cursor.hot.x = ops->cursor_state.hot.x;
--      cursor.hot.y = ops->cursor_state.hot.y;
--      cursor.mask = ops->cursor_state.mask;
--      cursor.enable = ops->cursor_state.enable;
-+      cursor.image.fg_color = par->cursor_state.image.fg_color;
-+      cursor.image.bg_color = par->cursor_state.image.bg_color;
-+      cursor.image.dx = par->cursor_state.image.dx;
-+      cursor.image.dy = par->cursor_state.image.dy;
-+      cursor.image.height = par->cursor_state.image.height;
-+      cursor.image.width = par->cursor_state.image.width;
-+      cursor.hot.x = par->cursor_state.hot.x;
-+      cursor.hot.y = par->cursor_state.hot.y;
-+      cursor.mask = par->cursor_state.mask;
-+      cursor.enable = par->cursor_state.enable;
-       cursor.image.depth = 1;
-       cursor.rop = ROP_XOR;
-@@ -370,32 +370,32 @@ static void ccw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-       if (err)
-               soft_cursor(info, &cursor);
--      ops->cursor_reset = 0;
-+      par->cursor_reset = 0;
- }
- static int ccw_update_start(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u32 yoffset;
--      u32 vyres = GETVYRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-       int err;
--      yoffset = (vyres - info->var.yres) - ops->var.xoffset;
--      ops->var.xoffset = ops->var.yoffset;
--      ops->var.yoffset = yoffset;
--      err = fb_pan_display(info, &ops->var);
--      ops->var.xoffset = info->var.xoffset;
--      ops->var.yoffset = info->var.yoffset;
--      ops->var.vmode = info->var.vmode;
-+      yoffset = (vyres - info->var.yres) - par->var.xoffset;
-+      par->var.xoffset = par->var.yoffset;
-+      par->var.yoffset = yoffset;
-+      err = fb_pan_display(info, &par->var);
-+      par->var.xoffset = info->var.xoffset;
-+      par->var.yoffset = info->var.yoffset;
-+      par->var.vmode = info->var.vmode;
-       return err;
- }
--void fbcon_rotate_ccw(struct fbcon_ops *ops)
-+void fbcon_rotate_ccw(struct fbcon_par *par)
- {
--      ops->bmove = ccw_bmove;
--      ops->clear = ccw_clear;
--      ops->putcs = ccw_putcs;
--      ops->clear_margins = ccw_clear_margins;
--      ops->cursor = ccw_cursor;
--      ops->update_start = ccw_update_start;
-+      par->bmove = ccw_bmove;
-+      par->clear = ccw_clear;
-+      par->putcs = ccw_putcs;
-+      par->clear_margins = ccw_clear_margins;
-+      par->cursor = ccw_cursor;
-+      par->update_start = ccw_update_start;
- }
-diff --git a/drivers/video/fbdev/core/fbcon_cw.c b/drivers/video/fbdev/core/fbcon_cw.c
-index b9dac7940fb77..4bd22d5ee5f41 100644
---- a/drivers/video/fbdev/core/fbcon_cw.c
-+++ b/drivers/video/fbdev/core/fbcon_cw.c
-@@ -48,9 +48,9 @@ static void cw_update_attr(u8 *dst, u8 *src, int attribute,
- static void cw_bmove(struct vc_data *vc, struct fb_info *info, int sy,
-                    int sx, int dy, int dx, int height, int width)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_copyarea area;
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
-       area.sx = vxres - ((sy + height) * vc->vc_font.height);
-       area.sy = sx * vc->vc_font.width;
-@@ -65,9 +65,9 @@ static void cw_bmove(struct vc_data *vc, struct fb_info *info, int sy,
- static void cw_clear(struct vc_data *vc, struct fb_info *info, int sy,
-                    int sx, int height, int width, int fg, int bg)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_fillrect region;
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
-       region.color = bg;
-       region.dx = vxres - ((sy + height) * vc->vc_font.height);
-@@ -84,13 +84,13 @@ static inline void cw_putcs_aligned(struct vc_data *vc, struct fb_info *info,
-                                   u32 d_pitch, u32 s_pitch, u32 cellsize,
-                                   struct fb_image *image, u8 *buf, u8 *dst)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u16 charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       u32 idx = (vc->vc_font.height + 7) >> 3;
-       u8 *src;
-       while (cnt--) {
--              src = ops->fontbuffer + (scr_readw(s++) & charmask)*cellsize;
-+              src = par->fontbuffer + (scr_readw(s++) & charmask) * cellsize;
-               if (attr) {
-                       cw_update_attr(buf, src, attr, vc);
-@@ -115,7 +115,7 @@ static void cw_putcs(struct vc_data *vc, struct fb_info *info,
-                     int fg, int bg)
- {
-       struct fb_image image;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u32 width = (vc->vc_font.height + 7)/8;
-       u32 cellsize = width * vc->vc_font.width;
-       u32 maxcnt = info->pixmap.size/cellsize;
-@@ -124,9 +124,9 @@ static void cw_putcs(struct vc_data *vc, struct fb_info *info,
-       u32 cnt, pitch, size;
-       u32 attribute = get_attribute(info, scr_readw(s));
-       u8 *dst, *buf = NULL;
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
--      if (!ops->fontbuffer)
-+      if (!par->fontbuffer)
-               return;
-       image.fg_color = fg;
-@@ -204,28 +204,28 @@ static void cw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                     int fg, int bg)
- {
-       struct fb_cursor cursor;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       int w = (vc->vc_font.height + 7) >> 3, c;
--      int y = real_y(ops->p, vc->state.y);
-+      int y = real_y(par->p, vc->state.y);
-       int attribute, use_sw = vc->vc_cursor_type & CUR_SW;
-       int err = 1, dx, dy;
-       char *src;
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
--      if (!ops->fontbuffer)
-+      if (!par->fontbuffer)
-               return;
-       cursor.set = 0;
-       c = scr_readw((u16 *) vc->vc_pos);
-       attribute = get_attribute(info, c);
--      src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
-+      src = par->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
--      if (ops->cursor_state.image.data != src ||
--          ops->cursor_reset) {
--          ops->cursor_state.image.data = src;
--          cursor.set |= FB_CUR_SETIMAGE;
-+      if (par->cursor_state.image.data != src ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.data = src;
-+              cursor.set |= FB_CUR_SETIMAGE;
-       }
-       if (attribute) {
-@@ -234,49 +234,49 @@ static void cw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               dst = kmalloc_array(w, vc->vc_font.width, GFP_ATOMIC);
-               if (!dst)
-                       return;
--              kfree(ops->cursor_data);
--              ops->cursor_data = dst;
-+              kfree(par->cursor_data);
-+              par->cursor_data = dst;
-               cw_update_attr(dst, src, attribute, vc);
-               src = dst;
-       }
--      if (ops->cursor_state.image.fg_color != fg ||
--          ops->cursor_state.image.bg_color != bg ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.fg_color = fg;
--              ops->cursor_state.image.bg_color = bg;
-+      if (par->cursor_state.image.fg_color != fg ||
-+          par->cursor_state.image.bg_color != bg ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.fg_color = fg;
-+              par->cursor_state.image.bg_color = bg;
-               cursor.set |= FB_CUR_SETCMAP;
-       }
--      if (ops->cursor_state.image.height != vc->vc_font.width ||
--          ops->cursor_state.image.width != vc->vc_font.height ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.height = vc->vc_font.width;
--              ops->cursor_state.image.width = vc->vc_font.height;
-+      if (par->cursor_state.image.height != vc->vc_font.width ||
-+          par->cursor_state.image.width != vc->vc_font.height ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.height = vc->vc_font.width;
-+              par->cursor_state.image.width = vc->vc_font.height;
-               cursor.set |= FB_CUR_SETSIZE;
-       }
-       dx = vxres - ((y * vc->vc_font.height) + vc->vc_font.height);
-       dy = vc->state.x * vc->vc_font.width;
--      if (ops->cursor_state.image.dx != dx ||
--          ops->cursor_state.image.dy != dy ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.dx = dx;
--              ops->cursor_state.image.dy = dy;
-+      if (par->cursor_state.image.dx != dx ||
-+          par->cursor_state.image.dy != dy ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.dx = dx;
-+              par->cursor_state.image.dy = dy;
-               cursor.set |= FB_CUR_SETPOS;
-       }
--      if (ops->cursor_state.hot.x || ops->cursor_state.hot.y ||
--          ops->cursor_reset) {
--              ops->cursor_state.hot.x = cursor.hot.y = 0;
-+      if (par->cursor_state.hot.x || par->cursor_state.hot.y ||
-+          par->cursor_reset) {
-+              par->cursor_state.hot.x = cursor.hot.y = 0;
-               cursor.set |= FB_CUR_SETHOT;
-       }
-       if (cursor.set & FB_CUR_SETSIZE ||
--          vc->vc_cursor_type != ops->p->cursor_shape ||
--          ops->cursor_state.mask == NULL ||
--          ops->cursor_reset) {
-+          vc->vc_cursor_type != par->p->cursor_shape ||
-+          par->cursor_state.mask == NULL ||
-+          par->cursor_reset) {
-               char *tmp, *mask = kmalloc_array(w, vc->vc_font.width,
-                                                GFP_ATOMIC);
-               int cur_height, size, i = 0;
-@@ -292,13 +292,13 @@ static void cw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                       return;
-               }
--              kfree(ops->cursor_state.mask);
--              ops->cursor_state.mask = mask;
-+              kfree(par->cursor_state.mask);
-+              par->cursor_state.mask = mask;
--              ops->p->cursor_shape = vc->vc_cursor_type;
-+              par->p->cursor_shape = vc->vc_cursor_type;
-               cursor.set |= FB_CUR_SETSHAPE;
--              switch (CUR_SIZE(ops->p->cursor_shape)) {
-+              switch (CUR_SIZE(par->p->cursor_shape)) {
-               case CUR_NONE:
-                       cur_height = 0;
-                       break;
-@@ -331,19 +331,19 @@ static void cw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               kfree(tmp);
-       }
--      ops->cursor_state.enable = enable && !use_sw;
-+      par->cursor_state.enable = enable && !use_sw;
-       cursor.image.data = src;
--      cursor.image.fg_color = ops->cursor_state.image.fg_color;
--      cursor.image.bg_color = ops->cursor_state.image.bg_color;
--      cursor.image.dx = ops->cursor_state.image.dx;
--      cursor.image.dy = ops->cursor_state.image.dy;
--      cursor.image.height = ops->cursor_state.image.height;
--      cursor.image.width = ops->cursor_state.image.width;
--      cursor.hot.x = ops->cursor_state.hot.x;
--      cursor.hot.y = ops->cursor_state.hot.y;
--      cursor.mask = ops->cursor_state.mask;
--      cursor.enable = ops->cursor_state.enable;
-+      cursor.image.fg_color = par->cursor_state.image.fg_color;
-+      cursor.image.bg_color = par->cursor_state.image.bg_color;
-+      cursor.image.dx = par->cursor_state.image.dx;
-+      cursor.image.dy = par->cursor_state.image.dy;
-+      cursor.image.height = par->cursor_state.image.height;
-+      cursor.image.width = par->cursor_state.image.width;
-+      cursor.hot.x = par->cursor_state.hot.x;
-+      cursor.hot.y = par->cursor_state.hot.y;
-+      cursor.mask = par->cursor_state.mask;
-+      cursor.enable = par->cursor_state.enable;
-       cursor.image.depth = 1;
-       cursor.rop = ROP_XOR;
-@@ -353,32 +353,32 @@ static void cw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-       if (err)
-               soft_cursor(info, &cursor);
--      ops->cursor_reset = 0;
-+      par->cursor_reset = 0;
- }
- static int cw_update_start(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
--      u32 vxres = GETVXRES(ops->p, info);
-+      struct fbcon_par *par = info->fbcon_par;
-+      u32 vxres = GETVXRES(par->p, info);
-       u32 xoffset;
-       int err;
--      xoffset = vxres - (info->var.xres + ops->var.yoffset);
--      ops->var.yoffset = ops->var.xoffset;
--      ops->var.xoffset = xoffset;
--      err = fb_pan_display(info, &ops->var);
--      ops->var.xoffset = info->var.xoffset;
--      ops->var.yoffset = info->var.yoffset;
--      ops->var.vmode = info->var.vmode;
-+      xoffset = vxres - (info->var.xres + par->var.yoffset);
-+      par->var.yoffset = par->var.xoffset;
-+      par->var.xoffset = xoffset;
-+      err = fb_pan_display(info, &par->var);
-+      par->var.xoffset = info->var.xoffset;
-+      par->var.yoffset = info->var.yoffset;
-+      par->var.vmode = info->var.vmode;
-       return err;
- }
--void fbcon_rotate_cw(struct fbcon_ops *ops)
-+void fbcon_rotate_cw(struct fbcon_par *par)
- {
--      ops->bmove = cw_bmove;
--      ops->clear = cw_clear;
--      ops->putcs = cw_putcs;
--      ops->clear_margins = cw_clear_margins;
--      ops->cursor = cw_cursor;
--      ops->update_start = cw_update_start;
-+      par->bmove = cw_bmove;
-+      par->clear = cw_clear;
-+      par->putcs = cw_putcs;
-+      par->clear_margins = cw_clear_margins;
-+      par->cursor = cw_cursor;
-+      par->update_start = cw_update_start;
- }
-diff --git a/drivers/video/fbdev/core/fbcon_rotate.c b/drivers/video/fbdev/core/fbcon_rotate.c
-index ec3c883400f7b..380b2746451a1 100644
---- a/drivers/video/fbdev/core/fbcon_rotate.c
-+++ b/drivers/video/fbdev/core/fbcon_rotate.c
-@@ -20,32 +20,32 @@
- static int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int len, err = 0;
-       int s_cellsize, d_cellsize, i;
-       const u8 *src;
-       u8 *dst;
--      if (vc->vc_font.data == ops->fontdata &&
--          ops->p->con_rotate == ops->cur_rotate)
-+      if (vc->vc_font.data == par->fontdata &&
-+          par->p->con_rotate == par->cur_rotate)
-               goto finished;
--      src = ops->fontdata = vc->vc_font.data;
--      ops->cur_rotate = ops->p->con_rotate;
-+      src = par->fontdata = vc->vc_font.data;
-+      par->cur_rotate = par->p->con_rotate;
-       len = vc->vc_font.charcount;
-       s_cellsize = ((vc->vc_font.width + 7)/8) *
-               vc->vc_font.height;
-       d_cellsize = s_cellsize;
--      if (ops->rotate == FB_ROTATE_CW ||
--          ops->rotate == FB_ROTATE_CCW)
-+      if (par->rotate == FB_ROTATE_CW ||
-+          par->rotate == FB_ROTATE_CCW)
-               d_cellsize = ((vc->vc_font.height + 7)/8) *
-                       vc->vc_font.width;
-       if (info->fbops->fb_sync)
-               info->fbops->fb_sync(info);
--      if (ops->fd_size < d_cellsize * len) {
-+      if (par->fd_size < d_cellsize * len) {
-               dst = kmalloc_array(len, d_cellsize, GFP_KERNEL);
-               if (dst == NULL) {
-@@ -53,15 +53,15 @@ static int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc)
-                       goto finished;
-               }
--              ops->fd_size = d_cellsize * len;
--              kfree(ops->fontbuffer);
--              ops->fontbuffer = dst;
-+              par->fd_size = d_cellsize * len;
-+              kfree(par->fontbuffer);
-+              par->fontbuffer = dst;
-       }
--      dst = ops->fontbuffer;
--      memset(dst, 0, ops->fd_size);
-+      dst = par->fontbuffer;
-+      memset(dst, 0, par->fd_size);
--      switch (ops->rotate) {
-+      switch (par->rotate) {
-       case FB_ROTATE_UD:
-               for (i = len; i--; ) {
-                       rotate_ud(src, dst, vc->vc_font.width,
-@@ -93,19 +93,19 @@ static int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc)
-       return err;
- }
--void fbcon_set_rotate(struct fbcon_ops *ops)
-+void fbcon_set_rotate(struct fbcon_par *par)
- {
--      ops->rotate_font = fbcon_rotate_font;
-+      par->rotate_font = fbcon_rotate_font;
--      switch(ops->rotate) {
-+      switch (par->rotate) {
-       case FB_ROTATE_CW:
--              fbcon_rotate_cw(ops);
-+              fbcon_rotate_cw(par);
-               break;
-       case FB_ROTATE_UD:
--              fbcon_rotate_ud(ops);
-+              fbcon_rotate_ud(par);
-               break;
-       case FB_ROTATE_CCW:
--              fbcon_rotate_ccw(ops);
-+              fbcon_rotate_ccw(par);
-               break;
-       }
- }
-diff --git a/drivers/video/fbdev/core/fbcon_rotate.h b/drivers/video/fbdev/core/fbcon_rotate.h
-index 01cbe303b8a29..48305e1a07631 100644
---- a/drivers/video/fbdev/core/fbcon_rotate.h
-+++ b/drivers/video/fbdev/core/fbcon_rotate.h
-@@ -90,7 +90,7 @@ static inline void rotate_ccw(const char *in, char *out, u32 width, u32 height)
-       }
- }
--extern void fbcon_rotate_cw(struct fbcon_ops *ops);
--extern void fbcon_rotate_ud(struct fbcon_ops *ops);
--extern void fbcon_rotate_ccw(struct fbcon_ops *ops);
-+extern void fbcon_rotate_cw(struct fbcon_par *par);
-+extern void fbcon_rotate_ud(struct fbcon_par *par);
-+extern void fbcon_rotate_ccw(struct fbcon_par *par);
- #endif
-diff --git a/drivers/video/fbdev/core/fbcon_ud.c b/drivers/video/fbdev/core/fbcon_ud.c
-index 0af7913a2abdc..14b40e2bf323f 100644
---- a/drivers/video/fbdev/core/fbcon_ud.c
-+++ b/drivers/video/fbdev/core/fbcon_ud.c
-@@ -48,10 +48,10 @@ static void ud_update_attr(u8 *dst, u8 *src, int attribute,
- static void ud_bmove(struct vc_data *vc, struct fb_info *info, int sy,
-                    int sx, int dy, int dx, int height, int width)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_copyarea area;
--      u32 vyres = GETVYRES(ops->p, info);
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
-       area.sy = vyres - ((sy + height) * vc->vc_font.height);
-       area.sx = vxres - ((sx + width) * vc->vc_font.width);
-@@ -66,10 +66,10 @@ static void ud_bmove(struct vc_data *vc, struct fb_info *info, int sy,
- static void ud_clear(struct vc_data *vc, struct fb_info *info, int sy,
-                    int sx, int height, int width, int fg, int bg)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_fillrect region;
--      u32 vyres = GETVYRES(ops->p, info);
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
-       region.color = bg;
-       region.dy = vyres - ((sy + height) * vc->vc_font.height);
-@@ -86,13 +86,13 @@ static inline void ud_putcs_aligned(struct vc_data *vc, struct fb_info *info,
-                                   u32 d_pitch, u32 s_pitch, u32 cellsize,
-                                   struct fb_image *image, u8 *buf, u8 *dst)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u16 charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       u32 idx = vc->vc_font.width >> 3;
-       u8 *src;
-       while (cnt--) {
--              src = ops->fontbuffer + (scr_readw(s--) & charmask)*cellsize;
-+              src = par->fontbuffer + (scr_readw(s--) & charmask) * cellsize;
-               if (attr) {
-                       ud_update_attr(buf, src, attr, vc);
-@@ -119,7 +119,7 @@ static inline void ud_putcs_unaligned(struct vc_data *vc,
-                                     struct fb_image *image, u8 *buf,
-                                     u8 *dst)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u16 charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       u32 shift_low = 0, mod = vc->vc_font.width % 8;
-       u32 shift_high = 8;
-@@ -127,7 +127,7 @@ static inline void ud_putcs_unaligned(struct vc_data *vc,
-       u8 *src;
-       while (cnt--) {
--              src = ops->fontbuffer + (scr_readw(s--) & charmask)*cellsize;
-+              src = par->fontbuffer + (scr_readw(s--) & charmask) * cellsize;
-               if (attr) {
-                       ud_update_attr(buf, src, attr, vc);
-@@ -152,7 +152,7 @@ static void ud_putcs(struct vc_data *vc, struct fb_info *info,
-                     int fg, int bg)
- {
-       struct fb_image image;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u32 width = (vc->vc_font.width + 7)/8;
-       u32 cellsize = width * vc->vc_font.height;
-       u32 maxcnt = info->pixmap.size/cellsize;
-@@ -161,10 +161,10 @@ static void ud_putcs(struct vc_data *vc, struct fb_info *info,
-       u32 mod = vc->vc_font.width % 8, cnt, pitch, size;
-       u32 attribute = get_attribute(info, scr_readw(s));
-       u8 *dst, *buf = NULL;
--      u32 vyres = GETVYRES(ops->p, info);
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
--      if (!ops->fontbuffer)
-+      if (!par->fontbuffer)
-               return;
-       image.fg_color = fg;
-@@ -251,29 +251,29 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                     int fg, int bg)
- {
-       struct fb_cursor cursor;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       int w = (vc->vc_font.width + 7) >> 3, c;
--      int y = real_y(ops->p, vc->state.y);
-+      int y = real_y(par->p, vc->state.y);
-       int attribute, use_sw = vc->vc_cursor_type & CUR_SW;
-       int err = 1, dx, dy;
-       char *src;
--      u32 vyres = GETVYRES(ops->p, info);
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
--      if (!ops->fontbuffer)
-+      if (!par->fontbuffer)
-               return;
-       cursor.set = 0;
-       c = scr_readw((u16 *) vc->vc_pos);
-       attribute = get_attribute(info, c);
--      src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.height));
-+      src = par->fontbuffer + ((c & charmask) * (w * vc->vc_font.height));
--      if (ops->cursor_state.image.data != src ||
--          ops->cursor_reset) {
--          ops->cursor_state.image.data = src;
--          cursor.set |= FB_CUR_SETIMAGE;
-+      if (par->cursor_state.image.data != src ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.data = src;
-+              cursor.set |= FB_CUR_SETIMAGE;
-       }
-       if (attribute) {
-@@ -282,49 +282,49 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               dst = kmalloc_array(w, vc->vc_font.height, GFP_ATOMIC);
-               if (!dst)
-                       return;
--              kfree(ops->cursor_data);
--              ops->cursor_data = dst;
-+              kfree(par->cursor_data);
-+              par->cursor_data = dst;
-               ud_update_attr(dst, src, attribute, vc);
-               src = dst;
-       }
--      if (ops->cursor_state.image.fg_color != fg ||
--          ops->cursor_state.image.bg_color != bg ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.fg_color = fg;
--              ops->cursor_state.image.bg_color = bg;
-+      if (par->cursor_state.image.fg_color != fg ||
-+          par->cursor_state.image.bg_color != bg ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.fg_color = fg;
-+              par->cursor_state.image.bg_color = bg;
-               cursor.set |= FB_CUR_SETCMAP;
-       }
--      if (ops->cursor_state.image.height != vc->vc_font.height ||
--          ops->cursor_state.image.width != vc->vc_font.width ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.height = vc->vc_font.height;
--              ops->cursor_state.image.width = vc->vc_font.width;
-+      if (par->cursor_state.image.height != vc->vc_font.height ||
-+          par->cursor_state.image.width != vc->vc_font.width ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.height = vc->vc_font.height;
-+              par->cursor_state.image.width = vc->vc_font.width;
-               cursor.set |= FB_CUR_SETSIZE;
-       }
-       dy = vyres - ((y * vc->vc_font.height) + vc->vc_font.height);
-       dx = vxres - ((vc->state.x * vc->vc_font.width) + vc->vc_font.width);
--      if (ops->cursor_state.image.dx != dx ||
--          ops->cursor_state.image.dy != dy ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.dx = dx;
--              ops->cursor_state.image.dy = dy;
-+      if (par->cursor_state.image.dx != dx ||
-+          par->cursor_state.image.dy != dy ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.dx = dx;
-+              par->cursor_state.image.dy = dy;
-               cursor.set |= FB_CUR_SETPOS;
-       }
--      if (ops->cursor_state.hot.x || ops->cursor_state.hot.y ||
--          ops->cursor_reset) {
--              ops->cursor_state.hot.x = cursor.hot.y = 0;
-+      if (par->cursor_state.hot.x || par->cursor_state.hot.y ||
-+          par->cursor_reset) {
-+              par->cursor_state.hot.x = cursor.hot.y = 0;
-               cursor.set |= FB_CUR_SETHOT;
-       }
-       if (cursor.set & FB_CUR_SETSIZE ||
--          vc->vc_cursor_type != ops->p->cursor_shape ||
--          ops->cursor_state.mask == NULL ||
--          ops->cursor_reset) {
-+          vc->vc_cursor_type != par->p->cursor_shape ||
-+          par->cursor_state.mask == NULL ||
-+          par->cursor_reset) {
-               char *mask = kmalloc_array(w, vc->vc_font.height, GFP_ATOMIC);
-               int cur_height, size, i = 0;
-               u8 msk = 0xff;
-@@ -332,13 +332,13 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               if (!mask)
-                       return;
--              kfree(ops->cursor_state.mask);
--              ops->cursor_state.mask = mask;
-+              kfree(par->cursor_state.mask);
-+              par->cursor_state.mask = mask;
--              ops->p->cursor_shape = vc->vc_cursor_type;
-+              par->p->cursor_shape = vc->vc_cursor_type;
-               cursor.set |= FB_CUR_SETSHAPE;
--              switch (CUR_SIZE(ops->p->cursor_shape)) {
-+              switch (CUR_SIZE(par->p->cursor_shape)) {
-               case CUR_NONE:
-                       cur_height = 0;
-                       break;
-@@ -371,19 +371,19 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                       mask[i++] = ~msk;
-       }
--      ops->cursor_state.enable = enable && !use_sw;
-+      par->cursor_state.enable = enable && !use_sw;
-       cursor.image.data = src;
--      cursor.image.fg_color = ops->cursor_state.image.fg_color;
--      cursor.image.bg_color = ops->cursor_state.image.bg_color;
--      cursor.image.dx = ops->cursor_state.image.dx;
--      cursor.image.dy = ops->cursor_state.image.dy;
--      cursor.image.height = ops->cursor_state.image.height;
--      cursor.image.width = ops->cursor_state.image.width;
--      cursor.hot.x = ops->cursor_state.hot.x;
--      cursor.hot.y = ops->cursor_state.hot.y;
--      cursor.mask = ops->cursor_state.mask;
--      cursor.enable = ops->cursor_state.enable;
-+      cursor.image.fg_color = par->cursor_state.image.fg_color;
-+      cursor.image.bg_color = par->cursor_state.image.bg_color;
-+      cursor.image.dx = par->cursor_state.image.dx;
-+      cursor.image.dy = par->cursor_state.image.dy;
-+      cursor.image.height = par->cursor_state.image.height;
-+      cursor.image.width = par->cursor_state.image.width;
-+      cursor.hot.x = par->cursor_state.hot.x;
-+      cursor.hot.y = par->cursor_state.hot.y;
-+      cursor.mask = par->cursor_state.mask;
-+      cursor.enable = par->cursor_state.enable;
-       cursor.image.depth = 1;
-       cursor.rop = ROP_XOR;
-@@ -393,36 +393,36 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-       if (err)
-               soft_cursor(info, &cursor);
--      ops->cursor_reset = 0;
-+      par->cursor_reset = 0;
- }
- static int ud_update_start(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int xoffset, yoffset;
--      u32 vyres = GETVYRES(ops->p, info);
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
-       int err;
--      xoffset = vxres - info->var.xres - ops->var.xoffset;
--      yoffset = vyres - info->var.yres - ops->var.yoffset;
-+      xoffset = vxres - info->var.xres - par->var.xoffset;
-+      yoffset = vyres - info->var.yres - par->var.yoffset;
-       if (yoffset < 0)
-               yoffset += vyres;
--      ops->var.xoffset = xoffset;
--      ops->var.yoffset = yoffset;
--      err = fb_pan_display(info, &ops->var);
--      ops->var.xoffset = info->var.xoffset;
--      ops->var.yoffset = info->var.yoffset;
--      ops->var.vmode = info->var.vmode;
-+      par->var.xoffset = xoffset;
-+      par->var.yoffset = yoffset;
-+      err = fb_pan_display(info, &par->var);
-+      par->var.xoffset = info->var.xoffset;
-+      par->var.yoffset = info->var.yoffset;
-+      par->var.vmode = info->var.vmode;
-       return err;
- }
--void fbcon_rotate_ud(struct fbcon_ops *ops)
-+void fbcon_rotate_ud(struct fbcon_par *par)
- {
--      ops->bmove = ud_bmove;
--      ops->clear = ud_clear;
--      ops->putcs = ud_putcs;
--      ops->clear_margins = ud_clear_margins;
--      ops->cursor = ud_cursor;
--      ops->update_start = ud_update_start;
-+      par->bmove = ud_bmove;
-+      par->clear = ud_clear;
-+      par->putcs = ud_putcs;
-+      par->clear_margins = ud_clear_margins;
-+      par->cursor = ud_cursor;
-+      par->update_start = ud_update_start;
- }
-diff --git a/drivers/video/fbdev/core/softcursor.c b/drivers/video/fbdev/core/softcursor.c
-index 29e5b21cf373e..900788c059153 100644
---- a/drivers/video/fbdev/core/softcursor.c
-+++ b/drivers/video/fbdev/core/softcursor.c
-@@ -21,7 +21,7 @@
- int soft_cursor(struct fb_info *info, struct fb_cursor *cursor)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       unsigned int scan_align = info->pixmap.scan_align - 1;
-       unsigned int buf_align = info->pixmap.buf_align - 1;
-       unsigned int i, size, dsize, s_pitch, d_pitch;
-@@ -34,19 +34,19 @@ int soft_cursor(struct fb_info *info, struct fb_cursor *cursor)
-       s_pitch = (cursor->image.width + 7) >> 3;
-       dsize = s_pitch * cursor->image.height;
--      if (dsize + sizeof(struct fb_image) != ops->cursor_size) {
--              kfree(ops->cursor_src);
--              ops->cursor_size = dsize + sizeof(struct fb_image);
-+      if (dsize + sizeof(struct fb_image) != par->cursor_size) {
-+              kfree(par->cursor_src);
-+              par->cursor_size = dsize + sizeof(struct fb_image);
--              ops->cursor_src = kmalloc(ops->cursor_size, GFP_ATOMIC);
--              if (!ops->cursor_src) {
--                      ops->cursor_size = 0;
-+              par->cursor_src = kmalloc(par->cursor_size, GFP_ATOMIC);
-+              if (!par->cursor_src) {
-+                      par->cursor_size = 0;
-                       return -ENOMEM;
-               }
-       }
--      src = ops->cursor_src + sizeof(struct fb_image);
--      image = (struct fb_image *)ops->cursor_src;
-+      src = par->cursor_src + sizeof(struct fb_image);
-+      image = (struct fb_image *)par->cursor_src;
-       *image = cursor->image;
-       d_pitch = (s_pitch + scan_align) & ~scan_align;
-diff --git a/drivers/video/fbdev/core/tileblit.c b/drivers/video/fbdev/core/tileblit.c
-index d342b90c42b7f..4428f2bcd3f8c 100644
---- a/drivers/video/fbdev/core/tileblit.c
-+++ b/drivers/video/fbdev/core/tileblit.c
-@@ -151,34 +151,34 @@ static void tile_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
- static int tile_update_start(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int err;
--      err = fb_pan_display(info, &ops->var);
--      ops->var.xoffset = info->var.xoffset;
--      ops->var.yoffset = info->var.yoffset;
--      ops->var.vmode = info->var.vmode;
-+      err = fb_pan_display(info, &par->var);
-+      par->var.xoffset = info->var.xoffset;
-+      par->var.yoffset = info->var.yoffset;
-+      par->var.vmode = info->var.vmode;
-       return err;
- }
- void fbcon_set_tileops(struct vc_data *vc, struct fb_info *info)
- {
-       struct fb_tilemap map;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      ops->bmove = tile_bmove;
--      ops->clear = tile_clear;
--      ops->putcs = tile_putcs;
--      ops->clear_margins = tile_clear_margins;
--      ops->cursor = tile_cursor;
--      ops->update_start = tile_update_start;
-+      par->bmove = tile_bmove;
-+      par->clear = tile_clear;
-+      par->putcs = tile_putcs;
-+      par->clear_margins = tile_clear_margins;
-+      par->cursor = tile_cursor;
-+      par->update_start = tile_update_start;
--      if (ops->p) {
-+      if (par->p) {
-               map.width = vc->vc_font.width;
-               map.height = vc->vc_font.height;
-               map.depth = 1;
-               map.length = vc->vc_font.charcount;
--              map.data = ops->p->fontdata;
-+              map.data = par->p->fontdata;
-               info->tileops->fb_settile(info, &map);
-       }
- }
--- 
-2.51.0
-
diff --git a/queue-6.12/fbcon-set-rotate_font-callback-with-related-callback.patch b/queue-6.12/fbcon-set-rotate_font-callback-with-related-callback.patch
deleted file mode 100644 (file)
index 1476989..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-From 2fe21df6ac0e5f7e1b1c9238912478c1f262c32c Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 9 Sep 2025 14:44:43 +0200
-Subject: fbcon: Set rotate_font callback with related callbacks
-
-From: Thomas Zimmermann <tzimmermann@suse.de>
-
-[ Upstream commit 9cfd09402eb45f1b14b60668fd7c628445efdd8d ]
-
-The field struct fbcon_par.rotate_font points to fbcon_rotate_font() if
-the console is rotated. Set the callback in the same place as the other
-callbacks. Prepares for declaring all fbcon callbacks in a dedicated
-struct type.
-
-If not rotated, fbcon_set_bitops() still clears the callback to NULL.
-
-Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
-Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
-Link: https://lore.kernel.org/r/20250909124616.143365-4-tzimmermann@suse.de
-Stable-dep-of: 8e9bf8b9e8c0 ("printk, vt, fbcon: Remove console_conditional_schedule()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/video/fbdev/core/fbcon_ccw.c    | 1 +
- drivers/video/fbdev/core/fbcon_cw.c     | 1 +
- drivers/video/fbdev/core/fbcon_rotate.c | 4 +---
- drivers/video/fbdev/core/fbcon_rotate.h | 3 +++
- drivers/video/fbdev/core/fbcon_ud.c     | 1 +
- 5 files changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/video/fbdev/core/fbcon_ccw.c b/drivers/video/fbdev/core/fbcon_ccw.c
-index 2ba8ec4c3e2bc..ba744b67a4fd9 100644
---- a/drivers/video/fbdev/core/fbcon_ccw.c
-+++ b/drivers/video/fbdev/core/fbcon_ccw.c
-@@ -398,4 +398,5 @@ void fbcon_rotate_ccw(struct fbcon_par *par)
-       par->clear_margins = ccw_clear_margins;
-       par->cursor = ccw_cursor;
-       par->update_start = ccw_update_start;
-+      par->rotate_font = fbcon_rotate_font;
- }
-diff --git a/drivers/video/fbdev/core/fbcon_cw.c b/drivers/video/fbdev/core/fbcon_cw.c
-index 4bd22d5ee5f41..974bd9d9b7702 100644
---- a/drivers/video/fbdev/core/fbcon_cw.c
-+++ b/drivers/video/fbdev/core/fbcon_cw.c
-@@ -381,4 +381,5 @@ void fbcon_rotate_cw(struct fbcon_par *par)
-       par->clear_margins = cw_clear_margins;
-       par->cursor = cw_cursor;
-       par->update_start = cw_update_start;
-+      par->rotate_font = fbcon_rotate_font;
- }
-diff --git a/drivers/video/fbdev/core/fbcon_rotate.c b/drivers/video/fbdev/core/fbcon_rotate.c
-index 380b2746451a1..0c7cac71a9c21 100644
---- a/drivers/video/fbdev/core/fbcon_rotate.c
-+++ b/drivers/video/fbdev/core/fbcon_rotate.c
-@@ -18,7 +18,7 @@
- #include "fbcon.h"
- #include "fbcon_rotate.h"
--static int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc)
-+int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc)
- {
-       struct fbcon_par *par = info->fbcon_par;
-       int len, err = 0;
-@@ -95,8 +95,6 @@ static int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc)
- void fbcon_set_rotate(struct fbcon_par *par)
- {
--      par->rotate_font = fbcon_rotate_font;
--
-       switch (par->rotate) {
-       case FB_ROTATE_CW:
-               fbcon_rotate_cw(par);
-diff --git a/drivers/video/fbdev/core/fbcon_rotate.h b/drivers/video/fbdev/core/fbcon_rotate.h
-index 48305e1a07631..784f3231a958f 100644
---- a/drivers/video/fbdev/core/fbcon_rotate.h
-+++ b/drivers/video/fbdev/core/fbcon_rotate.h
-@@ -90,7 +90,10 @@ static inline void rotate_ccw(const char *in, char *out, u32 width, u32 height)
-       }
- }
-+int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc);
-+
- extern void fbcon_rotate_cw(struct fbcon_par *par);
- extern void fbcon_rotate_ud(struct fbcon_par *par);
- extern void fbcon_rotate_ccw(struct fbcon_par *par);
-+
- #endif
-diff --git a/drivers/video/fbdev/core/fbcon_ud.c b/drivers/video/fbdev/core/fbcon_ud.c
-index 14b40e2bf323f..1a214a4d538fb 100644
---- a/drivers/video/fbdev/core/fbcon_ud.c
-+++ b/drivers/video/fbdev/core/fbcon_ud.c
-@@ -425,4 +425,5 @@ void fbcon_rotate_ud(struct fbcon_par *par)
-       par->clear_margins = ud_clear_margins;
-       par->cursor = ud_cursor;
-       par->update_start = ud_update_start;
-+      par->rotate_font = fbcon_rotate_font;
- }
--- 
-2.51.0
-
diff --git a/queue-6.12/printk-vt-fbcon-remove-console_conditional_schedule.patch b/queue-6.12/printk-vt-fbcon-remove-console_conditional_schedule.patch
deleted file mode 100644 (file)
index 2a880d8..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-From 1a2e9dd9b43f1731d59e6f4a3f66207623db5f48 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 26 Jan 2026 19:08:36 +0100
-Subject: printk, vt, fbcon: Remove console_conditional_schedule()
-
-From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-
-[ Upstream commit 8e9bf8b9e8c0a3e1ef16dd48260a113f65ed01d2 ]
-
-do_con_write(), fbcon_redraw.*() invoke console_conditional_schedule()
-which is a conditional scheduling point based on printk's internal
-variables console_may_schedule. It may only be used if the console lock
-is acquired for instance via console_lock() or console_trylock().
-
-Prinkt sets the internal variable to 1 (and allows to schedule)
-if the console lock has been acquired via console_lock(). The trylock
-does not allow it.
-
-The console_conditional_schedule() invocation in do_con_write() is
-invoked shortly before console_unlock().
-The console_conditional_schedule() invocation in fbcon_redraw.*()
-original from fbcon_scroll() / vt's con_scroll() which originate from a
-line feed.
-
-In console_unlock() the variable is set to 0 (forbids to schedule) and
-it tries to schedule while making progress printing. This is brand new
-compared to when console_conditional_schedule() was added in v2.4.9.11.
-
-In v2.6.38-rc3, console_unlock() (started its existence) iterated over
-all consoles and flushed them with disabled interrupts. A scheduling
-attempt here was not possible, it relied that a long print scheduled
-before console_unlock().
-
-Since commit 8d91f8b15361d ("printk: do cond_resched() between lines
-while outputting to consoles"), which appeared in v4.5-rc1,
-console_unlock() attempts to schedule if it was allowed to schedule
-while during console_lock(). Each record is idealy one line so after
-every line feed.
-
-This console_conditional_schedule() is also only relevant on
-PREEMPT_NONE and PREEMPT_VOLUNTARY builds. In other configurations
-cond_resched() becomes a nop and has no impact.
-
-I'm bringing this all up just proof that it is not required anymore. It
-becomes a problem on a PREEMPT_RT build with debug code enabled because
-that might_sleep() in cond_resched() remains and triggers a warnings.
-This is due to
-
- legacy_kthread_func-> console_flush_one_record ->  vt_console_print-> lf
-   -> con_scroll -> fbcon_scroll
-
-and vt_console_print() acquires a spinlock_t which does not allow a
-voluntary schedule. There is no need to fb_scroll() to schedule since
-console_flush_one_record() attempts to schedule after each line.
-!PREEMPT_RT is not affected because the legacy printing thread is only
-enabled on PREEMPT_RT builds.
-
-Therefore I suggest to remove console_conditional_schedule().
-
-Cc: Simona Vetter <simona@ffwll.ch>
-Cc: Helge Deller <deller@gmx.de>
-Cc: linux-fbdev@vger.kernel.org
-Cc: dri-devel@lists.freedesktop.org
-Fixes: 5f53ca3ff83b4 ("printk: Implement legacy printer kthread for PREEMPT_RT")
-Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Acked-by: Petr Mladek <pmladek@suse.com> # from printk() POV
-Signed-off-by: Helge Deller <deller@gmx.de>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/tty/vt/vt.c              |  1 -
- drivers/video/fbdev/core/fbcon.c |  6 ------
- include/linux/console.h          |  1 -
- kernel/printk/printk.c           | 16 ----------------
- 4 files changed, 24 deletions(-)
-
-diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
-index 5b09ce71345b6..b5dff1344a441 100644
---- a/drivers/tty/vt/vt.c
-+++ b/drivers/tty/vt/vt.c
-@@ -3100,7 +3100,6 @@ static int do_con_write(struct tty_struct *tty, const u8 *buf, int count)
-                       goto rescan_last_byte;
-       }
-       con_flush(vc, &draw);
--      console_conditional_schedule();
-       notify_update(vc);
-       console_unlock();
-       return n;
-diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
-index 3cc68324f297b..350c4d80b745d 100644
---- a/drivers/video/fbdev/core/fbcon.c
-+++ b/drivers/video/fbdev/core/fbcon.c
-@@ -1593,12 +1593,10 @@ static void fbcon_redraw_move(struct vc_data *vc, struct fbcon_display *p,
-                                       start = s;
-                               }
-                       }
--                      console_conditional_schedule();
-                       s++;
-               } while (s < le);
-               if (s > start)
-                       fbcon_putcs(vc, start, s - start, dy, x);
--              console_conditional_schedule();
-               dy++;
-       }
- }
-@@ -1634,14 +1632,12 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
-                       }
-                       scr_writew(c, d);
--                      console_conditional_schedule();
-                       s++;
-                       d++;
-               } while (s < le);
-               if (s > start)
-                       par->bitops->bmove(vc, info, line + ycount, x, line, x, 1,
-                                            s - start);
--              console_conditional_schedule();
-               if (ycount > 0)
-                       line++;
-               else {
-@@ -1689,13 +1685,11 @@ static void fbcon_redraw(struct vc_data *vc, int line, int count, int offset)
-                               }
-                       }
-                       scr_writew(c, d);
--                      console_conditional_schedule();
-                       s++;
-                       d++;
-               } while (s < le);
-               if (s > start)
-                       fbcon_putcs(vc, start, s - start, line, x);
--              console_conditional_schedule();
-               if (offset > 0)
-                       line++;
-               else {
-diff --git a/include/linux/console.h b/include/linux/console.h
-index eba367bf605da..409bfd5ac88a1 100644
---- a/include/linux/console.h
-+++ b/include/linux/console.h
-@@ -629,7 +629,6 @@ extern int unregister_console(struct console *);
- extern void console_lock(void);
- extern int console_trylock(void);
- extern void console_unlock(void);
--extern void console_conditional_schedule(void);
- extern void console_unblank(void);
- extern void console_flush_on_panic(enum con_flush_mode mode);
- extern struct tty_driver *console_device(int *);
-diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
-index 3a91b739e8f30..95f49feeb29fe 100644
---- a/kernel/printk/printk.c
-+++ b/kernel/printk/printk.c
-@@ -3280,22 +3280,6 @@ void console_unlock(void)
- }
- EXPORT_SYMBOL(console_unlock);
--/**
-- * console_conditional_schedule - yield the CPU if required
-- *
-- * If the console code is currently allowed to sleep, and
-- * if this CPU should yield the CPU to another task, do
-- * so here.
-- *
-- * Must be called within console_lock();.
-- */
--void __sched console_conditional_schedule(void)
--{
--      if (console_may_schedule)
--              cond_resched();
--}
--EXPORT_SYMBOL(console_conditional_schedule);
--
- void console_unblank(void)
- {
-       bool found_unblank = false;
--- 
-2.51.0
-
index 1b3cf0c74db6d79c7dc31bd980bc7c9d6abf94dc..27c0e89b6f7567f10874e2b6536e0d558a69e4c1 100644 (file)
@@ -296,13 +296,6 @@ nvdimm-virtio_pmem-serialize-flush-requests.patch
 fs-nfs-fix-readdir-slow-start-regression.patch
 tracing-properly-process-error-handling-in-event_his.patch
 tracing-remove-duplicate-enable_event_str-and-disabl.patch
-fbcon-fbcon_cursor_noblink-fbcon_cursor_blink.patch
-fbcon-fbcon_is_inactive-fbcon_is_active.patch
-fbcon-introduce-get_-fg-bg-_color.patch
-fbcon-rename-struct-fbcon_ops-to-struct-fbcon_par.patch
-fbcon-set-rotate_font-callback-with-related-callback.patch
-fbcon-move-fbcon-callbacks-into-struct-fbcon_bitops.patch
-printk-vt-fbcon-remove-console_conditional_schedule.patch
 fbdev-of_display_timing-fix-device-node-reference-le.patch
 fbdev-au1200fb-fix-a-memory-leak-in-au1200fb_drv_pro.patch
 clk-qcom-gcc-sm8550-use-floor-ops-for-sdcc-rcgs.patch
diff --git a/queue-6.18/fbcon-move-fbcon-callbacks-into-struct-fbcon_bitops.patch b/queue-6.18/fbcon-move-fbcon-callbacks-into-struct-fbcon_bitops.patch
deleted file mode 100644 (file)
index ad31011..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-From 16e324db5edd1aec01b4629613209c8a2d936a91 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 9 Sep 2025 14:44:44 +0200
-Subject: fbcon: Move fbcon callbacks into struct fbcon_bitops
-
-From: Thomas Zimmermann <tzimmermann@suse.de>
-
-[ Upstream commit 217cb07be424d127293dc0b32dbd077ad37c24f6 ]
-
-Depending on rotation settings, fbcon sets different callback
-functions in struct fbcon_par from within fbcon_set_bitops(). Declare
-the callback functions in the new type struct fbcon_bitops. Then
-only replace the single bitops pointer in struct fbcon_par.
-
-Keeping callbacks in constant instances of struct fbcon_bitops
-makes it harder to exploit the callbacks. Also makes the code slightly
-easier to maintain.
-
-For tile-based consoles, there's a separate instance of the bitops
-structure.
-
-Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
-Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
-Link: https://lore.kernel.org/r/20250909124616.143365-5-tzimmermann@suse.de
-Stable-dep-of: 8e9bf8b9e8c0 ("printk, vt, fbcon: Remove console_conditional_schedule()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/video/fbdev/core/bitblit.c   | 17 ++++---
- drivers/video/fbdev/core/fbcon.c     | 67 +++++++++++++++-------------
- drivers/video/fbdev/core/fbcon.h     |  7 ++-
- drivers/video/fbdev/core/fbcon_ccw.c | 18 +++++---
- drivers/video/fbdev/core/fbcon_cw.c  | 18 +++++---
- drivers/video/fbdev/core/fbcon_ud.c  | 18 +++++---
- drivers/video/fbdev/core/tileblit.c  | 16 ++++---
- 7 files changed, 94 insertions(+), 67 deletions(-)
-
-diff --git a/drivers/video/fbdev/core/bitblit.c b/drivers/video/fbdev/core/bitblit.c
-index bed8ba18222b9..8b5819877469e 100644
---- a/drivers/video/fbdev/core/bitblit.c
-+++ b/drivers/video/fbdev/core/bitblit.c
-@@ -409,15 +409,18 @@ static int bit_update_start(struct fb_info *info)
-       return err;
- }
-+static const struct fbcon_bitops bit_fbcon_bitops = {
-+      .bmove = bit_bmove,
-+      .clear = bit_clear,
-+      .putcs = bit_putcs,
-+      .clear_margins = bit_clear_margins,
-+      .cursor = bit_cursor,
-+      .update_start = bit_update_start,
-+};
-+
- void fbcon_set_bitops(struct fbcon_par *par)
- {
--      par->bmove = bit_bmove;
--      par->clear = bit_clear;
--      par->putcs = bit_putcs;
--      par->clear_margins = bit_clear_margins;
--      par->cursor = bit_cursor;
--      par->update_start = bit_update_start;
--      par->rotate_font = NULL;
-+      par->bitops = &bit_fbcon_bitops;
-       if (par->rotate)
-               fbcon_set_rotate(par);
-diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
-index 2523d8b223dc1..413aa46228549 100644
---- a/drivers/video/fbdev/core/fbcon.c
-+++ b/drivers/video/fbdev/core/fbcon.c
-@@ -400,9 +400,9 @@ static void fb_flashcursor(struct work_struct *work)
-       c = scr_readw((u16 *) vc->vc_pos);
-       enable = par->cursor_flash && !par->cursor_state.enable;
--      par->cursor(vc, info, enable,
--                  get_fg_color(vc, info, c),
--                  get_bg_color(vc, info, c));
-+      par->bitops->cursor(vc, info, enable,
-+                          get_fg_color(vc, info, c),
-+                          get_bg_color(vc, info, c));
-       console_unlock();
-       queue_delayed_work(system_power_efficient_wq, &par->cursor_work,
-@@ -1157,7 +1157,7 @@ static void fbcon_init(struct vc_data *vc, bool init)
-       if (logo)
-               fbcon_prepare_logo(vc, info, cols, rows, new_cols, new_rows);
--      if (par->rotate_font && par->rotate_font(info, vc)) {
-+      if (par->bitops->rotate_font && par->bitops->rotate_font(info, vc)) {
-               par->rotate = FB_ROTATE_UR;
-               set_blitting_type(vc, info);
-       }
-@@ -1298,10 +1298,11 @@ static void __fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
-       y_break = p->vrows - p->yscroll;
-       if (sy < y_break && sy + height - 1 >= y_break) {
-               u_int b = y_break - sy;
--              par->clear(vc, info, real_y(p, sy), sx, b, width, fg, bg);
--              par->clear(vc, info, real_y(p, sy + b), sx, height - b, width, fg, bg);
-+              par->bitops->clear(vc, info, real_y(p, sy), sx, b, width, fg, bg);
-+              par->bitops->clear(vc, info, real_y(p, sy + b), sx, height - b,
-+                                   width, fg, bg);
-       } else
--              par->clear(vc, info, real_y(p, sy), sx, height, width, fg, bg);
-+              par->bitops->clear(vc, info, real_y(p, sy), sx, height, width, fg, bg);
- }
- static void fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
-@@ -1318,9 +1319,9 @@ static void fbcon_putcs(struct vc_data *vc, const u16 *s, unsigned int count,
-       struct fbcon_par *par = info->fbcon_par;
-       if (fbcon_is_active(vc, info))
--              par->putcs(vc, info, s, count, real_y(p, ypos), xpos,
--                         get_fg_color(vc, info, scr_readw(s)),
--                         get_bg_color(vc, info, scr_readw(s)));
-+              par->bitops->putcs(vc, info, s, count, real_y(p, ypos), xpos,
-+                                 get_fg_color(vc, info, scr_readw(s)),
-+                                 get_bg_color(vc, info, scr_readw(s)));
- }
- static void fbcon_clear_margins(struct vc_data *vc, int bottom_only)
-@@ -1329,7 +1330,7 @@ static void fbcon_clear_margins(struct vc_data *vc, int bottom_only)
-       struct fbcon_par *par = info->fbcon_par;
-       if (fbcon_is_active(vc, info))
--              par->clear_margins(vc, info, margin_color, bottom_only);
-+              par->bitops->clear_margins(vc, info, margin_color, bottom_only);
- }
- static void fbcon_cursor(struct vc_data *vc, bool enable)
-@@ -1350,12 +1351,12 @@ static void fbcon_cursor(struct vc_data *vc, bool enable)
-       par->cursor_flash = enable;
--      if (!par->cursor)
-+      if (!par->bitops->cursor)
-               return;
--      par->cursor(vc, info, enable,
--                  get_fg_color(vc, info, c),
--                  get_bg_color(vc, info, c));
-+      par->bitops->cursor(vc, info, enable,
-+                          get_fg_color(vc, info, c),
-+                          get_bg_color(vc, info, c));
- }
- static int scrollback_phys_max = 0;
-@@ -1439,7 +1440,7 @@ static __inline__ void ywrap_up(struct vc_data *vc, int count)
-       par->var.xoffset = 0;
-       par->var.yoffset = p->yscroll * vc->vc_font.height;
-       par->var.vmode |= FB_VMODE_YWRAP;
--      par->update_start(info);
-+      par->bitops->update_start(info);
-       scrollback_max += count;
-       if (scrollback_max > scrollback_phys_max)
-               scrollback_max = scrollback_phys_max;
-@@ -1458,7 +1459,7 @@ static __inline__ void ywrap_down(struct vc_data *vc, int count)
-       par->var.xoffset = 0;
-       par->var.yoffset = p->yscroll * vc->vc_font.height;
-       par->var.vmode |= FB_VMODE_YWRAP;
--      par->update_start(info);
-+      par->bitops->update_start(info);
-       scrollback_max -= count;
-       if (scrollback_max < 0)
-               scrollback_max = 0;
-@@ -1473,15 +1474,15 @@ static __inline__ void ypan_up(struct vc_data *vc, int count)
-       p->yscroll += count;
-       if (p->yscroll > p->vrows - vc->vc_rows) {
--              par->bmove(vc, info, p->vrows - vc->vc_rows,
--                          0, 0, 0, vc->vc_rows, vc->vc_cols);
-+              par->bitops->bmove(vc, info, p->vrows - vc->vc_rows,
-+                                 0, 0, 0, vc->vc_rows, vc->vc_cols);
-               p->yscroll -= p->vrows - vc->vc_rows;
-       }
-       par->var.xoffset = 0;
-       par->var.yoffset = p->yscroll * vc->vc_font.height;
-       par->var.vmode &= ~FB_VMODE_YWRAP;
--      par->update_start(info);
-+      par->bitops->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max += count;
-       if (scrollback_max > scrollback_phys_max)
-@@ -1505,7 +1506,7 @@ static __inline__ void ypan_up_redraw(struct vc_data *vc, int t, int count)
-       par->var.xoffset = 0;
-       par->var.yoffset = p->yscroll * vc->vc_font.height;
-       par->var.vmode &= ~FB_VMODE_YWRAP;
--      par->update_start(info);
-+      par->bitops->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max += count;
-       if (scrollback_max > scrollback_phys_max)
-@@ -1521,15 +1522,15 @@ static __inline__ void ypan_down(struct vc_data *vc, int count)
-       p->yscroll -= count;
-       if (p->yscroll < 0) {
--              par->bmove(vc, info, 0, 0, p->vrows - vc->vc_rows,
--                          0, vc->vc_rows, vc->vc_cols);
-+              par->bitops->bmove(vc, info, 0, 0, p->vrows - vc->vc_rows,
-+                                 0, vc->vc_rows, vc->vc_cols);
-               p->yscroll += p->vrows - vc->vc_rows;
-       }
-       par->var.xoffset = 0;
-       par->var.yoffset = p->yscroll * vc->vc_font.height;
-       par->var.vmode &= ~FB_VMODE_YWRAP;
--      par->update_start(info);
-+      par->bitops->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max -= count;
-       if (scrollback_max < 0)
-@@ -1553,7 +1554,7 @@ static __inline__ void ypan_down_redraw(struct vc_data *vc, int t, int count)
-       par->var.xoffset = 0;
-       par->var.yoffset = p->yscroll * vc->vc_font.height;
-       par->var.vmode &= ~FB_VMODE_YWRAP;
--      par->update_start(info);
-+      par->bitops->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max -= count;
-       if (scrollback_max < 0)
-@@ -1615,8 +1616,8 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
-                       if (c == scr_readw(d)) {
-                               if (s > start) {
--                                      par->bmove(vc, info, line + ycount, x,
--                                                 line, x, 1, s - start);
-+                                      par->bitops->bmove(vc, info, line + ycount, x,
-+                                                         line, x, 1, s - start);
-                                       x += s - start + 1;
-                                       start = s + 1;
-                               } else {
-@@ -1631,7 +1632,8 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
-                       d++;
-               } while (s < le);
-               if (s > start)
--                      par->bmove(vc, info, line + ycount, x, line, x, 1, s - start);
-+                      par->bitops->bmove(vc, info, line + ycount, x, line, x, 1,
-+                                           s - start);
-               console_conditional_schedule();
-               if (ycount > 0)
-                       line++;
-@@ -1736,7 +1738,8 @@ static void fbcon_bmove_rec(struct vc_data *vc, struct fbcon_display *p, int sy,
-               }
-               return;
-       }
--      par->bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx, height, width);
-+      par->bitops->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,
-@@ -2156,7 +2159,7 @@ static bool fbcon_switch(struct vc_data *vc)
-       set_blitting_type(vc, info);
-       par->cursor_reset = 1;
--      if (par->rotate_font && par->rotate_font(info, vc)) {
-+      if (par->bitops->rotate_font && par->bitops->rotate_font(info, vc)) {
-               par->rotate = FB_ROTATE_UR;
-               set_blitting_type(vc, info);
-       }
-@@ -2189,7 +2192,7 @@ static bool fbcon_switch(struct vc_data *vc)
-       if (fbcon_is_active(vc, info)) {
-               par->var.xoffset = par->var.yoffset = p->yscroll = 0;
--              par->update_start(info);
-+              par->bitops->update_start(info);
-       }
-       fbcon_set_palette(vc, color_table);
-@@ -2695,7 +2698,7 @@ static void fbcon_modechanged(struct fb_info *info)
-               if (fbcon_is_active(vc, info)) {
-                       par->var.xoffset = par->var.yoffset = p->yscroll = 0;
--                      par->update_start(info);
-+                      par->bitops->update_start(info);
-               }
-               fbcon_set_palette(vc, color_table);
-diff --git a/drivers/video/fbdev/core/fbcon.h b/drivers/video/fbdev/core/fbcon.h
-index 31ee2d5912219..69ae6b965a103 100644
---- a/drivers/video/fbdev/core/fbcon.h
-+++ b/drivers/video/fbdev/core/fbcon.h
-@@ -51,7 +51,7 @@ struct fbcon_display {
-     const struct fb_videomode *mode;
- };
--struct fbcon_par {
-+struct fbcon_bitops {
-       void (*bmove)(struct vc_data *vc, struct fb_info *info, int sy,
-                     int sx, int dy, int dx, int height, int width);
-       void (*clear)(struct vc_data *vc, struct fb_info *info, int sy,
-@@ -65,6 +65,9 @@ struct fbcon_par {
-                      bool enable, int fg, int bg);
-       int  (*update_start)(struct fb_info *info);
-       int  (*rotate_font)(struct fb_info *info, struct vc_data *vc);
-+};
-+
-+struct fbcon_par {
-       struct fb_var_screeninfo var;  /* copy of the current fb_var_screeninfo */
-       struct delayed_work cursor_work; /* Cursor timer */
-       struct fb_cursor cursor_state;
-@@ -86,6 +89,8 @@ struct fbcon_par {
-       u8    *cursor_src;
-       u32    cursor_size;
-       u32    fd_size;
-+
-+      const struct fbcon_bitops *bitops;
- };
-     /*
-      *  Attribute Decoding
-diff --git a/drivers/video/fbdev/core/fbcon_ccw.c b/drivers/video/fbdev/core/fbcon_ccw.c
-index ba744b67a4fd9..4721f4b5e29a5 100644
---- a/drivers/video/fbdev/core/fbcon_ccw.c
-+++ b/drivers/video/fbdev/core/fbcon_ccw.c
-@@ -390,13 +390,17 @@ static int ccw_update_start(struct fb_info *info)
-       return err;
- }
-+static const struct fbcon_bitops ccw_fbcon_bitops = {
-+      .bmove = ccw_bmove,
-+      .clear = ccw_clear,
-+      .putcs = ccw_putcs,
-+      .clear_margins = ccw_clear_margins,
-+      .cursor = ccw_cursor,
-+      .update_start = ccw_update_start,
-+      .rotate_font = fbcon_rotate_font,
-+};
-+
- void fbcon_rotate_ccw(struct fbcon_par *par)
- {
--      par->bmove = ccw_bmove;
--      par->clear = ccw_clear;
--      par->putcs = ccw_putcs;
--      par->clear_margins = ccw_clear_margins;
--      par->cursor = ccw_cursor;
--      par->update_start = ccw_update_start;
--      par->rotate_font = fbcon_rotate_font;
-+      par->bitops = &ccw_fbcon_bitops;
- }
-diff --git a/drivers/video/fbdev/core/fbcon_cw.c b/drivers/video/fbdev/core/fbcon_cw.c
-index 974bd9d9b7702..2771924d0fb72 100644
---- a/drivers/video/fbdev/core/fbcon_cw.c
-+++ b/drivers/video/fbdev/core/fbcon_cw.c
-@@ -373,13 +373,17 @@ static int cw_update_start(struct fb_info *info)
-       return err;
- }
-+static const struct fbcon_bitops cw_fbcon_bitops = {
-+      .bmove = cw_bmove,
-+      .clear = cw_clear,
-+      .putcs = cw_putcs,
-+      .clear_margins = cw_clear_margins,
-+      .cursor = cw_cursor,
-+      .update_start = cw_update_start,
-+      .rotate_font = fbcon_rotate_font,
-+};
-+
- void fbcon_rotate_cw(struct fbcon_par *par)
- {
--      par->bmove = cw_bmove;
--      par->clear = cw_clear;
--      par->putcs = cw_putcs;
--      par->clear_margins = cw_clear_margins;
--      par->cursor = cw_cursor;
--      par->update_start = cw_update_start;
--      par->rotate_font = fbcon_rotate_font;
-+      par->bitops = &cw_fbcon_bitops;
- }
-diff --git a/drivers/video/fbdev/core/fbcon_ud.c b/drivers/video/fbdev/core/fbcon_ud.c
-index 1a214a4d538fb..148ca9b539d19 100644
---- a/drivers/video/fbdev/core/fbcon_ud.c
-+++ b/drivers/video/fbdev/core/fbcon_ud.c
-@@ -417,13 +417,17 @@ static int ud_update_start(struct fb_info *info)
-       return err;
- }
-+static const struct fbcon_bitops ud_fbcon_bitops = {
-+      .bmove = ud_bmove,
-+      .clear = ud_clear,
-+      .putcs = ud_putcs,
-+      .clear_margins = ud_clear_margins,
-+      .cursor = ud_cursor,
-+      .update_start = ud_update_start,
-+      .rotate_font = fbcon_rotate_font,
-+};
-+
- void fbcon_rotate_ud(struct fbcon_par *par)
- {
--      par->bmove = ud_bmove;
--      par->clear = ud_clear;
--      par->putcs = ud_putcs;
--      par->clear_margins = ud_clear_margins;
--      par->cursor = ud_cursor;
--      par->update_start = ud_update_start;
--      par->rotate_font = fbcon_rotate_font;
-+      par->bitops = &ud_fbcon_bitops;
- }
-diff --git a/drivers/video/fbdev/core/tileblit.c b/drivers/video/fbdev/core/tileblit.c
-index 4428f2bcd3f8c..a9db668caf727 100644
---- a/drivers/video/fbdev/core/tileblit.c
-+++ b/drivers/video/fbdev/core/tileblit.c
-@@ -161,17 +161,21 @@ static int tile_update_start(struct fb_info *info)
-       return err;
- }
-+static const struct fbcon_bitops tile_fbcon_bitops = {
-+      .bmove = tile_bmove,
-+      .clear = tile_clear,
-+      .putcs = tile_putcs,
-+      .clear_margins = tile_clear_margins,
-+      .cursor = tile_cursor,
-+      .update_start = tile_update_start,
-+};
-+
- void fbcon_set_tileops(struct vc_data *vc, struct fb_info *info)
- {
-       struct fb_tilemap map;
-       struct fbcon_par *par = info->fbcon_par;
--      par->bmove = tile_bmove;
--      par->clear = tile_clear;
--      par->putcs = tile_putcs;
--      par->clear_margins = tile_clear_margins;
--      par->cursor = tile_cursor;
--      par->update_start = tile_update_start;
-+      par->bitops = &tile_fbcon_bitops;
-       if (par->p) {
-               map.width = vc->vc_font.width;
--- 
-2.51.0
-
diff --git a/queue-6.18/fbcon-rename-struct-fbcon_ops-to-struct-fbcon_par.patch b/queue-6.18/fbcon-rename-struct-fbcon_ops-to-struct-fbcon_par.patch
deleted file mode 100644 (file)
index e07a4ea..0000000
+++ /dev/null
@@ -1,2478 +0,0 @@
-From 8eb0675c5584d375993a6a03ff6fc8ecb5ef5ceb Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 9 Sep 2025 14:44:42 +0200
-Subject: fbcon: Rename struct fbcon_ops to struct fbcon_par
-
-From: Thomas Zimmermann <tzimmermann@suse.de>
-
-[ Upstream commit a6adbbc4c32a016146e117b1e9e5242724a75e10 ]
-
-The type struct fbcon_ops contains fbcon state and callbacks. As the
-callbacks will be removed from struct fbcon_ops, rename the data type
-to struct fbcon_par. Also rename the variables from ops to par.
-
-The _par postfix ("private access registers") is used throughout the
-fbdev subsystem for per-driver state. The fbcon pointer within struct
-fb_info is also named fbcon_par. Hence, the new naming fits existing
-practice.
-
-v2:
-- rename struct fbcon_ops to struct fbcon_par
-- fix build for CONFIG_FB_TILEBITTING=n (kernel test robot)
-- fix indention
-
-Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
-Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
-Link: https://lore.kernel.org/r/20250909124616.143365-3-tzimmermann@suse.de
-Stable-dep-of: 8e9bf8b9e8c0 ("printk, vt, fbcon: Remove console_conditional_schedule()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/video/fbdev/core/bitblit.c      | 122 +++----
- drivers/video/fbdev/core/fbcon.c        | 419 ++++++++++++------------
- drivers/video/fbdev/core/fbcon.h        |   6 +-
- drivers/video/fbdev/core/fbcon_ccw.c    | 146 ++++-----
- drivers/video/fbdev/core/fbcon_cw.c     | 146 ++++-----
- drivers/video/fbdev/core/fbcon_rotate.c |  40 +--
- drivers/video/fbdev/core/fbcon_rotate.h |   6 +-
- drivers/video/fbdev/core/fbcon_ud.c     | 162 ++++-----
- drivers/video/fbdev/core/softcursor.c   |  18 +-
- drivers/video/fbdev/core/tileblit.c     |  28 +-
- 10 files changed, 541 insertions(+), 552 deletions(-)
-
-diff --git a/drivers/video/fbdev/core/bitblit.c b/drivers/video/fbdev/core/bitblit.c
-index dc5ad3fcc7be4..bed8ba18222b9 100644
---- a/drivers/video/fbdev/core/bitblit.c
-+++ b/drivers/video/fbdev/core/bitblit.c
-@@ -261,10 +261,10 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                      int fg, int bg)
- {
-       struct fb_cursor cursor;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       int w = DIV_ROUND_UP(vc->vc_font.width, 8), c;
--      int y = real_y(ops->p, vc->state.y);
-+      int y = real_y(par->p, vc->state.y);
-       int attribute, use_sw = vc->vc_cursor_type & CUR_SW;
-       int err = 1;
-       char *src;
-@@ -278,10 +278,10 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-       attribute = get_attribute(info, c);
-       src = vc->vc_font.data + ((c & charmask) * (w * vc->vc_font.height));
--      if (ops->cursor_state.image.data != src ||
--          ops->cursor_reset) {
--          ops->cursor_state.image.data = src;
--          cursor.set |= FB_CUR_SETIMAGE;
-+      if (par->cursor_state.image.data != src ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.data = src;
-+              cursor.set |= FB_CUR_SETIMAGE;
-       }
-       if (attribute) {
-@@ -290,46 +290,46 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               dst = kmalloc_array(w, vc->vc_font.height, GFP_ATOMIC);
-               if (!dst)
-                       return;
--              kfree(ops->cursor_data);
--              ops->cursor_data = dst;
-+              kfree(par->cursor_data);
-+              par->cursor_data = dst;
-               update_attr(dst, src, attribute, vc);
-               src = dst;
-       }
--      if (ops->cursor_state.image.fg_color != fg ||
--          ops->cursor_state.image.bg_color != bg ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.fg_color = fg;
--              ops->cursor_state.image.bg_color = bg;
-+      if (par->cursor_state.image.fg_color != fg ||
-+          par->cursor_state.image.bg_color != bg ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.fg_color = fg;
-+              par->cursor_state.image.bg_color = bg;
-               cursor.set |= FB_CUR_SETCMAP;
-       }
--      if ((ops->cursor_state.image.dx != (vc->vc_font.width * vc->state.x)) ||
--          (ops->cursor_state.image.dy != (vc->vc_font.height * y)) ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.dx = vc->vc_font.width * vc->state.x;
--              ops->cursor_state.image.dy = vc->vc_font.height * y;
-+      if ((par->cursor_state.image.dx != (vc->vc_font.width * vc->state.x)) ||
-+          (par->cursor_state.image.dy != (vc->vc_font.height * y)) ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.dx = vc->vc_font.width * vc->state.x;
-+              par->cursor_state.image.dy = vc->vc_font.height * y;
-               cursor.set |= FB_CUR_SETPOS;
-       }
--      if (ops->cursor_state.image.height != vc->vc_font.height ||
--          ops->cursor_state.image.width != vc->vc_font.width ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.height = vc->vc_font.height;
--              ops->cursor_state.image.width = vc->vc_font.width;
-+      if (par->cursor_state.image.height != vc->vc_font.height ||
-+          par->cursor_state.image.width != vc->vc_font.width ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.height = vc->vc_font.height;
-+              par->cursor_state.image.width = vc->vc_font.width;
-               cursor.set |= FB_CUR_SETSIZE;
-       }
--      if (ops->cursor_state.hot.x || ops->cursor_state.hot.y ||
--          ops->cursor_reset) {
--              ops->cursor_state.hot.x = cursor.hot.y = 0;
-+      if (par->cursor_state.hot.x || par->cursor_state.hot.y ||
-+          par->cursor_reset) {
-+              par->cursor_state.hot.x = cursor.hot.y = 0;
-               cursor.set |= FB_CUR_SETHOT;
-       }
-       if (cursor.set & FB_CUR_SETSIZE ||
--          vc->vc_cursor_type != ops->p->cursor_shape ||
--          ops->cursor_state.mask == NULL ||
--          ops->cursor_reset) {
-+          vc->vc_cursor_type != par->p->cursor_shape ||
-+          par->cursor_state.mask == NULL ||
-+          par->cursor_reset) {
-               char *mask = kmalloc_array(w, vc->vc_font.height, GFP_ATOMIC);
-               int cur_height, size, i = 0;
-               u8 msk = 0xff;
-@@ -337,13 +337,13 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               if (!mask)
-                       return;
--              kfree(ops->cursor_state.mask);
--              ops->cursor_state.mask = mask;
-+              kfree(par->cursor_state.mask);
-+              par->cursor_state.mask = mask;
--              ops->p->cursor_shape = vc->vc_cursor_type;
-+              par->p->cursor_shape = vc->vc_cursor_type;
-               cursor.set |= FB_CUR_SETSHAPE;
--              switch (CUR_SIZE(ops->p->cursor_shape)) {
-+              switch (CUR_SIZE(par->p->cursor_shape)) {
-               case CUR_NONE:
-                       cur_height = 0;
-                       break;
-@@ -372,19 +372,19 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                       mask[i++] = msk;
-       }
--      ops->cursor_state.enable = enable && !use_sw;
-+      par->cursor_state.enable = enable && !use_sw;
-       cursor.image.data = src;
--      cursor.image.fg_color = ops->cursor_state.image.fg_color;
--      cursor.image.bg_color = ops->cursor_state.image.bg_color;
--      cursor.image.dx = ops->cursor_state.image.dx;
--      cursor.image.dy = ops->cursor_state.image.dy;
--      cursor.image.height = ops->cursor_state.image.height;
--      cursor.image.width = ops->cursor_state.image.width;
--      cursor.hot.x = ops->cursor_state.hot.x;
--      cursor.hot.y = ops->cursor_state.hot.y;
--      cursor.mask = ops->cursor_state.mask;
--      cursor.enable = ops->cursor_state.enable;
-+      cursor.image.fg_color = par->cursor_state.image.fg_color;
-+      cursor.image.bg_color = par->cursor_state.image.bg_color;
-+      cursor.image.dx = par->cursor_state.image.dx;
-+      cursor.image.dy = par->cursor_state.image.dy;
-+      cursor.image.height = par->cursor_state.image.height;
-+      cursor.image.width = par->cursor_state.image.width;
-+      cursor.hot.x = par->cursor_state.hot.x;
-+      cursor.hot.y = par->cursor_state.hot.y;
-+      cursor.mask = par->cursor_state.mask;
-+      cursor.enable = par->cursor_state.enable;
-       cursor.image.depth = 1;
-       cursor.rop = ROP_XOR;
-@@ -394,31 +394,31 @@ static void bit_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-       if (err)
-               soft_cursor(info, &cursor);
--      ops->cursor_reset = 0;
-+      par->cursor_reset = 0;
- }
- static int bit_update_start(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int err;
--      err = fb_pan_display(info, &ops->var);
--      ops->var.xoffset = info->var.xoffset;
--      ops->var.yoffset = info->var.yoffset;
--      ops->var.vmode = info->var.vmode;
-+      err = fb_pan_display(info, &par->var);
-+      par->var.xoffset = info->var.xoffset;
-+      par->var.yoffset = info->var.yoffset;
-+      par->var.vmode = info->var.vmode;
-       return err;
- }
--void fbcon_set_bitops(struct fbcon_ops *ops)
-+void fbcon_set_bitops(struct fbcon_par *par)
- {
--      ops->bmove = bit_bmove;
--      ops->clear = bit_clear;
--      ops->putcs = bit_putcs;
--      ops->clear_margins = bit_clear_margins;
--      ops->cursor = bit_cursor;
--      ops->update_start = bit_update_start;
--      ops->rotate_font = NULL;
--
--      if (ops->rotate)
--              fbcon_set_rotate(ops);
-+      par->bmove = bit_bmove;
-+      par->clear = bit_clear;
-+      par->putcs = bit_putcs;
-+      par->clear_margins = bit_clear_margins;
-+      par->cursor = bit_cursor;
-+      par->update_start = bit_update_start;
-+      par->rotate_font = NULL;
-+
-+      if (par->rotate)
-+              fbcon_set_rotate(par);
- }
-diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
-index e7e07eb2142eb..2523d8b223dc1 100644
---- a/drivers/video/fbdev/core/fbcon.c
-+++ b/drivers/video/fbdev/core/fbcon.c
-@@ -200,27 +200,27 @@ static struct device *fbcon_device;
- #ifdef CONFIG_FRAMEBUFFER_CONSOLE_ROTATION
- static inline void fbcon_set_rotation(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       if (!(info->flags & FBINFO_MISC_TILEBLITTING) &&
--          ops->p->con_rotate < 4)
--              ops->rotate = ops->p->con_rotate;
-+          par->p->con_rotate < 4)
-+              par->rotate = par->p->con_rotate;
-       else
--              ops->rotate = 0;
-+              par->rotate = 0;
- }
- static void fbcon_rotate(struct fb_info *info, u32 rotate)
- {
--      struct fbcon_ops *ops= info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_info *fb_info;
--      if (!ops || ops->currcon == -1)
-+      if (!par || par->currcon == -1)
-               return;
--      fb_info = fbcon_info_from_console(ops->currcon);
-+      fb_info = fbcon_info_from_console(par->currcon);
-       if (info == fb_info) {
--              struct fbcon_display *p = &fb_display[ops->currcon];
-+              struct fbcon_display *p = &fb_display[par->currcon];
-               if (rotate < 4)
-                       p->con_rotate = rotate;
-@@ -233,12 +233,12 @@ static void fbcon_rotate(struct fb_info *info, u32 rotate)
- static void fbcon_rotate_all(struct fb_info *info, u32 rotate)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct vc_data *vc;
-       struct fbcon_display *p;
-       int i;
--      if (!ops || ops->currcon < 0 || rotate > 3)
-+      if (!par || par->currcon < 0 || rotate > 3)
-               return;
-       for (i = first_fb_vc; i <= last_fb_vc; i++) {
-@@ -256,9 +256,9 @@ static void fbcon_rotate_all(struct fb_info *info, u32 rotate)
- #else
- static inline void fbcon_set_rotation(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      ops->rotate = FB_ROTATE_UR;
-+      par->rotate = FB_ROTATE_UR;
- }
- static void fbcon_rotate(struct fb_info *info, u32 rotate)
-@@ -274,9 +274,9 @@ static void fbcon_rotate_all(struct fb_info *info, u32 rotate)
- static int fbcon_get_rotate(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      return (ops) ? ops->rotate : 0;
-+      return (par) ? par->rotate : 0;
- }
- static bool fbcon_skip_panic(struct fb_info *info)
-@@ -286,10 +286,10 @@ static bool fbcon_skip_panic(struct fb_info *info)
- static inline bool fbcon_is_active(struct vc_data *vc, struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       return info->state == FBINFO_STATE_RUNNING &&
--              vc->vc_mode == KD_TEXT && !ops->graphics && !fbcon_skip_panic(info);
-+              vc->vc_mode == KD_TEXT && !par->graphics && !fbcon_skip_panic(info);
- }
- static int get_color(struct vc_data *vc, struct fb_info *info,
-@@ -371,7 +371,7 @@ static int get_bg_color(struct vc_data *vc, struct fb_info *info, u16 c)
- static void fb_flashcursor(struct work_struct *work)
- {
--      struct fbcon_ops *ops = container_of(work, struct fbcon_ops, cursor_work.work);
-+      struct fbcon_par *par = container_of(work, struct fbcon_par, cursor_work.work);
-       struct fb_info *info;
-       struct vc_data *vc = NULL;
-       int c;
-@@ -386,10 +386,10 @@ static void fb_flashcursor(struct work_struct *work)
-               return;
-       /* protected by console_lock */
--      info = ops->info;
-+      info = par->info;
--      if (ops->currcon != -1)
--              vc = vc_cons[ops->currcon].d;
-+      if (par->currcon != -1)
-+              vc = vc_cons[par->currcon].d;
-       if (!vc || !con_is_visible(vc) ||
-           fbcon_info_from_console(vc->vc_num) != info ||
-@@ -399,30 +399,30 @@ static void fb_flashcursor(struct work_struct *work)
-       }
-       c = scr_readw((u16 *) vc->vc_pos);
--      enable = ops->cursor_flash && !ops->cursor_state.enable;
--      ops->cursor(vc, info, enable,
-+      enable = par->cursor_flash && !par->cursor_state.enable;
-+      par->cursor(vc, info, enable,
-                   get_fg_color(vc, info, c),
-                   get_bg_color(vc, info, c));
-       console_unlock();
--      queue_delayed_work(system_power_efficient_wq, &ops->cursor_work,
--                         ops->cur_blink_jiffies);
-+      queue_delayed_work(system_power_efficient_wq, &par->cursor_work,
-+                         par->cur_blink_jiffies);
- }
- static void fbcon_add_cursor_work(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       if (fbcon_cursor_blink)
--              queue_delayed_work(system_power_efficient_wq, &ops->cursor_work,
--                                 ops->cur_blink_jiffies);
-+              queue_delayed_work(system_power_efficient_wq, &par->cursor_work,
-+                                 par->cur_blink_jiffies);
- }
- static void fbcon_del_cursor_work(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      cancel_delayed_work_sync(&ops->cursor_work);
-+      cancel_delayed_work_sync(&par->cursor_work);
- }
- #ifndef MODULE
-@@ -582,7 +582,7 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
-                              int cols, int rows, int new_cols, int new_rows)
- {
-       /* Need to make room for the logo */
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int cnt, erase = vc->vc_video_erase_char, step;
-       unsigned short *save = NULL, *r, *q;
-       int logo_height;
-@@ -598,7 +598,7 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
-        */
-       if (fb_get_color_depth(&info->var, &info->fix) == 1)
-               erase &= ~0x400;
--      logo_height = fb_prepare_logo(info, ops->rotate);
-+      logo_height = fb_prepare_logo(info, par->rotate);
-       logo_lines = DIV_ROUND_UP(logo_height, vc->vc_font.height);
-       q = (unsigned short *) (vc->vc_origin +
-                               vc->vc_size_row * rows);
-@@ -670,15 +670,15 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
- #ifdef CONFIG_FB_TILEBLITTING
- static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      ops->p = &fb_display[vc->vc_num];
-+      par->p = &fb_display[vc->vc_num];
-       if ((info->flags & FBINFO_MISC_TILEBLITTING))
-               fbcon_set_tileops(vc, info);
-       else {
-               fbcon_set_rotation(info);
--              fbcon_set_bitops(ops);
-+              fbcon_set_bitops(par);
-       }
- }
-@@ -695,12 +695,12 @@ static int fbcon_invalid_charcount(struct fb_info *info, unsigned charcount)
- #else
- static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       info->flags &= ~FBINFO_MISC_TILEBLITTING;
--      ops->p = &fb_display[vc->vc_num];
-+      par->p = &fb_display[vc->vc_num];
-       fbcon_set_rotation(info);
--      fbcon_set_bitops(ops);
-+      fbcon_set_bitops(par);
- }
- static int fbcon_invalid_charcount(struct fb_info *info, unsigned charcount)
-@@ -720,13 +720,13 @@ static void fbcon_release(struct fb_info *info)
-       module_put(info->fbops->owner);
-       if (info->fbcon_par) {
--              struct fbcon_ops *ops = info->fbcon_par;
-+              struct fbcon_par *par = info->fbcon_par;
-               fbcon_del_cursor_work(info);
--              kfree(ops->cursor_state.mask);
--              kfree(ops->cursor_data);
--              kfree(ops->cursor_src);
--              kfree(ops->fontbuffer);
-+              kfree(par->cursor_state.mask);
-+              kfree(par->cursor_data);
-+              kfree(par->cursor_src);
-+              kfree(par->fontbuffer);
-               kfree(info->fbcon_par);
-               info->fbcon_par = NULL;
-       }
-@@ -734,7 +734,7 @@ static void fbcon_release(struct fb_info *info)
- static int fbcon_open(struct fb_info *info)
- {
--      struct fbcon_ops *ops;
-+      struct fbcon_par *par;
-       if (!try_module_get(info->fbops->owner))
-               return -ENODEV;
-@@ -748,16 +748,16 @@ static int fbcon_open(struct fb_info *info)
-       }
-       unlock_fb_info(info);
--      ops = kzalloc(sizeof(struct fbcon_ops), GFP_KERNEL);
--      if (!ops) {
-+      par = kzalloc(sizeof(*par), GFP_KERNEL);
-+      if (!par) {
-               fbcon_release(info);
-               return -ENOMEM;
-       }
--      INIT_DELAYED_WORK(&ops->cursor_work, fb_flashcursor);
--      ops->info = info;
--      info->fbcon_par = ops;
--      ops->cur_blink_jiffies = HZ / 5;
-+      INIT_DELAYED_WORK(&par->cursor_work, fb_flashcursor);
-+      par->info = info;
-+      info->fbcon_par = par;
-+      par->cur_blink_jiffies = HZ / 5;
-       return 0;
- }
-@@ -804,12 +804,12 @@ static void con2fb_release_oldinfo(struct vc_data *vc, struct fb_info *oldinfo,
- static void con2fb_init_display(struct vc_data *vc, struct fb_info *info,
-                               int unit, int show_logo)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int ret;
--      ops->currcon = fg_console;
-+      par->currcon = fg_console;
--      if (info->fbops->fb_set_par && !ops->initialized) {
-+      if (info->fbops->fb_set_par && !par->initialized) {
-               ret = info->fbops->fb_set_par(info);
-               if (ret)
-@@ -818,8 +818,8 @@ static void con2fb_init_display(struct vc_data *vc, struct fb_info *info,
-                               "error code %d\n", ret);
-       }
--      ops->initialized = true;
--      ops->graphics = 0;
-+      par->initialized = true;
-+      par->graphics = 0;
-       fbcon_set_disp(info, &info->var, unit);
-       if (show_logo) {
-@@ -956,7 +956,7 @@ static const char *fbcon_startup(void)
-       struct vc_data *vc = vc_cons[fg_console].d;
-       const struct font_desc *font = NULL;
-       struct fb_info *info = NULL;
--      struct fbcon_ops *ops;
-+      struct fbcon_par *par;
-       int rows, cols;
-       /*
-@@ -976,10 +976,10 @@ static const char *fbcon_startup(void)
-       if (fbcon_open(info))
-               return NULL;
--      ops = info->fbcon_par;
--      ops->currcon = -1;
--      ops->graphics = 1;
--      ops->cur_rotate = -1;
-+      par = info->fbcon_par;
-+      par->currcon = -1;
-+      par->graphics = 1;
-+      par->cur_rotate = -1;
-       p->con_rotate = initial_rotation;
-       if (p->con_rotate == -1)
-@@ -1002,8 +1002,8 @@ static const char *fbcon_startup(void)
-               vc->vc_font.charcount = font->charcount;
-       }
--      cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
--      rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
-+      cols = FBCON_SWAP(par->rotate, info->var.xres, info->var.yres);
-+      rows = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-       cols /= vc->vc_font.width;
-       rows /= vc->vc_font.height;
-       vc_resize(vc, cols, rows);
-@@ -1021,7 +1021,7 @@ static const char *fbcon_startup(void)
- static void fbcon_init(struct vc_data *vc, bool init)
- {
-       struct fb_info *info;
--      struct fbcon_ops *ops;
-+      struct fbcon_par *par;
-       struct vc_data **default_mode = vc->vc_display_fg;
-       struct vc_data *svc = *default_mode;
-       struct fbcon_display *t, *p = &fb_display[vc->vc_num];
-@@ -1095,8 +1095,8 @@ static void fbcon_init(struct vc_data *vc, bool init)
-       if (!*vc->uni_pagedict_loc)
-               con_copy_unimap(vc, svc);
--      ops = info->fbcon_par;
--      ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
-+      par = info->fbcon_par;
-+      par->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
-       p->con_rotate = initial_rotation;
-       if (p->con_rotate == -1)
-@@ -1108,8 +1108,8 @@ static void fbcon_init(struct vc_data *vc, bool init)
-       cols = vc->vc_cols;
-       rows = vc->vc_rows;
--      new_cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
--      new_rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
-+      new_cols = FBCON_SWAP(par->rotate, info->var.xres, info->var.yres);
-+      new_rows = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-       new_cols /= vc->vc_font.width;
-       new_rows /= vc->vc_font.height;
-@@ -1121,7 +1121,7 @@ static void fbcon_init(struct vc_data *vc, bool init)
-        * We need to do it in fbcon_init() to prevent screen corruption.
-        */
-       if (con_is_visible(vc) && vc->vc_mode == KD_TEXT) {
--              if (info->fbops->fb_set_par && !ops->initialized) {
-+              if (info->fbops->fb_set_par && !par->initialized) {
-                       ret = info->fbops->fb_set_par(info);
-                       if (ret)
-@@ -1130,10 +1130,10 @@ static void fbcon_init(struct vc_data *vc, bool init)
-                                       "error code %d\n", ret);
-               }
--              ops->initialized = true;
-+              par->initialized = true;
-       }
--      ops->graphics = 0;
-+      par->graphics = 0;
- #ifdef CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION
-       if ((info->flags & FBINFO_HWACCEL_COPYAREA) &&
-@@ -1157,12 +1157,12 @@ static void fbcon_init(struct vc_data *vc, bool init)
-       if (logo)
-               fbcon_prepare_logo(vc, info, cols, rows, new_cols, new_rows);
--      if (ops->rotate_font && ops->rotate_font(info, vc)) {
--              ops->rotate = FB_ROTATE_UR;
-+      if (par->rotate_font && par->rotate_font(info, vc)) {
-+              par->rotate = FB_ROTATE_UR;
-               set_blitting_type(vc, info);
-       }
--      ops->p = &fb_display[fg_console];
-+      par->p = &fb_display[fg_console];
- }
- static void fbcon_free_font(struct fbcon_display *p)
-@@ -1200,7 +1200,7 @@ static void fbcon_deinit(struct vc_data *vc)
- {
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       struct fb_info *info;
--      struct fbcon_ops *ops;
-+      struct fbcon_par *par;
-       int idx;
-       fbcon_free_font(p);
-@@ -1214,15 +1214,15 @@ static void fbcon_deinit(struct vc_data *vc)
-       if (!info)
-               goto finished;
--      ops = info->fbcon_par;
-+      par = info->fbcon_par;
--      if (!ops)
-+      if (!par)
-               goto finished;
-       if (con_is_visible(vc))
-               fbcon_del_cursor_work(info);
--      ops->initialized = false;
-+      par->initialized = false;
- finished:
-       fbcon_free_font(p);
-@@ -1269,7 +1269,7 @@ static void __fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
-                         unsigned int height, unsigned int width)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int fg, bg;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       u_int y_break;
-@@ -1284,7 +1284,7 @@ static void __fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
-               vc->vc_top = 0;
-               /*
-                * If the font dimensions are not an integral of the display
--               * dimensions then the ops->clear below won't end up clearing
-+               * dimensions then the par->clear below won't end up clearing
-                * the margins.  Call clear_margins here in case the logo
-                * bitmap stretched into the margin area.
-                */
-@@ -1298,11 +1298,10 @@ static void __fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
-       y_break = p->vrows - p->yscroll;
-       if (sy < y_break && sy + height - 1 >= y_break) {
-               u_int b = y_break - sy;
--              ops->clear(vc, info, real_y(p, sy), sx, b, width, fg, bg);
--              ops->clear(vc, info, real_y(p, sy + b), sx, height - b,
--                               width, fg, bg);
-+              par->clear(vc, info, real_y(p, sy), sx, b, width, fg, bg);
-+              par->clear(vc, info, real_y(p, sy + b), sx, height - b, width, fg, bg);
-       } else
--              ops->clear(vc, info, real_y(p, sy), sx, height, width, fg, bg);
-+              par->clear(vc, info, real_y(p, sy), sx, height, width, fg, bg);
- }
- static void fbcon_clear(struct vc_data *vc, unsigned int sy, unsigned int sx,
-@@ -1316,10 +1315,10 @@ static void fbcon_putcs(struct vc_data *vc, const u16 *s, unsigned int count,
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
-       struct fbcon_display *p = &fb_display[vc->vc_num];
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       if (fbcon_is_active(vc, info))
--              ops->putcs(vc, info, s, count, real_y(p, ypos), xpos,
-+              par->putcs(vc, info, s, count, real_y(p, ypos), xpos,
-                          get_fg_color(vc, info, scr_readw(s)),
-                          get_bg_color(vc, info, scr_readw(s)));
- }
-@@ -1327,19 +1326,19 @@ static void fbcon_putcs(struct vc_data *vc, const u16 *s, unsigned int count,
- static void fbcon_clear_margins(struct vc_data *vc, int bottom_only)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       if (fbcon_is_active(vc, info))
--              ops->clear_margins(vc, info, margin_color, bottom_only);
-+              par->clear_margins(vc, info, margin_color, bottom_only);
- }
- static void fbcon_cursor(struct vc_data *vc, bool enable)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int c = scr_readw((u16 *) vc->vc_pos);
--      ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
-+      par->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms);
-       if (!fbcon_is_active(vc, info) || vc->vc_deccm != 1)
-               return;
-@@ -1349,12 +1348,12 @@ static void fbcon_cursor(struct vc_data *vc, bool enable)
-       else
-               fbcon_add_cursor_work(info);
--      ops->cursor_flash = enable;
-+      par->cursor_flash = enable;
--      if (!ops->cursor)
-+      if (!par->cursor)
-               return;
--      ops->cursor(vc, info, enable,
-+      par->cursor(vc, info, enable,
-                   get_fg_color(vc, info, c),
-                   get_bg_color(vc, info, c));
- }
-@@ -1369,7 +1368,7 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
-       struct fbcon_display *p, *t;
-       struct vc_data **default_mode, *vc;
-       struct vc_data *svc;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int rows, cols;
-       unsigned long ret = 0;
-@@ -1402,7 +1401,7 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
-       var->yoffset = info->var.yoffset;
-       var->xoffset = info->var.xoffset;
-       fb_set_var(info, var);
--      ops->var = info->var;
-+      par->var = info->var;
-       vc->vc_can_do_color = (fb_get_color_depth(&info->var, &info->fix)!=1);
-       vc->vc_complement_mask = vc->vc_can_do_color ? 0x7700 : 0x0800;
-       if (vc->vc_font.charcount == 256) {
-@@ -1418,8 +1417,8 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
-       if (!*vc->uni_pagedict_loc)
-               con_copy_unimap(vc, svc);
--      cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
--      rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
-+      cols = FBCON_SWAP(par->rotate, info->var.xres, info->var.yres);
-+      rows = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-       cols /= vc->vc_font.width;
-       rows /= vc->vc_font.height;
-       ret = vc_resize(vc, cols, rows);
-@@ -1431,16 +1430,16 @@ static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
- static __inline__ void ywrap_up(struct vc_data *vc, int count)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       p->yscroll += count;
-       if (p->yscroll >= p->vrows)     /* Deal with wrap */
-               p->yscroll -= p->vrows;
--      ops->var.xoffset = 0;
--      ops->var.yoffset = p->yscroll * vc->vc_font.height;
--      ops->var.vmode |= FB_VMODE_YWRAP;
--      ops->update_start(info);
-+      par->var.xoffset = 0;
-+      par->var.yoffset = p->yscroll * vc->vc_font.height;
-+      par->var.vmode |= FB_VMODE_YWRAP;
-+      par->update_start(info);
-       scrollback_max += count;
-       if (scrollback_max > scrollback_phys_max)
-               scrollback_max = scrollback_phys_max;
-@@ -1450,16 +1449,16 @@ static __inline__ void ywrap_up(struct vc_data *vc, int count)
- static __inline__ void ywrap_down(struct vc_data *vc, int count)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       p->yscroll -= count;
-       if (p->yscroll < 0)     /* Deal with wrap */
-               p->yscroll += p->vrows;
--      ops->var.xoffset = 0;
--      ops->var.yoffset = p->yscroll * vc->vc_font.height;
--      ops->var.vmode |= FB_VMODE_YWRAP;
--      ops->update_start(info);
-+      par->var.xoffset = 0;
-+      par->var.yoffset = p->yscroll * vc->vc_font.height;
-+      par->var.vmode |= FB_VMODE_YWRAP;
-+      par->update_start(info);
-       scrollback_max -= count;
-       if (scrollback_max < 0)
-               scrollback_max = 0;
-@@ -1470,19 +1469,19 @@ static __inline__ void ypan_up(struct vc_data *vc, int count)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
-       struct fbcon_display *p = &fb_display[vc->vc_num];
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       p->yscroll += count;
-       if (p->yscroll > p->vrows - vc->vc_rows) {
--              ops->bmove(vc, info, p->vrows - vc->vc_rows,
-+              par->bmove(vc, info, p->vrows - vc->vc_rows,
-                           0, 0, 0, vc->vc_rows, vc->vc_cols);
-               p->yscroll -= p->vrows - vc->vc_rows;
-       }
--      ops->var.xoffset = 0;
--      ops->var.yoffset = p->yscroll * vc->vc_font.height;
--      ops->var.vmode &= ~FB_VMODE_YWRAP;
--      ops->update_start(info);
-+      par->var.xoffset = 0;
-+      par->var.yoffset = p->yscroll * vc->vc_font.height;
-+      par->var.vmode &= ~FB_VMODE_YWRAP;
-+      par->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max += count;
-       if (scrollback_max > scrollback_phys_max)
-@@ -1493,7 +1492,7 @@ static __inline__ void ypan_up(struct vc_data *vc, int count)
- static __inline__ void ypan_up_redraw(struct vc_data *vc, int t, int count)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       p->yscroll += count;
-@@ -1503,10 +1502,10 @@ static __inline__ void ypan_up_redraw(struct vc_data *vc, int t, int count)
-               fbcon_redraw_move(vc, p, t + count, vc->vc_rows - count, t);
-       }
--      ops->var.xoffset = 0;
--      ops->var.yoffset = p->yscroll * vc->vc_font.height;
--      ops->var.vmode &= ~FB_VMODE_YWRAP;
--      ops->update_start(info);
-+      par->var.xoffset = 0;
-+      par->var.yoffset = p->yscroll * vc->vc_font.height;
-+      par->var.vmode &= ~FB_VMODE_YWRAP;
-+      par->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max += count;
-       if (scrollback_max > scrollback_phys_max)
-@@ -1518,19 +1517,19 @@ static __inline__ void ypan_down(struct vc_data *vc, int count)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
-       struct fbcon_display *p = &fb_display[vc->vc_num];
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       p->yscroll -= count;
-       if (p->yscroll < 0) {
--              ops->bmove(vc, info, 0, 0, p->vrows - vc->vc_rows,
-+              par->bmove(vc, info, 0, 0, p->vrows - vc->vc_rows,
-                           0, vc->vc_rows, vc->vc_cols);
-               p->yscroll += p->vrows - vc->vc_rows;
-       }
--      ops->var.xoffset = 0;
--      ops->var.yoffset = p->yscroll * vc->vc_font.height;
--      ops->var.vmode &= ~FB_VMODE_YWRAP;
--      ops->update_start(info);
-+      par->var.xoffset = 0;
-+      par->var.yoffset = p->yscroll * vc->vc_font.height;
-+      par->var.vmode &= ~FB_VMODE_YWRAP;
-+      par->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max -= count;
-       if (scrollback_max < 0)
-@@ -1541,7 +1540,7 @@ static __inline__ void ypan_down(struct vc_data *vc, int count)
- static __inline__ void ypan_down_redraw(struct vc_data *vc, int t, int count)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       p->yscroll -= count;
-@@ -1551,10 +1550,10 @@ static __inline__ void ypan_down_redraw(struct vc_data *vc, int t, int count)
-               fbcon_redraw_move(vc, p, t, vc->vc_rows - count, t + count);
-       }
--      ops->var.xoffset = 0;
--      ops->var.yoffset = p->yscroll * vc->vc_font.height;
--      ops->var.vmode &= ~FB_VMODE_YWRAP;
--      ops->update_start(info);
-+      par->var.xoffset = 0;
-+      par->var.yoffset = p->yscroll * vc->vc_font.height;
-+      par->var.vmode &= ~FB_VMODE_YWRAP;
-+      par->update_start(info);
-       fbcon_clear_margins(vc, 1);
-       scrollback_max -= count;
-       if (scrollback_max < 0)
-@@ -1603,7 +1602,7 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
-       unsigned short *d = (unsigned short *)
-           (vc->vc_origin + vc->vc_size_row * line);
-       unsigned short *s = d + offset;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       while (count--) {
-               unsigned short *start = s;
-@@ -1616,8 +1615,8 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
-                       if (c == scr_readw(d)) {
-                               if (s > start) {
--                                      ops->bmove(vc, info, line + ycount, x,
--                                                 line, x, 1, s-start);
-+                                      par->bmove(vc, info, line + ycount, x,
-+                                                 line, x, 1, s - start);
-                                       x += s - start + 1;
-                                       start = s + 1;
-                               } else {
-@@ -1632,8 +1631,7 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
-                       d++;
-               } while (s < le);
-               if (s > start)
--                      ops->bmove(vc, info, line + ycount, x, line, x, 1,
--                                 s-start);
-+                      par->bmove(vc, info, line + ycount, x, line, x, 1, s - start);
-               console_conditional_schedule();
-               if (ycount > 0)
-                       line++;
-@@ -1704,7 +1702,7 @@ static void fbcon_bmove_rec(struct vc_data *vc, struct fbcon_display *p, int sy,
-                           int dy, int dx, int height, int width, u_int y_break)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u_int b;
-       if (sy < y_break && sy + height > y_break) {
-@@ -1738,8 +1736,7 @@ static void fbcon_bmove_rec(struct vc_data *vc, struct fbcon_display *p, int sy,
-               }
-               return;
-       }
--      ops->bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx,
--                 height, width);
-+      par->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,
-@@ -1966,15 +1963,13 @@ static void updatescrollmode_accel(struct fbcon_display *p,
-                                       struct vc_data *vc)
- {
- #ifdef CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int cap = info->flags;
-       u16 t = 0;
--      int ypan = FBCON_SWAP(ops->rotate, info->fix.ypanstep,
--                                info->fix.xpanstep);
--      int ywrap = FBCON_SWAP(ops->rotate, info->fix.ywrapstep, t);
--      int yres = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
--      int vyres = FBCON_SWAP(ops->rotate, info->var.yres_virtual,
--                                 info->var.xres_virtual);
-+      int ypan = FBCON_SWAP(par->rotate, info->fix.ypanstep, info->fix.xpanstep);
-+      int ywrap = FBCON_SWAP(par->rotate, info->fix.ywrapstep, t);
-+      int yres = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-+      int vyres = FBCON_SWAP(par->rotate, info->var.yres_virtual, info->var.xres_virtual);
-       int good_pan = (cap & FBINFO_HWACCEL_YPAN) &&
-               divides(ypan, vc->vc_font.height) && vyres > yres;
-       int good_wrap = (cap & FBINFO_HWACCEL_YWRAP) &&
-@@ -2007,11 +2002,10 @@ static void updatescrollmode(struct fbcon_display *p,
-                                       struct fb_info *info,
-                                       struct vc_data *vc)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int fh = vc->vc_font.height;
--      int yres = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
--      int vyres = FBCON_SWAP(ops->rotate, info->var.yres_virtual,
--                                 info->var.xres_virtual);
-+      int yres = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-+      int vyres = FBCON_SWAP(par->rotate, info->var.yres_virtual, info->var.xres_virtual);
-       p->vrows = vyres/fh;
-       if (yres > (fh * (vc->vc_rows + 1)))
-@@ -2030,7 +2024,7 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width,
-                       unsigned int height, bool from_user)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       struct fb_var_screeninfo var = info->var;
-       int x_diff, y_diff, virt_w, virt_h, virt_fw, virt_fh;
-@@ -2053,12 +2047,10 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width,
-                       return -EINVAL;
-       }
--      virt_w = FBCON_SWAP(ops->rotate, width, height);
--      virt_h = FBCON_SWAP(ops->rotate, height, width);
--      virt_fw = FBCON_SWAP(ops->rotate, vc->vc_font.width,
--                               vc->vc_font.height);
--      virt_fh = FBCON_SWAP(ops->rotate, vc->vc_font.height,
--                               vc->vc_font.width);
-+      virt_w = FBCON_SWAP(par->rotate, width, height);
-+      virt_h = FBCON_SWAP(par->rotate, height, width);
-+      virt_fw = FBCON_SWAP(par->rotate, vc->vc_font.width, vc->vc_font.height);
-+      virt_fh = FBCON_SWAP(par->rotate, vc->vc_font.height, vc->vc_font.width);
-       var.xres = virt_w * virt_fw;
-       var.yres = virt_h * virt_fh;
-       x_diff = info->var.xres - var.xres;
-@@ -2084,7 +2076,7 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width,
-                       fb_set_var(info, &var);
-               }
-               var_to_display(p, &info->var, info);
--              ops->var = info->var;
-+              par->var = info->var;
-       }
-       updatescrollmode(p, info, vc);
-       return 0;
-@@ -2093,13 +2085,13 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width,
- static bool fbcon_switch(struct vc_data *vc)
- {
-       struct fb_info *info, *old_info = NULL;
--      struct fbcon_ops *ops;
-+      struct fbcon_par *par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       struct fb_var_screeninfo var;
-       int i, ret, prev_console;
-       info = fbcon_info_from_console(vc->vc_num);
--      ops = info->fbcon_par;
-+      par = info->fbcon_par;
-       if (logo_shown >= 0) {
-               struct vc_data *conp2 = vc_cons[logo_shown].d;
-@@ -2110,7 +2102,7 @@ static bool fbcon_switch(struct vc_data *vc)
-               logo_shown = FBCON_LOGO_CANSHOW;
-       }
--      prev_console = ops->currcon;
-+      prev_console = par->currcon;
-       if (prev_console != -1)
-               old_info = fbcon_info_from_console(prev_console);
-       /*
-@@ -2123,9 +2115,9 @@ static bool fbcon_switch(struct vc_data *vc)
-        */
-       fbcon_for_each_registered_fb(i) {
-               if (fbcon_registered_fb[i]->fbcon_par) {
--                      struct fbcon_ops *o = fbcon_registered_fb[i]->fbcon_par;
-+                      struct fbcon_par *par = fbcon_registered_fb[i]->fbcon_par;
--                      o->currcon = vc->vc_num;
-+                      par->currcon = vc->vc_num;
-               }
-       }
-       memset(&var, 0, sizeof(struct fb_var_screeninfo));
-@@ -2139,7 +2131,7 @@ static bool fbcon_switch(struct vc_data *vc)
-       info->var.activate = var.activate;
-       var.vmode |= info->var.vmode & ~FB_VMODE_MASK;
-       fb_set_var(info, &var);
--      ops->var = info->var;
-+      par->var = info->var;
-       if (old_info != NULL && (old_info != info ||
-                                info->flags & FBINFO_MISC_ALWAYS_SETPAR)) {
-@@ -2156,17 +2148,16 @@ static bool fbcon_switch(struct vc_data *vc)
-                       fbcon_del_cursor_work(old_info);
-       }
--      if (!fbcon_is_active(vc, info) ||
--          ops->blank_state != FB_BLANK_UNBLANK)
-+      if (!fbcon_is_active(vc, info) || par->blank_state != FB_BLANK_UNBLANK)
-               fbcon_del_cursor_work(info);
-       else
-               fbcon_add_cursor_work(info);
-       set_blitting_type(vc, info);
--      ops->cursor_reset = 1;
-+      par->cursor_reset = 1;
--      if (ops->rotate_font && ops->rotate_font(info, vc)) {
--              ops->rotate = FB_ROTATE_UR;
-+      if (par->rotate_font && par->rotate_font(info, vc)) {
-+              par->rotate = FB_ROTATE_UR;
-               set_blitting_type(vc, info);
-       }
-@@ -2197,8 +2188,8 @@ static bool fbcon_switch(struct vc_data *vc)
-       scrollback_current = 0;
-       if (fbcon_is_active(vc, info)) {
--          ops->var.xoffset = ops->var.yoffset = p->yscroll = 0;
--          ops->update_start(info);
-+              par->var.xoffset = par->var.yoffset = p->yscroll = 0;
-+              par->update_start(info);
-       }
-       fbcon_set_palette(vc, color_table);
-@@ -2207,7 +2198,7 @@ static bool fbcon_switch(struct vc_data *vc)
-       if (logo_shown == FBCON_LOGO_DRAW) {
-               logo_shown = fg_console;
--              fb_show_logo(info, ops->rotate);
-+              fb_show_logo(info, par->rotate);
-               update_region(vc,
-                             vc->vc_origin + vc->vc_size_row * vc->vc_top,
-                             vc->vc_size_row * (vc->vc_bottom -
-@@ -2236,27 +2227,27 @@ static bool fbcon_blank(struct vc_data *vc, enum vesa_blank_mode blank,
-                       bool mode_switch)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       if (mode_switch) {
-               struct fb_var_screeninfo var = info->var;
--              ops->graphics = 1;
-+              par->graphics = 1;
-               if (!blank) {
-                       var.activate = FB_ACTIVATE_NOW | FB_ACTIVATE_FORCE |
-                               FB_ACTIVATE_KD_TEXT;
-                       fb_set_var(info, &var);
--                      ops->graphics = 0;
--                      ops->var = info->var;
-+                      par->graphics = 0;
-+                      par->var = info->var;
-               }
-       }
-       if (fbcon_is_active(vc, info)) {
--              if (ops->blank_state != blank) {
--                      ops->blank_state = blank;
-+              if (par->blank_state != blank) {
-+                      par->blank_state = blank;
-                       fbcon_cursor(vc, !blank);
--                      ops->cursor_flash = (!blank);
-+                      par->cursor_flash = (!blank);
-                       if (fb_blank(info, blank))
-                               fbcon_generic_blank(vc, info, blank);
-@@ -2266,8 +2257,7 @@ static bool fbcon_blank(struct vc_data *vc, enum vesa_blank_mode blank,
-                       update_screen(vc);
-       }
--      if (mode_switch || !fbcon_is_active(vc, info) ||
--          ops->blank_state != FB_BLANK_UNBLANK)
-+      if (mode_switch || !fbcon_is_active(vc, info) || par->blank_state != FB_BLANK_UNBLANK)
-               fbcon_del_cursor_work(info);
-       else
-               fbcon_add_cursor_work(info);
-@@ -2278,10 +2268,10 @@ static bool fbcon_blank(struct vc_data *vc, enum vesa_blank_mode blank,
- static void fbcon_debug_enter(struct vc_data *vc)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      ops->save_graphics = ops->graphics;
--      ops->graphics = 0;
-+      par->save_graphics = par->graphics;
-+      par->graphics = 0;
-       if (info->fbops->fb_debug_enter)
-               info->fbops->fb_debug_enter(info);
-       fbcon_set_palette(vc, color_table);
-@@ -2290,9 +2280,9 @@ static void fbcon_debug_enter(struct vc_data *vc)
- static void fbcon_debug_leave(struct vc_data *vc)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      ops->graphics = ops->save_graphics;
-+      par->graphics = par->save_graphics;
-       if (info->fbops->fb_debug_leave)
-               info->fbops->fb_debug_leave(info);
- }
-@@ -2427,7 +2417,7 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h, int charcount,
-                            const u8 * data, int userfont)
- {
-       struct fb_info *info = fbcon_info_from_console(vc->vc_num);
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fbcon_display *p = &fb_display[vc->vc_num];
-       int resize, ret, old_userfont, old_width, old_height, old_charcount;
-       u8 *old_data = vc->vc_font.data;
-@@ -2453,8 +2443,8 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h, int charcount,
-       if (resize) {
-               int cols, rows;
--              cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
--              rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
-+              cols = FBCON_SWAP(par->rotate, info->var.xres, info->var.yres);
-+              rows = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-               cols /= w;
-               rows /= h;
-               ret = vc_resize(vc, cols, rows);
-@@ -2653,11 +2643,11 @@ static void fbcon_invert_region(struct vc_data *vc, u16 * p, int cnt)
- void fbcon_suspended(struct fb_info *info)
- {
-       struct vc_data *vc = NULL;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      if (!ops || ops->currcon < 0)
-+      if (!par || par->currcon < 0)
-               return;
--      vc = vc_cons[ops->currcon].d;
-+      vc = vc_cons[par->currcon].d;
-       /* Clear cursor, restore saved data */
-       fbcon_cursor(vc, false);
-@@ -2666,27 +2656,27 @@ void fbcon_suspended(struct fb_info *info)
- void fbcon_resumed(struct fb_info *info)
- {
-       struct vc_data *vc;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      if (!ops || ops->currcon < 0)
-+      if (!par || par->currcon < 0)
-               return;
--      vc = vc_cons[ops->currcon].d;
-+      vc = vc_cons[par->currcon].d;
-       update_screen(vc);
- }
- static void fbcon_modechanged(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct vc_data *vc;
-       struct fbcon_display *p;
-       int rows, cols;
--      if (!ops || ops->currcon < 0)
-+      if (!par || par->currcon < 0)
-               return;
--      vc = vc_cons[ops->currcon].d;
-+      vc = vc_cons[par->currcon].d;
-       if (vc->vc_mode != KD_TEXT ||
--          fbcon_info_from_console(ops->currcon) != info)
-+          fbcon_info_from_console(par->currcon) != info)
-               return;
-       p = &fb_display[vc->vc_num];
-@@ -2694,8 +2684,8 @@ static void fbcon_modechanged(struct fb_info *info)
-       if (con_is_visible(vc)) {
-               var_to_display(p, &info->var, info);
--              cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
--              rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
-+              cols = FBCON_SWAP(par->rotate, info->var.xres, info->var.yres);
-+              rows = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-               cols /= vc->vc_font.width;
-               rows /= vc->vc_font.height;
-               vc_resize(vc, cols, rows);
-@@ -2704,8 +2694,8 @@ static void fbcon_modechanged(struct fb_info *info)
-               scrollback_current = 0;
-               if (fbcon_is_active(vc, info)) {
--                  ops->var.xoffset = ops->var.yoffset = p->yscroll = 0;
--                  ops->update_start(info);
-+                      par->var.xoffset = par->var.yoffset = p->yscroll = 0;
-+                      par->update_start(info);
-               }
-               fbcon_set_palette(vc, color_table);
-@@ -2715,12 +2705,12 @@ static void fbcon_modechanged(struct fb_info *info)
- static void fbcon_set_all_vcs(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct vc_data *vc;
-       struct fbcon_display *p;
-       int i, rows, cols, fg = -1;
--      if (!ops || ops->currcon < 0)
-+      if (!par || par->currcon < 0)
-               return;
-       for (i = first_fb_vc; i <= last_fb_vc; i++) {
-@@ -2737,8 +2727,8 @@ static void fbcon_set_all_vcs(struct fb_info *info)
-               p = &fb_display[vc->vc_num];
-               set_blitting_type(vc, info);
-               var_to_display(p, &info->var, info);
--              cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
--              rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
-+              cols = FBCON_SWAP(par->rotate, info->var.xres, info->var.yres);
-+              rows = FBCON_SWAP(par->rotate, info->var.yres, info->var.xres);
-               cols /= vc->vc_font.width;
-               rows /= vc->vc_font.height;
-               vc_resize(vc, cols, rows);
-@@ -2761,13 +2751,13 @@ EXPORT_SYMBOL(fbcon_update_vcs);
- /* let fbcon check if it supports a new screen resolution */
- int fbcon_modechange_possible(struct fb_info *info, struct fb_var_screeninfo *var)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct vc_data *vc;
-       unsigned int i;
-       WARN_CONSOLE_UNLOCKED();
--      if (!ops)
-+      if (!par)
-               return 0;
-       /* prevent setting a screen size which is smaller than font size */
-@@ -3065,15 +3055,14 @@ int fbcon_fb_registered(struct fb_info *info)
- void fbcon_fb_blanked(struct fb_info *info, int blank)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct vc_data *vc;
--      if (!ops || ops->currcon < 0)
-+      if (!par || par->currcon < 0)
-               return;
--      vc = vc_cons[ops->currcon].d;
--      if (vc->vc_mode != KD_TEXT ||
--                      fbcon_info_from_console(ops->currcon) != info)
-+      vc = vc_cons[par->currcon].d;
-+      if (vc->vc_mode != KD_TEXT || fbcon_info_from_console(par->currcon) != info)
-               return;
-       if (con_is_visible(vc)) {
-@@ -3082,7 +3071,7 @@ void fbcon_fb_blanked(struct fb_info *info, int blank)
-               else
-                       do_unblank_screen(0);
-       }
--      ops->blank_state = blank;
-+      par->blank_state = blank;
- }
- void fbcon_new_modelist(struct fb_info *info)
-@@ -3272,7 +3261,7 @@ static ssize_t cursor_blink_show(struct device *device,
-                                struct device_attribute *attr, char *buf)
- {
-       struct fb_info *info;
--      struct fbcon_ops *ops;
-+      struct fbcon_par *par;
-       int idx, blink = -1;
-       console_lock();
-@@ -3282,12 +3271,12 @@ static ssize_t cursor_blink_show(struct device *device,
-               goto err;
-       info = fbcon_registered_fb[idx];
--      ops = info->fbcon_par;
-+      par = info->fbcon_par;
--      if (!ops)
-+      if (!par)
-               goto err;
--      blink = delayed_work_pending(&ops->cursor_work);
-+      blink = delayed_work_pending(&par->cursor_work);
- err:
-       console_unlock();
-       return sysfs_emit(buf, "%d\n", blink);
-diff --git a/drivers/video/fbdev/core/fbcon.h b/drivers/video/fbdev/core/fbcon.h
-index 4d97e6d8a16a2..31ee2d5912219 100644
---- a/drivers/video/fbdev/core/fbcon.h
-+++ b/drivers/video/fbdev/core/fbcon.h
-@@ -51,7 +51,7 @@ struct fbcon_display {
-     const struct fb_videomode *mode;
- };
--struct fbcon_ops {
-+struct fbcon_par {
-       void (*bmove)(struct vc_data *vc, struct fb_info *info, int sy,
-                     int sx, int dy, int dx, int height, int width);
-       void (*clear)(struct vc_data *vc, struct fb_info *info, int sy,
-@@ -186,7 +186,7 @@ static inline u_short fb_scrollmode(struct fbcon_display *fb)
- #ifdef CONFIG_FB_TILEBLITTING
- extern void fbcon_set_tileops(struct vc_data *vc, struct fb_info *info);
- #endif
--extern void fbcon_set_bitops(struct fbcon_ops *ops);
-+extern void fbcon_set_bitops(struct fbcon_par *par);
- extern int  soft_cursor(struct fb_info *info, struct fb_cursor *cursor);
- #define FBCON_ATTRIBUTE_UNDERLINE 1
-@@ -225,7 +225,7 @@ static inline int get_attribute(struct fb_info *info, u16 c)
-         (i == FB_ROTATE_UR || i == FB_ROTATE_UD) ? _r : _v; })
- #ifdef CONFIG_FRAMEBUFFER_CONSOLE_ROTATION
--extern void fbcon_set_rotate(struct fbcon_ops *ops);
-+extern void fbcon_set_rotate(struct fbcon_par *par);
- #else
- #define fbcon_set_rotate(x) do {} while(0)
- #endif /* CONFIG_FRAMEBUFFER_CONSOLE_ROTATION */
-diff --git a/drivers/video/fbdev/core/fbcon_ccw.c b/drivers/video/fbdev/core/fbcon_ccw.c
-index 89ef4ba7e8672..2ba8ec4c3e2bc 100644
---- a/drivers/video/fbdev/core/fbcon_ccw.c
-+++ b/drivers/video/fbdev/core/fbcon_ccw.c
-@@ -63,9 +63,9 @@ static void ccw_update_attr(u8 *dst, u8 *src, int attribute,
- static void ccw_bmove(struct vc_data *vc, struct fb_info *info, int sy,
-                    int sx, int dy, int dx, int height, int width)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_copyarea area;
--      u32 vyres = GETVYRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-       area.sx = sy * vc->vc_font.height;
-       area.sy = vyres - ((sx + width) * vc->vc_font.width);
-@@ -80,9 +80,9 @@ static void ccw_bmove(struct vc_data *vc, struct fb_info *info, int sy,
- static void ccw_clear(struct vc_data *vc, struct fb_info *info, int sy,
-                    int sx, int height, int width, int fg, int bg)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_fillrect region;
--      u32 vyres = GETVYRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-       region.color = bg;
-       region.dx = sy * vc->vc_font.height;
-@@ -99,13 +99,13 @@ static inline void ccw_putcs_aligned(struct vc_data *vc, struct fb_info *info,
-                                   u32 d_pitch, u32 s_pitch, u32 cellsize,
-                                   struct fb_image *image, u8 *buf, u8 *dst)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u16 charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       u32 idx = (vc->vc_font.height + 7) >> 3;
-       u8 *src;
-       while (cnt--) {
--              src = ops->fontbuffer + (scr_readw(s--) & charmask)*cellsize;
-+              src = par->fontbuffer + (scr_readw(s--) & charmask) * cellsize;
-               if (attr) {
-                       ccw_update_attr(buf, src, attr, vc);
-@@ -130,7 +130,7 @@ static void ccw_putcs(struct vc_data *vc, struct fb_info *info,
-                     int fg, int bg)
- {
-       struct fb_image image;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u32 width = (vc->vc_font.height + 7)/8;
-       u32 cellsize = width * vc->vc_font.width;
-       u32 maxcnt = info->pixmap.size/cellsize;
-@@ -139,9 +139,9 @@ static void ccw_putcs(struct vc_data *vc, struct fb_info *info,
-       u32 cnt, pitch, size;
-       u32 attribute = get_attribute(info, scr_readw(s));
-       u8 *dst, *buf = NULL;
--      u32 vyres = GETVYRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
--      if (!ops->fontbuffer)
-+      if (!par->fontbuffer)
-               return;
-       image.fg_color = fg;
-@@ -221,28 +221,28 @@ static void ccw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                      int fg, int bg)
- {
-       struct fb_cursor cursor;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       int w = (vc->vc_font.height + 7) >> 3, c;
--      int y = real_y(ops->p, vc->state.y);
-+      int y = real_y(par->p, vc->state.y);
-       int attribute, use_sw = vc->vc_cursor_type & CUR_SW;
-       int err = 1, dx, dy;
-       char *src;
--      u32 vyres = GETVYRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
--      if (!ops->fontbuffer)
-+      if (!par->fontbuffer)
-               return;
-       cursor.set = 0;
-       c = scr_readw((u16 *) vc->vc_pos);
-       attribute = get_attribute(info, c);
--      src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
-+      src = par->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
--      if (ops->cursor_state.image.data != src ||
--          ops->cursor_reset) {
--          ops->cursor_state.image.data = src;
--          cursor.set |= FB_CUR_SETIMAGE;
-+      if (par->cursor_state.image.data != src ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.data = src;
-+              cursor.set |= FB_CUR_SETIMAGE;
-       }
-       if (attribute) {
-@@ -251,49 +251,49 @@ static void ccw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               dst = kmalloc_array(w, vc->vc_font.width, GFP_ATOMIC);
-               if (!dst)
-                       return;
--              kfree(ops->cursor_data);
--              ops->cursor_data = dst;
-+              kfree(par->cursor_data);
-+              par->cursor_data = dst;
-               ccw_update_attr(dst, src, attribute, vc);
-               src = dst;
-       }
--      if (ops->cursor_state.image.fg_color != fg ||
--          ops->cursor_state.image.bg_color != bg ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.fg_color = fg;
--              ops->cursor_state.image.bg_color = bg;
-+      if (par->cursor_state.image.fg_color != fg ||
-+          par->cursor_state.image.bg_color != bg ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.fg_color = fg;
-+              par->cursor_state.image.bg_color = bg;
-               cursor.set |= FB_CUR_SETCMAP;
-       }
--      if (ops->cursor_state.image.height != vc->vc_font.width ||
--          ops->cursor_state.image.width != vc->vc_font.height ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.height = vc->vc_font.width;
--              ops->cursor_state.image.width = vc->vc_font.height;
-+      if (par->cursor_state.image.height != vc->vc_font.width ||
-+          par->cursor_state.image.width != vc->vc_font.height ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.height = vc->vc_font.width;
-+              par->cursor_state.image.width = vc->vc_font.height;
-               cursor.set |= FB_CUR_SETSIZE;
-       }
-       dx = y * vc->vc_font.height;
-       dy = vyres - ((vc->state.x + 1) * vc->vc_font.width);
--      if (ops->cursor_state.image.dx != dx ||
--          ops->cursor_state.image.dy != dy ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.dx = dx;
--              ops->cursor_state.image.dy = dy;
-+      if (par->cursor_state.image.dx != dx ||
-+          par->cursor_state.image.dy != dy ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.dx = dx;
-+              par->cursor_state.image.dy = dy;
-               cursor.set |= FB_CUR_SETPOS;
-       }
--      if (ops->cursor_state.hot.x || ops->cursor_state.hot.y ||
--          ops->cursor_reset) {
--              ops->cursor_state.hot.x = cursor.hot.y = 0;
-+      if (par->cursor_state.hot.x || par->cursor_state.hot.y ||
-+          par->cursor_reset) {
-+              par->cursor_state.hot.x = cursor.hot.y = 0;
-               cursor.set |= FB_CUR_SETHOT;
-       }
-       if (cursor.set & FB_CUR_SETSIZE ||
--          vc->vc_cursor_type != ops->p->cursor_shape ||
--          ops->cursor_state.mask == NULL ||
--          ops->cursor_reset) {
-+          vc->vc_cursor_type != par->p->cursor_shape ||
-+          par->cursor_state.mask == NULL ||
-+          par->cursor_reset) {
-               char *tmp, *mask = kmalloc_array(w, vc->vc_font.width,
-                                                GFP_ATOMIC);
-               int cur_height, size, i = 0;
-@@ -309,13 +309,13 @@ static void ccw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                       return;
-               }
--              kfree(ops->cursor_state.mask);
--              ops->cursor_state.mask = mask;
-+              kfree(par->cursor_state.mask);
-+              par->cursor_state.mask = mask;
--              ops->p->cursor_shape = vc->vc_cursor_type;
-+              par->p->cursor_shape = vc->vc_cursor_type;
-               cursor.set |= FB_CUR_SETSHAPE;
--              switch (CUR_SIZE(ops->p->cursor_shape)) {
-+              switch (CUR_SIZE(par->p->cursor_shape)) {
-               case CUR_NONE:
-                       cur_height = 0;
-                       break;
-@@ -348,19 +348,19 @@ static void ccw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               kfree(tmp);
-       }
--      ops->cursor_state.enable = enable && !use_sw;
-+      par->cursor_state.enable = enable && !use_sw;
-       cursor.image.data = src;
--      cursor.image.fg_color = ops->cursor_state.image.fg_color;
--      cursor.image.bg_color = ops->cursor_state.image.bg_color;
--      cursor.image.dx = ops->cursor_state.image.dx;
--      cursor.image.dy = ops->cursor_state.image.dy;
--      cursor.image.height = ops->cursor_state.image.height;
--      cursor.image.width = ops->cursor_state.image.width;
--      cursor.hot.x = ops->cursor_state.hot.x;
--      cursor.hot.y = ops->cursor_state.hot.y;
--      cursor.mask = ops->cursor_state.mask;
--      cursor.enable = ops->cursor_state.enable;
-+      cursor.image.fg_color = par->cursor_state.image.fg_color;
-+      cursor.image.bg_color = par->cursor_state.image.bg_color;
-+      cursor.image.dx = par->cursor_state.image.dx;
-+      cursor.image.dy = par->cursor_state.image.dy;
-+      cursor.image.height = par->cursor_state.image.height;
-+      cursor.image.width = par->cursor_state.image.width;
-+      cursor.hot.x = par->cursor_state.hot.x;
-+      cursor.hot.y = par->cursor_state.hot.y;
-+      cursor.mask = par->cursor_state.mask;
-+      cursor.enable = par->cursor_state.enable;
-       cursor.image.depth = 1;
-       cursor.rop = ROP_XOR;
-@@ -370,32 +370,32 @@ static void ccw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-       if (err)
-               soft_cursor(info, &cursor);
--      ops->cursor_reset = 0;
-+      par->cursor_reset = 0;
- }
- static int ccw_update_start(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u32 yoffset;
--      u32 vyres = GETVYRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-       int err;
--      yoffset = (vyres - info->var.yres) - ops->var.xoffset;
--      ops->var.xoffset = ops->var.yoffset;
--      ops->var.yoffset = yoffset;
--      err = fb_pan_display(info, &ops->var);
--      ops->var.xoffset = info->var.xoffset;
--      ops->var.yoffset = info->var.yoffset;
--      ops->var.vmode = info->var.vmode;
-+      yoffset = (vyres - info->var.yres) - par->var.xoffset;
-+      par->var.xoffset = par->var.yoffset;
-+      par->var.yoffset = yoffset;
-+      err = fb_pan_display(info, &par->var);
-+      par->var.xoffset = info->var.xoffset;
-+      par->var.yoffset = info->var.yoffset;
-+      par->var.vmode = info->var.vmode;
-       return err;
- }
--void fbcon_rotate_ccw(struct fbcon_ops *ops)
-+void fbcon_rotate_ccw(struct fbcon_par *par)
- {
--      ops->bmove = ccw_bmove;
--      ops->clear = ccw_clear;
--      ops->putcs = ccw_putcs;
--      ops->clear_margins = ccw_clear_margins;
--      ops->cursor = ccw_cursor;
--      ops->update_start = ccw_update_start;
-+      par->bmove = ccw_bmove;
-+      par->clear = ccw_clear;
-+      par->putcs = ccw_putcs;
-+      par->clear_margins = ccw_clear_margins;
-+      par->cursor = ccw_cursor;
-+      par->update_start = ccw_update_start;
- }
-diff --git a/drivers/video/fbdev/core/fbcon_cw.c b/drivers/video/fbdev/core/fbcon_cw.c
-index b9dac7940fb77..4bd22d5ee5f41 100644
---- a/drivers/video/fbdev/core/fbcon_cw.c
-+++ b/drivers/video/fbdev/core/fbcon_cw.c
-@@ -48,9 +48,9 @@ static void cw_update_attr(u8 *dst, u8 *src, int attribute,
- static void cw_bmove(struct vc_data *vc, struct fb_info *info, int sy,
-                    int sx, int dy, int dx, int height, int width)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_copyarea area;
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
-       area.sx = vxres - ((sy + height) * vc->vc_font.height);
-       area.sy = sx * vc->vc_font.width;
-@@ -65,9 +65,9 @@ static void cw_bmove(struct vc_data *vc, struct fb_info *info, int sy,
- static void cw_clear(struct vc_data *vc, struct fb_info *info, int sy,
-                    int sx, int height, int width, int fg, int bg)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_fillrect region;
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
-       region.color = bg;
-       region.dx = vxres - ((sy + height) * vc->vc_font.height);
-@@ -84,13 +84,13 @@ static inline void cw_putcs_aligned(struct vc_data *vc, struct fb_info *info,
-                                   u32 d_pitch, u32 s_pitch, u32 cellsize,
-                                   struct fb_image *image, u8 *buf, u8 *dst)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u16 charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       u32 idx = (vc->vc_font.height + 7) >> 3;
-       u8 *src;
-       while (cnt--) {
--              src = ops->fontbuffer + (scr_readw(s++) & charmask)*cellsize;
-+              src = par->fontbuffer + (scr_readw(s++) & charmask) * cellsize;
-               if (attr) {
-                       cw_update_attr(buf, src, attr, vc);
-@@ -115,7 +115,7 @@ static void cw_putcs(struct vc_data *vc, struct fb_info *info,
-                     int fg, int bg)
- {
-       struct fb_image image;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u32 width = (vc->vc_font.height + 7)/8;
-       u32 cellsize = width * vc->vc_font.width;
-       u32 maxcnt = info->pixmap.size/cellsize;
-@@ -124,9 +124,9 @@ static void cw_putcs(struct vc_data *vc, struct fb_info *info,
-       u32 cnt, pitch, size;
-       u32 attribute = get_attribute(info, scr_readw(s));
-       u8 *dst, *buf = NULL;
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
--      if (!ops->fontbuffer)
-+      if (!par->fontbuffer)
-               return;
-       image.fg_color = fg;
-@@ -204,28 +204,28 @@ static void cw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                     int fg, int bg)
- {
-       struct fb_cursor cursor;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       int w = (vc->vc_font.height + 7) >> 3, c;
--      int y = real_y(ops->p, vc->state.y);
-+      int y = real_y(par->p, vc->state.y);
-       int attribute, use_sw = vc->vc_cursor_type & CUR_SW;
-       int err = 1, dx, dy;
-       char *src;
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
--      if (!ops->fontbuffer)
-+      if (!par->fontbuffer)
-               return;
-       cursor.set = 0;
-       c = scr_readw((u16 *) vc->vc_pos);
-       attribute = get_attribute(info, c);
--      src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
-+      src = par->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
--      if (ops->cursor_state.image.data != src ||
--          ops->cursor_reset) {
--          ops->cursor_state.image.data = src;
--          cursor.set |= FB_CUR_SETIMAGE;
-+      if (par->cursor_state.image.data != src ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.data = src;
-+              cursor.set |= FB_CUR_SETIMAGE;
-       }
-       if (attribute) {
-@@ -234,49 +234,49 @@ static void cw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               dst = kmalloc_array(w, vc->vc_font.width, GFP_ATOMIC);
-               if (!dst)
-                       return;
--              kfree(ops->cursor_data);
--              ops->cursor_data = dst;
-+              kfree(par->cursor_data);
-+              par->cursor_data = dst;
-               cw_update_attr(dst, src, attribute, vc);
-               src = dst;
-       }
--      if (ops->cursor_state.image.fg_color != fg ||
--          ops->cursor_state.image.bg_color != bg ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.fg_color = fg;
--              ops->cursor_state.image.bg_color = bg;
-+      if (par->cursor_state.image.fg_color != fg ||
-+          par->cursor_state.image.bg_color != bg ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.fg_color = fg;
-+              par->cursor_state.image.bg_color = bg;
-               cursor.set |= FB_CUR_SETCMAP;
-       }
--      if (ops->cursor_state.image.height != vc->vc_font.width ||
--          ops->cursor_state.image.width != vc->vc_font.height ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.height = vc->vc_font.width;
--              ops->cursor_state.image.width = vc->vc_font.height;
-+      if (par->cursor_state.image.height != vc->vc_font.width ||
-+          par->cursor_state.image.width != vc->vc_font.height ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.height = vc->vc_font.width;
-+              par->cursor_state.image.width = vc->vc_font.height;
-               cursor.set |= FB_CUR_SETSIZE;
-       }
-       dx = vxres - ((y * vc->vc_font.height) + vc->vc_font.height);
-       dy = vc->state.x * vc->vc_font.width;
--      if (ops->cursor_state.image.dx != dx ||
--          ops->cursor_state.image.dy != dy ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.dx = dx;
--              ops->cursor_state.image.dy = dy;
-+      if (par->cursor_state.image.dx != dx ||
-+          par->cursor_state.image.dy != dy ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.dx = dx;
-+              par->cursor_state.image.dy = dy;
-               cursor.set |= FB_CUR_SETPOS;
-       }
--      if (ops->cursor_state.hot.x || ops->cursor_state.hot.y ||
--          ops->cursor_reset) {
--              ops->cursor_state.hot.x = cursor.hot.y = 0;
-+      if (par->cursor_state.hot.x || par->cursor_state.hot.y ||
-+          par->cursor_reset) {
-+              par->cursor_state.hot.x = cursor.hot.y = 0;
-               cursor.set |= FB_CUR_SETHOT;
-       }
-       if (cursor.set & FB_CUR_SETSIZE ||
--          vc->vc_cursor_type != ops->p->cursor_shape ||
--          ops->cursor_state.mask == NULL ||
--          ops->cursor_reset) {
-+          vc->vc_cursor_type != par->p->cursor_shape ||
-+          par->cursor_state.mask == NULL ||
-+          par->cursor_reset) {
-               char *tmp, *mask = kmalloc_array(w, vc->vc_font.width,
-                                                GFP_ATOMIC);
-               int cur_height, size, i = 0;
-@@ -292,13 +292,13 @@ static void cw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                       return;
-               }
--              kfree(ops->cursor_state.mask);
--              ops->cursor_state.mask = mask;
-+              kfree(par->cursor_state.mask);
-+              par->cursor_state.mask = mask;
--              ops->p->cursor_shape = vc->vc_cursor_type;
-+              par->p->cursor_shape = vc->vc_cursor_type;
-               cursor.set |= FB_CUR_SETSHAPE;
--              switch (CUR_SIZE(ops->p->cursor_shape)) {
-+              switch (CUR_SIZE(par->p->cursor_shape)) {
-               case CUR_NONE:
-                       cur_height = 0;
-                       break;
-@@ -331,19 +331,19 @@ static void cw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               kfree(tmp);
-       }
--      ops->cursor_state.enable = enable && !use_sw;
-+      par->cursor_state.enable = enable && !use_sw;
-       cursor.image.data = src;
--      cursor.image.fg_color = ops->cursor_state.image.fg_color;
--      cursor.image.bg_color = ops->cursor_state.image.bg_color;
--      cursor.image.dx = ops->cursor_state.image.dx;
--      cursor.image.dy = ops->cursor_state.image.dy;
--      cursor.image.height = ops->cursor_state.image.height;
--      cursor.image.width = ops->cursor_state.image.width;
--      cursor.hot.x = ops->cursor_state.hot.x;
--      cursor.hot.y = ops->cursor_state.hot.y;
--      cursor.mask = ops->cursor_state.mask;
--      cursor.enable = ops->cursor_state.enable;
-+      cursor.image.fg_color = par->cursor_state.image.fg_color;
-+      cursor.image.bg_color = par->cursor_state.image.bg_color;
-+      cursor.image.dx = par->cursor_state.image.dx;
-+      cursor.image.dy = par->cursor_state.image.dy;
-+      cursor.image.height = par->cursor_state.image.height;
-+      cursor.image.width = par->cursor_state.image.width;
-+      cursor.hot.x = par->cursor_state.hot.x;
-+      cursor.hot.y = par->cursor_state.hot.y;
-+      cursor.mask = par->cursor_state.mask;
-+      cursor.enable = par->cursor_state.enable;
-       cursor.image.depth = 1;
-       cursor.rop = ROP_XOR;
-@@ -353,32 +353,32 @@ static void cw_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-       if (err)
-               soft_cursor(info, &cursor);
--      ops->cursor_reset = 0;
-+      par->cursor_reset = 0;
- }
- static int cw_update_start(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
--      u32 vxres = GETVXRES(ops->p, info);
-+      struct fbcon_par *par = info->fbcon_par;
-+      u32 vxres = GETVXRES(par->p, info);
-       u32 xoffset;
-       int err;
--      xoffset = vxres - (info->var.xres + ops->var.yoffset);
--      ops->var.yoffset = ops->var.xoffset;
--      ops->var.xoffset = xoffset;
--      err = fb_pan_display(info, &ops->var);
--      ops->var.xoffset = info->var.xoffset;
--      ops->var.yoffset = info->var.yoffset;
--      ops->var.vmode = info->var.vmode;
-+      xoffset = vxres - (info->var.xres + par->var.yoffset);
-+      par->var.yoffset = par->var.xoffset;
-+      par->var.xoffset = xoffset;
-+      err = fb_pan_display(info, &par->var);
-+      par->var.xoffset = info->var.xoffset;
-+      par->var.yoffset = info->var.yoffset;
-+      par->var.vmode = info->var.vmode;
-       return err;
- }
--void fbcon_rotate_cw(struct fbcon_ops *ops)
-+void fbcon_rotate_cw(struct fbcon_par *par)
- {
--      ops->bmove = cw_bmove;
--      ops->clear = cw_clear;
--      ops->putcs = cw_putcs;
--      ops->clear_margins = cw_clear_margins;
--      ops->cursor = cw_cursor;
--      ops->update_start = cw_update_start;
-+      par->bmove = cw_bmove;
-+      par->clear = cw_clear;
-+      par->putcs = cw_putcs;
-+      par->clear_margins = cw_clear_margins;
-+      par->cursor = cw_cursor;
-+      par->update_start = cw_update_start;
- }
-diff --git a/drivers/video/fbdev/core/fbcon_rotate.c b/drivers/video/fbdev/core/fbcon_rotate.c
-index ec3c883400f7b..380b2746451a1 100644
---- a/drivers/video/fbdev/core/fbcon_rotate.c
-+++ b/drivers/video/fbdev/core/fbcon_rotate.c
-@@ -20,32 +20,32 @@
- static int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int len, err = 0;
-       int s_cellsize, d_cellsize, i;
-       const u8 *src;
-       u8 *dst;
--      if (vc->vc_font.data == ops->fontdata &&
--          ops->p->con_rotate == ops->cur_rotate)
-+      if (vc->vc_font.data == par->fontdata &&
-+          par->p->con_rotate == par->cur_rotate)
-               goto finished;
--      src = ops->fontdata = vc->vc_font.data;
--      ops->cur_rotate = ops->p->con_rotate;
-+      src = par->fontdata = vc->vc_font.data;
-+      par->cur_rotate = par->p->con_rotate;
-       len = vc->vc_font.charcount;
-       s_cellsize = ((vc->vc_font.width + 7)/8) *
-               vc->vc_font.height;
-       d_cellsize = s_cellsize;
--      if (ops->rotate == FB_ROTATE_CW ||
--          ops->rotate == FB_ROTATE_CCW)
-+      if (par->rotate == FB_ROTATE_CW ||
-+          par->rotate == FB_ROTATE_CCW)
-               d_cellsize = ((vc->vc_font.height + 7)/8) *
-                       vc->vc_font.width;
-       if (info->fbops->fb_sync)
-               info->fbops->fb_sync(info);
--      if (ops->fd_size < d_cellsize * len) {
-+      if (par->fd_size < d_cellsize * len) {
-               dst = kmalloc_array(len, d_cellsize, GFP_KERNEL);
-               if (dst == NULL) {
-@@ -53,15 +53,15 @@ static int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc)
-                       goto finished;
-               }
--              ops->fd_size = d_cellsize * len;
--              kfree(ops->fontbuffer);
--              ops->fontbuffer = dst;
-+              par->fd_size = d_cellsize * len;
-+              kfree(par->fontbuffer);
-+              par->fontbuffer = dst;
-       }
--      dst = ops->fontbuffer;
--      memset(dst, 0, ops->fd_size);
-+      dst = par->fontbuffer;
-+      memset(dst, 0, par->fd_size);
--      switch (ops->rotate) {
-+      switch (par->rotate) {
-       case FB_ROTATE_UD:
-               for (i = len; i--; ) {
-                       rotate_ud(src, dst, vc->vc_font.width,
-@@ -93,19 +93,19 @@ static int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc)
-       return err;
- }
--void fbcon_set_rotate(struct fbcon_ops *ops)
-+void fbcon_set_rotate(struct fbcon_par *par)
- {
--      ops->rotate_font = fbcon_rotate_font;
-+      par->rotate_font = fbcon_rotate_font;
--      switch(ops->rotate) {
-+      switch (par->rotate) {
-       case FB_ROTATE_CW:
--              fbcon_rotate_cw(ops);
-+              fbcon_rotate_cw(par);
-               break;
-       case FB_ROTATE_UD:
--              fbcon_rotate_ud(ops);
-+              fbcon_rotate_ud(par);
-               break;
-       case FB_ROTATE_CCW:
--              fbcon_rotate_ccw(ops);
-+              fbcon_rotate_ccw(par);
-               break;
-       }
- }
-diff --git a/drivers/video/fbdev/core/fbcon_rotate.h b/drivers/video/fbdev/core/fbcon_rotate.h
-index 01cbe303b8a29..48305e1a07631 100644
---- a/drivers/video/fbdev/core/fbcon_rotate.h
-+++ b/drivers/video/fbdev/core/fbcon_rotate.h
-@@ -90,7 +90,7 @@ static inline void rotate_ccw(const char *in, char *out, u32 width, u32 height)
-       }
- }
--extern void fbcon_rotate_cw(struct fbcon_ops *ops);
--extern void fbcon_rotate_ud(struct fbcon_ops *ops);
--extern void fbcon_rotate_ccw(struct fbcon_ops *ops);
-+extern void fbcon_rotate_cw(struct fbcon_par *par);
-+extern void fbcon_rotate_ud(struct fbcon_par *par);
-+extern void fbcon_rotate_ccw(struct fbcon_par *par);
- #endif
-diff --git a/drivers/video/fbdev/core/fbcon_ud.c b/drivers/video/fbdev/core/fbcon_ud.c
-index 0af7913a2abdc..14b40e2bf323f 100644
---- a/drivers/video/fbdev/core/fbcon_ud.c
-+++ b/drivers/video/fbdev/core/fbcon_ud.c
-@@ -48,10 +48,10 @@ static void ud_update_attr(u8 *dst, u8 *src, int attribute,
- static void ud_bmove(struct vc_data *vc, struct fb_info *info, int sy,
-                    int sx, int dy, int dx, int height, int width)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_copyarea area;
--      u32 vyres = GETVYRES(ops->p, info);
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
-       area.sy = vyres - ((sy + height) * vc->vc_font.height);
-       area.sx = vxres - ((sx + width) * vc->vc_font.width);
-@@ -66,10 +66,10 @@ static void ud_bmove(struct vc_data *vc, struct fb_info *info, int sy,
- static void ud_clear(struct vc_data *vc, struct fb_info *info, int sy,
-                    int sx, int height, int width, int fg, int bg)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       struct fb_fillrect region;
--      u32 vyres = GETVYRES(ops->p, info);
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
-       region.color = bg;
-       region.dy = vyres - ((sy + height) * vc->vc_font.height);
-@@ -86,13 +86,13 @@ static inline void ud_putcs_aligned(struct vc_data *vc, struct fb_info *info,
-                                   u32 d_pitch, u32 s_pitch, u32 cellsize,
-                                   struct fb_image *image, u8 *buf, u8 *dst)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u16 charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       u32 idx = vc->vc_font.width >> 3;
-       u8 *src;
-       while (cnt--) {
--              src = ops->fontbuffer + (scr_readw(s--) & charmask)*cellsize;
-+              src = par->fontbuffer + (scr_readw(s--) & charmask) * cellsize;
-               if (attr) {
-                       ud_update_attr(buf, src, attr, vc);
-@@ -119,7 +119,7 @@ static inline void ud_putcs_unaligned(struct vc_data *vc,
-                                     struct fb_image *image, u8 *buf,
-                                     u8 *dst)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u16 charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       u32 shift_low = 0, mod = vc->vc_font.width % 8;
-       u32 shift_high = 8;
-@@ -127,7 +127,7 @@ static inline void ud_putcs_unaligned(struct vc_data *vc,
-       u8 *src;
-       while (cnt--) {
--              src = ops->fontbuffer + (scr_readw(s--) & charmask)*cellsize;
-+              src = par->fontbuffer + (scr_readw(s--) & charmask) * cellsize;
-               if (attr) {
-                       ud_update_attr(buf, src, attr, vc);
-@@ -152,7 +152,7 @@ static void ud_putcs(struct vc_data *vc, struct fb_info *info,
-                     int fg, int bg)
- {
-       struct fb_image image;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       u32 width = (vc->vc_font.width + 7)/8;
-       u32 cellsize = width * vc->vc_font.height;
-       u32 maxcnt = info->pixmap.size/cellsize;
-@@ -161,10 +161,10 @@ static void ud_putcs(struct vc_data *vc, struct fb_info *info,
-       u32 mod = vc->vc_font.width % 8, cnt, pitch, size;
-       u32 attribute = get_attribute(info, scr_readw(s));
-       u8 *dst, *buf = NULL;
--      u32 vyres = GETVYRES(ops->p, info);
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
--      if (!ops->fontbuffer)
-+      if (!par->fontbuffer)
-               return;
-       image.fg_color = fg;
-@@ -251,29 +251,29 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                     int fg, int bg)
- {
-       struct fb_cursor cursor;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
-       int w = (vc->vc_font.width + 7) >> 3, c;
--      int y = real_y(ops->p, vc->state.y);
-+      int y = real_y(par->p, vc->state.y);
-       int attribute, use_sw = vc->vc_cursor_type & CUR_SW;
-       int err = 1, dx, dy;
-       char *src;
--      u32 vyres = GETVYRES(ops->p, info);
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
--      if (!ops->fontbuffer)
-+      if (!par->fontbuffer)
-               return;
-       cursor.set = 0;
-       c = scr_readw((u16 *) vc->vc_pos);
-       attribute = get_attribute(info, c);
--      src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.height));
-+      src = par->fontbuffer + ((c & charmask) * (w * vc->vc_font.height));
--      if (ops->cursor_state.image.data != src ||
--          ops->cursor_reset) {
--          ops->cursor_state.image.data = src;
--          cursor.set |= FB_CUR_SETIMAGE;
-+      if (par->cursor_state.image.data != src ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.data = src;
-+              cursor.set |= FB_CUR_SETIMAGE;
-       }
-       if (attribute) {
-@@ -282,49 +282,49 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               dst = kmalloc_array(w, vc->vc_font.height, GFP_ATOMIC);
-               if (!dst)
-                       return;
--              kfree(ops->cursor_data);
--              ops->cursor_data = dst;
-+              kfree(par->cursor_data);
-+              par->cursor_data = dst;
-               ud_update_attr(dst, src, attribute, vc);
-               src = dst;
-       }
--      if (ops->cursor_state.image.fg_color != fg ||
--          ops->cursor_state.image.bg_color != bg ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.fg_color = fg;
--              ops->cursor_state.image.bg_color = bg;
-+      if (par->cursor_state.image.fg_color != fg ||
-+          par->cursor_state.image.bg_color != bg ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.fg_color = fg;
-+              par->cursor_state.image.bg_color = bg;
-               cursor.set |= FB_CUR_SETCMAP;
-       }
--      if (ops->cursor_state.image.height != vc->vc_font.height ||
--          ops->cursor_state.image.width != vc->vc_font.width ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.height = vc->vc_font.height;
--              ops->cursor_state.image.width = vc->vc_font.width;
-+      if (par->cursor_state.image.height != vc->vc_font.height ||
-+          par->cursor_state.image.width != vc->vc_font.width ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.height = vc->vc_font.height;
-+              par->cursor_state.image.width = vc->vc_font.width;
-               cursor.set |= FB_CUR_SETSIZE;
-       }
-       dy = vyres - ((y * vc->vc_font.height) + vc->vc_font.height);
-       dx = vxres - ((vc->state.x * vc->vc_font.width) + vc->vc_font.width);
--      if (ops->cursor_state.image.dx != dx ||
--          ops->cursor_state.image.dy != dy ||
--          ops->cursor_reset) {
--              ops->cursor_state.image.dx = dx;
--              ops->cursor_state.image.dy = dy;
-+      if (par->cursor_state.image.dx != dx ||
-+          par->cursor_state.image.dy != dy ||
-+          par->cursor_reset) {
-+              par->cursor_state.image.dx = dx;
-+              par->cursor_state.image.dy = dy;
-               cursor.set |= FB_CUR_SETPOS;
-       }
--      if (ops->cursor_state.hot.x || ops->cursor_state.hot.y ||
--          ops->cursor_reset) {
--              ops->cursor_state.hot.x = cursor.hot.y = 0;
-+      if (par->cursor_state.hot.x || par->cursor_state.hot.y ||
-+          par->cursor_reset) {
-+              par->cursor_state.hot.x = cursor.hot.y = 0;
-               cursor.set |= FB_CUR_SETHOT;
-       }
-       if (cursor.set & FB_CUR_SETSIZE ||
--          vc->vc_cursor_type != ops->p->cursor_shape ||
--          ops->cursor_state.mask == NULL ||
--          ops->cursor_reset) {
-+          vc->vc_cursor_type != par->p->cursor_shape ||
-+          par->cursor_state.mask == NULL ||
-+          par->cursor_reset) {
-               char *mask = kmalloc_array(w, vc->vc_font.height, GFP_ATOMIC);
-               int cur_height, size, i = 0;
-               u8 msk = 0xff;
-@@ -332,13 +332,13 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-               if (!mask)
-                       return;
--              kfree(ops->cursor_state.mask);
--              ops->cursor_state.mask = mask;
-+              kfree(par->cursor_state.mask);
-+              par->cursor_state.mask = mask;
--              ops->p->cursor_shape = vc->vc_cursor_type;
-+              par->p->cursor_shape = vc->vc_cursor_type;
-               cursor.set |= FB_CUR_SETSHAPE;
--              switch (CUR_SIZE(ops->p->cursor_shape)) {
-+              switch (CUR_SIZE(par->p->cursor_shape)) {
-               case CUR_NONE:
-                       cur_height = 0;
-                       break;
-@@ -371,19 +371,19 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-                       mask[i++] = ~msk;
-       }
--      ops->cursor_state.enable = enable && !use_sw;
-+      par->cursor_state.enable = enable && !use_sw;
-       cursor.image.data = src;
--      cursor.image.fg_color = ops->cursor_state.image.fg_color;
--      cursor.image.bg_color = ops->cursor_state.image.bg_color;
--      cursor.image.dx = ops->cursor_state.image.dx;
--      cursor.image.dy = ops->cursor_state.image.dy;
--      cursor.image.height = ops->cursor_state.image.height;
--      cursor.image.width = ops->cursor_state.image.width;
--      cursor.hot.x = ops->cursor_state.hot.x;
--      cursor.hot.y = ops->cursor_state.hot.y;
--      cursor.mask = ops->cursor_state.mask;
--      cursor.enable = ops->cursor_state.enable;
-+      cursor.image.fg_color = par->cursor_state.image.fg_color;
-+      cursor.image.bg_color = par->cursor_state.image.bg_color;
-+      cursor.image.dx = par->cursor_state.image.dx;
-+      cursor.image.dy = par->cursor_state.image.dy;
-+      cursor.image.height = par->cursor_state.image.height;
-+      cursor.image.width = par->cursor_state.image.width;
-+      cursor.hot.x = par->cursor_state.hot.x;
-+      cursor.hot.y = par->cursor_state.hot.y;
-+      cursor.mask = par->cursor_state.mask;
-+      cursor.enable = par->cursor_state.enable;
-       cursor.image.depth = 1;
-       cursor.rop = ROP_XOR;
-@@ -393,36 +393,36 @@ static void ud_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
-       if (err)
-               soft_cursor(info, &cursor);
--      ops->cursor_reset = 0;
-+      par->cursor_reset = 0;
- }
- static int ud_update_start(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int xoffset, yoffset;
--      u32 vyres = GETVYRES(ops->p, info);
--      u32 vxres = GETVXRES(ops->p, info);
-+      u32 vyres = GETVYRES(par->p, info);
-+      u32 vxres = GETVXRES(par->p, info);
-       int err;
--      xoffset = vxres - info->var.xres - ops->var.xoffset;
--      yoffset = vyres - info->var.yres - ops->var.yoffset;
-+      xoffset = vxres - info->var.xres - par->var.xoffset;
-+      yoffset = vyres - info->var.yres - par->var.yoffset;
-       if (yoffset < 0)
-               yoffset += vyres;
--      ops->var.xoffset = xoffset;
--      ops->var.yoffset = yoffset;
--      err = fb_pan_display(info, &ops->var);
--      ops->var.xoffset = info->var.xoffset;
--      ops->var.yoffset = info->var.yoffset;
--      ops->var.vmode = info->var.vmode;
-+      par->var.xoffset = xoffset;
-+      par->var.yoffset = yoffset;
-+      err = fb_pan_display(info, &par->var);
-+      par->var.xoffset = info->var.xoffset;
-+      par->var.yoffset = info->var.yoffset;
-+      par->var.vmode = info->var.vmode;
-       return err;
- }
--void fbcon_rotate_ud(struct fbcon_ops *ops)
-+void fbcon_rotate_ud(struct fbcon_par *par)
- {
--      ops->bmove = ud_bmove;
--      ops->clear = ud_clear;
--      ops->putcs = ud_putcs;
--      ops->clear_margins = ud_clear_margins;
--      ops->cursor = ud_cursor;
--      ops->update_start = ud_update_start;
-+      par->bmove = ud_bmove;
-+      par->clear = ud_clear;
-+      par->putcs = ud_putcs;
-+      par->clear_margins = ud_clear_margins;
-+      par->cursor = ud_cursor;
-+      par->update_start = ud_update_start;
- }
-diff --git a/drivers/video/fbdev/core/softcursor.c b/drivers/video/fbdev/core/softcursor.c
-index 29e5b21cf373e..900788c059153 100644
---- a/drivers/video/fbdev/core/softcursor.c
-+++ b/drivers/video/fbdev/core/softcursor.c
-@@ -21,7 +21,7 @@
- int soft_cursor(struct fb_info *info, struct fb_cursor *cursor)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       unsigned int scan_align = info->pixmap.scan_align - 1;
-       unsigned int buf_align = info->pixmap.buf_align - 1;
-       unsigned int i, size, dsize, s_pitch, d_pitch;
-@@ -34,19 +34,19 @@ int soft_cursor(struct fb_info *info, struct fb_cursor *cursor)
-       s_pitch = (cursor->image.width + 7) >> 3;
-       dsize = s_pitch * cursor->image.height;
--      if (dsize + sizeof(struct fb_image) != ops->cursor_size) {
--              kfree(ops->cursor_src);
--              ops->cursor_size = dsize + sizeof(struct fb_image);
-+      if (dsize + sizeof(struct fb_image) != par->cursor_size) {
-+              kfree(par->cursor_src);
-+              par->cursor_size = dsize + sizeof(struct fb_image);
--              ops->cursor_src = kmalloc(ops->cursor_size, GFP_ATOMIC);
--              if (!ops->cursor_src) {
--                      ops->cursor_size = 0;
-+              par->cursor_src = kmalloc(par->cursor_size, GFP_ATOMIC);
-+              if (!par->cursor_src) {
-+                      par->cursor_size = 0;
-                       return -ENOMEM;
-               }
-       }
--      src = ops->cursor_src + sizeof(struct fb_image);
--      image = (struct fb_image *)ops->cursor_src;
-+      src = par->cursor_src + sizeof(struct fb_image);
-+      image = (struct fb_image *)par->cursor_src;
-       *image = cursor->image;
-       d_pitch = (s_pitch + scan_align) & ~scan_align;
-diff --git a/drivers/video/fbdev/core/tileblit.c b/drivers/video/fbdev/core/tileblit.c
-index d342b90c42b7f..4428f2bcd3f8c 100644
---- a/drivers/video/fbdev/core/tileblit.c
-+++ b/drivers/video/fbdev/core/tileblit.c
-@@ -151,34 +151,34 @@ static void tile_cursor(struct vc_data *vc, struct fb_info *info, bool enable,
- static int tile_update_start(struct fb_info *info)
- {
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
-       int err;
--      err = fb_pan_display(info, &ops->var);
--      ops->var.xoffset = info->var.xoffset;
--      ops->var.yoffset = info->var.yoffset;
--      ops->var.vmode = info->var.vmode;
-+      err = fb_pan_display(info, &par->var);
-+      par->var.xoffset = info->var.xoffset;
-+      par->var.yoffset = info->var.yoffset;
-+      par->var.vmode = info->var.vmode;
-       return err;
- }
- void fbcon_set_tileops(struct vc_data *vc, struct fb_info *info)
- {
-       struct fb_tilemap map;
--      struct fbcon_ops *ops = info->fbcon_par;
-+      struct fbcon_par *par = info->fbcon_par;
--      ops->bmove = tile_bmove;
--      ops->clear = tile_clear;
--      ops->putcs = tile_putcs;
--      ops->clear_margins = tile_clear_margins;
--      ops->cursor = tile_cursor;
--      ops->update_start = tile_update_start;
-+      par->bmove = tile_bmove;
-+      par->clear = tile_clear;
-+      par->putcs = tile_putcs;
-+      par->clear_margins = tile_clear_margins;
-+      par->cursor = tile_cursor;
-+      par->update_start = tile_update_start;
--      if (ops->p) {
-+      if (par->p) {
-               map.width = vc->vc_font.width;
-               map.height = vc->vc_font.height;
-               map.depth = 1;
-               map.length = vc->vc_font.charcount;
--              map.data = ops->p->fontdata;
-+              map.data = par->p->fontdata;
-               info->tileops->fb_settile(info, &map);
-       }
- }
--- 
-2.51.0
-
diff --git a/queue-6.18/fbcon-set-rotate_font-callback-with-related-callback.patch b/queue-6.18/fbcon-set-rotate_font-callback-with-related-callback.patch
deleted file mode 100644 (file)
index 3273c25..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-From 53f6b5ab9bc90847781c94b71d1a86e526200d3e Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 9 Sep 2025 14:44:43 +0200
-Subject: fbcon: Set rotate_font callback with related callbacks
-
-From: Thomas Zimmermann <tzimmermann@suse.de>
-
-[ Upstream commit 9cfd09402eb45f1b14b60668fd7c628445efdd8d ]
-
-The field struct fbcon_par.rotate_font points to fbcon_rotate_font() if
-the console is rotated. Set the callback in the same place as the other
-callbacks. Prepares for declaring all fbcon callbacks in a dedicated
-struct type.
-
-If not rotated, fbcon_set_bitops() still clears the callback to NULL.
-
-Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
-Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
-Link: https://lore.kernel.org/r/20250909124616.143365-4-tzimmermann@suse.de
-Stable-dep-of: 8e9bf8b9e8c0 ("printk, vt, fbcon: Remove console_conditional_schedule()")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/video/fbdev/core/fbcon_ccw.c    | 1 +
- drivers/video/fbdev/core/fbcon_cw.c     | 1 +
- drivers/video/fbdev/core/fbcon_rotate.c | 4 +---
- drivers/video/fbdev/core/fbcon_rotate.h | 3 +++
- drivers/video/fbdev/core/fbcon_ud.c     | 1 +
- 5 files changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/video/fbdev/core/fbcon_ccw.c b/drivers/video/fbdev/core/fbcon_ccw.c
-index 2ba8ec4c3e2bc..ba744b67a4fd9 100644
---- a/drivers/video/fbdev/core/fbcon_ccw.c
-+++ b/drivers/video/fbdev/core/fbcon_ccw.c
-@@ -398,4 +398,5 @@ void fbcon_rotate_ccw(struct fbcon_par *par)
-       par->clear_margins = ccw_clear_margins;
-       par->cursor = ccw_cursor;
-       par->update_start = ccw_update_start;
-+      par->rotate_font = fbcon_rotate_font;
- }
-diff --git a/drivers/video/fbdev/core/fbcon_cw.c b/drivers/video/fbdev/core/fbcon_cw.c
-index 4bd22d5ee5f41..974bd9d9b7702 100644
---- a/drivers/video/fbdev/core/fbcon_cw.c
-+++ b/drivers/video/fbdev/core/fbcon_cw.c
-@@ -381,4 +381,5 @@ void fbcon_rotate_cw(struct fbcon_par *par)
-       par->clear_margins = cw_clear_margins;
-       par->cursor = cw_cursor;
-       par->update_start = cw_update_start;
-+      par->rotate_font = fbcon_rotate_font;
- }
-diff --git a/drivers/video/fbdev/core/fbcon_rotate.c b/drivers/video/fbdev/core/fbcon_rotate.c
-index 380b2746451a1..0c7cac71a9c21 100644
---- a/drivers/video/fbdev/core/fbcon_rotate.c
-+++ b/drivers/video/fbdev/core/fbcon_rotate.c
-@@ -18,7 +18,7 @@
- #include "fbcon.h"
- #include "fbcon_rotate.h"
--static int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc)
-+int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc)
- {
-       struct fbcon_par *par = info->fbcon_par;
-       int len, err = 0;
-@@ -95,8 +95,6 @@ static int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc)
- void fbcon_set_rotate(struct fbcon_par *par)
- {
--      par->rotate_font = fbcon_rotate_font;
--
-       switch (par->rotate) {
-       case FB_ROTATE_CW:
-               fbcon_rotate_cw(par);
-diff --git a/drivers/video/fbdev/core/fbcon_rotate.h b/drivers/video/fbdev/core/fbcon_rotate.h
-index 48305e1a07631..784f3231a958f 100644
---- a/drivers/video/fbdev/core/fbcon_rotate.h
-+++ b/drivers/video/fbdev/core/fbcon_rotate.h
-@@ -90,7 +90,10 @@ static inline void rotate_ccw(const char *in, char *out, u32 width, u32 height)
-       }
- }
-+int fbcon_rotate_font(struct fb_info *info, struct vc_data *vc);
-+
- extern void fbcon_rotate_cw(struct fbcon_par *par);
- extern void fbcon_rotate_ud(struct fbcon_par *par);
- extern void fbcon_rotate_ccw(struct fbcon_par *par);
-+
- #endif
-diff --git a/drivers/video/fbdev/core/fbcon_ud.c b/drivers/video/fbdev/core/fbcon_ud.c
-index 14b40e2bf323f..1a214a4d538fb 100644
---- a/drivers/video/fbdev/core/fbcon_ud.c
-+++ b/drivers/video/fbdev/core/fbcon_ud.c
-@@ -425,4 +425,5 @@ void fbcon_rotate_ud(struct fbcon_par *par)
-       par->clear_margins = ud_clear_margins;
-       par->cursor = ud_cursor;
-       par->update_start = ud_update_start;
-+      par->rotate_font = fbcon_rotate_font;
- }
--- 
-2.51.0
-
diff --git a/queue-6.18/printk-vt-fbcon-remove-console_conditional_schedule.patch b/queue-6.18/printk-vt-fbcon-remove-console_conditional_schedule.patch
deleted file mode 100644 (file)
index d07055a..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-From 8582538229755cef300ddccabe133abdb11aca9a Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 26 Jan 2026 19:08:36 +0100
-Subject: printk, vt, fbcon: Remove console_conditional_schedule()
-
-From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-
-[ Upstream commit 8e9bf8b9e8c0a3e1ef16dd48260a113f65ed01d2 ]
-
-do_con_write(), fbcon_redraw.*() invoke console_conditional_schedule()
-which is a conditional scheduling point based on printk's internal
-variables console_may_schedule. It may only be used if the console lock
-is acquired for instance via console_lock() or console_trylock().
-
-Prinkt sets the internal variable to 1 (and allows to schedule)
-if the console lock has been acquired via console_lock(). The trylock
-does not allow it.
-
-The console_conditional_schedule() invocation in do_con_write() is
-invoked shortly before console_unlock().
-The console_conditional_schedule() invocation in fbcon_redraw.*()
-original from fbcon_scroll() / vt's con_scroll() which originate from a
-line feed.
-
-In console_unlock() the variable is set to 0 (forbids to schedule) and
-it tries to schedule while making progress printing. This is brand new
-compared to when console_conditional_schedule() was added in v2.4.9.11.
-
-In v2.6.38-rc3, console_unlock() (started its existence) iterated over
-all consoles and flushed them with disabled interrupts. A scheduling
-attempt here was not possible, it relied that a long print scheduled
-before console_unlock().
-
-Since commit 8d91f8b15361d ("printk: do cond_resched() between lines
-while outputting to consoles"), which appeared in v4.5-rc1,
-console_unlock() attempts to schedule if it was allowed to schedule
-while during console_lock(). Each record is idealy one line so after
-every line feed.
-
-This console_conditional_schedule() is also only relevant on
-PREEMPT_NONE and PREEMPT_VOLUNTARY builds. In other configurations
-cond_resched() becomes a nop and has no impact.
-
-I'm bringing this all up just proof that it is not required anymore. It
-becomes a problem on a PREEMPT_RT build with debug code enabled because
-that might_sleep() in cond_resched() remains and triggers a warnings.
-This is due to
-
- legacy_kthread_func-> console_flush_one_record ->  vt_console_print-> lf
-   -> con_scroll -> fbcon_scroll
-
-and vt_console_print() acquires a spinlock_t which does not allow a
-voluntary schedule. There is no need to fb_scroll() to schedule since
-console_flush_one_record() attempts to schedule after each line.
-!PREEMPT_RT is not affected because the legacy printing thread is only
-enabled on PREEMPT_RT builds.
-
-Therefore I suggest to remove console_conditional_schedule().
-
-Cc: Simona Vetter <simona@ffwll.ch>
-Cc: Helge Deller <deller@gmx.de>
-Cc: linux-fbdev@vger.kernel.org
-Cc: dri-devel@lists.freedesktop.org
-Fixes: 5f53ca3ff83b4 ("printk: Implement legacy printer kthread for PREEMPT_RT")
-Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Acked-by: Petr Mladek <pmladek@suse.com> # from printk() POV
-Signed-off-by: Helge Deller <deller@gmx.de>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/tty/vt/vt.c              |  1 -
- drivers/video/fbdev/core/fbcon.c |  6 ------
- include/linux/console.h          |  1 -
- kernel/printk/printk.c           | 16 ----------------
- 4 files changed, 24 deletions(-)
-
-diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
-index 6e0089b85c270..53dffb6e00a91 100644
---- a/drivers/tty/vt/vt.c
-+++ b/drivers/tty/vt/vt.c
-@@ -3236,7 +3236,6 @@ static int do_con_write(struct tty_struct *tty, const u8 *buf, int count)
-                       goto rescan_last_byte;
-       }
-       con_flush(vc, &draw);
--      console_conditional_schedule();
-       notify_update(vc);
-       return n;
-diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
-index 413aa46228549..19469c60ce45f 100644
---- a/drivers/video/fbdev/core/fbcon.c
-+++ b/drivers/video/fbdev/core/fbcon.c
-@@ -1586,12 +1586,10 @@ static void fbcon_redraw_move(struct vc_data *vc, struct fbcon_display *p,
-                                       start = s;
-                               }
-                       }
--                      console_conditional_schedule();
-                       s++;
-               } while (s < le);
-               if (s > start)
-                       fbcon_putcs(vc, start, s - start, dy, x);
--              console_conditional_schedule();
-               dy++;
-       }
- }
-@@ -1627,14 +1625,12 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
-                       }
-                       scr_writew(c, d);
--                      console_conditional_schedule();
-                       s++;
-                       d++;
-               } while (s < le);
-               if (s > start)
-                       par->bitops->bmove(vc, info, line + ycount, x, line, x, 1,
-                                            s - start);
--              console_conditional_schedule();
-               if (ycount > 0)
-                       line++;
-               else {
-@@ -1682,13 +1678,11 @@ static void fbcon_redraw(struct vc_data *vc, int line, int count, int offset)
-                               }
-                       }
-                       scr_writew(c, d);
--                      console_conditional_schedule();
-                       s++;
-                       d++;
-               } while (s < le);
-               if (s > start)
-                       fbcon_putcs(vc, start, s - start, line, x);
--              console_conditional_schedule();
-               if (offset > 0)
-                       line++;
-               else {
-diff --git a/include/linux/console.h b/include/linux/console.h
-index 031a58dc2b911..a307f89c5e687 100644
---- a/include/linux/console.h
-+++ b/include/linux/console.h
-@@ -629,7 +629,6 @@ extern int unregister_console(struct console *);
- extern void console_lock(void);
- extern int console_trylock(void);
- extern void console_unlock(void);
--extern void console_conditional_schedule(void);
- extern void console_unblank(void);
- extern void console_flush_on_panic(enum con_flush_mode mode);
- extern struct tty_driver *console_device(int *);
-diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
-index c27fc7fc64eb5..0c26491f732c2 100644
---- a/kernel/printk/printk.c
-+++ b/kernel/printk/printk.c
-@@ -3322,22 +3322,6 @@ void console_unlock(void)
- }
- EXPORT_SYMBOL(console_unlock);
--/**
-- * console_conditional_schedule - yield the CPU if required
-- *
-- * If the console code is currently allowed to sleep, and
-- * if this CPU should yield the CPU to another task, do
-- * so here.
-- *
-- * Must be called within console_lock();.
-- */
--void __sched console_conditional_schedule(void)
--{
--      if (console_may_schedule)
--              cond_resched();
--}
--EXPORT_SYMBOL(console_conditional_schedule);
--
- void console_unblank(void)
- {
-       bool found_unblank = false;
--- 
-2.51.0
-
index 092fe9a9babab5bbf38b1f17921fe6b8894b92de..e3ab7275e71c6b2c9e558d394f3f3e24f5474a30 100644 (file)
@@ -398,10 +398,6 @@ tracing-properly-process-error-handling-in-event_his.patch
 tracing-remove-duplicate-enable_event_str-and-disabl.patch
 remoteproc-imx_dsp_rproc-only-reset-carveout-memory-.patch
 revert-mailbox-pcc-support-mailbox-management-of-the.patch
-fbcon-rename-struct-fbcon_ops-to-struct-fbcon_par.patch
-fbcon-set-rotate_font-callback-with-related-callback.patch
-fbcon-move-fbcon-callbacks-into-struct-fbcon_bitops.patch
-printk-vt-fbcon-remove-console_conditional_schedule.patch
 fbdev-of_display_timing-fix-device-node-reference-le.patch
 fbdev-au1200fb-fix-a-memory-leak-in-au1200fb_drv_pro.patch
 clk-thead-th1520-ap-poll-for-pll-lock-and-wait-for-s.patch
diff --git a/queue-6.19/printk-vt-fbcon-remove-console_conditional_schedule.patch b/queue-6.19/printk-vt-fbcon-remove-console_conditional_schedule.patch
deleted file mode 100644 (file)
index 44c0ce1..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-From fa53eabe488d48c2752e37735ff6db38d4e9956f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 26 Jan 2026 19:08:36 +0100
-Subject: printk, vt, fbcon: Remove console_conditional_schedule()
-
-From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-
-[ Upstream commit 8e9bf8b9e8c0a3e1ef16dd48260a113f65ed01d2 ]
-
-do_con_write(), fbcon_redraw.*() invoke console_conditional_schedule()
-which is a conditional scheduling point based on printk's internal
-variables console_may_schedule. It may only be used if the console lock
-is acquired for instance via console_lock() or console_trylock().
-
-Prinkt sets the internal variable to 1 (and allows to schedule)
-if the console lock has been acquired via console_lock(). The trylock
-does not allow it.
-
-The console_conditional_schedule() invocation in do_con_write() is
-invoked shortly before console_unlock().
-The console_conditional_schedule() invocation in fbcon_redraw.*()
-original from fbcon_scroll() / vt's con_scroll() which originate from a
-line feed.
-
-In console_unlock() the variable is set to 0 (forbids to schedule) and
-it tries to schedule while making progress printing. This is brand new
-compared to when console_conditional_schedule() was added in v2.4.9.11.
-
-In v2.6.38-rc3, console_unlock() (started its existence) iterated over
-all consoles and flushed them with disabled interrupts. A scheduling
-attempt here was not possible, it relied that a long print scheduled
-before console_unlock().
-
-Since commit 8d91f8b15361d ("printk: do cond_resched() between lines
-while outputting to consoles"), which appeared in v4.5-rc1,
-console_unlock() attempts to schedule if it was allowed to schedule
-while during console_lock(). Each record is idealy one line so after
-every line feed.
-
-This console_conditional_schedule() is also only relevant on
-PREEMPT_NONE and PREEMPT_VOLUNTARY builds. In other configurations
-cond_resched() becomes a nop and has no impact.
-
-I'm bringing this all up just proof that it is not required anymore. It
-becomes a problem on a PREEMPT_RT build with debug code enabled because
-that might_sleep() in cond_resched() remains and triggers a warnings.
-This is due to
-
- legacy_kthread_func-> console_flush_one_record ->  vt_console_print-> lf
-   -> con_scroll -> fbcon_scroll
-
-and vt_console_print() acquires a spinlock_t which does not allow a
-voluntary schedule. There is no need to fb_scroll() to schedule since
-console_flush_one_record() attempts to schedule after each line.
-!PREEMPT_RT is not affected because the legacy printing thread is only
-enabled on PREEMPT_RT builds.
-
-Therefore I suggest to remove console_conditional_schedule().
-
-Cc: Simona Vetter <simona@ffwll.ch>
-Cc: Helge Deller <deller@gmx.de>
-Cc: linux-fbdev@vger.kernel.org
-Cc: dri-devel@lists.freedesktop.org
-Fixes: 5f53ca3ff83b4 ("printk: Implement legacy printer kthread for PREEMPT_RT")
-Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Acked-by: Petr Mladek <pmladek@suse.com> # from printk() POV
-Signed-off-by: Helge Deller <deller@gmx.de>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/tty/vt/vt.c              |  1 -
- drivers/video/fbdev/core/fbcon.c |  6 ------
- include/linux/console.h          |  1 -
- kernel/printk/printk.c           | 16 ----------------
- 4 files changed, 24 deletions(-)
-
-diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
-index 59b4b5e126ba1..53daf7614b1af 100644
---- a/drivers/tty/vt/vt.c
-+++ b/drivers/tty/vt/vt.c
-@@ -3236,7 +3236,6 @@ static int do_con_write(struct tty_struct *tty, const u8 *buf, int count)
-                       goto rescan_last_byte;
-       }
-       con_flush(vc, &draw);
--      console_conditional_schedule();
-       notify_update(vc);
-       return n;
-diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
-index 7be9e865325d9..36dd9d4a46ae0 100644
---- a/drivers/video/fbdev/core/fbcon.c
-+++ b/drivers/video/fbdev/core/fbcon.c
-@@ -1607,12 +1607,10 @@ static void fbcon_redraw_move(struct vc_data *vc, struct fbcon_display *p,
-                                       start = s;
-                               }
-                       }
--                      console_conditional_schedule();
-                       s++;
-               } while (s < le);
-               if (s > start)
-                       fbcon_putcs(vc, start, s - start, dy, x);
--              console_conditional_schedule();
-               dy++;
-       }
- }
-@@ -1648,14 +1646,12 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
-                       }
-                       scr_writew(c, d);
--                      console_conditional_schedule();
-                       s++;
-                       d++;
-               } while (s < le);
-               if (s > start)
-                       par->bitops->bmove(vc, info, line + ycount, x, line, x, 1,
-                                            s - start);
--              console_conditional_schedule();
-               if (ycount > 0)
-                       line++;
-               else {
-@@ -1703,13 +1699,11 @@ static void fbcon_redraw(struct vc_data *vc, int line, int count, int offset)
-                               }
-                       }
-                       scr_writew(c, d);
--                      console_conditional_schedule();
-                       s++;
-                       d++;
-               } while (s < le);
-               if (s > start)
-                       fbcon_putcs(vc, start, s - start, line, x);
--              console_conditional_schedule();
-               if (offset > 0)
-                       line++;
-               else {
-diff --git a/include/linux/console.h b/include/linux/console.h
-index fc9f5c5c1b04c..ec506d3501965 100644
---- a/include/linux/console.h
-+++ b/include/linux/console.h
-@@ -697,7 +697,6 @@ extern int unregister_console(struct console *);
- extern void console_lock(void);
- extern int console_trylock(void);
- extern void console_unlock(void);
--extern void console_conditional_schedule(void);
- extern void console_unblank(void);
- extern void console_flush_on_panic(enum con_flush_mode mode);
- extern struct tty_driver *console_device(int *);
-diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
-index 1d765ad242b82..9296bf41aa49d 100644
---- a/kernel/printk/printk.c
-+++ b/kernel/printk/printk.c
-@@ -3362,22 +3362,6 @@ void console_unlock(void)
- }
- EXPORT_SYMBOL(console_unlock);
--/**
-- * console_conditional_schedule - yield the CPU if required
-- *
-- * If the console code is currently allowed to sleep, and
-- * if this CPU should yield the CPU to another task, do
-- * so here.
-- *
-- * Must be called within console_lock();.
-- */
--void __sched console_conditional_schedule(void)
--{
--      if (console_may_schedule)
--              cond_resched();
--}
--EXPORT_SYMBOL(console_conditional_schedule);
--
- void console_unblank(void)
- {
-       bool found_unblank = false;
--- 
-2.51.0
-
index 7d3cfa9a1eddde10d448436fbd1f836758ce77bb..0d4d0dc905ff5cf9ffee2a69c756e58113745b73 100644 (file)
@@ -507,7 +507,6 @@ remoteproc-imx_rproc-use-strstarts-for-rsc-table-che.patch
 remoteproc-imx_dsp_rproc-fix-multiple-start-stop-ope.patch
 remoteproc-imx_dsp_rproc-only-reset-carveout-memory-.patch
 revert-mailbox-pcc-support-mailbox-management-of-the.patch
-printk-vt-fbcon-remove-console_conditional_schedule.patch
 fbdev-of_display_timing-fix-device-node-reference-le.patch
 fbdev-au1200fb-fix-a-memory-leak-in-au1200fb_drv_pro.patch
 clk-thead-th1520-ap-poll-for-pll-lock-and-wait-for-s.patch