^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) USB port LED trigger
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) This LED trigger can be used for signalling to the user a presence of USB device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) in a given port. It simply turns on LED when device appears and turns it off
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) when it disappears.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) It requires selecting USB ports that should be observed. All available ones are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) listed as separated entries in a "ports" subdirectory. Selecting is handled by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) echoing "1" to a chosen port.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Please note that this trigger allows selecting multiple USB ports for a single
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) LED.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) This can be useful in two cases:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 1) Device with single USB LED and few physical ports
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) ====================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) In such a case LED will be turned on as long as there is at least one connected
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) USB device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 2) Device with a physical port handled by few controllers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) =========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) Some devices may have one controller per PHY standard. E.g. USB 3.0 physical
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) port may be handled by ohci-platform, ehci-platform and xhci-hcd. If there is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) only one LED user will most likely want to assign ports from all 3 hubs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) This trigger can be activated from user space on led class devices as shown
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) below::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) echo usbport > trigger
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) This adds sysfs attributes to the LED that are documented in:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) Documentation/ABI/testing/sysfs-class-led-trigger-usbport
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) Example use-case::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) echo usbport > trigger
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) echo 1 > ports/usb1-port1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) echo 1 > ports/usb2-port1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) cat ports/usb1-port1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) echo 0 > ports/usb1-port1