summaryrefslogtreecommitdiff
path: root/include/amlogic/aml_led.h (plain)
blob: b2f3bda3f7a4389666993f01242a027d8067e876
1#ifndef __AML_LED_H__
2#define __AML_LED_H__
3
4#define LED_TIMER_INTERVAL 10 //ms
5
6#define LED_EVENT_NULL 0
7#define LED_EVENT_OFF 1
8#define LED_EVENT_ON 2
9#define LED_EVENT_FLASH 3
10#define LED_EVENT_BREATH 4
11
12#define SHUTDOWN_MODE 0
13#define SUSPEND_RESUME_MODE 1
14#define RECOVERY_MODE 2
15
16
17enum led_workmode {
18 LWM_OFF,
19 LWM_ON,
20 LWM_FLASH,
21 LWM_BREATH,
22 LWM_NULL,
23};
24
25/* s,b,w type is enum led_workmode */
26#define lwm_set_standby(mode, s) do {mode |= (s) << 0;} while(0)
27#define lwm_set_booting(mode, b) do {mode |= (b) << 4;} while(0)
28#define lwm_set_working(mode, w) do {mode |= (w) << 8;} while(0)
29#define lwm_set_suspend(mode, s) do {mode |= (s) << 12;} while(0)
30
31#define lwm_get_standby(mode) (((mode) >> 0) & 0xF)
32#define lwm_get_booting(mode) (((mode) >> 4) & 0xF)
33#define lwm_get_working(mode) (((mode) >> 8) & 0xF)
34#define lwm_get_suspend(mode) (((mode) >> 12) & 0xF)
35
36struct coord {
37 int x;
38 int y;
39};
40
41struct aml_led_config {
42 int off_brightness;
43 int on_brightness;
44 int flash_off_brightness;
45 int flash_off_time;
46 int flash_on_brightness;
47 int flash_on_time;
48 struct coord *breath_inflections;
49 int breath_inflections_num;
50 void (*set_brightness)(int brightness);
51};
52
53#define LED_EVENT_BUF_SIZE 3
54struct aml_led {
55 int event[LED_EVENT_BUF_SIZE];
56 int event_data[LED_EVENT_BUF_SIZE];
57 int state;
58 int brightness;
59 int time;
60 int count;
61 struct aml_led_config *config;
62};
63
64void aml_led_init(struct aml_led *led, struct aml_led_config *config);
65void aml_led_timer_proc(struct aml_led *led);
66void aml_led_event(struct aml_led *led, int event, int event_data);
67
68#endif