# Copyright 2007 Gentoo Foundation.
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/desc/lcd_devices.desc,v 1.8 2009/06/08 15:14:51 rbu Exp $

# This file contains descriptions of LCD_DEVICES USE_EXPAND flags.

# Keep it sorted.
bayrad - Add support for BayRAD LCD modules by EMAC
beckmannegle - Add support for Beckmann+Egle "Mini Terminals" and "Compact Terminals"
bwct - Add support for BWCT USB LCD displays
cfontz633 - Add support for CrystalFontz 633 chipset displays
cfontz - Add support for CrystalFontz displays
cfontzpacket - Add support for CrystalFontz chipsets CFA-631, CFA-633 and CFA-635 
cwlinux - Add support for serial / USB displays CW12232 and CW1602 by CwLinux
ea232 - Add support for the Electronic Assembly RS232 graphic driver
ea65 - Add support for the VFD in the AOpen XC Cube-AV EA65 media barebone
eyeboxone - Add support for the displays on Rightvision's EyeboxOne server
g15 - Add support for Logitech G15 Keyboard LCDs
glk - Add support for MatrixOrbital GLK chipset
graphlcd - Meta-driver to support drivers via app-misc/graphlcd-base
hd44780 - Add support for Hitachi HD44780 and compatible displays
hd44780i2c - Enable hd44780 via i2c instead of parallel port driver
i2500vfd - Add support for the Intra2net Intranator 2500 VFD display
icpa106 - Add support for ICP A106 alarm/LCD boards for 19" racks
imon - Add support for Soundgraph/Ahanix/Silverstone/Uneed/Accent iMON IR/VFD modules (Antec Fusion)
imonlcd - Add support for Soundgraph iMON LCD modules (Antec Fusion)
iowarrior - Add support for IO-Warrior displays
irtrans - Add support for the 16x2 IRTrans VFD device
lb216 - Add support for RTN's LB216 display
lcd2usb - Add support for the open lcd2usb connector to hd44780 displays
lcdlinux - Add support for HD44780 displays via the LCD-Linux kernel driver
lcdm001 - Add support for the Kernelconcepts LCDM001 display
lcdterm - Add support for LCDTerm serial-to-HD44780 adapter boards
lcterm - Add support for Neumark's LCTerm serial LCD
ledmatrix - Add support for SLM1606/8 LED Matrix displays
lis - Add support for the VLSystem L.I.S MCE 2005 VFD
lph7508 - Add support for the Pollin LPH7508
luise - Add support for the Wallbraun Electronics LCD-USB-Interface to Hitachi SP14Q002
m50530 - Add support for M50530 and compatible displays
md8800 - Add support for the VFD of the Medion MD8800 PC
milfordbpk - Add support for Milford Instruments BPK serial interface board for HD44780
ms6931 - Add support for MSI-6931 displays in MSI rack servers
mtcs16209x - Add support for MTC_S16209x displays
mtxorb - Add support for Matrix Orbital LCD* LKD* VFD* and VKD* displays
ncurses - Add support for emulated LCD display on terminal using ncurses
noritake - Add support for the Noritake GU128x32-311 graphical display.
noritakevfd - Add support for the Noritake VFD Device CU20045SCPB-T28A
null - Add support for a NULL driver (for testing)
picolcd - Add support for Mini-Box's picoLCD
png - Add support for PNG output
ppm - Add support for PNG output
pyramid - Add support for the Pyramid LCD device
routerboard - Add support for the Router Board LCD port
sed1330 - Add support for Seiko Epson SED1330/1335 graphical displays (S1D13300/S1D13305)
sed1520 - Add support for the Seiko Epson SED1520 Controller
serdisplib - Meta-driver to support drivers via dev-libs/serdisplib
serialpos - Add support for character displays in serial point of sale ("POS") devices
serialvfd - Add support for most NEC, Futaba and Noritake VFDs
shuttlevfd - Add support for several Shuttle VFDs such as M1000, M2000, G5 3300m and SG33G5M
simplelcd - Add support for a simple serial terminal display
sli - Add support for a Wirz SLI display
stv5730 - Add support for STV5730A on-screen display chips
svga - Add support for output via media-libs/svgalib
t6963 - Add support for Toshiba T6963 based LCD displays
text - Add support for TextMode displaying
trefon - Add support for Trefon USB LCD displays
tyan - Add support for LCDs of the Barebone GS series
ula200 - Add support for ULA200 USB devices that allow USB connection of HD44780s
usbhub - Add support for USBHUB displays
usblcd - Add support for USBLCD displays
wincor - Add support for the WincorNixdorf serial cashier displays BA63 and BA66
X - Add support for X11 displaying
xosd - Add support for xosdlib
