summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Staaf <robotboy@chromium.org>2015-03-16 10:56:37 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-03-16 23:04:39 +0000
commitfa671e65917b6673250af23e58372bcec272ca0e (patch)
tree342eb28f7e77b28113fd74308fc02c21ad15ef5a
parent90ef8b700629381ac62aae4f87612ef84b32cb35 (diff)
downloadchrome-ec-fa671e65917b6673250af23e58372bcec272ca0e.tar.gz
USB: Add udev rule to handle CCD devices
This udev rule creates a directory in /dev/google for each device attached. The name of the directory is unique to the device and is prefixed with the device product name. Within the directory there is a serial directory that contains symlinks to each USB serial port exposed by the device. The symlinks are named based on the USB interface name provided by the EC. Additional subdirectories can be added for I2C, JTAG, GPIOs, and SPI as needed. Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=None BUG=None TEST=Verify that two different CCD devices generate uniquely named entries. Change-Id: I7e6f2ace29b7302c7c072bcf6aab7c8f060b993a Reviewed-on: https://chromium-review.googlesource.com/260420 Trybot-Ready: Anton Staaf <robotboy@chromium.org> Tested-by: Anton Staaf <robotboy@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org> Commit-Queue: Anton Staaf <robotboy@chromium.org>
-rw-r--r--extra/usb_serial/50-google-serial.rules14
1 files changed, 14 insertions, 0 deletions
diff --git a/extra/usb_serial/50-google-serial.rules b/extra/usb_serial/50-google-serial.rules
new file mode 100644
index 0000000000..ee2db62543
--- /dev/null
+++ b/extra/usb_serial/50-google-serial.rules
@@ -0,0 +1,14 @@
+#
+# Match a Google device with an interface that supports the simple serial
+# driver.
+#
+# The first rule matches the google VID and records the product name, USB bus
+# number and USB device path (the device path is the list of hub ports between
+# the root and the device). This becomes a unique name under which the second
+# rule creates the symlinks to the serial devices. The second rule will only
+# fire if the .GOOGLE_CCD_NAME variable has been set by the first rule. If
+# some other udev rule has set the same name previously, there would be a
+# conflict, so this name is chosen to be verbose and likely unique.
+#
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="18d1", ENV{.GOOGLE_CCD_NAME}="$attr{product}-$attr{busnum}-$attr{devpath}"
+SUBSYSTEMS=="usb", ENV{.GOOGLE_CCD_NAME}!="", ATTRS{bInterfaceClass}=="ff", ATTRS{bInterfaceSubClass}=="50", ATTRS{bInterfaceProtocol}=="01", OPTIONS+="string_escape=replace", SYMLINK+="google/$env{.GOOGLE_CCD_NAME}/serial/$attr{interface}"