Lines 228-235
Link Here
|
228 |
index 95952c8..b55db6d 100644 |
228 |
index 95952c8..b55db6d 100644 |
229 |
--- a/drivers/Makefile |
229 |
--- a/drivers/Makefile |
230 |
+++ b/drivers/Makefile |
230 |
+++ b/drivers/Makefile |
231 |
@@ -11,6 +11,10 @@ obj-y += gpio/ |
231 |
@@ -16,4 +16,8 @@ obj-$(CONFIG_PCI) += pci/ |
232 |
obj-$(CONFIG_PCI) += pci/ |
|
|
233 |
obj-$(CONFIG_PARISC) += parisc/ |
232 |
obj-$(CONFIG_PARISC) += parisc/ |
234 |
obj-$(CONFIG_RAPIDIO) += rapidio/ |
233 |
obj-$(CONFIG_RAPIDIO) += rapidio/ |
235 |
+# tty/ comes before char/ so that the VT console is the boot-time |
234 |
+# tty/ comes before char/ so that the VT console is the boot-time |
Lines 238-245
Link Here
|
238 |
+obj-y += char/ |
237 |
+obj-y += char/ |
239 |
obj-y += video/ |
238 |
obj-y += video/ |
240 |
obj-y += idle/ |
239 |
obj-y += idle/ |
241 |
obj-$(CONFIG_ACPI) += acpi/ |
240 |
@@ -37,11 +41,6 @@ obj-$(CONFIG_XEN) += xen/ |
242 |
@@ -29,11 +33,6 @@ obj-$(CONFIG_XEN) += xen/ |
|
|
243 |
# regulators early, since some subsystems rely on them to initialize |
241 |
# regulators early, since some subsystems rely on them to initialize |
244 |
obj-$(CONFIG_REGULATOR) += regulator/ |
242 |
obj-$(CONFIG_REGULATOR) += regulator/ |
245 |
|
243 |
|
Lines 255-261
Link Here
|
255 |
index a290be5..3a4ca32 100644 |
253 |
index a290be5..3a4ca32 100644 |
256 |
--- a/drivers/video/Kconfig |
254 |
--- a/drivers/video/Kconfig |
257 |
+++ b/drivers/video/Kconfig |
255 |
+++ b/drivers/video/Kconfig |
258 |
@@ -1241,7 +1241,6 @@ config FB_MATROX |
256 |
@@ -1229,7 +1229,6 @@ config FB_MATROX |
259 |
select FB_CFB_FILLRECT |
257 |
select FB_CFB_FILLRECT |
260 |
select FB_CFB_COPYAREA |
258 |
select FB_CFB_COPYAREA |
261 |
select FB_CFB_IMAGEBLIT |
259 |
select FB_CFB_IMAGEBLIT |
Lines 870-876
Link Here
|
870 |
u16 c, int is_fg) |
868 |
u16 c, int is_fg) |
871 |
{ |
869 |
{ |
872 |
int depth = fb_get_color_depth(&info->var, &info->fix); |
870 |
int depth = fb_get_color_depth(&info->var, &info->fix); |
873 |
@@ -458,7 +459,7 @@ static int __init fb_console_setup(char *this_opt) |
871 |
@@ -465,7 +466,7 @@ static int __init fb_console_setup(char *this_opt) |
874 |
} else |
872 |
} else |
875 |
return 1; |
873 |
return 1; |
876 |
} |
874 |
} |
Lines 879-885
Link Here
|
879 |
if (!strncmp(options, "map:", 4)) { |
877 |
if (!strncmp(options, "map:", 4)) { |
880 |
options += 4; |
878 |
options += 4; |
881 |
if (*options) { |
879 |
if (*options) { |
882 |
@@ -483,8 +484,8 @@ static int __init fb_console_setup(char *this_opt) |
880 |
@@ -490,8 +491,8 @@ static int __init fb_console_setup(char *this_opt) |
883 |
first_fb_vc = 0; |
881 |
first_fb_vc = 0; |
884 |
if (*options++ == '-') |
882 |
if (*options++ == '-') |
885 |
last_fb_vc = simple_strtoul(options, &options, 10) - 1; |
883 |
last_fb_vc = simple_strtoul(options, &options, 10) - 1; |
Lines 890-896
Link Here
|
890 |
|
888 |
|
891 |
if (!strncmp(options, "rotate:", 7)) { |
889 |
if (!strncmp(options, "rotate:", 7)) { |
892 |
options += 7; |
890 |
options += 7; |
893 |
@@ -545,6 +546,9 @@ static int fbcon_takeover(int show_logo) |
891 |
@@ -552,6 +553,9 @@ static int fbcon_takeover(int show_logo) |
894 |
info_idx = -1; |
892 |
info_idx = -1; |
895 |
} else { |
893 |
} else { |
896 |
fbcon_has_console_bind = 1; |
894 |
fbcon_has_console_bind = 1; |
Lines 900-906
Link Here
|
900 |
} |
898 |
} |
901 |
|
899 |
|
902 |
return err; |
900 |
return err; |
903 |
@@ -935,7 +939,7 @@ static const char *fbcon_startup(void) |
901 |
@@ -942,7 +946,7 @@ static const char *fbcon_startup(void) |
904 |
info = registered_fb[info_idx]; |
902 |
info = registered_fb[info_idx]; |
905 |
if (!info) |
903 |
if (!info) |
906 |
return NULL; |
904 |
return NULL; |
Lines 909-915
Link Here
|
909 |
owner = info->fbops->owner; |
907 |
owner = info->fbops->owner; |
910 |
if (!try_module_get(owner)) |
908 |
if (!try_module_get(owner)) |
911 |
return NULL; |
909 |
return NULL; |
912 |
@@ -999,6 +1003,12 @@ static const char *fbcon_startup(void) |
910 |
@@ -1006,6 +1010,12 @@ static const char *fbcon_startup(void) |
913 |
rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres); |
911 |
rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres); |
914 |
cols /= vc->vc_font.width; |
912 |
cols /= vc->vc_font.width; |
915 |
rows /= vc->vc_font.height; |
913 |
rows /= vc->vc_font.height; |
Lines 922-928
Link Here
|
922 |
vc_resize(vc, cols, rows); |
920 |
vc_resize(vc, cols, rows); |
923 |
|
921 |
|
924 |
DPRINTK("mode: %s\n", info->fix.id); |
922 |
DPRINTK("mode: %s\n", info->fix.id); |
925 |
@@ -1028,7 +1038,7 @@ static void fbcon_init(struct vc_data *vc, int init) |
923 |
@@ -1035,7 +1045,7 @@ static void fbcon_init(struct vc_data *vc, int init) |
926 |
cap = info->flags; |
924 |
cap = info->flags; |
927 |
|
925 |
|
928 |
if (vc != svc || logo_shown == FBCON_LOGO_DONTSHOW || |
926 |
if (vc != svc || logo_shown == FBCON_LOGO_DONTSHOW || |
Lines 931-937
Link Here
|
931 |
logo = 0; |
929 |
logo = 0; |
932 |
|
930 |
|
933 |
if (var_to_display(p, &info->var, info)) |
931 |
if (var_to_display(p, &info->var, info)) |
934 |
@@ -1238,6 +1248,11 @@ static void fbcon_clear(struct vc_data *vc, int sy, int sx, int height, |
932 |
@@ -1245,6 +1255,11 @@ static void fbcon_clear(struct vc_data *vc, int sy, int sx, int height, |
935 |
if (sy < vc->vc_top && vc->vc_top == logo_lines) |
933 |
if (sy < vc->vc_top && vc->vc_top == logo_lines) |
936 |
vc->vc_top = 0; |
934 |
vc->vc_top = 0; |
937 |
|
935 |
|
Lines 943-949
Link Here
|
943 |
/* Split blits that cross physical y_wrap boundary */ |
941 |
/* Split blits that cross physical y_wrap boundary */ |
944 |
|
942 |
|
945 |
y_break = p->vrows - p->yscroll; |
943 |
y_break = p->vrows - p->yscroll; |
946 |
@@ -1257,10 +1272,15 @@ static void fbcon_putcs(struct vc_data *vc, const unsigned short *s, |
944 |
@@ -1264,10 +1279,15 @@ static void fbcon_putcs(struct vc_data *vc, const unsigned short *s, |
947 |
struct display *p = &fb_display[vc->vc_num]; |
945 |
struct display *p = &fb_display[vc->vc_num]; |
948 |
struct fbcon_ops *ops = info->fbcon_par; |
946 |
struct fbcon_ops *ops = info->fbcon_par; |
949 |
|
947 |
|
Lines 963-969
Link Here
|
963 |
} |
961 |
} |
964 |
|
962 |
|
965 |
static void fbcon_putc(struct vc_data *vc, int c, int ypos, int xpos) |
963 |
static void fbcon_putc(struct vc_data *vc, int c, int ypos, int xpos) |
966 |
@@ -1276,8 +1296,13 @@ static void fbcon_clear_margins(struct vc_data *vc, int bottom_only) |
964 |
@@ -1283,8 +1303,13 @@ static void fbcon_clear_margins(struct vc_data *vc, int bottom_only) |
967 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
965 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
968 |
struct fbcon_ops *ops = info->fbcon_par; |
966 |
struct fbcon_ops *ops = info->fbcon_par; |
969 |
|
967 |
|
Lines 979-985
Link Here
|
979 |
} |
977 |
} |
980 |
|
978 |
|
981 |
static void fbcon_cursor(struct vc_data *vc, int mode) |
979 |
static void fbcon_cursor(struct vc_data *vc, int mode) |
982 |
@@ -1387,7 +1412,7 @@ static __inline__ void ywrap_up(struct vc_data *vc, int count) |
980 |
@@ -1394,7 +1419,7 @@ static __inline__ void ywrap_up(struct vc_data *vc, int count) |
983 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
981 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
984 |
struct fbcon_ops *ops = info->fbcon_par; |
982 |
struct fbcon_ops *ops = info->fbcon_par; |
985 |
struct display *p = &fb_display[vc->vc_num]; |
983 |
struct display *p = &fb_display[vc->vc_num]; |
Lines 988-994
Link Here
|
988 |
p->yscroll += count; |
986 |
p->yscroll += count; |
989 |
if (p->yscroll >= p->vrows) /* Deal with wrap */ |
987 |
if (p->yscroll >= p->vrows) /* Deal with wrap */ |
990 |
p->yscroll -= p->vrows; |
988 |
p->yscroll -= p->vrows; |
991 |
@@ -1406,7 +1431,7 @@ static __inline__ void ywrap_down(struct vc_data *vc, int count) |
989 |
@@ -1413,7 +1438,7 @@ static __inline__ void ywrap_down(struct vc_data *vc, int count) |
992 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
990 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
993 |
struct fbcon_ops *ops = info->fbcon_par; |
991 |
struct fbcon_ops *ops = info->fbcon_par; |
994 |
struct display *p = &fb_display[vc->vc_num]; |
992 |
struct display *p = &fb_display[vc->vc_num]; |
Lines 997-1003
Link Here
|
997 |
p->yscroll -= count; |
995 |
p->yscroll -= count; |
998 |
if (p->yscroll < 0) /* Deal with wrap */ |
996 |
if (p->yscroll < 0) /* Deal with wrap */ |
999 |
p->yscroll += p->vrows; |
997 |
p->yscroll += p->vrows; |
1000 |
@@ -1473,7 +1498,7 @@ static __inline__ void ypan_down(struct vc_data *vc, int count) |
998 |
@@ -1480,7 +1505,7 @@ static __inline__ void ypan_down(struct vc_data *vc, int count) |
1001 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
999 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
1002 |
struct display *p = &fb_display[vc->vc_num]; |
1000 |
struct display *p = &fb_display[vc->vc_num]; |
1003 |
struct fbcon_ops *ops = info->fbcon_par; |
1001 |
struct fbcon_ops *ops = info->fbcon_par; |
Lines 1006-1012
Link Here
|
1006 |
p->yscroll -= count; |
1004 |
p->yscroll -= count; |
1007 |
if (p->yscroll < 0) { |
1005 |
if (p->yscroll < 0) { |
1008 |
ops->bmove(vc, info, 0, 0, p->vrows - vc->vc_rows, |
1006 |
ops->bmove(vc, info, 0, 0, p->vrows - vc->vc_rows, |
1009 |
@@ -1797,7 +1822,7 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir, |
1007 |
@@ -1804,7 +1829,7 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir, |
1010 |
count = vc->vc_rows; |
1008 |
count = vc->vc_rows; |
1011 |
if (softback_top) |
1009 |
if (softback_top) |
1012 |
fbcon_softback_note(vc, t, count); |
1010 |
fbcon_softback_note(vc, t, count); |
Lines 1015-1021
Link Here
|
1015 |
goto redraw_up; |
1013 |
goto redraw_up; |
1016 |
switch (p->scrollmode) { |
1014 |
switch (p->scrollmode) { |
1017 |
case SCROLL_MOVE: |
1015 |
case SCROLL_MOVE: |
1018 |
@@ -1890,6 +1915,8 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir, |
1016 |
@@ -1897,6 +1922,8 @@ static int fbcon_scroll(struct vc_data *vc, int t, int b, int dir, |
1019 |
count = vc->vc_rows; |
1017 |
count = vc->vc_rows; |
1020 |
if (logo_shown >= 0) |
1018 |
if (logo_shown >= 0) |
1021 |
goto redraw_down; |
1019 |
goto redraw_down; |
Lines 1024-1030
Link Here
|
1024 |
switch (p->scrollmode) { |
1022 |
switch (p->scrollmode) { |
1025 |
case SCROLL_MOVE: |
1023 |
case SCROLL_MOVE: |
1026 |
fbcon_redraw_blit(vc, info, p, b - 1, b - t - count, |
1024 |
fbcon_redraw_blit(vc, info, p, b - 1, b - t - count, |
1027 |
@@ -1982,7 +2009,7 @@ static void fbcon_bmove(struct vc_data *vc, int sy, int sx, int dy, int dx, |
1025 |
@@ -1989,7 +2016,7 @@ static void fbcon_bmove(struct vc_data *vc, int sy, int sx, int dy, int dx, |
1028 |
{ |
1026 |
{ |
1029 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
1027 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
1030 |
struct display *p = &fb_display[vc->vc_num]; |
1028 |
struct display *p = &fb_display[vc->vc_num]; |
Lines 1033-1039
Link Here
|
1033 |
if (fbcon_is_inactive(vc, info)) |
1031 |
if (fbcon_is_inactive(vc, info)) |
1034 |
return; |
1032 |
return; |
1035 |
|
1033 |
|
1036 |
@@ -2000,7 +2027,7 @@ static void fbcon_bmove(struct vc_data *vc, int sy, int sx, int dy, int dx, |
1034 |
@@ -2007,7 +2034,7 @@ static void fbcon_bmove(struct vc_data *vc, int sy, int sx, int dy, int dx, |
1037 |
p->vrows - p->yscroll); |
1035 |
p->vrows - p->yscroll); |
1038 |
} |
1036 |
} |
1039 |
|
1037 |
|
Lines 1042-1048
Link Here
|
1042 |
int dy, int dx, int height, int width, u_int y_break) |
1040 |
int dy, int dx, int height, int width, u_int y_break) |
1043 |
{ |
1041 |
{ |
1044 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
1042 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
1045 |
@@ -2038,6 +2065,13 @@ static void fbcon_bmove_rec(struct vc_data *vc, struct display *p, int sy, int s |
1043 |
@@ -2045,6 +2072,13 @@ static void fbcon_bmove_rec(struct vc_data *vc, struct display *p, int sy, int s |
1046 |
} |
1044 |
} |
1047 |
return; |
1045 |
return; |
1048 |
} |
1046 |
} |
Lines 1056-1062
Link Here
|
1056 |
ops->bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx, |
1054 |
ops->bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx, |
1057 |
height, width); |
1055 |
height, width); |
1058 |
} |
1056 |
} |
1059 |
@@ -2089,7 +2123,7 @@ static void updatescrollmode(struct display *p, |
1057 |
@@ -2096,7 +2130,7 @@ static void updatescrollmode(struct display *p, |
1060 |
} |
1058 |
} |
1061 |
} |
1059 |
} |
1062 |
|
1060 |
|
Lines 1065-1071
Link Here
|
1065 |
unsigned int height, unsigned int user) |
1063 |
unsigned int height, unsigned int user) |
1066 |
{ |
1064 |
{ |
1067 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
1065 |
struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; |
1068 |
@@ -2108,8 +2142,8 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width, |
1066 |
@@ -2115,8 +2149,8 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width, |
1069 |
var.yres = virt_h * virt_fh; |
1067 |
var.yres = virt_h * virt_fh; |
1070 |
x_diff = info->var.xres - var.xres; |
1068 |
x_diff = info->var.xres - var.xres; |
1071 |
y_diff = info->var.yres - var.yres; |
1069 |
y_diff = info->var.yres - var.yres; |
Lines 1076-1082
Link Here
|
1076 |
const struct fb_videomode *mode; |
1074 |
const struct fb_videomode *mode; |
1077 |
|
1075 |
|
1078 |
DPRINTK("attempting resize %ix%i\n", var.xres, var.yres); |
1076 |
DPRINTK("attempting resize %ix%i\n", var.xres, var.yres); |
1079 |
@@ -2145,6 +2179,21 @@ static int fbcon_switch(struct vc_data *vc) |
1077 |
@@ -2152,6 +2186,21 @@ static int fbcon_switch(struct vc_data *vc) |
1080 |
|
1078 |
|
1081 |
info = registered_fb[con2fb_map[vc->vc_num]]; |
1079 |
info = registered_fb[con2fb_map[vc->vc_num]]; |
1082 |
ops = info->fbcon_par; |
1080 |
ops = info->fbcon_par; |
Lines 1098-1104
Link Here
|
1098 |
|
1096 |
|
1099 |
if (softback_top) { |
1097 |
if (softback_top) { |
1100 |
if (softback_lines) |
1098 |
if (softback_lines) |
1101 |
@@ -2163,9 +2212,6 @@ static int fbcon_switch(struct vc_data *vc) |
1099 |
@@ -2170,9 +2219,6 @@ static int fbcon_switch(struct vc_data *vc) |
1102 |
logo_shown = FBCON_LOGO_CANSHOW; |
1100 |
logo_shown = FBCON_LOGO_CANSHOW; |
1103 |
} |
1101 |
} |
1104 |
|
1102 |
|
Lines 1108-1114
Link Here
|
1108 |
/* |
1106 |
/* |
1109 |
* FIXME: If we have multiple fbdev's loaded, we need to |
1107 |
* FIXME: If we have multiple fbdev's loaded, we need to |
1110 |
* update all info->currcon. Perhaps, we can place this |
1108 |
* update all info->currcon. Perhaps, we can place this |
1111 |
@@ -2209,6 +2255,18 @@ static int fbcon_switch(struct vc_data *vc) |
1109 |
@@ -2216,6 +2262,18 @@ static int fbcon_switch(struct vc_data *vc) |
1112 |
fbcon_del_cursor_timer(old_info); |
1110 |
fbcon_del_cursor_timer(old_info); |
1113 |
} |
1111 |
} |
1114 |
|
1112 |
|
Lines 1127-1133
Link Here
|
1127 |
if (fbcon_is_inactive(vc, info) || |
1125 |
if (fbcon_is_inactive(vc, info) || |
1128 |
ops->blank_state != FB_BLANK_UNBLANK) |
1126 |
ops->blank_state != FB_BLANK_UNBLANK) |
1129 |
fbcon_del_cursor_timer(info); |
1127 |
fbcon_del_cursor_timer(info); |
1130 |
@@ -2257,11 +2315,10 @@ static int fbcon_switch(struct vc_data *vc) |
1128 |
@@ -2264,11 +2322,10 @@ static int fbcon_switch(struct vc_data *vc) |
1131 |
ops->update_start(info); |
1129 |
ops->update_start(info); |
1132 |
} |
1130 |
} |
1133 |
|
1131 |
|
Lines 1140-1146
Link Here
|
1140 |
logo_shown = fg_console; |
1138 |
logo_shown = fg_console; |
1141 |
/* This is protected above by initmem_freed */ |
1139 |
/* This is protected above by initmem_freed */ |
1142 |
fb_show_logo(info, ops->rotate); |
1140 |
fb_show_logo(info, ops->rotate); |
1143 |
@@ -2317,15 +2374,20 @@ static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch) |
1141 |
@@ -2324,15 +2381,20 @@ static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch) |
1144 |
} |
1142 |
} |
1145 |
} |
1143 |
} |
1146 |
|
1144 |
|
Lines 1165-1171
Link Here
|
1165 |
} |
1163 |
} |
1166 |
|
1164 |
|
1167 |
if (!blank) |
1165 |
if (!blank) |
1168 |
@@ -2447,7 +2509,7 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h, |
1166 |
@@ -2454,7 +2516,7 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h, |
1169 |
vc->vc_complement_mask >>= 1; |
1167 |
vc->vc_complement_mask >>= 1; |
1170 |
vc->vc_s_complement_mask >>= 1; |
1168 |
vc->vc_s_complement_mask >>= 1; |
1171 |
} |
1169 |
} |
Lines 1174-1180
Link Here
|
1174 |
/* ++Edmund: reorder the attribute bits */ |
1172 |
/* ++Edmund: reorder the attribute bits */ |
1175 |
if (vc->vc_can_do_color) { |
1173 |
if (vc->vc_can_do_color) { |
1176 |
unsigned short *cp = |
1174 |
unsigned short *cp = |
1177 |
@@ -2470,7 +2532,7 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h, |
1175 |
@@ -2477,7 +2539,7 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h, |
1178 |
vc->vc_complement_mask <<= 1; |
1176 |
vc->vc_complement_mask <<= 1; |
1179 |
vc->vc_s_complement_mask <<= 1; |
1177 |
vc->vc_s_complement_mask <<= 1; |
1180 |
} |
1178 |
} |
Lines 1183-1189
Link Here
|
1183 |
/* ++Edmund: reorder the attribute bits */ |
1181 |
/* ++Edmund: reorder the attribute bits */ |
1184 |
{ |
1182 |
{ |
1185 |
unsigned short *cp = |
1183 |
unsigned short *cp = |
1186 |
@@ -2500,13 +2562,22 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h, |
1184 |
@@ -2507,13 +2569,22 @@ static int fbcon_do_set_font(struct vc_data *vc, int w, int h, |
1187 |
} |
1185 |
} |
1188 |
|
1186 |
|
1189 |
if (resize) { |
1187 |
if (resize) { |
Lines 1206-1212
Link Here
|
1206 |
if (CON_IS_VISIBLE(vc) && softback_buf) |
1204 |
if (CON_IS_VISIBLE(vc) && softback_buf) |
1207 |
fbcon_update_softback(vc); |
1205 |
fbcon_update_softback(vc); |
1208 |
} else if (CON_IS_VISIBLE(vc) |
1206 |
} else if (CON_IS_VISIBLE(vc) |
1209 |
@@ -2590,7 +2661,7 @@ static int fbcon_set_font(struct vc_data *vc, struct console_font *font, unsigne |
1207 |
@@ -2597,7 +2661,7 @@ static int fbcon_set_font(struct vc_data *vc, struct console_font *font, unsigne |
1210 |
/* Check if the same font is on some other console already */ |
1208 |
/* Check if the same font is on some other console already */ |
1211 |
for (i = first_fb_vc; i <= last_fb_vc; i++) { |
1209 |
for (i = first_fb_vc; i <= last_fb_vc; i++) { |
1212 |
struct vc_data *tmp = vc_cons[i].d; |
1210 |
struct vc_data *tmp = vc_cons[i].d; |
Lines 1215-1221
Link Here
|
1215 |
if (fb_display[i].userfont && |
1213 |
if (fb_display[i].userfont && |
1216 |
fb_display[i].fontdata && |
1214 |
fb_display[i].fontdata && |
1217 |
FNTSUM(fb_display[i].fontdata) == csum && |
1215 |
FNTSUM(fb_display[i].fontdata) == csum && |
1218 |
@@ -2635,7 +2706,11 @@ static int fbcon_set_palette(struct vc_data *vc, unsigned char *table) |
1216 |
@@ -2642,7 +2713,11 @@ static int fbcon_set_palette(struct vc_data *vc, unsigned char *table) |
1219 |
int i, j, k, depth; |
1217 |
int i, j, k, depth; |
1220 |
u8 val; |
1218 |
u8 val; |
1221 |
|
1219 |
|
Lines 1228-1234
Link Here
|
1228 |
return -EINVAL; |
1226 |
return -EINVAL; |
1229 |
|
1227 |
|
1230 |
if (!CON_IS_VISIBLE(vc)) |
1228 |
if (!CON_IS_VISIBLE(vc)) |
1231 |
@@ -2661,14 +2736,56 @@ static int fbcon_set_palette(struct vc_data *vc, unsigned char *table) |
1229 |
@@ -2668,14 +2743,56 @@ static int fbcon_set_palette(struct vc_data *vc, unsigned char *table) |
1232 |
} else |
1230 |
} else |
1233 |
fb_copy_cmap(fb_default_cmap(1 << depth), &palette_cmap); |
1231 |
fb_copy_cmap(fb_default_cmap(1 << depth), &palette_cmap); |
1234 |
|
1232 |
|
Lines 1287-1293
Link Here
|
1287 |
if (vc->vc_num != fg_console || !softback_lines) |
1285 |
if (vc->vc_num != fg_console || !softback_lines) |
1288 |
return (u16 *) (vc->vc_origin + offset); |
1286 |
return (u16 *) (vc->vc_origin + offset); |
1289 |
line = offset / vc->vc_size_row; |
1287 |
line = offset / vc->vc_size_row; |
1290 |
@@ -2887,7 +3004,14 @@ static void fbcon_modechanged(struct fb_info *info) |
1288 |
@@ -2894,7 +3011,14 @@ static void fbcon_modechanged(struct fb_info *info) |
1291 |
rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres); |
1289 |
rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres); |
1292 |
cols /= vc->vc_font.width; |
1290 |
cols /= vc->vc_font.width; |
1293 |
rows /= vc->vc_font.height; |
1291 |
rows /= vc->vc_font.height; |
Lines 1303-1309
Link Here
|
1303 |
updatescrollmode(p, info, vc); |
1301 |
updatescrollmode(p, info, vc); |
1304 |
scrollback_max = 0; |
1302 |
scrollback_max = 0; |
1305 |
scrollback_current = 0; |
1303 |
scrollback_current = 0; |
1306 |
@@ -2932,7 +3056,9 @@ static void fbcon_set_all_vcs(struct fb_info *info) |
1304 |
@@ -2939,7 +3063,9 @@ static void fbcon_set_all_vcs(struct fb_info *info) |
1307 |
rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres); |
1305 |
rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres); |
1308 |
cols /= vc->vc_font.width; |
1306 |
cols /= vc->vc_font.width; |
1309 |
rows /= vc->vc_font.height; |
1307 |
rows /= vc->vc_font.height; |
Lines 1314-1320
Link Here
|
1314 |
} |
1312 |
} |
1315 |
|
1313 |
|
1316 |
if (fg != -1) |
1314 |
if (fg != -1) |
1317 |
@@ -3542,6 +3668,7 @@ static void fbcon_exit(void) |
1315 |
@@ -3549,6 +3675,7 @@ static void fbcon_exit(void) |
1318 |
} |
1316 |
} |
1319 |
} |
1317 |
} |
1320 |
|
1318 |
|
Lines 1322-1328
Link Here
|
1322 |
fbcon_has_exited = 1; |
1320 |
fbcon_has_exited = 1; |
1323 |
} |
1321 |
} |
1324 |
|
1322 |
|
1325 |
@@ -3595,7 +3722,7 @@ static void __exit fb_console_exit(void) |
1323 |
@@ -3602,7 +3729,7 @@ static void __exit fb_console_exit(void) |
1326 |
fbcon_exit(); |
1324 |
fbcon_exit(); |
1327 |
console_unlock(); |
1325 |
console_unlock(); |
1328 |
unregister_con_driver(&fb_con); |
1326 |
unregister_con_driver(&fb_con); |
Lines 2014-2020
Link Here
|
2014 |
index c6ce416..7ce6640 100644 |
2012 |
index c6ce416..7ce6640 100644 |
2015 |
--- a/drivers/video/fbmem.c |
2013 |
--- a/drivers/video/fbmem.c |
2016 |
+++ b/drivers/video/fbmem.c |
2014 |
+++ b/drivers/video/fbmem.c |
2017 |
@@ -1222,15 +1222,6 @@ struct fb_fix_screeninfo32 { |
2015 |
@@ -1231,15 +1231,6 @@ struct fb_fix_screeninfo32 { |
2018 |
u16 reserved[3]; |
2016 |
u16 reserved[3]; |
2019 |
}; |
2017 |
}; |
2020 |
|
2018 |
|
Lines 2103-2113
Link Here
|
2103 |
/* additional information is in vt_kern.h */ |
2101 |
/* additional information is in vt_kern.h */ |
2104 |
}; |
2102 |
}; |
2105 |
|
2103 |
|
2106 |
diff --git a/include/linux/fb.h b/include/linux/fb.h |
2104 |
diff --git a/include/uapi/linux/fb.h b/include/uapi/linux/fb.h |
2107 |
index d31cb68..ad161bb 100644 |
2105 |
index d31cb68..ad161bb 100644 |
2108 |
--- a/include/linux/fb.h |
2106 |
--- a/include/uapi/linux/fb.h |
2109 |
+++ b/include/linux/fb.h |
2107 |
+++ b/include/uapi/linux/fb.h |
2110 |
@@ -11,6 +11,25 @@ |
2108 |
@@ -8,6 +8,25 @@ |
2111 |
|
2109 |
|
2112 |
#define FB_MAX 32 /* sufficient for now */ |
2110 |
#define FB_MAX 32 /* sufficient for now */ |
2113 |
|
2111 |
|
Lines 2133-2139
Link Here
|
2133 |
/* ioctls |
2131 |
/* ioctls |
2134 |
0x46 is 'F' */ |
2132 |
0x46 is 'F' */ |
2135 |
#define FBIOGET_VSCREENINFO 0x4600 |
2133 |
#define FBIOGET_VSCREENINFO 0x4600 |
2136 |
@@ -39,6 +58,24 @@ |
2134 |
@@ -34,6 +53,24 @@ |
2137 |
#define FBIOPUT_MODEINFO 0x4617 |
2135 |
#define FBIOPUT_MODEINFO 0x4617 |
2138 |
#define FBIOGET_DISPINFO 0x4618 |
2136 |
#define FBIOGET_DISPINFO 0x4618 |
2139 |
#define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32) |
2137 |
#define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32) |
Lines 2158-2164
Link Here
|
2158 |
|
2156 |
|
2159 |
#define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ |
2157 |
#define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ |
2160 |
#define FB_TYPE_PLANES 1 /* Non interleaved planes */ |
2158 |
#define FB_TYPE_PLANES 1 /* Non interleaved planes */ |
2161 |
@@ -291,6 +328,28 @@ struct fb_cmap { |
2159 |
@@ -286,6 +323,28 @@ struct fb_cmap { |
2162 |
__u16 *transp; /* transparency, can be NULL */ |
2160 |
__u16 *transp; /* transparency, can be NULL */ |
2163 |
}; |
2161 |
}; |
2164 |
|
2162 |
|
Lines 2187-2193
Link Here
|
2187 |
struct fb_con2fbmap { |
2185 |
struct fb_con2fbmap { |
2188 |
__u32 console; |
2186 |
__u32 console; |
2189 |
__u32 framebuffer; |
2187 |
__u32 framebuffer; |
2190 |
@@ -372,6 +431,34 @@ struct fb_image { |
2188 |
@@ -367,6 +426,34 @@ struct fb_image { |
2191 |
struct fb_cmap cmap; /* color map info */ |
2189 |
struct fb_cmap cmap; /* color map info */ |
2192 |
}; |
2190 |
}; |
2193 |
|
2191 |
|
Lines 2222-2229
Link Here
|
2222 |
/* |
2220 |
/* |
2223 |
* hardware cursor control |
2221 |
* hardware cursor control |
2224 |
*/ |
2222 |
*/ |
2225 |
@@ -881,6 +968,9 @@ struct fb_info { |
2223 |
|
2226 |
#define FBINFO_STATE_SUSPENDED 1 |
2224 |
diff --git a/include/linux/fb.h b/include/linux/fb.h |
|
|
2225 |
index d31cb68..ad161bb 100644 |
2226 |
--- a/include/linux/fb.h |
2227 |
+++ b/include/linux/fb.h |
2228 |
@@ -488,5 +488,8 @@ #define FBINFO_STATE_SUSPENDED 1 |
2227 |
u32 state; /* Hardware state i.e suspend */ |
2229 |
u32 state; /* Hardware state i.e suspend */ |
2228 |
void *fbcon_par; /* fbcon use-only private area */ |
2230 |
void *fbcon_par; /* fbcon use-only private area */ |
2229 |
+ |
2231 |
+ |
Lines 2232-2242
Link Here
|
2232 |
/* From here on everything is device dependent */ |
2234 |
/* From here on everything is device dependent */ |
2233 |
void *par; |
2235 |
void *par; |
2234 |
/* we need the PCI or similar aperture base/size not |
2236 |
/* we need the PCI or similar aperture base/size not |
|
|
2237 |
|
2235 |
diff --git a/kernel/sysctl.c b/kernel/sysctl.c |
2238 |
diff --git a/kernel/sysctl.c b/kernel/sysctl.c |
2236 |
index 4ab1187..6561627 100644 |
2239 |
index 4ab1187..6561627 100644 |
2237 |
--- a/kernel/sysctl.c |
2240 |
--- a/kernel/sysctl.c |
2238 |
+++ b/kernel/sysctl.c |
2241 |
+++ b/kernel/sysctl.c |
2239 |
@@ -142,6 +142,10 @@ static int min_percpu_pagelist_fract = 8; |
2242 |
@@ -145,6 +145,10 @@ static int min_percpu_pagelist_fract = 8; |
2240 |
static int ngroups_max = NGROUPS_MAX; |
2243 |
static int ngroups_max = NGROUPS_MAX; |
2241 |
static const int cap_last_cap = CAP_LAST_CAP; |
2244 |
static const int cap_last_cap = CAP_LAST_CAP; |
2242 |
|
2245 |
|
Lines 2247-2253
Link Here
|
2247 |
#ifdef CONFIG_INOTIFY_USER |
2250 |
#ifdef CONFIG_INOTIFY_USER |
2248 |
#include <linux/inotify.h> |
2251 |
#include <linux/inotify.h> |
2249 |
#endif |
2252 |
#endif |
2250 |
@@ -238,6 +242,15 @@ static struct ctl_table sysctl_base_table[] = { |
2253 |
@@ -248,6 +252,15 @@ static struct ctl_table sysctl_base_table[] = { |
2251 |
.mode = 0555, |
2254 |
.mode = 0555, |
2252 |
.child = dev_table, |
2255 |
.child = dev_table, |
2253 |
}, |
2256 |
}, |
Lines 2263-2269
Link Here
|
2263 |
{ } |
2266 |
{ } |
2264 |
}; |
2267 |
}; |
2265 |
|
2268 |
|
2266 |
@@ -1038,7 +1051,7 @@ static struct ctl_table vm_table[] = { |
2269 |
@@ -1091,7 +1104,7 @@ static struct ctl_table vm_table[] = { |
2267 |
.proc_handler = proc_dointvec, |
2270 |
.proc_handler = proc_dointvec, |
2268 |
}, |
2271 |
}, |
2269 |
{ |
2272 |
{ |
Lines 2272-2278
Link Here
|
2272 |
.data = &page_cluster, |
2275 |
.data = &page_cluster, |
2273 |
.maxlen = sizeof(int), |
2276 |
.maxlen = sizeof(int), |
2274 |
.mode = 0644, |
2277 |
.mode = 0644, |
2275 |
@@ -1484,7 +1497,7 @@ static struct ctl_table fs_table[] = { |
2278 |
@@ -1535,7 +1548,7 @@ static struct ctl_table fs_table[] = { |
2276 |
.mode = 0555, |
2279 |
.mode = 0555, |
2277 |
.child = inotify_table, |
2280 |
.child = inotify_table, |
2278 |
}, |
2281 |
}, |
Lines 2281-2287
Link Here
|
2281 |
#ifdef CONFIG_EPOLL |
2284 |
#ifdef CONFIG_EPOLL |
2282 |
{ |
2285 |
{ |
2283 |
.procname = "epoll", |
2286 |
.procname = "epoll", |
2284 |
@@ -1802,12 +1815,12 @@ static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table, |
2287 |
@@ -1873,12 +1886,12 @@ static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table, |
2285 |
unsigned long page = 0; |
2288 |
unsigned long page = 0; |
2286 |
size_t left; |
2289 |
size_t left; |
2287 |
char *kbuf; |
2290 |
char *kbuf; |
Lines 2296-2302
Link Here
|
2296 |
i = (int *) tbl_data; |
2299 |
i = (int *) tbl_data; |
2297 |
vleft = table->maxlen / sizeof(*i); |
2300 |
vleft = table->maxlen / sizeof(*i); |
2298 |
left = *lenp; |
2301 |
left = *lenp; |
2299 |
@@ -1896,7 +1909,7 @@ static int do_proc_dointvec(struct ctl_table *table, int write, |
2302 |
@@ -1967,7 +1980,7 @@ static int do_proc_dointvec(struct ctl_table *table, int write, |
2300 |
* @ppos: file position |
2303 |
* @ppos: file position |
2301 |
* |
2304 |
* |
2302 |
* Reads/writes up to table->maxlen/sizeof(unsigned int) integer |
2305 |
* Reads/writes up to table->maxlen/sizeof(unsigned int) integer |
Lines 2305-2311
Link Here
|
2305 |
* |
2308 |
* |
2306 |
* Returns 0 on success. |
2309 |
* Returns 0 on success. |
2307 |
*/ |
2310 |
*/ |
2308 |
@@ -2223,7 +2236,7 @@ static int do_proc_dointvec_ms_jiffies_conv(bool *negp, unsigned long *lvalp, |
2311 |
@@ -2326,7 +2339,7 @@ static int do_proc_dointvec_ms_jiffies_conv(bool *negp, unsigned long *lvalp, |
2309 |
* @ppos: file position |
2312 |
* @ppos: file position |
2310 |
* |
2313 |
* |
2311 |
* Reads/writes up to table->maxlen/sizeof(unsigned int) integer |
2314 |
* Reads/writes up to table->maxlen/sizeof(unsigned int) integer |
Lines 2314-2320
Link Here
|
2314 |
* The values read are assumed to be in seconds, and are converted into |
2317 |
* The values read are assumed to be in seconds, and are converted into |
2315 |
* jiffies. |
2318 |
* jiffies. |
2316 |
* |
2319 |
* |
2317 |
@@ -2245,8 +2258,8 @@ int proc_dointvec_jiffies(struct ctl_table *table, int write, |
2320 |
@@ -2348,8 +2361,8 @@ int proc_dointvec_jiffies(struct ctl_table *table, int write, |
2318 |
* @ppos: pointer to the file position |
2321 |
* @ppos: pointer to the file position |
2319 |
* |
2322 |
* |
2320 |
* Reads/writes up to table->maxlen/sizeof(unsigned int) integer |
2323 |
* Reads/writes up to table->maxlen/sizeof(unsigned int) integer |
Lines 2325-2331
Link Here
|
2325 |
* are converted into jiffies. |
2328 |
* are converted into jiffies. |
2326 |
* |
2329 |
* |
2327 |
* Returns 0 on success. |
2330 |
* Returns 0 on success. |
2328 |
@@ -2268,8 +2281,8 @@ int proc_dointvec_userhz_jiffies(struct ctl_table *table, int write, |
2331 |
@@ -2371,8 +2384,8 @@ int proc_dointvec_userhz_jiffies(struct ctl_table *table, int write, |
2329 |
* @ppos: the current position in the file |
2332 |
* @ppos: the current position in the file |
2330 |
* |
2333 |
* |
2331 |
* Reads/writes up to table->maxlen/sizeof(unsigned int) integer |
2334 |
* Reads/writes up to table->maxlen/sizeof(unsigned int) integer |