/*
 * (C) Copyright 2000
 * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

"video-mode" environment variable
=================================

The 'video-mode' environment variable can be used to enable and configure
some video drivers.  The format matches the video= command-line option used
for Linux:

	video-mode=<driver>:<xres>x<yres>-<depth>@<freq><,option=string>

	<driver>	The video driver name, ignored by U-Boot
	<xres>		The X resolution (in pixels) to use.
	<yres>		The Y resolution (in pixels) to use.
	<depth>		The color depth (in bits) to use.
	<freq>		The frequency (in Hz) to use.
	<options>	A comma-separated list of device-specific options


U-Boot MPC8xx video controller driver
=====================================

The driver has been tested with the following configurations:

- MPC823FADS with AD7176 on a PAL TV (YCbYCr)	- arsenio@tin.it

Example: video-mode=fslfb:1280x1024-32@60,monitor=dvi


U-boot sunxi video controller driver
====================================

U-boot supports hdmi and lcd output on Allwinner sunxi SoCs, lcd output
requires the CONFIG_VIDEO_LCD_MODE Kconfig value to be set.

The sunxi u-boot driver supports the following video-mode options:

- monitor=[none|dvi|hdmi|lcd] - Select the video output to use
 none:     Disable video output.
 dvi/hdmi: Selects output over the hdmi connector with dvi resp. hdmi output
           format, if edid is used the format is automatically selected.
 lcd:      Selects video output to a LCD screen.
 vga:      Selects bideo output over the VGA connector.
 Defaults to monitor=dvi.

- hpd=[0|1] - Enable use of the hdmi HotPlug Detect feature
 0: Disabled. Configure dvi/hdmi output even if no cable is detected
 1: Enabled. If a LCD has been configured fallback to the LCD when no cable is
    detected, if no LCD is configured, disable video ouput.
 Defaults to hpd=1.

- edid=[0|1] - Enable use of DDC + EDID to get monitor info
 0: Disabled.
 1: Enabled. If valid EDID info was read from the monitor the EDID info will
    overrides the xres, yres and refresh from the video-mode env. variable.
 Defaults to edid=1.

For example to always use the hdmi connector, even if no cable is inserted,
using edid info when available and otherwise initalizing it at 1024x768@60Hz,
use: video-mode=sunxi:1024x768-24@60,monitor=dvi,hpd=0,edid=1 .
