fbdev: Fix userland compile breakage
Subsystems (2)
PATCH 4/7 fbdev: Fix userland compile breakage
From Michal Januszewski <[email protected]>
"The latest changes introduced to the fb structs in linux/fb.h make compilation of userspace programs break with:
include/linux/fb.h:305: error: field `modelist' has incomplete type
This is caused by struct list_head not being seen from userspace."
This patch removes struct list_head modelist from struct fb_monspecs and moves it to struct fb_info instead, and for now, enclosed struct fb_monspecs by #ifdef __KERNEL__/#endif.
---
drivers/video/console/fbcon.c | 4 - drivers/video/fbmem.c | 16 ++-- drivers/video/modedb.c | 2 drivers/video/riva/fbdev.c | 6 - include/linux/fb.h | 137 ++++++++++++++++++++---------------------- 5 files changed, 82 insertions(+), 83 deletions(-)
drivers/video/console/fbcon.c +2 -2
@@ -689,7 +689,7 @@ static int var_to_display(struct display disp->green = var->green; disp->blue = var->blue; disp->transp = var->transp; - disp->mode =fb_match_mode (var, &info->monspecs.modelist); + disp->mode =fb_match_mode (var, &info->modelist);if (disp->mode ==NULL )/* This should not happen */ return -EINVAL ;
@@ -1973,7 +1973,7 @@ static int fbcon_resize(struct vc_data *struct fb_videomode *mode;DPRINTK ("attempting resize %ix%i\n" , var.xres, var.yres); - mode =fb_find_best_mode (&var, &info->monspecs.modelist); + mode =fb_find_best_mode (&var, &info->modelist);if (mode ==NULL )return -EINVAL ;fb_videomode_to_var (&var, mode);
drivers/video/fbmem.c +8 -8
@@ -791,7 +791,7 @@ fb_set_var(struct fb_info *info, struct }if (!ret) -fb_delete_videomode (&mode1, &info->monspecs.modelist); +fb_delete_videomode (&mode1, &info->modelist);return ret; }
@@ -818,7 +818,7 @@ fb_set_var(struct fb_info *info, structfb_set_cmap (&info->cmap, info);fb_var_to_videomode (&mode, &info->var); -fb_add_videomode (&mode, &info->monspecs.modelist); +fb_add_videomode (&mode, &info->modelist);if (info->flags &FBINFO_MISC_MODECHANGEUSER ) {struct fb_event event;
@@ -1164,14 +1164,14 @@ register_framebuffer(struct fb_info *fb_ } fb_info->sprite.offset =0 ; -if (!fb_info->monspecs.modelist.prev || - !fb_info->monspecs.modelist.next || -list_empty (&fb_info->monspecs.modelist)) { +if (!fb_info->modelist.prev || + !fb_info->modelist.next || +list_empty (&fb_info->modelist)) {struct fb_videomode mode; -INIT_LIST_HEAD (&fb_info->monspecs.modelist); +INIT_LIST_HEAD (&fb_info->modelist);fb_var_to_videomode (&mode, &fb_info->var); -fb_add_videomode (&mode, &fb_info->monspecs.modelist); +fb_add_videomode (&mode, &fb_info->modelist); } registered_fb[i] = fb_info;
@@ -1209,7 +1209,7 @@ unregister_framebuffer(struct fb_info *fkfree (fb_info->pixmap.addr);if (fb_info->sprite.addr && (fb_info->sprite.flags &FB_PIXMAP_DEFAULT ))kfree (fb_info->sprite.addr); -fb_destroy_modelist (&fb_info->monspecs.modelist); +fb_destroy_modelist (&fb_info->modelist); registered_fb[i]=NULL ; num_registered_fb--;class_simple_device_remove (MKDEV (FB_MAJOR , i));
drivers/video/modedb.c +1 -1
@@ -670,7 +670,7 @@ int fb_mode_is_equal(struct fb_videomode* * IMPORTANT: * This function assumes that all modelist entries in -* info->monspecs.modelist are valid. +* info->modelist are valid. * * NOTES: * Finds best matching videomode which has an equal or greater dimension than
drivers/video/riva/fbdev.c +3 -3
@@ -1115,14 +1115,14 @@ static int rivafb_check_var(struct fb_va }if (!mode_valid) { - mode =fb_find_best_mode (var, &info->monspecs.modelist); + mode =fb_find_best_mode (var, &info->modelist);if (mode) {riva_update_var (var, mode); mode_valid =1 ; } } -if (!mode_valid && !list_empty (&info->monspecs.modelist)) +if (!mode_valid && !list_empty (&info->modelist))return -EINVAL ;if (var->xres_virtual < var->xres)
@@ -1797,7 +1797,7 @@ static void __devinit riva_get_edidinfo(fb_edid_to_monspecs (par->EDID, &info->monspecs);fb_videomode_to_modelist (info->monspecs.modedb, info->monspecs.modedb_len, - &info->monspecs.modelist); + &info->modelist);riva_update_default_var (var, info);/* if user specified flatpanel, we respect that */
include/linux/fb.h +68 -69
167 lines not on this page · raw message
-------------------------------------------------------
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 Project Admins to receive an Apple iPod Mini FREE for your judgement on who ports your project to Linux PPC the best. Sponsored by IBM.
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php