Blame view

include/linux/leds-lp3952.h 2.35 KB
d2912cb15   Thomas Gleixner   treewide: Replace...
1
  /* SPDX-License-Identifier: GPL-2.0-only */
d966c943e   Tony Makkiel   leds: LED driver ...
2
3
4
5
6
  /*
   *	LED driver for TI lp3952 controller
   *
   *	Copyright (C) 2016, DAQRI, LLC.
   *	Author: Tony Makkiel <tony.makkiel@daqri.com>
d966c943e   Tony Makkiel   leds: LED driver ...
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
   */
  
  #ifndef LEDS_LP3952_H_
  #define LEDS_LP3952_H_
  
  #define LP3952_NAME                         "lp3952"
  #define LP3952_CMD_REG_COUNT                8
  #define LP3952_BRIGHT_MAX                   4
  #define LP3952_LABEL_MAX_LEN                15
  
  #define LP3952_REG_LED_CTRL                 0x00
  #define LP3952_REG_R1_BLNK_TIME_CTRL        0x01
  #define LP3952_REG_R1_BLNK_CYCLE_CTRL       0x02
  #define LP3952_REG_G1_BLNK_TIME_CTRL        0x03
  #define LP3952_REG_G1_BLNK_CYCLE_CTRL       0x04
  #define LP3952_REG_B1_BLNK_TIME_CTRL        0x05
  #define LP3952_REG_B1_BLNK_CYCLE_CTRL       0x06
  #define LP3952_REG_ENABLES                  0x0B
  #define LP3952_REG_PAT_GEN_CTRL             0x11
  #define LP3952_REG_RGB1_MAX_I_CTRL          0x12
  #define LP3952_REG_RGB2_MAX_I_CTRL          0x13
  #define LP3952_REG_CMD_0                    0x50
  #define LP3952_REG_RESET                    0x60
  #define REG_MAX                             LP3952_REG_RESET
  
  #define LP3952_PATRN_LOOP                   BIT(1)
  #define LP3952_PATRN_GEN_EN                 BIT(2)
  #define LP3952_INT_B00ST_LDR                BIT(2)
  #define LP3952_ACTIVE_MODE                  BIT(6)
  #define LP3952_LED_MASK_ALL                 0x3f
  
  /* Transition Time in ms */
  enum lp3952_tt {
  	TT0,
  	TT55,
  	TT110,
  	TT221,
  	TT422,
  	TT885,
  	TT1770,
  	TT3539
  };
  
  /* Command Execution Time in ms */
  enum lp3952_cet {
  	CET197,
  	CET393,
  	CET590,
  	CET786,
  	CET1180,
  	CET1376,
  	CET1573,
  	CET1769,
  	CET1966,
  	CET2163,
  	CET2359,
  	CET2556,
  	CET2763,
  	CET2949,
  	CET3146
  };
  
  /* Max Current in % */
  enum lp3952_colour_I_log_0 {
  	I0,
  	I7,
  	I14,
  	I21,
  	I32,
  	I46,
  	I71,
  	I100
  };
  
  enum lp3952_leds {
  	LP3952_BLUE_2,
  	LP3952_GREEN_2,
  	LP3952_RED_2,
  	LP3952_BLUE_1,
  	LP3952_GREEN_1,
  	LP3952_RED_1,
  	LP3952_LED_ALL
  };
  
  struct lp3952_ctrl_hdl {
  	struct led_classdev cdev;
  	char name[LP3952_LABEL_MAX_LEN];
  	enum lp3952_leds channel;
  	void *priv;
  };
  
  struct ptrn_gen_cmd {
  	union {
  		struct {
  			u16 tt:3;
  			u16 b:3;
  			u16 cet:4;
  			u16 g:3;
  			u16 r:3;
  		};
  		struct {
  			u8 lsb;
  			u8 msb;
  		} bytes;
  	};
  } __packed;
  
  struct lp3952_led_array {
  	struct regmap *regmap;
  	struct i2c_client *client;
  	struct gpio_desc *enable_gpio;
  	struct lp3952_ctrl_hdl leds[LP3952_LED_ALL];
  };
  
  #endif /* LEDS_LP3952_H_ */