Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /*
0003  * LED Triggers for USB Activity
0004  *
0005  * Copyright 2014 Michal Sojka <sojka@merica.cz>
0006  */
0007 
0008 #include <linux/module.h>
0009 #include <linux/kernel.h>
0010 #include <linux/init.h>
0011 #include <linux/leds.h>
0012 #include <linux/usb.h>
0013 #include "common.h"
0014 
0015 #define BLINK_DELAY 30
0016 
0017 static unsigned long usb_blink_delay = BLINK_DELAY;
0018 
0019 DEFINE_LED_TRIGGER(ledtrig_usb_gadget);
0020 DEFINE_LED_TRIGGER(ledtrig_usb_host);
0021 
0022 void usb_led_activity(enum usb_led_event ev)
0023 {
0024     struct led_trigger *trig = NULL;
0025 
0026     switch (ev) {
0027     case USB_LED_EVENT_GADGET:
0028         trig = ledtrig_usb_gadget;
0029         break;
0030     case USB_LED_EVENT_HOST:
0031         trig = ledtrig_usb_host;
0032         break;
0033     }
0034     /* led_trigger_blink_oneshot() handles trig == NULL gracefully */
0035     led_trigger_blink_oneshot(trig, &usb_blink_delay, &usb_blink_delay, 0);
0036 }
0037 EXPORT_SYMBOL_GPL(usb_led_activity);
0038 
0039 
0040 void __init ledtrig_usb_init(void)
0041 {
0042     led_trigger_register_simple("usb-gadget", &ledtrig_usb_gadget);
0043     led_trigger_register_simple("usb-host", &ledtrig_usb_host);
0044 }
0045 
0046 void __exit ledtrig_usb_exit(void)
0047 {
0048     led_trigger_unregister_simple(ledtrig_usb_gadget);
0049     led_trigger_unregister_simple(ledtrig_usb_host);
0050 }