##
## This file is part of the flashrom project.
##
## Copyright (C) 2010 Uwe Hermann <uwe@hermann-uwe.de>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##

##
## Please keep this list sorted alphabetically by vendor/device name.
##

##
## This is tested on udev version 154, other versions may need small fixes.
##
## Note that you might want to change the "plugdev" group to whatever is
## suitable for your respective distribution.
##

ACTION!="add|change", GOTO="flashrom_rules_end"
SUBSYSTEM!="usb|usb_device", GOTO="flashrom_rules_end"

# Amontec JTAGkey(2)
# http://www.amontec.com/jtagkey.shtml
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="cff8", MODE="664", GROUP="plugdev"

# Buspirate
# http://dangerousprototypes.com/2009/10/08/bus-pirate-raw-spi-mode/
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="664", GROUP="plugdev"

# Dediprog SF100
# http://www.dediprog.com/SPI-flash-in-circuit-programming/SF100
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="dada", MODE="664", GROUP="plugdev"

# DLP Design DLP-USB1232H
# http://www.dlpdesign.com/usb/usb1232h.shtml
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="664", GROUP="plugdev"

# FIC OpenMoko Neo1973 Debug board (V2+)
# http://wiki.openmoko.org/wiki/Neo1973_Debug_Board_v2
ATTRS{idVendor}=="1457", ATTRS{idProduct}=="5118", MODE="664", GROUP="plugdev"

# FTDI FT4232H Mini-Module
# http://www.ftdichip.com/Products/EvaluationKits/FT4232H_MiniModule.htm
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", MODE="664", GROUP="plugdev"

# GOEPEL PicoTAP
# http://www.goepel.com/jtagboundary-scan/hardware/picotap.html
ATTRS{idVendor}=="096c", ATTRS{idProduct}=="1449", MODE="664", GROUP="plugdev"

# Google servo debug board
# https://www.chromium.org/chromium-os/servo
ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="5001", MODE="664", GROUP="plugdev"
ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="5002", MODE="664", GROUP="plugdev"
ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="5003", MODE="664", GROUP="plugdev"

# Kristech KT-LINK
# https://kristech.pl/files/KT-LINK-UM-ENG.pdf
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bbe2", MODE="664", GROUP="plugdev"

# Olimex ARM-USB-OCD
# http://olimex.com/dev/arm-usb-ocd.html
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="0003", MODE="664", GROUP="plugdev"

# Olimex ARM-USB-OCD-H
# http://olimex.com/dev/arm-usb-ocd-h.html
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="002b", MODE="664", GROUP="plugdev"

# Olimex ARM-USB-TINY
# http://olimex.com/dev/arm-usb-tiny.html
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="0004", MODE="664", GROUP="plugdev"

# Olimex ARM-USB-TINY-H
# http://olimex.com/dev/arm-usb-tiny-h.html
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="002a", MODE="664", GROUP="plugdev"

# TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA)
# http://www.diygadget.com/tiao-usb-multi-protocol-adapter-jtag-spi-i2c-serial.html
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8a98", MODE="664", GROUP="plugdev"

# TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA) Lite
# http://www.tiaowiki.com/w/TIAO_USB_Multi_Protocol_Adapter_Lite_User's_Manual
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8a99", MODE="664", GROUP="plugdev"

# Winchiphead (WCH) CH341a based programmer
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="5512", MODE="664", GROUP="plugdev"

LABEL="flashrom_rules_end"
