[syslinux:firmware] initvesa.c: Delete unused variables ( set but not used) and cleanup

syslinux-bot for Matt Fleming matt.fleming at intel.com
Fri Nov 9 09:06:32 PST 2012


Commit-ID:  bfeffb0fd408848a90d8e2676ac376a20f0908c4
Gitweb:     http://www.syslinux.org/commit/bfeffb0fd408848a90d8e2676ac376a20f0908c4
Author:     Matt Fleming <matt.fleming at intel.com>
AuthorDate: Fri, 19 Oct 2012 17:05:38 +0100
Committer:  Matt Fleming <matt.fleming at intel.com>
CommitDate: Fri, 26 Oct 2012 16:37:28 +0100

initvesa.c: Delete unused variables (set but not used) and cleanup

 * Delete set but not used variables

 * Rip out non-EFI code

 * Delete defined but not used function.

 * Defined but not used variables.

Signed-off-by: Matt Fleming <matt.fleming at intel.com>

---
 com32/lib/sys/vesa/efi/initvesa.c |  255 +------------------------------------
 1 files changed, 2 insertions(+), 253 deletions(-)

diff --git a/com32/lib/sys/vesa/efi/initvesa.c b/com32/lib/sys/vesa/efi/initvesa.c
index ae431be..83673c1 100644
--- a/com32/lib/sys/vesa/efi/initvesa.c
+++ b/com32/lib/sys/vesa/efi/initvesa.c
@@ -80,241 +80,6 @@ static void unpack_font(uint8_t * dst, uint8_t * src, int height)
     }
 }
 
