########################################################################
#
# Description : 50-udev.rules
#
# Authors     : Based on Open Suse Udev Rules
#               kay.sievers@suse.de
#
# Adapted to  : Jim Gifford
# LFS	      : Alexander E. Patrakov
#
# Version     : 00.01
#
# Notes       :
#
########################################################################

# block devices
SUBSYSTEM=="block", 		GROUP="disk", MODE="0640"

# console
KERNEL=="tty[0-9]*",					NAME="vc/%n"
KERNEL=="pty[pqrstuvwxyzabcdef][0123456789abcdef]", 	GROUP="tty", MODE="666", OPTIONS="last_rule"
KERNEL=="tty[pqrstuvwxyzabcdef][0123456789abcdef]", 	GROUP="tty", MODE="666", OPTIONS="last_rule"
KERNEL=="vcs*",						GROUP="tty", MODE="620", OPTIONS="last_rule"
KERNEL=="tty",						GROUP="tty", MODE="666", OPTIONS="last_rule"
KERNEL=="vc/[0-9]*",					GROUP="tty", MODE="620", OPTIONS="last_rule"
KERNEL=="console",					MODE="600", OPTIONS="last_rule"
KERNEL=="ptmx",						GROUP="tty", MODE="666", OPTIONS="last_rule"

# serial devices
KERNEL=="tty[A-Z]*",		GROUP="modem"
KERNEL=="pppox*",		GROUP="modem"
KERNEL=="ircomm*",		GROUP="modem"
KERNEL=="modems/mwave*",	GROUP="modem"
KERNEL=="hvc*",			GROUP="modem"
KERNEL=="hvsi*",		GROUP="modem"
KERNEL=="iseries/vtty*",	GROUP="modem"
KERNEL=="ttyUSB*", 		ATTRS{product}=="[Pp]alm*Handheld*", SYMLINK+="pilot"

# video/graphics
SUBSYSTEM=="video4linux",	GROUP="video"
SUBSYSTEM=="graphics"		GROUP="video"
KERNEL=="vtx*",			GROUP="video"
KERNEL=="vbi*",			GROUP="video"
KERNEL=="winradio*",		GROUP="video"
KERNEL=="vttuner*",		GROUP="video"
KERNEL=="nvidia*",		GROUP="video"
KERNEL=="video0",		SYMLINK+="video"
KERNEL=="radio0",		SYMLINK+="radio"
KERNEL=="vbi0",			SYMLINK+="vbi"
KERNEL=="pmu",			GROUP="video"

# dvb
SUBSYSTEM=="dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}'", NAME="%c", GROUP="video"

# input devices
KERNEL=="mice",			NAME="input/%k", MODE="0640"
KERNEL=="mouse*",		NAME="input/%k", MODE="0640"
KERNEL=="event*",		NAME="input/%k", MODE="0640"
KERNEL=="js*",			NAME="input/%k", MODE="0644"
KERNEL=="ts*",			NAME="input/%k", MODE="0600"
KERNEL=="uinput",		NAME="input/%k", MODE="0600"
KERNEL=="lirc0",		SYMLINK+="lirc"

# printer
SUBSYSTEM=="usb",		KERNEL=="lp*", NAME="usb/%k", SYMLINK+="usb%k", GROUP="lp"
SUBSYSTEM=="printer",		KERNEL=="lp*", NAME="%k", GROUP="lp"
KERNEL=="irlpt*",		GROUP="lp"

# cpu devices
KERNEL=="cpu[0-9]*",		NAME="cpu/%n/cpuid"
KERNEL=="msr[0-9]*",		NAME="cpu/%n/msr"
KERNEL=="microcode",		NAME="cpu/microcode", MODE="0600"

# IEEE1394 devices
KERNEL=="raw1394*",		GROUP="video"
KERNEL=="dv1394*",		SYMLINK+="dv1394/%n", GROUP="video"
KERNEL=="video1394*",		SYMLINK+="video1394/%n", GROUP="video"

# 183 = /dev/hwrng        Generic random number generator
KERNEL=="hw_random",		NAME="hwrng", SYMLINK+="%k"

# 219 /dev/modems/mwave MWave modem firmware upload
KERNEL=="mwave",		NAME="modems/%k"

