static DEVICE_ATTR(state, 0644, transient_state_show, transient_state_store);
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/device.h>
struct transient_trig_data {
struct led_classdev *led_cdev;
static void transient_timer_function(struct timer_list *t)
struct transient_trig_data *transient_data =
from_timer(transient_data, t, timer);
struct led_classdev *led_cdev = transient_data->led_cdev;
transient_data->activate = 0;
led_set_brightness_nosleep(led_cdev, transient_data->restore_state);
static ssize_t transient_activate_show(struct device *dev,
struct device_attribute *attr, char *buf)
struct transient_trig_data *transient_data =
led_trigger_get_drvdata(dev);
return sprintf(buf, "%d\n", transient_data->activate);
static ssize_t transient_activate_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t size)
struct led_classdev *led_cdev = led_trigger_get_led(dev);
struct transient_trig_data *transient_data =
led_trigger_get_drvdata(dev);
ret = kstrtoul(buf, 10, &state);