-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
video/fbdev: Always built-in video= cmdline parsing
In drm/i915 we want to get at the video= cmdline modes even when we don't have fbdev support enabled, so that users can always override the kernel's initial mode selection. But that gives us a direct depency upon the parsing code in the fbdev subsystem. Since it's so little code just extract these 2 functions and always build them in. Whiel at it fix the checkpatch fail in this code. v2: Also move fb_mode_option. Spotted by the kbuild. v3: Review from Geert: - Keep the old copyright notice from fb_mem.c, although I have no idea what exactly applies. - Only compile this when needed. Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Plagniol-Villard <plagnioj@jcrosoft.com> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com> Cc: linux-fbdev@vger.kernel.org Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> -- I prefer if we can merge this through drm-next since we'll use it there in follow-up patches. -Daniel
- Loading branch information
Daniel Vetter
committed
Aug 6, 2014
1 parent
83f45fc
commit ea6763c
Showing
5 changed files
with
115 additions
and
95 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
/* | ||
* linux/drivers/video/fb_cmdline.c | ||
* | ||
* Copyright (C) 2014 Intel Corp | ||
* Copyright (C) 1994 Martin Schaller | ||
* | ||
* 2001 - Documented with DocBook | ||
* - Brad Douglas <brad@neruo.com> | ||
* | ||
* This file is subject to the terms and conditions of the GNU General Public | ||
* License. See the file COPYING in the main directory of this archive | ||
* for more details. | ||
* | ||
* Authors: | ||
* Vetter <danie.vetter@ffwll.ch> | ||
*/ | ||
#include <linux/init.h> | ||
#include <linux/fb.h> | ||
|
||
static char *video_options[FB_MAX] __read_mostly; | ||
static int ofonly __read_mostly; | ||
|
||
const char *fb_mode_option; | ||
EXPORT_SYMBOL_GPL(fb_mode_option); | ||
|
||
/** | ||
* fb_get_options - get kernel boot parameters | ||
* @name: framebuffer name as it would appear in | ||
* the boot parameter line | ||
* (video=<name>:<options>) | ||
* @option: the option will be stored here | ||
* | ||
* NOTE: Needed to maintain backwards compatibility | ||
*/ | ||
int fb_get_options(const char *name, char **option) | ||
{ | ||
char *opt, *options = NULL; | ||
int retval = 0; | ||
int name_len = strlen(name), i; | ||
|
||
if (name_len && ofonly && strncmp(name, "offb", 4)) | ||
retval = 1; | ||
|
||
if (name_len && !retval) { | ||
for (i = 0; i < FB_MAX; i++) { | ||
if (video_options[i] == NULL) | ||
continue; | ||
if (!video_options[i][0]) | ||
continue; | ||
opt = video_options[i]; | ||
if (!strncmp(name, opt, name_len) && | ||
opt[name_len] == ':') | ||
options = opt + name_len + 1; | ||
} | ||
} | ||
/* No match, pass global option */ | ||
if (!options && option && fb_mode_option) | ||
options = kstrdup(fb_mode_option, GFP_KERNEL); | ||
if (options && !strncmp(options, "off", 3)) | ||
retval = 1; | ||
|
||
if (option) | ||
*option = options; | ||
|
||
return retval; | ||
} | ||
EXPORT_SYMBOL(fb_get_options); | ||
|
||
/** | ||
* video_setup - process command line options | ||
* @options: string of options | ||
* | ||
* Process command line options for frame buffer subsystem. | ||
* | ||
* NOTE: This function is a __setup and __init function. | ||
* It only stores the options. Drivers have to call | ||
* fb_get_options() as necessary. | ||
* | ||
* Returns zero. | ||
* | ||
*/ | ||
static int __init video_setup(char *options) | ||
{ | ||
int i, global = 0; | ||
|
||
if (!options || !*options) | ||
global = 1; | ||
|
||
if (!global && !strncmp(options, "ofonly", 6)) { | ||
ofonly = 1; | ||
global = 1; | ||
} | ||
|
||
if (!global && !strchr(options, ':')) { | ||
fb_mode_option = options; | ||
global = 1; | ||
} | ||
|
||
if (!global) { | ||
for (i = 0; i < FB_MAX; i++) { | ||
if (video_options[i] == NULL) { | ||
video_options[i] = options; | ||
break; | ||
} | ||
} | ||
} | ||
|
||
return 1; | ||
} | ||
__setup("video=", video_setup); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters