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 | |
17 | enum 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 | |
36 | struct coord { |
37 | int x; |
38 | int y; |
39 | }; |
40 | |
41 | struct 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 |
54 | struct 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 | |
64 | void aml_led_init(struct aml_led *led, struct aml_led_config *config); |
65 | void aml_led_timer_proc(struct aml_led *led); |
66 | void aml_led_event(struct aml_led *led, int event, int event_data); |
67 | |
68 | #endif |