# SPDX-License-Identifier: GPL-2.0

config USB_SISUSBVGA
	tristate "USB 2.0 SVGA dongle support (Net2280/SiS315)"
	depends on (USB_MUSB_HDRC || USB_EHCI_HCD)
	select FONT_SUPPORT if USB_SISUSBVGA_CON
        ---help---
	  Say Y here if you intend to attach a USB2VGA dongle based on a
	  Net2280 and a SiS315 chip.

	  Note that this device requires a USB 2.0 host controller. It will not
	  work with USB 1.x controllers.

	  To compile this driver as a module, choose M here; the module will be
	  called sisusbvga. If unsure, say N.

config USB_SISUSBVGA_CON
	bool "Text console and mode switching support" if USB_SISUSBVGA
	depends on VT
	select FONT_8x16
	---help---
	  Say Y here if you want a VGA text console via the USB dongle or
	  want to support userland applications that utilize the driver's
	  display mode switching capabilities.

	  Note that this console supports VGA/EGA text mode only.

	  By default, the console part of the driver will not kick in when
	  the driver is initialized. If you want the driver to take over
	  one or more of the consoles, you need to specify the number of
	  the first and last consoles (starting at 1) as driver parameters.

	  For example, if the driver is compiled as a module:

	     modprobe sisusbvga first=1 last=5

	  If you use hotplug, add this to your modutils config files with
	  the "options" keyword, such as eg.

	     options sisusbvga first=1 last=5

	  If the driver is compiled into the kernel image, the parameters
	  must be given in the kernel command like, such as

	     sisusbvga.first=1 sisusbvga.last=5



