diff options
author | Wenping Zhang <wenping.zhang@rock-chips.com> | 2017-05-03 17:21:03 +0800 |
---|---|---|
committer | Tao Huang <huangtao@rock-chips.com> | 2017-12-13 18:36:20 +0800 |
commit | f745a934058733522ee64e3f8e4e20cc633e7857 (patch) | |
tree | 4ec56bf9cb4e2b016c46d0bfa8806225f228af5a /drivers/leds/leds-multi.h | |
parent | a0505a722c63d9db0e71f62bc72411677cb22aad (diff) |
leds: add multi-control for leds's trigger.
userspace can control all leds by one ioctl through file node:
/dev/led_multi_ctrl.
Change-Id: I10ac19b86b46b3dc9a88809f1be5ebc95398212c
Signed-off-by: Wenping Zhang <wenping.zhang@rock-chips.com>
Diffstat (limited to 'drivers/leds/leds-multi.h')
-rw-r--r-- | drivers/leds/leds-multi.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/drivers/leds/leds-multi.h b/drivers/leds/leds-multi.h new file mode 100644 index 000000000000..f4f1b71aaf89 --- /dev/null +++ b/drivers/leds/leds-multi.h @@ -0,0 +1,63 @@ +/* + * LED MULTI-CONTROL + * + * Copyright 2017 Allen Zhang <zwp@rock-chips.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + */ +#ifndef __LEDS_MULTI_H_INCLUDED +#define __LEDS_MULTI_H_INCLUDED + +enum { + TRIG_NONE = 0, + TRIG_DEF_ON, + TRIG_TIMER, + TRIG_ONESHOT, + TRIG_MAX, +}; + +struct led_ctrl_data { + u32 trigger; + /* the delay time(ms) of triggering a trigger */ + u32 delayed_trigger_ms; + u32 brightness; + u32 delay_on; + u32 delay_off; +} __packed; + +struct led_ctrl_scroll_data { + u64 init_bitmap; + /* the shift bits on every scrolling time*/ + u32 shifts; + u32 shift_delay_ms; +} __packed; + +struct led_ctrl_breath_data { + u64 background_bitmap; + u64 breath_bitmap; + u32 change_delay_ms; + u32 breath_steps; +} __packed; + +#define MAX_LEDS_NUMBER 64 + +#define LEDS_MULTI_CTRL_IOCTL_MAGIC 'z' + +#define LEDS_MULTI_CTRL_IOCTL_MULTI_SET \ + _IOW(LEDS_MULTI_CTRL_IOCTL_MAGIC, 0x01, struct led_ctrl_data*) +#define LEDS_MULTI_CTRL_IOCTL_GET_LED_NUMBER \ + _IOR(LEDS_MULTI_CTRL_IOCTL_MAGIC, 0x02, int) +#define LEDS_MULTI_CTRL_IOCTL_MULTI_SET_SCROLL \ + _IOW(LEDS_MULTI_CTRL_IOCTL_MAGIC, 0x03, struct led_ctrl_scroll_data*) +#define LEDS_MULTI_CTRL_IOCTL_MULTI_SET_BREATH \ + _IOW(LEDS_MULTI_CTRL_IOCTL_MAGIC, 0x04, struct led_ctrl_breath_data*) + +int led_multi_control_register(struct led_classdev *led_cdev); +int led_multi_control_unregister(struct led_classdev *led_cdev); +int led_multi_control_init(struct device *dev); +int led_multi_control_exit(struct device *dev); + +#endif /* __LEDS_MULTI_H_INCLUDED */ |