
uvesafb - A Generic Driver for VBE2+ compliant video cards
==========================================================

1. Requirements
---------------

uvesafb should work with any video card that has a Video BIOS compliant
with the VBE 2.0 standard.

Unlike other drivers, uvesafb makes use of a userspace helper called
v86d.  v86d is used to run the x86 Video BIOS code in a simulated and
controlled environment.  This allows uvesafb to function on arches other
than x86.  Check the v86d documentation for a list of currently supported
arches.

v86d source code can be downloaded from the following website:
  http://dev.gentoo.org/~spock/projects/uvesafb

Please refer to the v86d documentation for detailed configuration and
installation instructions.

Note that the v86d userspace helper has to be available at all times in
order for uvesafb to work properly.  If you want to use uvesafb during
early boot, you will have to include v86d into an initramfs image, and
either compile it into the kernel or use it as an initrd.

2. Caveats and limitations
--------------------------

uvesafb is a _generic_ driver which supports a wide variety of video
cards, but which is ultimately limited by the Video BIOS interface.
The most important limitations are:

- Lack of any type of acceleration.
- A strict and limited set of supported video modes.  Often the native
  or most optimal resolution/refresh rate for your setup will not work
  with uvesafb, simply because the Video BIOS doesn't support the
  video mode you want to use.  This can be especially painful with
  widescreen panels, where native video modes don't have the 4:3 aspect
  ratio, which is what most BIOS-es are limited to.
- Adjusting the refresh rate is only possible with a VBE 3.0 compliant
  Video BIOS.  Note that many nVidia Video BIOS-es claim to be VBE 3.0
  compliant, while they simply ignore any refresh rate settings.

3. Configuration
----------------

uvesafb can be compiled either as a module, or directly into the kernel.
In both cases it supports the same set of configuration options, which
are either given on the kernel command line or as module parameters, e.g.:

 video=uvesafb:1024x768-32,mtrr:3,ywrap (compiled into the kernel)

 # modprobe uvesafb mode_option=1024x768-32 mtrr=3 scroll=ywrap  (module)

Accepted options:

ypan    Enable display panning using the VESA protected mode
        interface.  The visible screen is just a window of the
        video memory, console scrolling is done by changing the
        start of the window.  This option is available on x86
        only and is the default option on that architecture.

ywrap   Same as ypan, but assumes your gfx board can wrap-around
        the video memory (i.e. starts reading from top if it
        reaches the end of video memory).  Faster than ypan.
        Available on x86 only.

redraw  Scroll by redrawing the affected part of the screen, this
        is the default on non-x86.

(If you're using uvesafb as a module, the above three options are
 used a parameter of the scroll option, e.g. scroll=ypan.)

vgapal  Use the standard VGA registers for palette changes.

pmipal  Use the protected mode interface for palette changes.
        This is the default if the protected mode interface is
        available.  Available on x86 only.

mtrr:n  Setup memory type range registers for the framebuffer
        where n:
              0 - disabled (equivalent to nomtrr)
              3 - write-combining (default)

	Values other than 0 and 3 will result in a warning and will be
	treated just like 3.

nomtrr  Do not use memory type range registers.

vremap:n
        Remap 'n' MiB of video RAM.  If 0 or not specified, remap memory
        according to video mode.

vtotal:n
        If the video BIOS of your card incorrectly determines the total
        amount of video RAM, use this option to override the BIOS (in MiB).

<mode>  The mode you want to set, in the standard modedb format.  Refer to
        modedb.txt for a detailed description.  When uvesafb is compiled as
        a module, the mode string should be provided as a value of the
        'mode_option' option.

vbemode:x
        Force the use of VBE mode x.  The mode will only be set if it's
        found in the VBE-provided list of supported modes.
        NOTE: The mode number 'x' should be specified in VESA mode number
        notation, not the Linux kernel one (eg. 257 instead of 769).
        HINT: If you use this option because normal <mode> parameter does
        not work for you and you use a X server, you'll probably want to
        set the 'nocrtc' option to ensure that the video mode is properly
        restored after console <-> X switches.

nocrtc  Do not use CRTC timings while setting the video mode.  This option
        has any effect only if the Video BIOS is VBE 3.0 compliant.  Use it
        if you have problems with modes set the standard way.  Note that
        using this option implies that any refresh rate adjustments will
        be ignored and the refresh rate will stay at your BIOS default (60 Hz).

noedid  Do not try to fetch and use EDID-provided modes.

noblank Disable hardware blanking.

v86d:path
        Set path to the v86d executable. This option is only available as
        a module parameter, and not as a part of the video= string.  If you
        need to use it and have uvesafb built into the kernel, use
        uvesafb.v86d="path".

Additionally, the following parameters may be provided.  They all override the
EDID-provided values and BIOS defaults.  Refer to your monitor's specs to get
the correct values for maxhf, maxvf and maxclk for your hardware.

maxhf:n     Maximum horizontal frequency (in kHz).
maxvf:n     Maximum vertical frequency (in Hz).
maxclk:n    Maximum pixel clock (in MHz).

4. The sysfs interface
----------------------

uvesafb provides several sysfs nodes for configurable parameters and
additional information.

Driver attributes:

/sys/bus/platform/drivers/uvesafb
  - v86d (default: /sbin/v86d)
    Path to the v86d executable. v86d is started by uvesafb
    if an instance of the daemon isn't already running.

Device attributes:

/sys/bus/platform/drivers/uvesafb/uvesafb.0
  - nocrtc
    Use the default refresh rate (60 Hz) if set to 1.

  - oem_product_name
  - oem_product_rev
  - oem_string
  - oem_vendor
    Information about the card and its maker.

  - vbe_modes
    A list of video modes supported by the Video BIOS along with their
    VBE mode numbers in hex.

  - vbe_version
    A BCD value indicating the implemented VBE standard.

5. Miscellaneous
----------------

Uvesafb will set a video mode with the default refresh rate and timings
from the Video BIOS if you set pixclock to 0 in fb_var_screeninfo.


--
 Michal Januszewski <spock@gentoo.org>
 Last updated: 2009-03-30

 Documentation of the uvesafb options is loosely based on vesafb.txt.

