forked from Minki/linux
812086d362
The USB gadget subsystem wants to use the USB debugfs root directory, so move it to the common "core" USB code so that it is properly initialized and removed as needed. In order to properly do this, we need to load the common code before the usb core code, when everything is linked into the kernel, so reorder the link order of the code. Also as the usb common code has the possibility of the led trigger logic to be merged into it, handle the build option properly by only having one module init/exit function and have the common code initialize the led trigger if needed. Reported-by: Chunfeng Yun <chunfeng.yun@mediatek.com> Cc: Felipe Balbi <felipe.balbi@linux.intel.com> Tested-by: Chunfeng Yun <chunfeng.yun@mediatek.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
51 lines
1.1 KiB
C
51 lines
1.1 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* LED Triggers for USB Activity
|
|
*
|
|
* Copyright 2014 Michal Sojka <sojka@merica.cz>
|
|
*/
|
|
|
|
#include <linux/module.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/init.h>
|
|
#include <linux/leds.h>
|
|
#include <linux/usb.h>
|
|
#include "common.h"
|
|
|
|
#define BLINK_DELAY 30
|
|
|
|
static unsigned long usb_blink_delay = BLINK_DELAY;
|
|
|
|
DEFINE_LED_TRIGGER(ledtrig_usb_gadget);
|
|
DEFINE_LED_TRIGGER(ledtrig_usb_host);
|
|
|
|
void usb_led_activity(enum usb_led_event ev)
|
|
{
|
|
struct led_trigger *trig = NULL;
|
|
|
|
switch (ev) {
|
|
case USB_LED_EVENT_GADGET:
|
|
trig = ledtrig_usb_gadget;
|
|
break;
|
|
case USB_LED_EVENT_HOST:
|
|
trig = ledtrig_usb_host;
|
|
break;
|
|
}
|
|
/* led_trigger_blink_oneshot() handles trig == NULL gracefully */
|
|
led_trigger_blink_oneshot(trig, &usb_blink_delay, &usb_blink_delay, 0);
|
|
}
|
|
EXPORT_SYMBOL_GPL(usb_led_activity);
|
|
|
|
|
|
void __init ledtrig_usb_init(void)
|
|
{
|
|
led_trigger_register_simple("usb-gadget", &ledtrig_usb_gadget);
|
|
led_trigger_register_simple("usb-host", &ledtrig_usb_host);
|
|
}
|
|
|
|
void __exit ledtrig_usb_exit(void)
|
|
{
|
|
led_trigger_unregister_simple(ledtrig_usb_gadget);
|
|
led_trigger_unregister_simple(ledtrig_usb_host);
|
|
}
|