[PATCHv2/RFC 0/8] i386 VESA framebuffer support

Jan Dolezal dolezj21 at fel.cvut.cz
Thu Nov 20 14:00:25 UTC 2014


Framebuffer driver for i386 PC686BSP utilizing VESA BIOS EXTENSIONS
to initialize graphics mode during startup of RTEMS executive.
Temporary switch to realmode is used for Video BIOS invocation. 

The implementation has been tested with microwindows from RTEMS Graphics
Toolkit using QEMU {cirrus, std} and on real hardware - Intel Crestline
integrated graphic, NVidia GeForce 6600GT, AMD Radeon HD 7770 and some
other cards.

changes since v1:
    - header namespace: <bsptblsizes.h> -> <bsp/tblsizes.h> [PATCH 1/8]
    - names and implementation of converting functions between realmode
        pointer and physical address and back [PATCH 2/8]
    - GDTR manipulation functions parameters changed to use explicit
        width types [PATCH 3/8]
    - using macro RTEMS_INLINE_ROUTINE where applicable
    - defined macro RTEMS_COMPILER_PACKED_ATTRIBUTE [PATCH 4/8]
    - i386_raw_gdt_entry() present bit used as protection from using
        entry if it is not completely written [PATCH 5/8]
    - renamed realmode interface related files from int16* to realmode_int*
      [PATCH 6/8]
    - renamed and merged functions for obtaining realmode buffer
        from *primary_buffer* to *default_buffer* [PATCH 6/8]
    - edid.h - more portable - removed bitfields, using only byte size types
             - dropped support for EDID v2 since it is deprecated
               by v1.3 (2/2000) and may appear only as an extension
               according to E-EDID (7/2006)
            [PATCH 7/8]
    - struct modeParams typedefed [PATCH 8/8]

changes proposed by and applied thanks to Gedare Bloom and Pavel Pisa

Jan Dolezal (8):
  i386/pc386: configurable size of descriptor tables
  score: i386: functions converting real mode pointer to physical
    address and back
  i386: GDTR manipulation functions parameters changed to use explicit
    width types
  cpukit: basedefs: macro for packed attribute
  i386: global descriptor table manipulation functions
  i386/shared/realmode_int: real mode interrupt interface
  i386/pc386/include: header files for VESA BIOS EXTENSIONS and VESA
    Extended Display Identification Data
  i386/pc386: VESA based frame buffer utilizing real mode interrupt 10h

 c/src/lib/libbsp/i386/pc386/Makefile.am            |  10 +
 c/src/lib/libbsp/i386/pc386/configure.ac           |  18 +
 c/src/lib/libbsp/i386/pc386/console/fb_vesa_rm.c   | 858 +++++++++++++++++++++
 c/src/lib/libbsp/i386/pc386/include/bsp.h          |   6 +-
 c/src/lib/libbsp/i386/pc386/include/edid.h         | 513 ++++++++++++
 c/src/lib/libbsp/i386/pc386/include/fb_vesa.h      | 131 ++++
 c/src/lib/libbsp/i386/pc386/include/tblsizes.h     |  25 +
 c/src/lib/libbsp/i386/pc386/include/vbe3.h         | 463 +++++++++++
 c/src/lib/libbsp/i386/pc386/preinstall.am          |  22 +
 c/src/lib/libbsp/i386/pc386/start/start.S          |   8 +
 c/src/lib/libbsp/i386/pc386/startup/ldsegs.S       |  18 +-
 c/src/lib/libbsp/i386/shared/irq/idt.c             | 156 +++-
 .../libbsp/i386/shared/realmode_int/realmode_int.c | 406 ++++++++++
 .../libbsp/i386/shared/realmode_int/realmode_int.h |  85 ++
 c/src/lib/libcpu/i386/cpu.h                        |  95 ++-
 c/src/lib/libcpu/i386/idtr.S                       |   6 +-
 cpukit/score/cpu/i386/cpu_asm.S                    |  43 ++
 cpukit/score/cpu/i386/rtems/score/i386.h           |  32 +
 cpukit/score/include/rtems/score/basedefs.h        |  10 +
 19 files changed, 2853 insertions(+), 52 deletions(-)
 create mode 100644 c/src/lib/libbsp/i386/pc386/console/fb_vesa_rm.c
 create mode 100644 c/src/lib/libbsp/i386/pc386/include/edid.h
 create mode 100644 c/src/lib/libbsp/i386/pc386/include/fb_vesa.h
 create mode 100644 c/src/lib/libbsp/i386/pc386/include/tblsizes.h
 create mode 100644 c/src/lib/libbsp/i386/pc386/include/vbe3.h
 create mode 100644 c/src/lib/libbsp/i386/shared/realmode_int/realmode_int.c
 create mode 100644 c/src/lib/libbsp/i386/shared/realmode_int/realmode_int.h

-- 
1.9.1



More information about the devel mailing list