From 5474c120aafe78ca54bf272f7a01107c42da2b21 Mon Sep 17 00:00:00 2001 From: Michael Hanselmann Date: Sun, 25 Jun 2006 05:47:08 -0700 Subject: [PATCH] Rewritten backlight infrastructure for portable Apple computers This patch contains a total rewrite of the backlight infrastructure for portable Apple computers. Backward compatibility is retained. A sysfs interface allows userland to control the brightness with more steps than before. Userland is allowed to upload a brightness curve for different monitors, similar to Mac OS X. [akpm@osdl.org: add needed exports] Signed-off-by: Michael Hanselmann Acked-by: Benjamin Herrenschmidt Cc: Richard Purdie Cc: "Antonino A. Daplas" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- include/linux/fb.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'include/linux/fb.h') diff --git a/include/linux/fb.h b/include/linux/fb.h index 315d89740ddf..f1281687e549 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -1,6 +1,7 @@ #ifndef _LINUX_FB_H #define _LINUX_FB_H +#include #include /* Definitions of frame buffers */ @@ -366,6 +367,12 @@ struct fb_cursor { struct fb_image image; /* Cursor image */ }; +#ifdef CONFIG_FB_BACKLIGHT +/* Settings for the generic backlight code */ +#define FB_BACKLIGHT_LEVELS 128 +#define FB_BACKLIGHT_MAX 0xFF +#endif + #ifdef __KERNEL__ #include @@ -756,6 +763,21 @@ struct fb_info { struct fb_cmap cmap; /* Current cmap */ struct list_head modelist; /* mode list */ struct fb_videomode *mode; /* current mode */ + +#ifdef CONFIG_FB_BACKLIGHT + /* Lock ordering: + * bl_mutex (protects bl_dev and bl_curve) + * bl_dev->sem (backlight class) + */ + struct mutex bl_mutex; + + /* assigned backlight device */ + struct backlight_device *bl_dev; + + /* Backlight level curve */ + u8 bl_curve[FB_BACKLIGHT_LEVELS]; +#endif + struct fb_ops *fbops; struct device *device; struct class_device *class_device; /* sysfs per device attrs */ @@ -895,6 +917,7 @@ extern struct fb_info *framebuffer_alloc(size_t size, struct device *dev); extern void framebuffer_release(struct fb_info *info); extern int fb_init_class_device(struct fb_info *fb_info); extern void fb_cleanup_class_device(struct fb_info *head); +extern void fb_bl_default_curve(struct fb_info *fb_info, u8 off, u8 min, u8 max); /* drivers/video/fbmon.c */ #define FB_MAXTIMINGS 0 -- cgit v1.2.3 From 9a17917671d407d37bf23a527aa55acca3cb4735 Mon Sep 17 00:00:00 2001 From: "Antonino A. Daplas" Date: Mon, 26 Jun 2006 00:27:05 -0700 Subject: [PATCH] Detaching fbcon: sdd sysfs class device entry for fbcon In order for this feature to work, an interface will be needed. The most appropriate is sysfs. However, the framebuffer console has no sysfs entry yet. This will create a sysfs class device entry for fbcon under /sys/class/graphics. Add a class_device entry 'fbcon' under class 'graphics'. Console-specific attributes which where previously under class/graphics/fb[x] are moved to class/graphics/fbcon. These attributes, 'con_rotate' and 'con_rotate_all', are also renamed to 'rotate' and 'rotate_all' respectively. Signed-off-by: Antonino Daplas Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/video/Makefile | 8 +-- drivers/video/console/fbcon.c | 113 +++++++++++++++++++++++++++++++++++++++--- drivers/video/console/fbcon.h | 1 + drivers/video/fbmem.c | 25 +--------- drivers/video/fbsysfs.c | 41 --------------- include/linux/fb.h | 7 --- 6 files changed, 112 insertions(+), 83 deletions(-) (limited to 'include/linux/fb.h') diff --git a/drivers/video/Makefile b/drivers/video/Makefile index b7dfee209cd0..c335e9bc3b20 100644 --- a/drivers/video/Makefile +++ b/drivers/video/Makefile @@ -4,15 +4,15 @@ # Each configuration option enables a list of files. -obj-$(CONFIG_VT) += console/ -obj-$(CONFIG_LOGO) += logo/ -obj-$(CONFIG_SYSFS) += backlight/ - obj-$(CONFIG_FB) += fb.o fb-y := fbmem.o fbmon.o fbcmap.o fbsysfs.o \ modedb.o fbcvt.o fb-objs := $(fb-y) +obj-$(CONFIG_VT) += console/ +obj-$(CONFIG_LOGO) += logo/ +obj-$(CONFIG_SYSFS) += backlight/ + obj-$(CONFIG_FB_CFB_FILLRECT) += cfbfillrect.o obj-$(CONFIG_FB_CFB_COPYAREA) += cfbcopyarea.o obj-$(CONFIG_FB_CFB_IMAGEBLIT) += cfbimgblt.o diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index 47ba1a79adcd..746225bf8c44 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c @@ -195,6 +195,8 @@ static void fbcon_redraw_move(struct vc_data *vc, struct display *p, static void fbcon_modechanged(struct fb_info *info); static void fbcon_set_all_vcs(struct fb_info *info); +static struct class_device *fbcon_class_device; + #ifdef CONFIG_MAC /* * On the Macintoy, there may or may not be a working VBL int. We need to probe @@ -2945,14 +2947,6 @@ static int fbcon_event_notify(struct notifier_block *self, case FB_EVENT_NEW_MODELIST: fbcon_new_modelist(info); break; - case FB_EVENT_SET_CON_ROTATE: - fbcon_rotate(info, *(int *)event->data); - break; - case FB_EVENT_GET_CON_ROTATE: - ret = fbcon_get_rotate(info); - break; - case FB_EVENT_SET_CON_ROTATE_ALL: - fbcon_rotate_all(info, *(int *)event->data); } return ret; @@ -2992,6 +2986,81 @@ static struct notifier_block fbcon_event_notifier = { .notifier_call = fbcon_event_notify, }; +static ssize_t store_rotate(struct class_device *class_device, + const char *buf, size_t count) +{ + struct fb_info *info; + int rotate, idx; + char **last = NULL; + + acquire_console_sem(); + idx = con2fb_map[fg_console]; + + if (idx == -1 || registered_fb[idx] == NULL) + goto err; + + info = registered_fb[idx]; + rotate = simple_strtoul(buf, last, 0); + fbcon_rotate(info, rotate); +err: + release_console_sem(); + return count; +} + +static ssize_t store_rotate_all(struct class_device *class_device, + const char *buf, size_t count) +{ + struct fb_info *info; + int rotate, idx; + char **last = NULL; + + acquire_console_sem(); + idx = con2fb_map[fg_console]; + + if (idx == -1 || registered_fb[idx] == NULL) + goto err; + + info = registered_fb[idx]; + rotate = simple_strtoul(buf, last, 0); + fbcon_rotate_all(info, rotate); +err: + release_console_sem(); + return count; +} + +static ssize_t show_rotate(struct class_device *class_device, char *buf) +{ + struct fb_info *info; + int rotate = 0, idx; + + acquire_console_sem(); + idx = con2fb_map[fg_console]; + + if (idx == -1 || registered_fb[idx] == NULL) + goto err; + + info = registered_fb[idx]; + rotate = fbcon_get_rotate(info); +err: + release_console_sem(); + return snprintf(buf, PAGE_SIZE, "%d\n", rotate); +} + +static struct class_device_attribute class_device_attrs[] = { + __ATTR(rotate, S_IRUGO|S_IWUSR, show_rotate, store_rotate), + __ATTR(rotate_all, S_IWUSR, NULL, store_rotate_all), +}; + +static int fbcon_init_class_device(void) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(class_device_attrs); i++) + class_device_create_file(fbcon_class_device, + &class_device_attrs[i]); + return 0; +} + static int __init fb_console_init(void) { int i; @@ -3000,6 +3069,18 @@ static int __init fb_console_init(void) fb_register_client(&fbcon_event_notifier); release_console_sem(); + fbcon_class_device = + class_device_create(fb_class, NULL, + MKDEV(FB_MAJOR, FB_MAX), NULL, + "fbcon"); + if (IS_ERR(fbcon_class_device)) { + printk(KERN_WARNING "Unable to create class_device " + "for fbcon; errno = %ld\n", + PTR_ERR(fbcon_class_device)); + fbcon_class_device = NULL; + } else + fbcon_init_class_device(); + for (i = 0; i < MAX_NR_CONSOLES; i++) con2fb_map[i] = -1; @@ -3020,10 +3101,26 @@ module_init(fb_console_init); #ifdef MODULE +static void __exit fbcon_deinit_class_device(void) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(class_device_attrs); i++) + class_device_remove_file(fbcon_class_device, + &class_device_attrs[i]); +} + +static void __exit fbcon_exit(void) +{ + fbcon_deinit_class_device(); + class_device_destroy(fb_class, MKDEV(FB_MAJOR, FB_MAX)); +} + static void __exit fb_console_exit(void) { acquire_console_sem(); fb_unregister_client(&fbcon_event_notifier); + fbcon_exit(); release_console_sem(); give_up_console(&fb_con); } diff --git a/drivers/video/console/fbcon.h b/drivers/video/console/fbcon.h index c38c3d8e7a74..3487a636370a 100644 --- a/drivers/video/console/fbcon.h +++ b/drivers/video/console/fbcon.h @@ -175,6 +175,7 @@ extern void fbcon_set_tileops(struct vc_data *vc, struct fb_info *info); #endif extern void fbcon_set_bitops(struct fbcon_ops *ops); extern int soft_cursor(struct fb_info *info, struct fb_cursor *cursor); +extern struct class *fb_class; #define FBCON_ATTRIBUTE_UNDERLINE 1 #define FBCON_ATTRIBUTE_REVERSE 2 diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index e9af5e61018d..a2102a543ee7 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c @@ -1276,8 +1276,8 @@ static struct file_operations fb_fops = { #endif }; -static struct class *fb_class; - +struct class *fb_class; +EXPORT_SYMBOL(fb_class); /** * register_framebuffer - registers a frame buffer device * @fb_info: frame buffer info structure @@ -1489,27 +1489,6 @@ int fb_new_modelist(struct fb_info *info) return err; } -/** - * fb_con_duit - user<->fbcon passthrough - * @info: struct fb_info - * @event: notification event to be passed to fbcon - * @data: private data - * - * DESCRIPTION - * This function is an fbcon-user event passing channel - * which bypasses fbdev. This is hopefully temporary - * until a user interface for fbcon is created - */ -int fb_con_duit(struct fb_info *info, int event, void *data) -{ - struct fb_event evnt; - - evnt.info = info; - evnt.data = data; - - return blocking_notifier_call_chain(&fb_notifier_list, event, &evnt); -} - static char *video_options[FB_MAX]; static int ofonly; diff --git a/drivers/video/fbsysfs.c b/drivers/video/fbsysfs.c index 6de02189abbe..4f78f234473d 100644 --- a/drivers/video/fbsysfs.c +++ b/drivers/video/fbsysfs.c @@ -247,45 +247,6 @@ static ssize_t show_rotate(struct class_device *class_device, char *buf) return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->var.rotate); } -static ssize_t store_con_rotate(struct class_device *class_device, - const char *buf, size_t count) -{ - struct fb_info *fb_info = class_get_devdata(class_device); - int rotate; - char **last = NULL; - - acquire_console_sem(); - rotate = simple_strtoul(buf, last, 0); - fb_con_duit(fb_info, FB_EVENT_SET_CON_ROTATE, &rotate); - release_console_sem(); - return count; -} - -static ssize_t store_con_rotate_all(struct class_device *class_device, - const char *buf, size_t count) -{ - struct fb_info *fb_info = class_get_devdata(class_device); - int rotate; - char **last = NULL; - - acquire_console_sem(); - rotate = simple_strtoul(buf, last, 0); - fb_con_duit(fb_info, FB_EVENT_SET_CON_ROTATE_ALL, &rotate); - release_console_sem(); - return count; -} - -static ssize_t show_con_rotate(struct class_device *class_device, char *buf) -{ - struct fb_info *fb_info = class_get_devdata(class_device); - int rotate; - - acquire_console_sem(); - rotate = fb_con_duit(fb_info, FB_EVENT_GET_CON_ROTATE, NULL); - release_console_sem(); - return snprintf(buf, PAGE_SIZE, "%d\n", rotate); -} - static ssize_t store_virtual(struct class_device *class_device, const char * buf, size_t count) { @@ -502,8 +463,6 @@ static struct class_device_attribute class_device_attrs[] = { __ATTR(name, S_IRUGO, show_name, NULL), __ATTR(stride, S_IRUGO, show_stride, NULL), __ATTR(rotate, S_IRUGO|S_IWUSR, show_rotate, store_rotate), - __ATTR(con_rotate, S_IRUGO|S_IWUSR, show_con_rotate, store_con_rotate), - __ATTR(con_rotate_all, S_IWUSR, NULL, store_con_rotate_all), __ATTR(state, S_IRUGO|S_IWUSR, show_fbstate, store_fbstate), #ifdef CONFIG_FB_BACKLIGHT __ATTR(bl_curve, S_IRUGO|S_IWUSR, show_bl_curve, store_bl_curve), diff --git a/include/linux/fb.h b/include/linux/fb.h index f1281687e549..c64f25255286 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -515,12 +515,6 @@ struct fb_cursor_user { /* The resolution of the passed in fb_info about to change and all vc's should be changed */ #define FB_EVENT_MODE_CHANGE_ALL 0x0A -/* CONSOLE-SPECIFIC: set console rotation */ -#define FB_EVENT_SET_CON_ROTATE 0x0B -/* CONSOLE-SPECIFIC: get console rotation */ -#define FB_EVENT_GET_CON_ROTATE 0x0C -/* CONSOLE-SPECIFIC: rotate all consoles */ -#define FB_EVENT_SET_CON_ROTATE_ALL 0x0D struct fb_event { struct fb_info *info; @@ -892,7 +886,6 @@ extern int fb_get_color_depth(struct fb_var_screeninfo *var, struct fb_fix_screeninfo *fix); extern int fb_get_options(char *name, char **option); extern int fb_new_modelist(struct fb_info *info); -extern int fb_con_duit(struct fb_info *info, int event, void *data); extern struct fb_info *registered_fb[FB_MAX]; extern int num_registered_fb; -- cgit v1.2.3 From e614b18dcedb247ce6f848e623cdf2336df2b476 Mon Sep 17 00:00:00 2001 From: "Antonino A. Daplas" Date: Mon, 26 Jun 2006 00:27:09 -0700 Subject: [PATCH] VT binding: Update fbcon to support binding The control for binding/unbinding is moved from fbcon to the console layer. Thus the fbcon sysfs attributes, attach and detach, are also gone. 1. Add a notifier event that tells fbcon if a framebuffer driver has been unregistered. If no registered driver remains, fbcon will unregister itself from the console layer. 2. Replaced calls to give_up_console() with unregister_con_driver(). 3. Still use take_over_console() instead of register_con_driver() to maintain compatibility 4. Respect the parameter first_fb_vc and last_fb_vc instead of using 0 and MAX_NR_CONSOLES - 1. These parameters are settable by the user. 5. When fbcon is completely unbound from the console layer, fbcon will also release (iow, decrement module reference counts to zero) all fbdev drivers. In other words, a bind or unbind request from the console layer will propagate down to the framebuffer drivers. 6. If fbcon is not bound to the console, it will ignore all notifier events (except driver registration and unregistration) and all sysfs requests. Signed-off-by: Antonino Daplas Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/video/console/fbcon.c | 204 +++++++++++++++++++++++++++++------------- drivers/video/fbmem.c | 7 +- include/linux/fb.h | 12 +-- 3 files changed, 157 insertions(+), 66 deletions(-) (limited to 'include/linux/fb.h') diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index 4b7be685c160..26effab5a13e 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c @@ -125,6 +125,8 @@ static int softback_lines; static int first_fb_vc; static int last_fb_vc = MAX_NR_CONSOLES - 1; static int fbcon_is_default = 1; +static int fbcon_has_exited; + /* font data */ static char fontname[40]; @@ -140,7 +142,6 @@ static const struct consw fb_con; #define advance_row(p, delta) (unsigned short *)((unsigned long)(p) + (delta) * vc->vc_size_row) -static void fbcon_free_font(struct display *); static int fbcon_set_origin(struct vc_data *); #define CURSOR_DRAW_DELAY (1) @@ -255,7 +256,7 @@ static void fbcon_rotate_all(struct fb_info *info, u32 rotate) if (!ops || ops->currcon < 0 || rotate > 3) return; - for (i = 0; i < MAX_NR_CONSOLES; i++) { + for (i = first_fb_vc; i <= last_fb_vc; i++) { vc = vc_cons[i].d; if (!vc || vc->vc_mode != KD_TEXT || registered_fb[con2fb_map[i]] != info) @@ -534,7 +535,7 @@ static int search_fb_in_map(int idx) { int i, retval = 0; - for (i = 0; i < MAX_NR_CONSOLES; i++) { + for (i = first_fb_vc; i <= last_fb_vc; i++) { if (con2fb_map[i] == idx) retval = 1; } @@ -545,7 +546,7 @@ static int search_for_mapped_con(void) { int i, retval = 0; - for (i = 0; i < MAX_NR_CONSOLES; i++) { + for (i = first_fb_vc; i <= last_fb_vc; i++) { if (con2fb_map[i] != -1) retval = 1; } @@ -567,6 +568,7 @@ static int fbcon_takeover(int show_logo) err = take_over_console(&fb_con, first_fb_vc, last_fb_vc, fbcon_is_default); + if (err) { for (i = first_fb_vc; i <= last_fb_vc; i++) { con2fb_map[i] = -1; @@ -801,8 +803,8 @@ static int set_con2fb_map(int unit, int newidx, int user) if (oldidx == newidx) return 0; - if (!info) - err = -EINVAL; + if (!info || fbcon_has_exited) + return -EINVAL; if (!err && !search_for_mapped_con()) { info_idx = newidx; @@ -838,6 +840,9 @@ static int set_con2fb_map(int unit, int newidx, int user) con2fb_init_display(vc, info, unit, show_logo); } + if (!search_fb_in_map(info_idx)) + info_idx = newidx; + release_console_sem(); return err; } @@ -1040,6 +1045,7 @@ static const char *fbcon_startup(void) #endif /* CONFIG_MAC */ fbcon_add_cursor_timer(info); + fbcon_has_exited = 0; return display_desc; } @@ -1067,17 +1073,36 @@ static void fbcon_init(struct vc_data *vc, int init) /* If we are not the first console on this fb, copy the font from that console */ - t = &fb_display[svc->vc_num]; - if (!vc->vc_font.data) { - vc->vc_font.data = (void *)(p->fontdata = t->fontdata); - vc->vc_font.width = (*default_mode)->vc_font.width; - vc->vc_font.height = (*default_mode)->vc_font.height; - p->userfont = t->userfont; - if (p->userfont) - REFCOUNT(p->fontdata)++; + t = &fb_display[fg_console]; + if (!p->fontdata) { + if (t->fontdata) { + struct vc_data *fvc = vc_cons[fg_console].d; + + vc->vc_font.data = (void *)(p->fontdata = + fvc->vc_font.data); + vc->vc_font.width = fvc->vc_font.width; + vc->vc_font.height = fvc->vc_font.height; + p->userfont = t->userfont; + + if (p->userfont) + REFCOUNT(p->fontdata)++; + } else { + const struct font_desc *font = NULL; + + if (!fontname[0] || !(font = find_font(fontname))) + font = get_default_font(info->var.xres, + info->var.yres); + vc->vc_font.width = font->width; + vc->vc_font.height = font->height; + vc->vc_font.data = (void *)(p->fontdata = font->data); + vc->vc_font.charcount = 256; /* FIXME Need to + support more fonts */ + } } + if (p->userfont) charcnt = FNTCHARCNT(p->fontdata); + 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 (charcnt == 256) { @@ -1151,13 +1176,47 @@ static void fbcon_init(struct vc_data *vc, int init) ops->p = &fb_display[fg_console]; } +static void fbcon_free_font(struct display *p) +{ + if (p->userfont && p->fontdata && (--REFCOUNT(p->fontdata) == 0)) + kfree(p->fontdata - FONT_EXTRA_WORDS * sizeof(int)); + p->fontdata = NULL; + p->userfont = 0; +} + static void fbcon_deinit(struct vc_data *vc) { struct display *p = &fb_display[vc->vc_num]; + struct fb_info *info; + struct fbcon_ops *ops; + int idx; - if (info_idx != -1) - return; fbcon_free_font(p); + idx = con2fb_map[vc->vc_num]; + + if (idx == -1) + goto finished; + + info = registered_fb[idx]; + + if (!info) + goto finished; + + ops = info->fbcon_par; + + if (!ops) + goto finished; + + if (CON_IS_VISIBLE(vc)) + fbcon_del_cursor_timer(info); + + ops->flags &= ~FBCON_FLAGS_INIT; +finished: + + if (!con_is_bound(&fb_con)) + fbcon_exit(); + + return; } /* ====================================================================== */ @@ -2227,14 +2286,6 @@ static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch) return 0; } -static void fbcon_free_font(struct display *p) -{ - if (p->userfont && p->fontdata && (--REFCOUNT(p->fontdata) == 0)) - kfree(p->fontdata - FONT_EXTRA_WORDS * sizeof(int)); - p->fontdata = NULL; - p->userfont = 0; -} - static int fbcon_get_font(struct vc_data *vc, struct console_font *font) { u8 *fontdata = vc->vc_font.data; @@ -2448,7 +2499,7 @@ static int fbcon_set_font(struct vc_data *vc, struct console_font *font, unsigne FNTSUM(new_data) = csum; /* Check if the same font is on some other console already */ - for (i = 0; i < MAX_NR_CONSOLES; i++) { + for (i = first_fb_vc; i <= last_fb_vc; i++) { struct vc_data *tmp = vc_cons[i].d; if (fb_display[i].userfont && @@ -2773,7 +2824,7 @@ static void fbcon_set_all_vcs(struct fb_info *info) if (!ops || ops->currcon < 0) return; - for (i = 0; i < MAX_NR_CONSOLES; i++) { + for (i = first_fb_vc; i <= last_fb_vc; i++) { vc = vc_cons[i].d; if (!vc || vc->vc_mode != KD_TEXT || registered_fb[con2fb_map[i]] != info) @@ -2835,21 +2886,55 @@ static int fbcon_mode_deleted(struct fb_info *info, return found; } +static int fbcon_fb_unregistered(int idx) +{ + int i; + + for (i = first_fb_vc; i <= last_fb_vc; i++) { + if (con2fb_map[i] == idx) + con2fb_map[i] = -1; + } + + if (idx == info_idx) { + info_idx = -1; + + for (i = 0; i < FB_MAX; i++) { + if (registered_fb[i] != NULL) { + info_idx = i; + break; + } + } + } + + if (info_idx != -1) { + for (i = first_fb_vc; i <= last_fb_vc; i++) { + if (con2fb_map[i] == -1) + con2fb_map[i] = info_idx; + } + } + + if (!num_registered_fb) + unregister_con_driver(&fb_con); + + return 0; +} + static int fbcon_fb_registered(int idx) { int ret = 0, i; if (info_idx == -1) { - for (i = 0; i < MAX_NR_CONSOLES; i++) { + for (i = first_fb_vc; i <= last_fb_vc; i++) { if (con2fb_map_boot[i] == idx) { info_idx = idx; break; } } + if (info_idx != -1) ret = fbcon_takeover(1); } else { - for (i = 0; i < MAX_NR_CONSOLES; i++) { + for (i = first_fb_vc; i <= last_fb_vc; i++) { if (con2fb_map_boot[i] == idx && con2fb_map[i] == -1) set_con2fb_map(i, idx, 0); @@ -2888,7 +2973,7 @@ static void fbcon_new_modelist(struct fb_info *info) struct fb_var_screeninfo var; struct fb_videomode *mode; - for (i = 0; i < MAX_NR_CONSOLES; i++) { + for (i = first_fb_vc; i <= last_fb_vc; i++) { if (registered_fb[con2fb_map[i]] != info) continue; if (!fb_display[i].mode) @@ -2916,6 +3001,14 @@ static int fbcon_event_notify(struct notifier_block *self, struct fb_con2fbmap *con2fb; int ret = 0; + /* + * ignore all events except driver registration and deregistration + * if fbcon is not active + */ + if (fbcon_has_exited && !(action == FB_EVENT_FB_REGISTERED || + action == FB_EVENT_FB_UNREGISTERED)) + goto done; + switch(action) { case FB_EVENT_SUSPEND: fbcon_suspended(info); @@ -2936,6 +3029,9 @@ static int fbcon_event_notify(struct notifier_block *self, case FB_EVENT_FB_REGISTERED: ret = fbcon_fb_registered(info->node); break; + case FB_EVENT_FB_UNREGISTERED: + ret = fbcon_fb_unregistered(info->node); + break; case FB_EVENT_SET_CONSOLE_MAP: con2fb = event->data; ret = set_con2fb_map(con2fb->console - 1, @@ -2953,6 +3049,7 @@ static int fbcon_event_notify(struct notifier_block *self, break; } +done: return ret; } @@ -2997,6 +3094,9 @@ static ssize_t store_rotate(struct class_device *class_device, int rotate, idx; char **last = NULL; + if (fbcon_has_exited) + return count; + acquire_console_sem(); idx = con2fb_map[fg_console]; @@ -3018,6 +3118,9 @@ static ssize_t store_rotate_all(struct class_device *class_device, int rotate, idx; char **last = NULL; + if (fbcon_has_exited) + return count; + acquire_console_sem(); idx = con2fb_map[fg_console]; @@ -3037,6 +3140,9 @@ static ssize_t show_rotate(struct class_device *class_device, char *buf) struct fb_info *info; int rotate = 0, idx; + if (fbcon_has_exited) + return 0; + acquire_console_sem(); idx = con2fb_map[fg_console]; @@ -3050,32 +3156,9 @@ err: return snprintf(buf, PAGE_SIZE, "%d\n", rotate); } -static ssize_t store_attach(struct class_device *class_device, - const char *buf, size_t count) -{ - if (info_idx == -1) - fbcon_start(); - - return count; -} - -static ssize_t store_detach(struct class_device *class_device, - const char *buf, size_t count) -{ - if (info_idx != -1) { - fbcon_exit(); - give_up_console(&fb_con); - } - - info_idx = -1; - return count; -} - static struct class_device_attribute class_device_attrs[] = { __ATTR(rotate, S_IRUGO|S_IWUSR, show_rotate, store_rotate), __ATTR(rotate_all, S_IWUSR, NULL, store_rotate_all), - __ATTR(attach, S_IWUSR, NULL, store_attach), - __ATTR(detach, S_IWUSR, NULL, store_detach), }; static int fbcon_init_class_device(void) @@ -3112,7 +3195,9 @@ static void fbcon_exit(void) struct fb_info *info; int i, j, mapped; - acquire_console_sem(); + if (fbcon_has_exited) + return; + #ifdef CONFIG_ATARI free_irq(IRQ_AUTO_4, fbcon_vbl_handler); #endif @@ -3131,11 +3216,9 @@ static void fbcon_exit(void) if (info == NULL) continue; - for (j = 0; j < MAX_NR_CONSOLES; j++) { - if (con2fb_map[j] == i) { - con2fb_map[j] = -1; + for (j = first_fb_vc; j <= last_fb_vc; j++) { + if (con2fb_map[j] == i) mapped = 1; - } } if (mapped) { @@ -3151,11 +3234,10 @@ static void fbcon_exit(void) if (info->queue.func == fb_flashcursor) info->queue.func = NULL; - } } - release_console_sem(); + fbcon_has_exited = 1; } static int __init fb_console_init(void) @@ -3189,7 +3271,7 @@ module_init(fb_console_init); #ifdef MODULE -static void fbcon_deinit_class_device(void) +static void __exit fbcon_deinit_class_device(void) { int i; @@ -3204,7 +3286,9 @@ static void __exit fb_console_exit(void) fb_unregister_client(&fbcon_event_notifier); fbcon_deinit_class_device(); class_device_destroy(fb_class, MKDEV(FB_MAJOR, FB_MAX)); + fbcon_exit(); release_console_sem(); + unregister_con_driver(&fb_con); } module_exit(fb_console_exit); diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index a2102a543ee7..31143afe7c95 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c @@ -1353,6 +1353,7 @@ register_framebuffer(struct fb_info *fb_info) int unregister_framebuffer(struct fb_info *fb_info) { + struct fb_event event; int i; i = fb_info->node; @@ -1360,13 +1361,17 @@ unregister_framebuffer(struct fb_info *fb_info) return -EINVAL; devfs_remove("fb/%d", i); - if (fb_info->pixmap.addr && (fb_info->pixmap.flags & FB_PIXMAP_DEFAULT)) + if (fb_info->pixmap.addr && + (fb_info->pixmap.flags & FB_PIXMAP_DEFAULT)) kfree(fb_info->pixmap.addr); fb_destroy_modelist(&fb_info->modelist); registered_fb[i]=NULL; num_registered_fb--; fb_cleanup_class_device(fb_info); class_device_destroy(fb_class, MKDEV(FB_MAJOR, i)); + event.info = fb_info; + blocking_notifier_call_chain(&fb_notifier_list, + FB_EVENT_FB_UNREGISTERED, &event); return 0; } diff --git a/include/linux/fb.h b/include/linux/fb.h index c64f25255286..07a08e92bc73 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -504,17 +504,19 @@ struct fb_cursor_user { #define FB_EVENT_MODE_DELETE 0x04 /* A driver registered itself */ #define FB_EVENT_FB_REGISTERED 0x05 +/* A driver unregistered itself */ +#define FB_EVENT_FB_UNREGISTERED 0x06 /* CONSOLE-SPECIFIC: get console to framebuffer mapping */ -#define FB_EVENT_GET_CONSOLE_MAP 0x06 +#define FB_EVENT_GET_CONSOLE_MAP 0x07 /* CONSOLE-SPECIFIC: set console to framebuffer mapping */ -#define FB_EVENT_SET_CONSOLE_MAP 0x07 +#define FB_EVENT_SET_CONSOLE_MAP 0x08 /* A display blank is requested */ -#define FB_EVENT_BLANK 0x08 +#define FB_EVENT_BLANK 0x09 /* Private modelist is to be replaced */ -#define FB_EVENT_NEW_MODELIST 0x09 +#define FB_EVENT_NEW_MODELIST 0x0A /* The resolution of the passed in fb_info about to change and all vc's should be changed */ -#define FB_EVENT_MODE_CHANGE_ALL 0x0A +#define FB_EVENT_MODE_CHANGE_ALL 0x0B struct fb_event { struct fb_info *info; -- cgit v1.2.3 From ff23eca3e8f613034e0d20ff86f6a89b62f5a14e Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 20 Jun 2005 21:15:16 -0700 Subject: [PATCH] devfs: Remove the devfs_fs_kernel.h file from the tree Also fixes up all files that #include it. Signed-off-by: Greg Kroah-Hartman --- arch/sparc64/solaris/socksys.c | 1 - arch/um/drivers/line.c | 1 - arch/um/drivers/ubd_kern.c | 1 - drivers/block/acsi_slm.c | 1 - drivers/block/cpqarray.c | 1 - drivers/block/floppy.c | 1 - drivers/block/loop.c | 1 - drivers/block/nbd.c | 2 -- drivers/block/paride/pg.c | 1 - drivers/block/paride/pt.c | 1 - drivers/block/rd.c | 1 - drivers/block/swim3.c | 1 - drivers/block/sx8.c | 1 - drivers/block/ub.c | 1 - drivers/cdrom/cdu31a.c | 1 - drivers/cdrom/cm206.c | 1 - drivers/cdrom/mcdx.c | 1 - drivers/cdrom/sbpcd.c | 1 - drivers/char/dsp56k.c | 1 - drivers/char/dtlk.c | 1 - drivers/char/ftape/zftape/zftape-init.c | 1 - drivers/char/ip2/ip2main.c | 1 - drivers/char/ipmi/ipmi_devintf.c | 1 - drivers/char/istallion.c | 1 - drivers/char/lp.c | 1 - drivers/char/mem.c | 1 - drivers/char/misc.c | 1 - drivers/char/mmtimer.c | 1 - drivers/char/ppdev.c | 1 - drivers/char/pty.c | 1 - drivers/char/raw.c | 1 - drivers/char/stallion.c | 1 - drivers/char/tipar.c | 1 - drivers/char/tty_io.c | 1 - drivers/char/vc_screen.c | 1 - drivers/char/viotape.c | 1 - drivers/char/vt.c | 1 - drivers/input/serio/serio_raw.c | 1 - drivers/isdn/capi/capi.c | 1 - drivers/isdn/hardware/eicon/divamnt.c | 1 - drivers/isdn/hardware/eicon/divasi.c | 1 - drivers/isdn/hardware/eicon/divasmain.c | 1 - drivers/macintosh/adb.c | 1 - drivers/md/dm-ioctl.c | 1 - drivers/md/md.c | 1 - drivers/media/dvb/dvb-core/dvbdev.h | 1 - drivers/media/dvb/ttpci/av7110.h | 4 ---- drivers/media/video/arv.c | 1 - drivers/media/video/videodev.c | 1 - drivers/mmc/mmc_block.c | 1 - drivers/net/ppp_generic.c | 1 - drivers/net/wan/cosa.c | 1 - drivers/s390/block/dasd_int.h | 1 - drivers/s390/block/xpram.c | 1 - drivers/sbus/char/bpp.c | 1 - drivers/sbus/char/vfc.h | 2 -- drivers/telephony/phonedev.c | 1 - drivers/video/fbmem.c | 1 - fs/block_dev.c | 1 - fs/char_dev.c | 1 - fs/coda/psdev.c | 1 - fs/partitions/check.c | 1 - include/asm-ppc/ocp.h | 1 - include/linux/devfs_fs_kernel.h | 9 --------- include/linux/fb.h | 1 - init/do_mounts.h | 1 - init/main.c | 1 - mm/shmem.c | 1 - mm/tiny-shmem.c | 1 - net/irda/irnet/irnet.h | 1 - 70 files changed, 83 deletions(-) delete mode 100644 include/linux/devfs_fs_kernel.h (limited to 'include/linux/fb.h') diff --git a/arch/sparc64/solaris/socksys.c b/arch/sparc64/solaris/socksys.c index 09664ab124ec..bc3df95bc057 100644 --- a/arch/sparc64/solaris/socksys.c +++ b/arch/sparc64/solaris/socksys.c @@ -26,7 +26,6 @@ #include #include #include -#include #include diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c index 6c2d4ccaf20f..ee1fe6a24905 100644 --- a/arch/um/drivers/line.c +++ b/arch/um/drivers/line.c @@ -8,7 +8,6 @@ #include "linux/list.h" #include "linux/kd.h" #include "linux/interrupt.h" -#include "linux/devfs_fs_kernel.h" #include "asm/uaccess.h" #include "chan_kern.h" #include "irq_user.h" diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index 3883c5e6a7da..5856a02fff58 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c @@ -25,7 +25,6 @@ #include "linux/blkdev.h" #include "linux/hdreg.h" #include "linux/init.h" -#include "linux/devfs_fs_kernel.h" #include "linux/cdrom.h" #include "linux/proc_fs.h" #include "linux/ctype.h" diff --git a/drivers/block/acsi_slm.c b/drivers/block/acsi_slm.c index 7495fef24183..4030a8fd1187 100644 --- a/drivers/block/acsi_slm.c +++ b/drivers/block/acsi_slm.c @@ -65,7 +65,6 @@ not be guaranteed. There are several ways to assure this: #include #include #include -#include #include #include diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c index 2701ed734b24..f96e6c03593e 100644 --- a/drivers/block/cpqarray.c +++ b/drivers/block/cpqarray.c @@ -33,7 +33,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 8e101a9655ba..0242cbb86a87 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -177,7 +177,6 @@ static int print_unex = 1; #include #include #include -#include #include #include /* for invalidate_buffers() */ #include diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 0319b096b556..dbf905ce0248 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -63,7 +63,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index c24b349ae57b..b164ee0ac79f 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -29,8 +29,6 @@ #include #include -#include - #include #include #include diff --git a/drivers/block/paride/pg.c b/drivers/block/paride/pg.c index e6f1614b69c3..13f998aa1cd3 100644 --- a/drivers/block/paride/pg.c +++ b/drivers/block/paride/pg.c @@ -156,7 +156,6 @@ enum {D_PRT, D_PRO, D_UNI, D_MOD, D_SLV, D_DLY}; #include #include #include -#include #include #include #include diff --git a/drivers/block/paride/pt.c b/drivers/block/paride/pt.c index ea12073c5fb1..35fb26636721 100644 --- a/drivers/block/paride/pt.c +++ b/drivers/block/paride/pt.c @@ -141,7 +141,6 @@ static int (*drives[4])[6] = {&drive0, &drive1, &drive2, &drive3}; #include #include #include -#include #include #include #include diff --git a/drivers/block/rd.c b/drivers/block/rd.c index acaa2abf05a2..536be2de989e 100644 --- a/drivers/block/rd.c +++ b/drivers/block/rd.c @@ -50,7 +50,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/block/swim3.c b/drivers/block/swim3.c index 018b2921e8fc..ef557b1043d8 100644 --- a/drivers/block/swim3.c +++ b/drivers/block/swim3.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/block/sx8.c b/drivers/block/sx8.c index a366ea8c6a40..3a4814551568 100644 --- a/drivers/block/sx8.c +++ b/drivers/block/sx8.c @@ -18,7 +18,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/block/ub.c b/drivers/block/ub.c index b68abc9d4c1f..87ec6458bd1d 100644 --- a/drivers/block/ub.c +++ b/drivers/block/ub.c @@ -24,7 +24,6 @@ #include #include #include -#include #include #include diff --git a/drivers/cdrom/cdu31a.c b/drivers/cdrom/cdu31a.c index 72ffd64e8b1e..5f0f2027f29e 100644 --- a/drivers/cdrom/cdu31a.c +++ b/drivers/cdrom/cdu31a.c @@ -161,7 +161,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/cdrom/cm206.c b/drivers/cdrom/cm206.c index f43a988dd413..4ee288688fed 100644 --- a/drivers/cdrom/cm206.c +++ b/drivers/cdrom/cm206.c @@ -187,7 +187,6 @@ History: #include #include #include -#include #include #include #include diff --git a/drivers/cdrom/mcdx.c b/drivers/cdrom/mcdx.c index 0f6e7aab8d2c..788c7a0b2fe3 100644 --- a/drivers/cdrom/mcdx.c +++ b/drivers/cdrom/mcdx.c @@ -74,7 +74,6 @@ static const char *mcdx_c_version #include #define MAJOR_NR MITSUMI_X_CDROM_MAJOR #include -#include #include "mcdx.h" diff --git a/drivers/cdrom/sbpcd.c b/drivers/cdrom/sbpcd.c index 55cbd23fd9cd..a75b363b19c5 100644 --- a/drivers/cdrom/sbpcd.c +++ b/drivers/cdrom/sbpcd.c @@ -371,7 +371,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/char/dsp56k.c b/drivers/char/dsp56k.c index ee32e58328aa..09b413618b57 100644 --- a/drivers/char/dsp56k.c +++ b/drivers/char/dsp56k.c @@ -33,7 +33,6 @@ #include #include #include -#include #include #include diff --git a/drivers/char/dtlk.c b/drivers/char/dtlk.c index 6da88e292dce..da2c89f1b8bc 100644 --- a/drivers/char/dtlk.c +++ b/drivers/char/dtlk.c @@ -62,7 +62,6 @@ #include /* for __init, module_{init,exit} */ #include /* for POLLIN, etc. */ #include /* local header file for DoubleTalk values */ -#include #include #ifdef TRACING diff --git a/drivers/char/ftape/zftape/zftape-init.c b/drivers/char/ftape/zftape/zftape-init.c index e09ad2b100b5..3eeb869a9a11 100644 --- a/drivers/char/ftape/zftape/zftape-init.c +++ b/drivers/char/ftape/zftape/zftape-init.c @@ -33,7 +33,6 @@ #endif #include #include -#include #include #include diff --git a/drivers/char/ip2/ip2main.c b/drivers/char/ip2/ip2main.c index 5d2d5732d82f..a273eef69a8e 100644 --- a/drivers/char/ip2/ip2main.c +++ b/drivers/char/ip2/ip2main.c @@ -91,7 +91,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/char/ipmi/ipmi_devintf.c b/drivers/char/ipmi/ipmi_devintf.c index 3103ed8e3adc..da637adbbfaa 100644 --- a/drivers/char/ipmi/ipmi_devintf.c +++ b/drivers/char/ipmi/ipmi_devintf.c @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/char/istallion.c b/drivers/char/istallion.c index 0a5808e15b77..1386d6a519d6 100644 --- a/drivers/char/istallion.c +++ b/drivers/char/istallion.c @@ -39,7 +39,6 @@ #include #include #include -#include #include #include diff --git a/drivers/char/lp.c b/drivers/char/lp.c index 530b19de4a30..b11a390581ba 100644 --- a/drivers/char/lp.c +++ b/drivers/char/lp.c @@ -120,7 +120,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/char/mem.c b/drivers/char/mem.c index e7aa71575aa2..6fe7b6c6c462 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/char/misc.c b/drivers/char/misc.c index bf2e49e11cc0..f1fdd84c5dc5 100644 --- a/drivers/char/misc.c +++ b/drivers/char/misc.c @@ -44,7 +44,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/char/mmtimer.c b/drivers/char/mmtimer.c index d65b3109318a..f25168a9676d 100644 --- a/drivers/char/mmtimer.c +++ b/drivers/char/mmtimer.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c index c8a2eb1a558f..24231d9743dc 100644 --- a/drivers/char/ppdev.c +++ b/drivers/char/ppdev.c @@ -60,7 +60,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/char/pty.c b/drivers/char/pty.c index 64d3d1d0b31b..345f8b8d57c2 100644 --- a/drivers/char/pty.c +++ b/drivers/char/pty.c @@ -24,7 +24,6 @@ #include #include #include -#include #include #include diff --git a/drivers/char/raw.c b/drivers/char/raw.c index 941a17ab2196..9bf97c5e38c0 100644 --- a/drivers/char/raw.c +++ b/drivers/char/raw.c @@ -10,7 +10,6 @@ #include #include -#include #include #include #include diff --git a/drivers/char/stallion.c b/drivers/char/stallion.c index 7840eb16f17a..36df18cd96de 100644 --- a/drivers/char/stallion.c +++ b/drivers/char/stallion.c @@ -40,7 +40,6 @@ #include #include #include -#include #include #include diff --git a/drivers/char/tipar.c b/drivers/char/tipar.c index 48476f8fcda7..f7802e5bd7ca 100644 --- a/drivers/char/tipar.c +++ b/drivers/char/tipar.c @@ -56,7 +56,6 @@ #include #include #include -#include /* DevFs support */ #include /* Our code depend on parport */ #include diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index b8e03a31a502..ebe1158e6c6e 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c @@ -102,7 +102,6 @@ #include #include #include -#include #include diff --git a/drivers/char/vc_screen.c b/drivers/char/vc_screen.c index 2266fbad62c4..234d7f3fb114 100644 --- a/drivers/char/vc_screen.c +++ b/drivers/char/vc_screen.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/char/viotape.c b/drivers/char/viotape.c index b101134a8443..198f1505ae23 100644 --- a/drivers/char/viotape.c +++ b/drivers/char/viotape.c @@ -43,7 +43,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/char/vt.c b/drivers/char/vt.c index 714d95ff2f1e..42afe7cea040 100644 --- a/drivers/char/vt.c +++ b/drivers/char/vt.c @@ -79,7 +79,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/input/serio/serio_raw.c b/drivers/input/serio/serio_raw.c index 5a2703b536dc..71a8eea816cb 100644 --- a/drivers/input/serio/serio_raw.c +++ b/drivers/input/serio/serio_raw.c @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c index 1200d1de1de7..334402e96e13 100644 --- a/drivers/isdn/capi/capi.c +++ b/drivers/isdn/capi/capi.c @@ -39,7 +39,6 @@ #include #include #include -#include #include #include #if defined(CONFIG_ISDN_CAPI_CAPIFS) || defined(CONFIG_ISDN_CAPI_CAPIFS_MODULE) diff --git a/drivers/isdn/hardware/eicon/divamnt.c b/drivers/isdn/hardware/eicon/divamnt.c index 83841d16c35d..b163c5909182 100644 --- a/drivers/isdn/hardware/eicon/divamnt.c +++ b/drivers/isdn/hardware/eicon/divamnt.c @@ -17,7 +17,6 @@ #include #include #include -#include #include #include "platform.h" diff --git a/drivers/isdn/hardware/eicon/divasi.c b/drivers/isdn/hardware/eicon/divasi.c index dcd5b650a000..6e7d89a31c1d 100644 --- a/drivers/isdn/hardware/eicon/divasi.c +++ b/drivers/isdn/hardware/eicon/divasi.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include "platform.h" diff --git a/drivers/isdn/hardware/eicon/divasmain.c b/drivers/isdn/hardware/eicon/divasmain.c index bbb7d8fc207c..9dee6a39104c 100644 --- a/drivers/isdn/hardware/eicon/divasmain.c +++ b/drivers/isdn/hardware/eicon/divasmain.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c index a60e3abaa8e0..9f1a049dc226 100644 --- a/drivers/macintosh/adb.c +++ b/drivers/macintosh/adb.c @@ -36,7 +36,6 @@ #include #include #include -#include #include #include diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c index 361d50b6469f..3ad60caea773 100644 --- a/drivers/md/dm-ioctl.c +++ b/drivers/md/dm-ioctl.c @@ -13,7 +13,6 @@ #include #include #include -#include #include #include diff --git a/drivers/md/md.c b/drivers/md/md.c index 9fc2314b58d9..95c275d19316 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -39,7 +39,6 @@ #include #include #include -#include #include /* for invalidate_bdev */ #include #include diff --git a/drivers/media/dvb/dvb-core/dvbdev.h b/drivers/media/dvb/dvb-core/dvbdev.h index d7a976d040d7..7a7f75fd168c 100644 --- a/drivers/media/dvb/dvb-core/dvbdev.h +++ b/drivers/media/dvb/dvb-core/dvbdev.h @@ -27,7 +27,6 @@ #include #include #include -#include #include #define DVB_MAJOR 212 diff --git a/drivers/media/dvb/ttpci/av7110.h b/drivers/media/dvb/ttpci/av7110.h index 3e2e12124bae..9c79696da08a 100644 --- a/drivers/media/dvb/ttpci/av7110.h +++ b/drivers/media/dvb/ttpci/av7110.h @@ -6,10 +6,6 @@ #include #include -#ifdef CONFIG_DEVFS_FS -#include -#endif - #include #include #include diff --git a/drivers/media/video/arv.c b/drivers/media/video/arv.c index 6e08e32346eb..ae14f5f32039 100644 --- a/drivers/media/video/arv.c +++ b/drivers/media/video/arv.c @@ -20,7 +20,6 @@ #include #include -#include #include #include #include diff --git a/drivers/media/video/videodev.c b/drivers/media/video/videodev.c index 3178353787da..a802a7e0df79 100644 --- a/drivers/media/video/videodev.c +++ b/drivers/media/video/videodev.c @@ -37,7 +37,6 @@ #include #include #include -#include #include #include diff --git a/drivers/mmc/mmc_block.c b/drivers/mmc/mmc_block.c index 2e5218b8d4a3..46138f4e2081 100644 --- a/drivers/mmc/mmc_block.c +++ b/drivers/mmc/mmc_block.c @@ -27,7 +27,6 @@ #include #include #include -#include #include #include diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c index 16a59cafb8d3..425ff5b117f1 100644 --- a/drivers/net/ppp_generic.c +++ b/drivers/net/ppp_generic.c @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c index 3d1e2b6700a7..be5e33814cb1 100644 --- a/drivers/net/wan/cosa.c +++ b/drivers/net/wan/cosa.c @@ -85,7 +85,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h index d4b13e300a76..1893797f2bf6 100644 --- a/drivers/s390/block/dasd_int.h +++ b/drivers/s390/block/dasd_int.h @@ -54,7 +54,6 @@ #include #include #include -#include #include #include #include diff --git a/drivers/s390/block/xpram.c b/drivers/s390/block/xpram.c index 15aad01bba07..f57a6c8816b8 100644 --- a/drivers/s390/block/xpram.c +++ b/drivers/s390/block/xpram.c @@ -36,7 +36,6 @@ #include /* HDIO_GETGEO */ #include #include -#include #include #define XPRAM_NAME "xpram" diff --git a/drivers/sbus/char/bpp.c b/drivers/sbus/char/bpp.c index 03ff5a3b121b..385f4f768311 100644 --- a/drivers/sbus/char/bpp.c +++ b/drivers/sbus/char/bpp.c @@ -20,7 +20,6 @@ #include #include #include -#include #include #include diff --git a/drivers/sbus/char/vfc.h b/drivers/sbus/char/vfc.h index 8045cd5e7cb3..63941a259b92 100644 --- a/drivers/sbus/char/vfc.h +++ b/drivers/sbus/char/vfc.h @@ -1,8 +1,6 @@ #ifndef _LINUX_VFC_H_ #define _LINUX_VFC_H_ -#include - /* * The control register for the vfc is at offset 0x4000 * The first field ram bank is located at offset 0x5000 diff --git a/drivers/telephony/phonedev.c b/drivers/telephony/phonedev.c index bc5b1d245df9..e41f49afd0f4 100644 --- a/drivers/telephony/phonedev.c +++ b/drivers/telephony/phonedev.c @@ -28,7 +28,6 @@ #include #include -#include #include #define PHONE_NUM_DEVICES 256 diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index afa56a887fa6..a171daab0ad0 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c @@ -32,7 +32,6 @@ #ifdef CONFIG_KMOD #include #endif -#include #include #include #include diff --git a/fs/block_dev.c b/fs/block_dev.c index 028d9fb9c2d5..ddb305eebf90 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include diff --git a/fs/char_dev.c b/fs/char_dev.c index f3418f7a6e9d..97986635b641 100644 --- a/fs/char_dev.c +++ b/fs/char_dev.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include diff --git a/fs/coda/psdev.c b/fs/coda/psdev.c index aaf6462a9421..803aacf0d49c 100644 --- a/fs/coda/psdev.c +++ b/fs/coda/psdev.c @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include diff --git a/fs/partitions/check.c b/fs/partitions/check.c index 202f50acea88..839634026eb5 100644 --- a/fs/partitions/check.c +++ b/fs/partitions/check.c @@ -18,7 +18,6 @@ #include #include #include -#include #include "check.h" diff --git a/include/asm-ppc/ocp.h b/include/asm-ppc/ocp.h index 3be5d760ffcd..16dbc7d17450 100644 --- a/include/asm-ppc/ocp.h +++ b/include/asm-ppc/ocp.h @@ -26,7 +26,6 @@ #include #include -#include #include #include diff --git a/include/linux/devfs_fs_kernel.h b/include/linux/devfs_fs_kernel.h deleted file mode 100644 index 2036d2e90987..000000000000 --- a/include/linux/devfs_fs_kernel.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _LINUX_DEVFS_FS_KERNEL_H -#define _LINUX_DEVFS_FS_KERNEL_H - -#include -#include -#include -#include - -#endif /* _LINUX_DEVFS_FS_KERNEL_H */ diff --git a/include/linux/fb.h b/include/linux/fb.h index 07a08e92bc73..b45928f5c63f 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -380,7 +380,6 @@ struct fb_cursor { #include #include #include -#include #include #include #include diff --git a/init/do_mounts.h b/init/do_mounts.h index 66548efe4c3c..e7f2e7fa066e 100644 --- a/init/do_mounts.h +++ b/init/do_mounts.h @@ -1,6 +1,5 @@ #include #include -#include #include #include #include diff --git a/init/main.c b/init/main.c index 80af1a52485f..acbb0b749137 100644 --- a/init/main.c +++ b/init/main.c @@ -15,7 +15,6 @@ #include #include #include -#include #include #include #include diff --git a/mm/shmem.c b/mm/shmem.c index a4161abb9e76..355904712a8f 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include diff --git a/mm/tiny-shmem.c b/mm/tiny-shmem.c index 11ab99b8c61f..5f2cbf0f153c 100644 --- a/mm/tiny-shmem.c +++ b/mm/tiny-shmem.c @@ -12,7 +12,6 @@ #include #include -#include #include #include #include diff --git a/net/irda/irnet/irnet.h b/net/irda/irnet/irnet.h index e4fe1e80029c..ad6caba02a7b 100644 --- a/net/irda/irnet/irnet.h +++ b/net/irda/irnet/irnet.h @@ -244,7 +244,6 @@ #include #include #include -#include #include #include #include -- cgit v1.2.3 From b3c2ffd5343645fc9b46f67e8c0eaac1e2dde7b4 Mon Sep 17 00:00:00 2001 From: Adrian Bunk Date: Fri, 30 Jun 2006 18:20:44 +0200 Subject: typo fixes: mecanism -> mechanism Signed-off-by: Adrian Bunk --- arch/powerpc/kernel/prom_init.c | 2 +- arch/powerpc/platforms/powermac/cpufreq_32.c | 2 +- drivers/macintosh/therm_pm72.h | 2 +- drivers/video/aty/radeonfb.h | 2 +- include/asm-powerpc/of_device.h | 2 +- include/asm-powerpc/pmac_pfunc.h | 2 +- include/asm-ppc/page.h | 2 +- include/linux/fb.h | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) (limited to 'include/linux/fb.h') diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 8c28eb0cbdac..a820b772927d 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c @@ -988,7 +988,7 @@ static void reserve_mem(u64 base, u64 size) } /* - * Initialize memory allocation mecanism, parse "memory" nodes and + * Initialize memory allocation mechanism, parse "memory" nodes and * obtain that way the top of memory and RMO to setup out local allocator */ static void __init prom_init_mem(void) diff --git a/arch/powerpc/platforms/powermac/cpufreq_32.c b/arch/powerpc/platforms/powermac/cpufreq_32.c index af2a8f9f1222..7adb3845c3e9 100644 --- a/arch/powerpc/platforms/powermac/cpufreq_32.c +++ b/arch/powerpc/platforms/powermac/cpufreq_32.c @@ -68,7 +68,7 @@ static unsigned int cur_freq; static unsigned int sleep_freq; /* - * Different models uses different mecanisms to switch the frequency + * Different models uses different mechanisms to switch the frequency */ static int (*set_speed_proc)(int low_speed); static unsigned int (*get_speed_proc)(void); diff --git a/drivers/macintosh/therm_pm72.h b/drivers/macintosh/therm_pm72.h index c17e61f9c418..fc7e9b7ecaf2 100644 --- a/drivers/macintosh/therm_pm72.h +++ b/drivers/macintosh/therm_pm72.h @@ -93,7 +93,7 @@ static char * critical_overtemp_path = "/sbin/critical_overtemp"; * 0. This appear to be safe enough for this first version * of the driver, though I would accept any clean patch * doing a better use of the device-tree without turning the - * while i2c registration mecanism into a racy mess + * while i2c registration mechanism into a racy mess * * Note: Xserve changed this. We have some bits on the K2 bus, * which I arbitrarily set to 0x200. Ultimately, we really want diff --git a/drivers/video/aty/radeonfb.h b/drivers/video/aty/radeonfb.h index 1645943b1123..db2304b59fd5 100644 --- a/drivers/video/aty/radeonfb.h +++ b/drivers/video/aty/radeonfb.h @@ -382,7 +382,7 @@ struct radeonfb_info { /* Note about this function: we have some rare cases where we must not schedule, * this typically happen with our special "wake up early" hook which allows us to * wake up the graphic chip (and thus get the console back) before everything else - * on some machines that support that mecanism. At this point, interrupts are off + * on some machines that support that mechanism. At this point, interrupts are off * and scheduling is not permitted */ static inline void _radeon_msleep(struct radeonfb_info *rinfo, unsigned long ms) diff --git a/include/asm-powerpc/of_device.h b/include/asm-powerpc/of_device.h index 6249a7c39639..c5c0b0b3cd52 100644 --- a/include/asm-powerpc/of_device.h +++ b/include/asm-powerpc/of_device.h @@ -9,7 +9,7 @@ /* * The of_platform_bus_type is a bus type used by drivers that do not * attach to a macio or similar bus but still use OF probing - * mecanism + * mechanism */ extern struct bus_type of_platform_bus_type; diff --git a/include/asm-powerpc/pmac_pfunc.h b/include/asm-powerpc/pmac_pfunc.h index cef61304ffc2..1330d6a58c57 100644 --- a/include/asm-powerpc/pmac_pfunc.h +++ b/include/asm-powerpc/pmac_pfunc.h @@ -205,7 +205,7 @@ extern void pmf_do_irq(struct pmf_function *func); * * The args array contains as many arguments as is required by the function, * this is dependent on the function you are calling, unfortunately Apple - * mecanism provides no way to encode that so you have to get it right at + * mechanism provides no way to encode that so you have to get it right at * the call site. Some functions require no args, in which case, you can * pass NULL. * diff --git a/include/asm-ppc/page.h b/include/asm-ppc/page.h index 0b19af82507f..fe95c8258cf9 100644 --- a/include/asm-ppc/page.h +++ b/include/asm-ppc/page.h @@ -170,7 +170,7 @@ extern __inline__ int get_order(unsigned long size) #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) -/* We do define AT_SYSINFO_EHDR but don't use the gate mecanism */ +/* We do define AT_SYSINFO_EHDR but don't use the gate mechanism */ #define __HAVE_ARCH_GATE_AREA 1 #include diff --git a/include/linux/fb.h b/include/linux/fb.h index b45928f5c63f..ffefeeeeca93 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -557,7 +557,7 @@ struct fb_pixmap { * Frame buffer operations * * LOCKING NOTE: those functions must _ALL_ be called with the console - * semaphore held, this is the only suitable locking mecanism we have + * semaphore held, this is the only suitable locking mechanism we have * in 2.6. Some may be called at interrupt time at this point though. */ -- cgit v1.2.3