1 /*
2  * Copyright (c) 2020 Seagate Technology LLC
3  * Copyright (c) 2022 Grinn
4  *
5  * SPDX-License-Identifier: Apache-2.0
6  */
7 
8 
9 #ifndef ZEPHYR_INCLUDE_DRIVERS_LED_LP50XX_H_
10 #define ZEPHYR_INCLUDE_DRIVERS_LED_LP50XX_H_
11 
12 #define LP50XX_COLORS_PER_LED	3
13 
14 #define LP5009_MAX_LEDS		3
15 #define LP5012_MAX_LEDS		4
16 #define LP5018_MAX_LEDS		6
17 #define LP5024_MAX_LEDS		8
18 #define LP5030_MAX_LEDS		10
19 #define LP5036_MAX_LEDS		12
20 
21 /*
22  * LED channels mapping.
23  */
24 
25 /* Bank channels */
26 #define LP50XX_BANK_CHAN_BASE		0
27 #define LP50XX_BANK_BRIGHT_CHAN		LP50XX_BANK_CHAN_BASE
28 #define LP50XX_BANK_COL1_CHAN(led)	(LP50XX_BANK_CHAN_BASE + 1)
29 #define LP50XX_BANK_COL2_CHAN(led)	(LP50XX_BANK_CHAN_BASE + 2)
30 #define LP50XX_BANK_COL3_CHAN(led)	(LP50XX_BANK_CHAN_BASE + 3)
31 
32 /* LED brightness channels. */
33 #define LP50XX_LED_BRIGHT_CHAN_BASE	4
34 #define LP50XX_LED_BRIGHT_CHAN(led)	(LP50XX_LED_BRIGHT_CHAN_BASE + led)
35 
36 /*
37  * LED color channels.
38  *
39  * Each channel definition is compatible with the following chips:
40  *   - LP5012_XXX => LP5009 / LP5012
41  *   - LP5024_XXX => LP5018 / LP5024
42  *   - LP5036_XXX => LP5030 / LP5036
43  */
44 #define LP5012_LED_COL_CHAN_BASE	8
45 #define LP5012_LED_COL1_CHAN(led) \
46 	(LP5012_LED_COL_CHAN_BASE + led * LP50XX_COLORS_PER_LED)
47 #define LP5012_LED_COL2_CHAN(led) \
48 	(LP5012_LED_COL_CHAN_BASE + led * LP50XX_COLORS_PER_LED + 1)
49 #define LP5012_LED_COL3_CHAN(led) \
50 	(LP5012_LED_COL_CHAN_BASE + led * LP50XX_COLORS_PER_LED + 2)
51 
52 #define LP5024_LED_COL_CHAN_BASE	12
53 #define LP5024_LED_COL1_CHAN(led) \
54 	(LP5024_LED_COL_CHAN_BASE + led * LP50XX_COLORS_PER_LED)
55 #define LP5024_LED_COL2_CHAN(led) \
56 	(LP5024_LED_COL_CHAN_BASE + led * LP50XX_COLORS_PER_LED + 1)
57 #define LP5024_LED_COL3_CHAN(led) \
58 	(LP5024_LED_COL_CHAN_BASE + led * LP50XX_COLORS_PER_LED + 2)
59 
60 #define LP5036_LED_COL_CHAN_BASE	16
61 #define LP5036_LED_COL1_CHAN(led) \
62 	(LP5036_LED_COL_CHAN_BASE + led * LP50XX_COLORS_PER_LED)
63 #define LP5036_LED_COL2_CHAN(led) \
64 	(LP5036_LED_COL_CHAN_BASE + led * LP50XX_COLORS_PER_LED + 1)
65 #define LP5036_LED_COL3_CHAN(led) \
66 	(LP5036_LED_COL_CHAN_BASE + led * LP50XX_COLORS_PER_LED + 2)
67 
68 #endif /* ZEPHYR_INCLUDE_DRIVERS_LED_LP50XX_H_ */
69