Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2)  * LED MULTI-CONTROL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  * Copyright 2017 Allen Zhang <zwp@rock-chips.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)  * This program is free software; you can redistribute it and/or modify
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7)  * it under the terms of the GNU General Public License version 2 as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8)  * published by the Free Software Foundation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #ifndef __LEDS_MULTI_H_INCLUDED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define __LEDS_MULTI_H_INCLUDED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) enum {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 	TRIG_NONE = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 	TRIG_DEF_ON,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 	TRIG_TIMER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 	TRIG_ONESHOT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 	TRIG_MAX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) struct led_ctrl_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	u32 trigger;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 	/* the delay time(ms) of triggering a trigger */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 	u32 delayed_trigger_ms;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 	u32 brightness;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 	u32 delay_on;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 	u32 delay_off;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) struct led_ctrl_scroll_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	u64 init_bitmap;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	/* the shift bits on every scrolling time*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 	u32 shifts;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 	u32 shift_delay_ms;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) struct led_ctrl_breath_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	u64 background_bitmap;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	u64 breath_bitmap;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	u32 change_delay_ms;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	u32 breath_steps;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #define MAX_LEDS_NUMBER	64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) #define LEDS_MULTI_CTRL_IOCTL_MAGIC	'z'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #define LEDS_MULTI_CTRL_IOCTL_MULTI_SET	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 	_IOW(LEDS_MULTI_CTRL_IOCTL_MAGIC, 0x01, struct led_ctrl_data*)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #define LEDS_MULTI_CTRL_IOCTL_GET_LED_NUMBER	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 	_IOR(LEDS_MULTI_CTRL_IOCTL_MAGIC, 0x02, int)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #define LEDS_MULTI_CTRL_IOCTL_MULTI_SET_SCROLL	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 	_IOW(LEDS_MULTI_CTRL_IOCTL_MAGIC, 0x03, struct led_ctrl_scroll_data*)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #define LEDS_MULTI_CTRL_IOCTL_MULTI_SET_BREATH	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 	_IOW(LEDS_MULTI_CTRL_IOCTL_MAGIC, 0x04, struct led_ctrl_breath_data*)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) int led_multi_control_register(struct led_classdev *led_cdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) int led_multi_control_unregister(struct led_classdev *led_cdev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) int led_multi_control_init(struct device *dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) int led_multi_control_exit(struct device *dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) #endif	/* __LEDS_MULTI_H_INCLUDED */