ACTION!="add", GOTO="permissions_end"

# workarounds needed to synchronize with sysfs
# only needed for kernels < v2.6.18-rc1
ENV{PHYSDEVPATH}!="?*", ENV{PHYSDEVBUS}=="?*",	WAIT_FOR_SYSFS="bus"
SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*",	WAIT_FOR_SYSFS="ioerr_cnt"
# only needed for kernels < 2.6.16
SUBSYSTEM=="net",				WAIT_FOR_SYSFS="address"
# only needed for kernels < 2.6.17
SUBSYSTEM=="net", ENV{DRIVER}=="?*",		WAIT_FOR_SYSFS="device/driver"

# devices needed to load the drivers providing them
KERNEL=="tun",					OPTIONS+="ignore:remove"
KERNEL=="ppp",					OPTIONS+="ignore:remove"
KERNEL=="loop[0-9]*",				OPTIONS+="ignore:remove"

# default permissions for block devices
SUBSYSTEM=="block",				GROUP="disk"
# the aacraid driver is broken and reports that disks removable (see #404927)
SUBSYSTEM=="block", ATTRS{removable}=="1", \
	DRIVERS!="aacraid",			GROUP="floppy"
# all block devices on these buses are "removable"
SUBSYSTEM=="block", SUBSYSTEMS=="usb|ieee1394|mmc|pcmcia", GROUP="floppy"

# IDE devices
KERNEL=="hd[a-z]|pcd[0-9]*", 			DRIVERS=="ide-cdrom|pcd", \
	IMPORT{program}="cdrom_id --export $tempnode"
ENV{ID_CDROM}=="?*",				GROUP="cdrom"
KERNEL=="ht[0-9]*", 				GROUP="tape"
KERNEL=="nht[0-9]*", 				GROUP="tape"

# SCSI devices
KERNEL=="sr[0-9]*", IMPORT{program}="cdrom_id --export $tempnode"
SUBSYSTEMS=="scsi", ATTRS{type}=="1",				GROUP="tape"
SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="HP",	GROUP="scanner"
SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="Epson",	GROUP="scanner"
SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="EPSON",	GROUP="scanner"
SUBSYSTEMS=="scsi", ATTRS{type}=="4",				GROUP="cdrom"
SUBSYSTEMS=="scsi", ATTRS{type}=="5",				GROUP="cdrom"
SUBSYSTEMS=="scsi", ATTRS{type}=="6",				GROUP="scanner"
SUBSYSTEMS=="scsi", ATTRS{type}=="8",				GROUP="tape"

# USB devices
KERNEL=="legousbtower*",	MODE="0666"
KERNEL=="lp[0-9]*", SUBSYSTEMS=="usb",		GROUP="lp"

# usbfs-like devices
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
				MODE="0664"

# iRiver music players
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device",	GROUP="plugdev", \
	ATTRS{idVendor}=="4102", ATTRS{idProduct}=="10[01][135789]"

# serial devices
SUBSYSTEM=="tty",				GROUP="dialout"
SUBSYSTEM=="capi",				GROUP="dialout"
SUBSYSTEM=="slamr",				GROUP="dialout"
SUBSYSTEM=="zaptel",				GROUP="dialout"

# vc devices (all members of the tty subsystem)
KERNEL=="ptmx",			MODE="0666",	GROUP="root"
KERNEL=="console",		MODE="0600",	GROUP="root"
KERNEL=="tty",			MODE="0666",	GROUP="root"
KERNEL=="tty[0-9]*",				GROUP="root"
KERNEL=="pty*",			MODE="0666",	GROUP="tty"

# video devices
SUBSYSTEM=="video4linux",			GROUP="video"
SUBSYSTEM=="drm",				GROUP="video"
SUBSYSTEM=="dvb",				GROUP="video"
SUBSYSTEM=="em8300",				GROUP="video"
SUBSYSTEM=="graphics",				GROUP="video"
SUBSYSTEM=="nvidia",				GROUP="video"

# misc devices
KERNEL=="random",		MODE="0666"
KERNEL=="urandom",		MODE="0666"
KERNEL=="mem",			MODE="0640",	GROUP="kmem"
KERNEL=="kmem",			MODE="0640",	GROUP="kmem"
KERNEL=="port",			MODE="0640",	GROUP="kmem"
KERNEL=="full",			MODE="0666"
KERNEL=="null",			MODE="0666"
KERNEL=="zero",			MODE="0666"
KERNEL=="inotify",		MODE="0666"
KERNEL=="sgi_fetchop",		MODE="0666"
KERNEL=="sonypi",		MODE="0666"
KERNEL=="agpgart",				GROUP="video"
KERNEL=="nvram",				GROUP="nvram"
KERNEL=="rtc|rtc[0-9]*",			GROUP="audio"
KERNEL=="tpm*",			MODE="0600",	OWNER="tss", GROUP="tss"
KERNEL=="fuse",					GROUP="fuse"
KERNEL=="kqemu",		MODE="0666"
KERNEL=="kvm",					GROUP="kvm"
KERNEL=="tun",			MODE="0666",

KERNEL=="cdemu[0-9]*",				GROUP="cdrom"
KERNEL=="pktcdvd[0-9]*",			GROUP="cdrom"
KERNEL=="pktcdvd",		MODE="0644"

KERNEL=="uverbs*",				GROUP="rdma"
KERNEL=="ucm*",					GROUP="rdma"
KERNEL=="rdma_ucm",				GROUP="rdma"

# printers and parallel devices
SUBSYSTEM=="printer",				GROUP="lp"
SUBSYSTEM=="ppdev",				GROUP="lp"
KERNEL=="irlpt*",				GROUP="lp"
KERNEL=="pt[0-9]*",				GROUP="tape"
KERNEL=="pht[0-9]*",				GROUP="tape"

# sound devices
SUBSYSTEM=="sound",				GROUP="audio"

# ieee1394 devices       
KERNEL=="raw1394",				GROUP="disk"
KERNEL=="dv1394*",				GROUP="video"
KERNEL=="video1394*",				GROUP="video"

# input devices
KERNEL=="event[0-9]*", ATTRS{name}=="*dvb*|*DVB*|* IR *" \
				MODE="0664",	GROUP="video"
KERNEL=="js[0-9]*",		MODE="0664"
KERNEL=="lirc[0-9]*",				GROUP="video"

# AOE character devices
SUBSYSTEM=="aoe",		MODE="0220",	GROUP="disk"
SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"

LABEL="permissions_end"

