linux/drivers/usb/common/led.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 * LED Triggers for USB Activity
   4 *
   5 * Copyright 2014 Michal Sojka <sojka@merica.cz>
   6 */
   7
   8#include <linux/module.h>
   9#include <linux/kernel.h>
  10#include <linux/init.h>
  11#include <linux/leds.h>
  12#include <linux/usb.h>
  13#include "common.h"
  14
  15#define BLINK_DELAY 30
  16
  17static unsigned long usb_blink_delay = BLINK_DELAY;
  18
  19DEFINE_LED_TRIGGER(ledtrig_usb_gadget);
  20DEFINE_LED_TRIGGER(ledtrig_usb_host);
  21
  22void usb_led_activity(enum usb_led_event ev)
  23{
  24        struct led_trigger *trig = NULL;
  25
  26        switch (ev) {
  27        case USB_LED_EVENT_GADGET:
  28                trig = ledtrig_usb_gadget;
  29                break;
  30        case USB_LED_EVENT_HOST:
  31                trig = ledtrig_usb_host;
  32                break;
  33        }
  34        /* led_trigger_blink_oneshot() handles trig == NULL gracefully */
  35        led_trigger_blink_oneshot(trig, &usb_blink_delay, &usb_blink_delay, 0);
  36}
  37EXPORT_SYMBOL_GPL(usb_led_activity);
  38
  39
  40void __init ledtrig_usb_init(void)
  41{
  42        led_trigger_register_simple("usb-gadget", &ledtrig_usb_gadget);
  43        led_trigger_register_simple("usb-host", &ledtrig_usb_host);
  44}
  45
  46void __exit ledtrig_usb_exit(void)
  47{
  48        led_trigger_unregister_simple(ledtrig_usb_gadget);
  49        led_trigger_unregister_simple(ledtrig_usb_host);
  50}
  51