xref: /kernel/linux/linux-6.6/drivers/usb/common/led.c (revision 62306a36)
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