# 169 /dev/specialix_rioctl Specialix RIO serial control
KERNEL=="rioctl",		NAME="specialix_rioctl", SYMLINK+="%k"

# 167 /dev/specialix_sxctl Specialix serial control
KERNEL=="sxctl",		NAME="specialix_sxctl", SYMLINK+="%k"

# network
KERNEL=="tun",			NAME="net/%k", MODE="0600"

# misc devices
KERNEL=="mem",			GROUP="kmem", MODE="640"
KERNEL=="kmem",			GROUP="kmem", MODE="640"
KERNEL=="port",			GROUP="kmem", MODE="640"
KERNEL=="nvram",		GROUP="kmem", MODE="600"
KERNEL=="null",			MODE="666"
KERNEL=="zero",			MODE="666"
KERNEL=="full",			MODE="622"
KERNEL=="random",		MODE="666"
KERNEL=="urandom",		MODE="644"
KERNEL=="rtc",			GROUP="audio"
KERNEL=="sonypi",		MODE="666"
KERNEL=="agpgart",		MODE="600", GROUP="video"
KERNEL=="djs*",			MODE="644"
KERNEL=="sgi_*",		MODE="666"
KERNEL=="rrom*",		MODE="400"
KERNEL=="rflash*",		MODE="400"
KERNEL=="usbscanner*",		MODE="644"
KERNEL=="3270/ttycons*",	MODE="600"
KERNEL=="3270/tub*",		MODE="666"
KERNEL=="3270/tubcons*",	MODE="600"
KERNEL=="ica",			MODE="666"
KERNEL=="z90crypt",		MODE="666"
KERNEL=="mmtimer",		MODE="444"
KERNEL=="auer[0-9]*"		NAME="usb/%k"

# packet writing interface
KERNEL=="pktcdvd",		NAME="pktcdvd/control"
KERNEL=="pktcdvd[0-9]*",	NAME="pktcdvd/%k"

# fix floppy devices
KERNEL=="fd[0-9]*", 		ACTION=="add", GROUP="floppy", MODE="660"
KERNEL=="fd[0-9]*", 		ACTION=="remove", RUN+="/bin/rm -f $root/%k*"

# sd:		0 TYPE_DISK, 7 TYPE_MOD, 14 TYPE_RBC
# sr:		4 TYPE_WORM, 5 TYPE_ROM
# st/osst:	1 TYPE_TAPE
ACTION=="add", 			SUBSYSTEM=="scsi" , ATTR{type}=="0|7|14", ATTR{timeout}="60"
ACTION=="add", 			SUBSYSTEM=="scsi" , ATTR{type}=="1", ATTR{timeout}="900"

# device mapper
KERNEL=="device-mapper", 	SYMLINK+="mapper/control"

# misc storage devices (non-block)
KERNEL=="sg*",			GROUP="disk", MODE="640"
KERNEL=="sr*",			GROUP="cdrom", MODE="660"
KERNEL=="st*",			GROUP="tape"
KERNEL=="nst*",			GROUP="tape"
KERNEL=="initrd",		GROUP="disk"
KERNEL=="qft*",			GROUP="tape"
KERNEL=="nqft*",		GROUP="tape"
KERNEL=="zqft*",		GROUP="tape"
KERNEL=="nzqft*",		GROUP="tape"
KERNEL=="rawqft*",		GROUP="tape"
KERNEL=="nrawqft*",		GROUP="tape"
KERNEL=="pf*",			GROUP="disk"
KERNEL=="sch*",			GROUP="disk"
KERNEL=="pt*",			GROUP="tape"
KERNEL=="npt*",			GROUP="tape"
KERNEL=="pg*",			GROUP="disk"
KERNEL=="evms/block_device*",	GROUP="disk"
KERNEL=="rawctl*",		GROUP="disk"
KERNEL=="osst*",		GROUP="tape"
KERNEL=="nosst*",		GROUP="tape"
KERNEL=="iseries/vt*",		GROUP="disk"
KERNEL=="iseries/nvt*",		GROUP="disk"
KERNEL=="iseries/ibmsis*",	GROUP="disk"

# libusb device access
SUBSYSTEM=="usb_device", 	PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", NAME="%c", MODE="0644"