^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) ==========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) uvesafb - A Generic Driver for VBE2+ compliant video cards
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ==========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) 1. Requirements
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) ---------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) uvesafb should work with any video card that has a Video BIOS compliant
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) with the VBE 2.0 standard.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) Unlike other drivers, uvesafb makes use of a userspace helper called
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) v86d. v86d is used to run the x86 Video BIOS code in a simulated and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) controlled environment. This allows uvesafb to function on arches other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) than x86. Check the v86d documentation for a list of currently supported
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) arches.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) v86d source code can be downloaded from the following website:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) https://github.com/mjanusz/v86d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) Please refer to the v86d documentation for detailed configuration and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) installation instructions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) Note that the v86d userspace helper has to be available at all times in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) order for uvesafb to work properly. If you want to use uvesafb during
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) early boot, you will have to include v86d into an initramfs image, and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) either compile it into the kernel or use it as an initrd.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 2. Caveats and limitations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) --------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) uvesafb is a _generic_ driver which supports a wide variety of video
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) cards, but which is ultimately limited by the Video BIOS interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) The most important limitations are:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) - Lack of any type of acceleration.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) - A strict and limited set of supported video modes. Often the native
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) or most optimal resolution/refresh rate for your setup will not work
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) with uvesafb, simply because the Video BIOS doesn't support the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) video mode you want to use. This can be especially painful with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) widescreen panels, where native video modes don't have the 4:3 aspect
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) ratio, which is what most BIOS-es are limited to.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) - Adjusting the refresh rate is only possible with a VBE 3.0 compliant
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) Video BIOS. Note that many nVidia Video BIOS-es claim to be VBE 3.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) compliant, while they simply ignore any refresh rate settings.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 3. Configuration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) ----------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) uvesafb can be compiled either as a module, or directly into the kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) In both cases it supports the same set of configuration options, which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) are either given on the kernel command line or as module parameters, e.g.::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) video=uvesafb:1024x768-32,mtrr:3,ywrap (compiled into the kernel)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) # modprobe uvesafb mode_option=1024x768-32 mtrr=3 scroll=ywrap (module)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) Accepted options:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) ======= =========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) ypan Enable display panning using the VESA protected mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) interface. The visible screen is just a window of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) video memory, console scrolling is done by changing the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) start of the window. This option is available on x86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) only and is the default option on that architecture.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) ywrap Same as ypan, but assumes your gfx board can wrap-around
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) the video memory (i.e. starts reading from top if it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) reaches the end of video memory). Faster than ypan.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) Available on x86 only.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) redraw Scroll by redrawing the affected part of the screen, this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) is the default on non-x86.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) ======= =========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) (If you're using uvesafb as a module, the above three options are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) used a parameter of the scroll option, e.g. scroll=ypan.)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) =========== ====================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) vgapal Use the standard VGA registers for palette changes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) pmipal Use the protected mode interface for palette changes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) This is the default if the protected mode interface is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) available. Available on x86 only.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) mtrr:n Setup memory type range registers for the framebuffer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) where n:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) - 0 - disabled (equivalent to nomtrr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) - 3 - write-combining (default)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) Values other than 0 and 3 will result in a warning and will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) treated just like 3.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) nomtrr Do not use memory type range registers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) vremap:n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) Remap 'n' MiB of video RAM. If 0 or not specified, remap memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) according to video mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) vtotal:n If the video BIOS of your card incorrectly determines the total
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) amount of video RAM, use this option to override the BIOS (in MiB).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) <mode> The mode you want to set, in the standard modedb format. Refer to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) modedb.txt for a detailed description. When uvesafb is compiled as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) a module, the mode string should be provided as a value of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 'mode_option' option.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) vbemode:x Force the use of VBE mode x. The mode will only be set if it's
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) found in the VBE-provided list of supported modes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) NOTE: The mode number 'x' should be specified in VESA mode number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) notation, not the Linux kernel one (eg. 257 instead of 769).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) HINT: If you use this option because normal <mode> parameter does
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) not work for you and you use a X server, you'll probably want to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) set the 'nocrtc' option to ensure that the video mode is properly
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) restored after console <-> X switches.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) nocrtc Do not use CRTC timings while setting the video mode. This option
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) has any effect only if the Video BIOS is VBE 3.0 compliant. Use it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) if you have problems with modes set the standard way. Note that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) using this option implies that any refresh rate adjustments will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) be ignored and the refresh rate will stay at your BIOS default
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) (60 Hz).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) noedid Do not try to fetch and use EDID-provided modes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) noblank Disable hardware blanking.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) v86d:path Set path to the v86d executable. This option is only available as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) a module parameter, and not as a part of the video= string. If you
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) need to use it and have uvesafb built into the kernel, use
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) uvesafb.v86d="path".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) =========== ====================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) Additionally, the following parameters may be provided. They all override the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) EDID-provided values and BIOS defaults. Refer to your monitor's specs to get
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) the correct values for maxhf, maxvf and maxclk for your hardware.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) =========== ======================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) maxhf:n Maximum horizontal frequency (in kHz).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) maxvf:n Maximum vertical frequency (in Hz).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) maxclk:n Maximum pixel clock (in MHz).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) =========== ======================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 4. The sysfs interface
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) ----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) uvesafb provides several sysfs nodes for configurable parameters and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) additional information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) Driver attributes:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) /sys/bus/platform/drivers/uvesafb
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) v86d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) (default: /sbin/v86d)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) Path to the v86d executable. v86d is started by uvesafb
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) if an instance of the daemon isn't already running.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) Device attributes:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) /sys/bus/platform/drivers/uvesafb/uvesafb.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) nocrtc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) Use the default refresh rate (60 Hz) if set to 1.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) oem_product_name, oem_product_rev, oem_string, oem_vendor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) Information about the card and its maker.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) vbe_modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) A list of video modes supported by the Video BIOS along with their
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) VBE mode numbers in hex.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) vbe_version
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) A BCD value indicating the implemented VBE standard.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 5. Miscellaneous
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) ----------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) Uvesafb will set a video mode with the default refresh rate and timings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) from the Video BIOS if you set pixclock to 0 in fb_var_screeninfo.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) Michal Januszewski <spock@gentoo.org>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) Last updated: 2017-10-10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) Documentation of the uvesafb options is loosely based on vesafb.txt.