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 /include | |
| 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 'include')
| -rw-r--r-- | include/drm/drm_crtc_helper.h | 2 | ||||
| -rw-r--r-- | include/drm/drm_fb_helper.h | 5 | ||||
| -rw-r--r-- | include/linux/console.h | 13 | ||||
| -rw-r--r-- | include/linux/fb.h | 13 | ||||
| -rw-r--r-- | include/linux/kdb.h | 4 |
5 files changed, 37 insertions, 0 deletions
diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h index 1121f7799c6f..10f7d03e58a9 100644 --- a/include/drm/drm_crtc_helper.h +++ b/include/drm/drm_crtc_helper.h | |||
| @@ -60,6 +60,8 @@ struct drm_crtc_helper_funcs { | |||
| 60 | /* Move the crtc on the current fb to the given position *optional* */ | 60 | /* Move the crtc on the current fb to the given position *optional* */ |
| 61 | int (*mode_set_base)(struct drm_crtc *crtc, int x, int y, | 61 | int (*mode_set_base)(struct drm_crtc *crtc, int x, int y, |
| 62 | struct drm_framebuffer *old_fb); | 62 | struct drm_framebuffer *old_fb); |
| 63 | int (*mode_set_base_atomic)(struct drm_crtc *crtc, | ||
| 64 | struct drm_framebuffer *fb, int x, int y); | ||
| 63 | 65 | ||
| 64 | /* reload the current crtc LUT */ | 66 | /* reload the current crtc LUT */ |
| 65 | void (*load_lut)(struct drm_crtc *crtc); | 67 | void (*load_lut)(struct drm_crtc *crtc); |
diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index f0a6afc47e76..f22e7fe4b6db 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h | |||
| @@ -32,6 +32,8 @@ | |||
| 32 | 32 | ||
| 33 | struct drm_fb_helper; | 33 | struct drm_fb_helper; |
| 34 | 34 | ||
| 35 | #include <linux/kgdb.h> | ||
| 36 | |||
| 35 | struct drm_fb_helper_crtc { | 37 | struct drm_fb_helper_crtc { |
| 36 | uint32_t crtc_id; | 38 | uint32_t crtc_id; |
| 37 | struct drm_mode_set mode_set; | 39 | struct drm_mode_set mode_set; |
| @@ -78,6 +80,7 @@ struct drm_fb_helper_connector { | |||
| 78 | 80 | ||
| 79 | struct drm_fb_helper { | 81 | struct drm_fb_helper { |
| 80 | struct drm_framebuffer *fb; | 82 | struct drm_framebuffer *fb; |
| 83 | struct drm_framebuffer *saved_fb; | ||
| 81 | struct drm_device *dev; | 84 | struct drm_device *dev; |
| 82 | struct drm_display_mode *mode; | 85 | struct drm_display_mode *mode; |
| 83 | int crtc_count; | 86 | int crtc_count; |
| @@ -126,5 +129,7 @@ int drm_fb_helper_setcmap(struct fb_cmap *cmap, struct fb_info *info); | |||
| 126 | bool drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper); | 129 | bool drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper); |
| 127 | bool drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel); | 130 | bool drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel); |
| 128 | int drm_fb_helper_single_add_all_connectors(struct drm_fb_helper *fb_helper); | 131 | int drm_fb_helper_single_add_all_connectors(struct drm_fb_helper *fb_helper); |
| 132 | int drm_fb_helper_debug_enter(struct fb_info *info); | ||
| 133 | int drm_fb_helper_debug_leave(struct fb_info *info); | ||
| 129 | 134 | ||
| 130 | #endif | 135 | #endif |
diff --git a/include/linux/console.h b/include/linux/console.h index dcca5339ceb3..f76fc297322d 100644 --- a/include/linux/console.h +++ b/include/linux/console.h | |||
| @@ -55,6 +55,16 @@ struct consw { | |||
| 55 | void (*con_invert_region)(struct vc_data *, u16 *, int); | 55 | void (*con_invert_region)(struct vc_data *, u16 *, int); |
| 56 | u16 *(*con_screen_pos)(struct vc_data *, int); | 56 | u16 *(*con_screen_pos)(struct vc_data *, int); |
| 57 | unsigned long (*con_getxy)(struct vc_data *, unsigned long, int *, int *); | 57 | unsigned long (*con_getxy)(struct vc_data *, unsigned long, int *, int *); |
| 58 | /* | ||
| 59 | * Prepare the console for the debugger. This includes, but is not | ||
| 60 | * limited to, unblanking the console, loading an appropriate | ||
| 61 | * palette, and allowing debugger generated output. | ||
| 62 | */ | ||
| 63 | int (*con_debug_enter)(struct vc_data *); | ||
| 64 | /* | ||
| 65 | * Restore the console to its pre-debug state as closely as possible. | ||
| 66 | */ | ||
| 67 | int (*con_debug_leave)(struct vc_data *); | ||
| 58 | }; | 68 | }; |
| 59 | 69 | ||
| 60 | extern const struct consw *conswitchp; | 70 | extern const struct consw *conswitchp; |
| @@ -69,6 +79,9 @@ int register_con_driver(const struct consw *csw, int first, int last); | |||
| 69 | int unregister_con_driver(const struct consw *csw); | 79 | int unregister_con_driver(const struct consw *csw); |
| 70 | int take_over_console(const struct consw *sw, int first, int last, int deflt); | 80 | int take_over_console(const struct consw *sw, int first, int last, int deflt); |
| 71 | void give_up_console(const struct consw *sw); | 81 | void give_up_console(const struct consw *sw); |
| 82 | int con_debug_enter(struct vc_data *vc); | ||
| 83 | int con_debug_leave(void); | ||
| 84 | |||
| 72 | /* scroll */ | 85 | /* scroll */ |
| 73 | #define SM_UP (1) | 86 | #define SM_UP (1) |
| 74 | #define SM_DOWN (2) | 87 | #define SM_DOWN (2) |
diff --git a/include/linux/fb.h b/include/linux/fb.h index e7445df44d6c..0c5659c41b01 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h | |||
| @@ -3,6 +3,9 @@ | |||
| 3 | 3 | ||
| 4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
| 5 | #include <linux/i2c.h> | 5 | #include <linux/i2c.h> |
| 6 | #ifdef __KERNEL__ | ||
| 7 | #include <linux/kgdb.h> | ||
| 8 | #endif /* __KERNEL__ */ | ||
| 6 | 9 | ||
| 7 | /* Definitions of frame buffers */ | 10 | /* Definitions of frame buffers */ |
| 8 | 11 | ||
| @@ -607,6 +610,12 @@ struct fb_deferred_io { | |||
| 607 | * LOCKING NOTE: those functions must _ALL_ be called with the console | 610 | * LOCKING NOTE: those functions must _ALL_ be called with the console |
| 608 | * semaphore held, this is the only suitable locking mechanism we have | 611 | * semaphore held, this is the only suitable locking mechanism we have |
| 609 | * in 2.6. Some may be called at interrupt time at this point though. | 612 | * in 2.6. Some may be called at interrupt time at this point though. |
| 613 | * | ||
| 614 | * The exception to this is the debug related hooks. Putting the fb | ||
| 615 | * into a debug state (e.g. flipping to the kernel console) and restoring | ||
| 616 | * it must be done in a lock-free manner, so low level drivers should | ||
| 617 | * keep track of the initial console (if applicable) and may need to | ||
| 618 | * perform direct, unlocked hardware writes in these hooks. | ||
| 610 | */ | 619 | */ |
| 611 | 620 | ||
| 612 | struct fb_ops { | 621 | struct fb_ops { |
| @@ -676,6 +685,10 @@ struct fb_ops { | |||
| 676 | 685 | ||
| 677 | /* teardown any resources to do with this framebuffer */ | 686 | /* teardown any resources to do with this framebuffer */ |
| 678 | void (*fb_destroy)(struct fb_info *info); | 687 | void (*fb_destroy)(struct fb_info *info); |
| 688 | |||
| 689 | /* called at KDB enter and leave time to prepare the console */ | ||
| 690 | int (*fb_debug_enter)(struct fb_info *info); | ||
| 691 | int (*fb_debug_leave)(struct fb_info *info); | ||
| 679 | }; | 692 | }; |
| 680 | 693 | ||
| 681 | #ifdef CONFIG_FB_TILEBLITTING | 694 | #ifdef CONFIG_FB_TILEBLITTING |
diff --git a/include/linux/kdb.h b/include/linux/kdb.h index ccb2b3ec0fe8..ea6e5244ed3f 100644 --- a/include/linux/kdb.h +++ b/include/linux/kdb.h | |||
| @@ -114,4 +114,8 @@ enum { | |||
| 114 | KDB_INIT_EARLY, | 114 | KDB_INIT_EARLY, |
| 115 | KDB_INIT_FULL, | 115 | KDB_INIT_FULL, |
| 116 | }; | 116 | }; |
| 117 | |||
| 118 | extern int kdbgetintenv(const char *, int *); | ||
| 119 | extern int kdb_set(int, const char **); | ||
| 120 | |||
| 117 | #endif /* !_KDB_H */ | 121 | #endif /* !_KDB_H */ |
