1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
/* include/linux/leds/rtfled.h
* Header of Richtek Flash LED Driver
*
* Copyright (C) 2013 Richtek Technology Corp.
* Author: Patrick Chang <patrick_chang@richtek.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; either version 2
* of the License, or (at your option) any later version.
*/
#ifndef LINUX_LEDS_RTFLED_H
#define LINUX_LEDS_RTFLED_H
#include <linux/leds/flashlight.h>
struct rt_fled_info;
typedef int (*rt_hal_fled_init)(struct rt_fled_info *info);
typedef int (*rt_hal_fled_suspend)(struct rt_fled_info *info, pm_message_t state);
typedef int (*rt_hal_fled_resume)(struct rt_fled_info *info);
typedef int (*rt_hal_fled_set_mode)(struct rt_fled_info *info, flashlight_mode_t mode);
typedef int (*rt_hal_fled_get_mode)(struct rt_fled_info *info);
typedef int (*rt_hal_fled_strobe)(struct rt_fled_info *info);
/* Return value : -EINVAL => selector parameter is out of range, otherwise current in uA*/
typedef int (*rt_hal_fled_torch_current_list)(struct rt_fled_info *info, int selector);
typedef int (*rt_hal_fled_strobe_current_list)(struct rt_fled_info *info, int selector);
typedef int (*rt_hal_fled_timeout_level_list)(struct rt_fled_info *info, int selector);
/* Return value : -EINVAL => selector parameter is out of range, otherwise voltage in mV*/
typedef int (*rt_hal_fled_lv_protection_list)(struct rt_fled_info *info, int selector);
/* Return value : -EINVAL => selector parameter is out of range, otherwise time in ms*/
typedef int (*rt_hal_fled_strobe_timeout_list)(struct rt_fled_info *info, int selector);
typedef int (*rt_hal_fled_set_torch_current)(struct rt_fled_info *info,
int min_uA, int max_uA, int *selector);
typedef int (*rt_hal_fled_set_strobe_current)(struct rt_fled_info *info,
int min_uA, int max_uA, int *selector);
typedef int (*rt_hal_fled_set_timeout_level)(struct rt_fled_info *info,
int min_uA, int max_uA, int *selector);
typedef int (*rt_hal_fled_set_lv_protection)(struct rt_fled_info *info,
int min_mV, int max_mV, int *selector);
typedef int (*rt_hal_fled_set_strobe_timeout)(struct rt_fled_info *info,
int min_ms, int max_ms, int *selector);
typedef int (*rt_hal_fled_set_torch_current_sel)(struct rt_fled_info *info,
int selector);
typedef int (*rt_hal_fled_set_strobe_current_sel)(struct rt_fled_info *info,
int selector);
typedef int (*rt_hal_fled_set_timeout_level_sel)(struct rt_fled_info *info,
int selector);
typedef int (*rt_hal_fled_set_lv_protection_sel)(struct rt_fled_info *info,
int selector);
typedef int (*rt_hal_fled_set_strobe_timeout_sel)(struct rt_fled_info *info,
int selector);
typedef int (*rt_hal_fled_get_torch_current_sel)(struct rt_fled_info *info);
typedef int (*rt_hal_fled_get_strobe_current_sel)(struct rt_fled_info *info);
typedef int (*rt_hal_fled_get_timeout_level_sel)(struct rt_fled_info *info);
typedef int (*rt_hal_fled_get_lv_protection_sel)(struct rt_fled_info *info);
typedef int (*rt_hal_fled_get_strobe_timeout_sel)(struct rt_fled_info *info);
typedef int (*rt_hal_fled_get_torch_current)(struct rt_fled_info *info);
typedef int (*rt_hal_fled_get_strobe_current)(struct rt_fled_info *info);
typedef int (*rt_hal_fled_get_timeout_level)(struct rt_fled_info *info);
typedef int (*rt_hal_fled_get_lv_protection)(struct rt_fled_info *info);
typedef int (*rt_hal_fled_get_strobe_timeout)(struct rt_fled_info *info);
typedef void (*rt_hal_fled_shutdown)(struct rt_fled_info *info);
struct rt_fled_hal {
rt_hal_fled_init fled_init;
rt_hal_fled_suspend fled_suspend;
rt_hal_fled_resume fled_resume;
rt_hal_fled_set_mode fled_set_mode;
rt_hal_fled_get_mode fled_get_mode;
rt_hal_fled_strobe fled_strobe;
rt_hal_fled_torch_current_list fled_troch_current_list;
rt_hal_fled_strobe_current_list fled_strobe_current_list;
rt_hal_fled_timeout_level_list fled_timeout_level_list;
rt_hal_fled_lv_protection_list fled_lv_protection_list;
rt_hal_fled_strobe_timeout_list fled_strobe_timeout_list;
/* method to set */
rt_hal_fled_set_torch_current_sel fled_set_torch_current_sel;
rt_hal_fled_set_strobe_current_sel fled_set_strobe_current_sel;
rt_hal_fled_set_timeout_level_sel fled_set_timeout_level_sel;
rt_hal_fled_set_lv_protection_sel fled_set_lv_protection_sel;
rt_hal_fled_set_strobe_timeout_sel fled_set_strobe_timeout_sel;
/* method to set, optional */
rt_hal_fled_set_torch_current fled_set_torch_current;
rt_hal_fled_set_strobe_current fled_set_strobe_current;
rt_hal_fled_set_timeout_level fled_set_timeout_level;
rt_hal_fled_set_lv_protection fled_set_lv_protection;
rt_hal_fled_set_strobe_timeout fled_set_strobe_timeout;
/* method to get */
rt_hal_fled_get_torch_current_sel fled_get_torch_current_sel;
rt_hal_fled_get_strobe_current_sel fled_get_strobe_current_sel;
rt_hal_fled_get_timeout_level_sel fled_get_timeout_level_sel;
rt_hal_fled_get_lv_protection_sel fled_get_lv_protection_sel;
rt_hal_fled_get_strobe_timeout_sel fled_get_strobe_timeout_sel;
/* method to get, optional*/
rt_hal_fled_get_torch_current fled_get_torch_current;
rt_hal_fled_get_strobe_current fled_get_strobe_current;
rt_hal_fled_get_timeout_level fled_get_timeout_level;
rt_hal_fled_get_lv_protection fled_get_lv_protection;
rt_hal_fled_get_strobe_timeout fled_get_strobe_timeout;
/* PM shutdown, optional */
rt_hal_fled_shutdown fled_shutdown;
};
typedef struct rt_fled_info {
struct rt_fled_hal *hal;
struct flashlight_device *flashlight_dev;
const struct flashlight_properties *init_props;
char *name;
char *chip_name;
} rt_fled_info_t;
/* Public funtions
* argument
* @name : Flash LED's name;pass NULL menas "rt-flash-led"
*/
rt_fled_info_t *rt_fled_get_info_by_name(char *name);
/* Usage :
* fled_info = rt_fled_get_info_by_name("FlashLED1");
* fled_info->hal->fled_set_strobe_current(fled_info,
* 150, 200);
*/
#endif /*LINUX_LEDS_RTFLED_H*/
|