#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/spinlock.h>
#include <uapi/linux/uleds.h>
static struct class *leds_class;
static ssize_t brightness_show(struct device *dev,
struct device_attribute *attr, char *buf)
struct led_classdev *led_cdev = dev_get_drvdata(dev);
led_update_brightness(led_cdev);
return sprintf(buf, "%u\n", led_cdev->brightness);
static ssize_t brightness_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t size)
struct led_classdev *led_cdev = dev_get_drvdata(dev);
mutex_lock(&led_cdev->led_access);
if (led_sysfs_is_disabled(led_cdev)) {
ret = kstrtoul(buf, 10, &state);
led_trigger_remove(led_cdev);
led_set_brightness(led_cdev, state);
mutex_unlock(&led_cdev->led_access);