-static int __constfunc is_power_of_2(unsigned int x)
-{
-    return x && !(x & (x - 1));
-}
-
-static int vesacon_paged_mode_ok(const struct vesa_mode_info *mi)
-{
-    int i;
-
-    if (!is_power_of_2(mi->win_size) ||
-	!is_power_of_2(mi->win_grain) || mi->win_grain > mi->win_size)
-	return 0;		/* Impossible... */
-
-    for (i = 0; i < 2; i++) {
-	if ((mi->win_attr[i] & 0x05) == 0x05 && mi->win_seg[i])
-	    return 1;		/* Usable window */
-    }
-
-    return 0;			/* Nope... */
-}
-
-#ifndef SYSLINUX_EFI
-static int vesacon_set_mode(int *x, int *y)
-{
-    com32sys_t rm;
-    uint8_t *rom_font;
-    uint16_t mode, bestmode, *mode_ptr;
-    struct vesa_info *vi;
-    struct vesa_general_info *gi;
-    struct vesa_mode_info *mi;
-    enum vesa_pixel_format pxf, bestpxf;
-    int err = 0;
-
-    debug("Hello, World!\r\n");
-
-    /* Free any existing data structures */
-    if (__vesacon_background) {
-	free(__vesacon_background);
-	__vesacon_background = NULL;
-    }
-    if (__vesacon_shadowfb) {
-	free(__vesacon_shadowfb);
-	__vesacon_shadowfb = NULL;
-    }
-
-    /* Allocate space in the bounce buffer for these structures */
-    vi = lzalloc(sizeof *vi);
-    if (!vi) {
-	err = 10;		/* Out of memory */
-	goto exit;
-    }
-    gi = &vi->gi;
-    mi = &vi->mi;
-
-    memset(&rm, 0, sizeof rm);
-
-    gi->signature = VBE2_MAGIC;	/* Get VBE2 extended data */
-    rm.eax.w[0] = 0x4F00;	/* Get SVGA general information */
-    rm.edi.w[0] = OFFS(gi);
-    rm.es = SEG(gi);
-    __intcall(0x10, &rm, &rm);
-
-    if (rm.eax.w[0] != 0x004F) {
-	err = 1;		/* Function call failed */
-	goto exit;
-    }
-    if (gi->signature != VESA_MAGIC) {
-	err = 2;		/* No magic */
-	goto exit;
-    }
-    if (gi->version < 0x0102) {
-	err = 3;		/* VESA 1.2+ required */
-	goto exit;
-    }
-
-    /* Copy general info */
-    memcpy(&__vesa_info.gi, gi, sizeof *gi);
-
-    /* Search for the proper mode with a suitable color and memory model... */
-
-    mode_ptr = GET_PTR(gi->video_mode_ptr);
-    bestmode = 0;
-    bestpxf = PXF_NONE;
-
-    while ((mode = *mode_ptr++) != 0xFFFF) {
-	mode &= 0x1FF;		/* The rest are attributes of sorts */
-
-	debug("Found mode: 0x%04x\r\n", mode);
-
-	memset(mi, 0, sizeof *mi);
-	rm.eax.w[0] = 0x4F01;	/* Get SVGA mode information */
-	rm.ecx.w[0] = mode;
-	rm.edi.w[0] = OFFS(mi);
-	rm.es = SEG(mi);
-	__intcall(0x10, &rm, &rm);
-
-	/* Must be a supported mode */
-	if (rm.eax.w[0] != 0x004f)
-	    continue;
-
-	debug
-	    ("mode_attr 0x%04x, h_res = %4d, v_res = %4d, bpp = %2d, layout = %d (%d,%d,%d)\r\n",
-	     mi->mode_attr, mi->h_res, mi->v_res, mi->bpp, mi->memory_layout,
-	     mi->rpos, mi->gpos, mi->bpos);
-
-	/* Must be an LFB color graphics mode supported by the hardware.
-
-	   The bits tested are:
-	   4 - graphics mode
-	   3 - color mode
-	   1 - mode information available (mandatory in VBE 1.2+)
-	   0 - mode supported by hardware
-	 */
-	if ((mi->mode_attr & 0x001b) != 0x001b)
-	    continue;
-
-	/* Must be the chosen size */
-	if (mi->h_res != *x || mi->v_res != *y)
-	    continue;
-
-	/* We don't support multibank (interlaced memory) modes */
-	/*
-	 *  Note: The Bochs VESA BIOS (vbe.c 1.58 2006/08/19) violates the
-	 * specification which states that banks == 1 for unbanked modes;
-	 * fortunately it does report bank_size == 0 for those.
-	 */
-	if (mi->banks > 1 && mi->bank_size) {
-	    debug("bad: banks = %d, banksize = %d, pages = %d\r\n",
-		  mi->banks, mi->bank_size, mi->image_pages);
-	    continue;
-	}
-
-	/* Must be either a flat-framebuffer mode, or be an acceptable
-	   paged mode */
-	if (!(mi->mode_attr & 0x0080) && !vesacon_paged_mode_ok(mi)) {
-	    debug("bad: invalid paged mode\r\n");
-	    continue;
-	}
-
-	/* Must either be a packed-pixel mode or a direct color mode
-	   (depending on VESA version ); must be a supported pixel format */
-	pxf = PXF_NONE;		/* Not usable */
-
-	if (mi->bpp == 32 &&
-	    (mi->memory_layout == 4 ||
-	     (mi->memory_layout == 6 && mi->rpos == 16 && mi->gpos == 8 &&
-	      mi->bpos == 0)))
-	    pxf = PXF_BGRA32;
-	else if (mi->bpp == 24 &&
-		 (mi->memory_layout == 4 ||
-		  (mi->memory_layout == 6 && mi->rpos == 16 && mi->gpos == 8 &&
-		   mi->bpos == 0)))
-	    pxf = PXF_BGR24;
-	else if (mi->bpp == 16 &&
-		 (mi->memory_layout == 4 ||
-		  (mi->memory_layout == 6 && mi->rpos == 11 && mi->gpos == 5 &&
-		   mi->bpos == 0)))
-	    pxf = PXF_LE_RGB16_565;
-	else if (mi->bpp == 15 &&
-		 (mi->memory_layout == 4 ||
-		  (mi->memory_layout == 6 && mi->rpos == 10 && mi->gpos == 5 &&
-		   mi->bpos == 0)))
-	    pxf = PXF_LE_RGB15_555;
-
-	if (pxf < bestpxf) {
-	    debug("Best mode so far, pxf = %d\r\n", pxf);
-
-	    /* Best mode so far... */
-	    bestmode = mode;
-	    bestpxf = pxf;
-
-	    /* Copy mode info */
-	    memcpy(&__vesa_info.mi, mi, sizeof *mi);
-	}
-    }
-
-    if (bestpxf == PXF_NONE) {
-	err = 4;		/* No mode found */
-	goto exit;
-    }
-
-    mi = &__vesa_info.mi;
-    mode = bestmode;
-    __vesacon_bytes_per_pixel = (mi->bpp + 7) >> 3;
-    __vesacon_format_pixels = __vesacon_format_pixels_list[bestpxf];
-
-    /* Download the SYSLINUX- or BIOS-provided font */
-    __vesacon_font_height = syslinux_font_query(&rom_font);
-    if (!__vesacon_font_height) {
-	/* Get BIOS 8x16 font */
-
-	rm.eax.w[0] = 0x1130;	/* Get Font Information */
-	rm.ebx.w[0] = 0x0600;	/* Get 8x16 ROM font */
-	__intcall(0x10, &rm, &rm);
-	rom_font = MK_PTR(rm.es, rm.ebp.w[0]);
-	__vesacon_font_height = 16;
-    }
-    unpack_font((uint8_t *) __vesacon_graphics_font, rom_font,
-		__vesacon_font_height);
-
-    /* Now set video mode */
-    rm.eax.w[0] = 0x4F02;	/* Set SVGA video mode */
-    if (mi->mode_attr & 0x0080)
-	mode |= 0x4000;		/* Request linear framebuffer if supported */
-    rm.ebx.w[0] = mode;
-    __intcall(0x10, &rm, &rm);
-    if (rm.eax.w[0] != 0x004F) {
-	err = 9;		/* Failed to set mode */
-	goto exit;
-    }
-
-    __vesacon_background = calloc(mi->h_res*mi->v_res, 4);
-    __vesacon_shadowfb = calloc(mi->h_res*mi->v_res, 4);
-
-    __vesacon_init_copy_to_screen();
-
-    /* Tell syslinux we changed video mode */
-    /* In theory this should be:
-
-       flags = (mi->mode_attr & 4) ? 0x0007 : 0x000f;
-
-       However, that would assume all systems that claim to handle text
-       output in VESA modes actually do that... */
-    syslinux_report_video_mode(0x000f, mi->h_res, mi->v_res);
-
-    __vesacon_pixel_format = bestpxf;
-
-exit:
-    if (vi)
-	lfree(vi);
-
-    return err;
-}
-
-#else
 /* EFI GOP support
  * Note GOP support uses the VESA info structure as much as possible and
  * extends it as needed for EFI support. Not all of the vesa info structure
@@ -350,9 +115,8 @@ static int vesacon_set_mode(int *x, int *y)
     BOOLEAN mode_match = FALSE;
     UINTN sz_info;
     struct vesa_info *vi;
-    struct vesa_general_info *gi;
     struct vesa_mode_info *mi;
-    enum vesa_pixel_format pxf, bestpxf = PXF_NONE;
+    enum vesa_pixel_format bestpxf = PXF_NONE;
     int err = 0;
 
     //debug("Hello, World!\r\n");
@@ -408,7 +172,6 @@ static int vesacon_set_mode(int *x, int *y)
 	goto exit;
     }
     /* Note that the generic info is untouched as we don't find any relevance to EFI */
-    gi = &vi->gi;
     mi = &vi->mi;
     /* Set up mode-specific information */
     mi->h_res = *x;
@@ -573,7 +336,6 @@ exit:
 
     return err;
 }
-#endif /* SYSLINUX_EFI */
 
 /* FIXME: 
  * Does init_text_display need an EFI counterpart?
@@ -618,25 +380,12 @@ static int init_text_display(void)
  */
 int __vesacon_init(int *x, int *y)
 {
-    int rv;
-
     /* We need the FPU for graphics, at least libpng et al will need it... */
     if (x86_init_fpu())
 	return 10;
 
-    rv = vesacon_set_mode(x, y);
-    /* FIXME: Accessing Video BIOS from EFI will probably not work */
-#ifndef SYSLINUX_EFI
-    if (rv) {
-	/* Try to see if we can just patch the BIOS... */
-	if (__vesacon_i915resolution(*x, *y))
-	    return rv;
-	if (vesacon_set_mode(x, y))
-	    return rv;
-    }
-#else
+    vesacon_set_mode(x, y);
     /* FIXME: Accessing Video BIOS from EFI will probably not work, skip it for now */
-#endif
 
     init_text_display();
 


More information about the Syslinux-commits mailing list