]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blob - include/linux/leds-lp3952.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[mirror_ubuntu-jammy-kernel.git] / include / linux / leds-lp3952.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3 * LED driver for TI lp3952 controller
4 *
5 * Copyright (C) 2016, DAQRI, LLC.
6 * Author: Tony Makkiel <tony.makkiel@daqri.com>
7 */
8
9 #ifndef LEDS_LP3952_H_
10 #define LEDS_LP3952_H_
11
12 #define LP3952_NAME "lp3952"
13 #define LP3952_CMD_REG_COUNT 8
14 #define LP3952_BRIGHT_MAX 4
15 #define LP3952_LABEL_MAX_LEN 15
16
17 #define LP3952_REG_LED_CTRL 0x00
18 #define LP3952_REG_R1_BLNK_TIME_CTRL 0x01
19 #define LP3952_REG_R1_BLNK_CYCLE_CTRL 0x02
20 #define LP3952_REG_G1_BLNK_TIME_CTRL 0x03
21 #define LP3952_REG_G1_BLNK_CYCLE_CTRL 0x04
22 #define LP3952_REG_B1_BLNK_TIME_CTRL 0x05
23 #define LP3952_REG_B1_BLNK_CYCLE_CTRL 0x06
24 #define LP3952_REG_ENABLES 0x0B
25 #define LP3952_REG_PAT_GEN_CTRL 0x11
26 #define LP3952_REG_RGB1_MAX_I_CTRL 0x12
27 #define LP3952_REG_RGB2_MAX_I_CTRL 0x13
28 #define LP3952_REG_CMD_0 0x50
29 #define LP3952_REG_RESET 0x60
30 #define REG_MAX LP3952_REG_RESET
31
32 #define LP3952_PATRN_LOOP BIT(1)
33 #define LP3952_PATRN_GEN_EN BIT(2)
34 #define LP3952_INT_B00ST_LDR BIT(2)
35 #define LP3952_ACTIVE_MODE BIT(6)
36 #define LP3952_LED_MASK_ALL 0x3f
37
38 /* Transition Time in ms */
39 enum lp3952_tt {
40 TT0,
41 TT55,
42 TT110,
43 TT221,
44 TT422,
45 TT885,
46 TT1770,
47 TT3539
48 };
49
50 /* Command Execution Time in ms */
51 enum lp3952_cet {
52 CET197,
53 CET393,
54 CET590,
55 CET786,
56 CET1180,
57 CET1376,
58 CET1573,
59 CET1769,
60 CET1966,
61 CET2163,
62 CET2359,
63 CET2556,
64 CET2763,
65 CET2949,
66 CET3146
67 };
68
69 /* Max Current in % */
70 enum lp3952_colour_I_log_0 {
71 I0,
72 I7,
73 I14,
74 I21,
75 I32,
76 I46,
77 I71,
78 I100
79 };
80
81 enum lp3952_leds {
82 LP3952_BLUE_2,
83 LP3952_GREEN_2,
84 LP3952_RED_2,
85 LP3952_BLUE_1,
86 LP3952_GREEN_1,
87 LP3952_RED_1,
88 LP3952_LED_ALL
89 };
90
91 struct lp3952_ctrl_hdl {
92 struct led_classdev cdev;
93 char name[LP3952_LABEL_MAX_LEN];
94 enum lp3952_leds channel;
95 void *priv;
96 };
97
98 struct ptrn_gen_cmd {
99 union {
100 struct {
101 u16 tt:3;
102 u16 b:3;
103 u16 cet:4;
104 u16 g:3;
105 u16 r:3;
106 };
107 struct {
108 u8 lsb;
109 u8 msb;
110 } bytes;
111 };
112 } __packed;
113
114 struct lp3952_led_array {
115 struct regmap *regmap;
116 struct i2c_client *client;
117 struct gpio_desc *enable_gpio;
118 struct lp3952_ctrl_hdl leds[LP3952_LED_ALL];
119 };
120
121 #endif /* LEDS_LP3952_H_ */