如何更改 LED 触发器?

swm*_*ail 4 linux kernel linux-device-driver led

我已经在 BSP 的 LED 中注册:

static struct gpio_led ic_leds[] = {
        {
                .name                   = "led1:green",
                .gpio                   = USER_LED,
                .default_trigger        = "heartbeat",
                .active_low             = 1,
        },
};

static struct gpio_led_platform_data ic_led_info = {
        .num_leds       = ARRAY_SIZE(ic_leds),
        .leds           = ic_leds,
};

static struct platform_device ic_leds_device = {
        .name   = "leds-gpio",
        .id     = -1,
        .dev    = {
                .platform_data = &ic_led_info,
        },
};

static void __init ic_add_device_leds(void)
{
        platform_device_register(&ic_leds_device);
}
Run Code Online (Sandbox Code Playgroud)

如何在运行时更改触发器?我知道 sysfs 是可能的,但也许存在另一种方式?

小智 5

echo "thetriggeryouwant" > /sys/class/leds/someled/trigger
Run Code Online (Sandbox Code Playgroud)

thetriggeryouwant例如phy0rx,其中someled是您要更改触发器的 LED 的名称。


要获取该 LED 的所有可用触发器,您可以使用cat以下文件:

cat /sys/class/leds/someled/trigger
Run Code Online (Sandbox Code Playgroud)

例如给出:

[none] timer oneshot mtd nand-disk heartbeat backlight gpio cpu cpu0 cpu1 activity default-on 2188000.ethernet-2:00:link 2188000.ethernet-2:00:100Mbps 2188000.ethernet-2:00:10Mbps

其中括号 ( ) 中的项目[none]表示当前触发器。