diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-05 19:00:44 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-05 19:00:44 -0400 |
commit | 9779714c8af09d57527f18d9aa2207dcc27a8687 (patch) | |
tree | 52182f2289d9b7a77fbe119f4cd5726ef6494e66 /drivers/video | |
parent | 89a6c8cb9e6e11b6e3671dce7e037789b8f7cf62 (diff) | |
parent | 65b5ac1479840a3e87f086d68e5ef91f3002e8e2 (diff) |
Merge branch 'kms-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb
* 'kms-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb:
kgdb,docs: Update the kgdb docs to include kms
drm_fb_helper: Preserve capability to use atomic kms
i915: when kgdb is active display compression should be off
drm/i915: use new fb debug hooks
drm: add KGDB/KDB support
fb: add hooks to handle KDB enter/exit
kgdboc: Add call backs to allow kernel mode switching
vt,console,kdb: automatically set kdb LINES variable
vt,console,kdb: implement atomic console enter/leave functions
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/console/fbcon.c | 26 | ||||
-rw-r--r-- | drivers/video/console/fbcon.h | 1 |
2 files changed, 27 insertions, 0 deletions
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index b0a3fa00706d..3b3f5749af92 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c | |||
@@ -2342,6 +2342,30 @@ static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch) | |||
2342 | return 0; | 2342 | return 0; |
2343 | } | 2343 | } |
2344 | 2344 | ||
2345 | static int fbcon_debug_enter(struct vc_data *vc) | ||
2346 | { | ||
2347 | struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; | ||
2348 | struct fbcon_ops *ops = info->fbcon_par; | ||
2349 | |||
2350 | ops->save_graphics = ops->graphics; | ||
2351 | ops->graphics = 0; | ||
2352 | if (info->fbops->fb_debug_enter) | ||
2353 | info->fbops->fb_debug_enter(info); | ||
2354 | fbcon_set_palette(vc, color_table); | ||
2355 | return 0; | ||
2356 | } | ||
2357 | |||
2358 | static int fbcon_debug_leave(struct vc_data *vc) | ||
2359 | { | ||
2360 | struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; | ||
2361 | struct fbcon_ops *ops = info->fbcon_par; | ||
2362 | |||
2363 | ops->graphics = ops->save_graphics; | ||
2364 | if (info->fbops->fb_debug_leave) | ||
2365 | info->fbops->fb_debug_leave(info); | ||
2366 | return 0; | ||
2367 | } | ||
2368 | |||
2345 | static int fbcon_get_font(struct vc_data *vc, struct console_font *font) | 2369 | static int fbcon_get_font(struct vc_data *vc, struct console_font *font) |
2346 | { | 2370 | { |
2347 | u8 *fontdata = vc->vc_font.data; | 2371 | u8 *fontdata = vc->vc_font.data; |
@@ -3276,6 +3300,8 @@ static const struct consw fb_con = { | |||
3276 | .con_screen_pos = fbcon_screen_pos, | 3300 | .con_screen_pos = fbcon_screen_pos, |
3277 | .con_getxy = fbcon_getxy, | 3301 | .con_getxy = fbcon_getxy, |
3278 | .con_resize = fbcon_resize, | 3302 | .con_resize = fbcon_resize, |
3303 | .con_debug_enter = fbcon_debug_enter, | ||
3304 | .con_debug_leave = fbcon_debug_leave, | ||
3279 | }; | 3305 | }; |
3280 | 3306 | ||
3281 | static struct notifier_block fbcon_event_notifier = { | 3307 | static struct notifier_block fbcon_event_notifier = { |
diff --git a/drivers/video/console/fbcon.h b/drivers/video/console/fbcon.h index 89a346880ec0..6bd2e0c7f209 100644 --- a/drivers/video/console/fbcon.h +++ b/drivers/video/console/fbcon.h | |||
@@ -74,6 +74,7 @@ struct fbcon_ops { | |||
74 | int cursor_reset; | 74 | int cursor_reset; |
75 | int blank_state; | 75 | int blank_state; |
76 | int graphics; | 76 | int graphics; |
77 | int save_graphics; /* for debug enter/leave */ | ||
77 | int flags; | 78 | int flags; |
78 | int rotate; | 79 | int rotate; |
79 | int cur_rotate; | 80 | int cur_rotate; |