Skip to content

Commit

Permalink
staging: xgifb: eliminate string comparison from mode search
Browse files Browse the repository at this point in the history
Eliminate string comparison from the video mode search.

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Aaro Koskinen authored and Greg Kroah-Hartman committed Apr 10, 2012
1 parent f47f12d commit f9e5de0
Showing 1 changed file with 17 additions and 10 deletions.
27 changes: 17 additions & 10 deletions drivers/staging/xgifb/XGI_main_26.c
Original file line number Diff line number Diff line change
Expand Up @@ -390,19 +390,26 @@ static int XGIfb_GetXG21DefaultLVDSModeIdx(struct xgifb_video_info *xgifb_info)
static void XGIfb_search_mode(struct xgifb_video_info *xgifb_info,
const char *name)
{
int i = 0, j = 0, l;
unsigned int xres;
unsigned int yres;
unsigned int bpp;
int i;

while (XGIbios_mode[i].mode_no != 0) {
l = min(strlen(name), strlen(XGIbios_mode[i].name));
if (!strncmp(name, XGIbios_mode[i].name, l)) {
if (sscanf(name, "%ux%ux%u", &xres, &yres, &bpp) != 3)
goto invalid_mode;

if (bpp == 24)
bpp = 32; /* That's for people who mix up color and fb depth. */

for (i = 0; XGIbios_mode[i].mode_no != 0; i++)
if (XGIbios_mode[i].xres == xres &&
XGIbios_mode[i].yres == yres &&
XGIbios_mode[i].bpp == bpp) {
xgifb_info->mode_idx = i;
j = 1;
break;
return;
}
i++;
}
if (!j)
pr_info("Invalid mode '%s'\n", name);
invalid_mode:
pr_info("Invalid mode '%s'\n", name);
}

static void XGIfb_search_vesamode(struct xgifb_video_info *xgifb_info,
Expand Down

0 comments on commit f9e5de0

Please sign in to comment.