162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * LED Triggers for USB Activity 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright 2014 Michal Sojka <sojka@merica.cz> 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include <linux/module.h> 962306a36Sopenharmony_ci#include <linux/kernel.h> 1062306a36Sopenharmony_ci#include <linux/init.h> 1162306a36Sopenharmony_ci#include <linux/leds.h> 1262306a36Sopenharmony_ci#include <linux/usb.h> 1362306a36Sopenharmony_ci#include "common.h" 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#define BLINK_DELAY 30 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciDEFINE_LED_TRIGGER(ledtrig_usb_gadget); 1862306a36Sopenharmony_ciDEFINE_LED_TRIGGER(ledtrig_usb_host); 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_civoid usb_led_activity(enum usb_led_event ev) 2162306a36Sopenharmony_ci{ 2262306a36Sopenharmony_ci struct led_trigger *trig = NULL; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci switch (ev) { 2562306a36Sopenharmony_ci case USB_LED_EVENT_GADGET: 2662306a36Sopenharmony_ci trig = ledtrig_usb_gadget; 2762306a36Sopenharmony_ci break; 2862306a36Sopenharmony_ci case USB_LED_EVENT_HOST: 2962306a36Sopenharmony_ci trig = ledtrig_usb_host; 3062306a36Sopenharmony_ci break; 3162306a36Sopenharmony_ci } 3262306a36Sopenharmony_ci /* led_trigger_blink_oneshot() handles trig == NULL gracefully */ 3362306a36Sopenharmony_ci led_trigger_blink_oneshot(trig, BLINK_DELAY, BLINK_DELAY, 0); 3462306a36Sopenharmony_ci} 3562306a36Sopenharmony_ciEXPORT_SYMBOL_GPL(usb_led_activity); 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_civoid __init ledtrig_usb_init(void) 3962306a36Sopenharmony_ci{ 4062306a36Sopenharmony_ci led_trigger_register_simple("usb-gadget", &ledtrig_usb_gadget); 4162306a36Sopenharmony_ci led_trigger_register_simple("usb-host", &ledtrig_usb_host); 4262306a36Sopenharmony_ci} 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_civoid __exit ledtrig_usb_exit(void) 4562306a36Sopenharmony_ci{ 4662306a36Sopenharmony_ci led_trigger_unregister_simple(ledtrig_usb_gadget); 4762306a36Sopenharmony_ci led_trigger_unregister_simple(ledtrig_usb_host); 4862306a36Sopenharmony_ci} 49