xref: /linux/include/linux/platform_data/leds-lp55xx.h (revision cdd5b5a9761fd66d17586e4f4ba6588c70e640ea)
1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2c93d08faSMilo(Woogyom) Kim /*
3c93d08faSMilo(Woogyom) Kim  * LP55XX Platform Data Header
4c93d08faSMilo(Woogyom) Kim  *
5c93d08faSMilo(Woogyom) Kim  * Copyright (C) 2012 Texas Instruments
6c93d08faSMilo(Woogyom) Kim  *
7c93d08faSMilo(Woogyom) Kim  * Author: Milo(Woogyom) Kim <milo.kim@ti.com>
8c93d08faSMilo(Woogyom) Kim  *
9c93d08faSMilo(Woogyom) Kim  * Derived from leds-lp5521.h, leds-lp5523.h
10c93d08faSMilo(Woogyom) Kim  */
11c93d08faSMilo(Woogyom) Kim 
12c93d08faSMilo(Woogyom) Kim #ifndef _LEDS_LP55XX_H
13c93d08faSMilo(Woogyom) Kim #define _LEDS_LP55XX_H
14c93d08faSMilo(Woogyom) Kim 
15ac219bf3SLinus Walleij #include <linux/gpio/consumer.h>
1692a81562SDan Murphy #include <linux/led-class-multicolor.h>
17ac219bf3SLinus Walleij 
18c93d08faSMilo(Woogyom) Kim /* Clock configuration */
19c93d08faSMilo(Woogyom) Kim #define LP55XX_CLOCK_AUTO	0
20c93d08faSMilo(Woogyom) Kim #define LP55XX_CLOCK_INT	1
21c93d08faSMilo(Woogyom) Kim #define LP55XX_CLOCK_EXT	2
22c93d08faSMilo(Woogyom) Kim 
2392a81562SDan Murphy #define LP55XX_MAX_GROUPED_CHAN	4
2492a81562SDan Murphy 
25c93d08faSMilo(Woogyom) Kim struct lp55xx_led_config {
26c93d08faSMilo(Woogyom) Kim 	const char *name;
27f65f0a1aSLinus Walleij 	const char *default_trigger;
28c93d08faSMilo(Woogyom) Kim 	u8 chan_nr;
29c93d08faSMilo(Woogyom) Kim 	u8 led_current; /* mA x10, 0 if led is not connected */
30c93d08faSMilo(Woogyom) Kim 	u8 max_current;
3192a81562SDan Murphy 	int num_colors;
3292a81562SDan Murphy 	unsigned int max_channel;
3392a81562SDan Murphy 	int color_id[LED_COLOR_ID_MAX];
3492a81562SDan Murphy 	int output_num[LED_COLOR_ID_MAX];
35c93d08faSMilo(Woogyom) Kim };
36c93d08faSMilo(Woogyom) Kim 
37c93d08faSMilo(Woogyom) Kim struct lp55xx_predef_pattern {
38ff45262aSKim, Milo 	const u8 *r;
39ff45262aSKim, Milo 	const u8 *g;
40ff45262aSKim, Milo 	const u8 *b;
41c93d08faSMilo(Woogyom) Kim 	u8 size_r;
42c93d08faSMilo(Woogyom) Kim 	u8 size_g;
43c93d08faSMilo(Woogyom) Kim 	u8 size_b;
44c93d08faSMilo(Woogyom) Kim };
45c93d08faSMilo(Woogyom) Kim 
4633b3a561SKim, Milo enum lp8501_pwr_sel {
4733b3a561SKim, Milo 	LP8501_ALL_VDD,		/* D1~9 are connected to VDD */
4833b3a561SKim, Milo 	LP8501_6VDD_3VOUT,	/* D1~6 with VDD, D7~9 with VOUT */
4933b3a561SKim, Milo 	LP8501_3VDD_6VOUT,	/* D1~6 with VOUT, D7~9 with VDD */
5033b3a561SKim, Milo 	LP8501_ALL_VOUT,	/* D1~9 are connected to VOUT */
5133b3a561SKim, Milo };
5233b3a561SKim, Milo 
53c93d08faSMilo(Woogyom) Kim /*
54c93d08faSMilo(Woogyom) Kim  * struct lp55xx_platform_data
55c93d08faSMilo(Woogyom) Kim  * @led_config        : Configurable led class device
56c93d08faSMilo(Woogyom) Kim  * @num_channels      : Number of LED channels
57c93d08faSMilo(Woogyom) Kim  * @label             : Used for naming LEDs
58c93d08faSMilo(Woogyom) Kim  * @clock_mode        : Input clock mode. LP55XX_CLOCK_AUTO or _INT or _EXT
59c93d08faSMilo(Woogyom) Kim  * @setup_resources   : Platform specific function before enabling the chip
60c93d08faSMilo(Woogyom) Kim  * @release_resources : Platform specific function after  disabling the chip
61ac219bf3SLinus Walleij  * @enable_gpiod      : enable GPIO descriptor
62c93d08faSMilo(Woogyom) Kim  * @patterns          : Predefined pattern data for RGB channels
63c93d08faSMilo(Woogyom) Kim  * @num_patterns      : Number of patterns
64c93d08faSMilo(Woogyom) Kim  * @update_config     : Value of CONFIG register
65c93d08faSMilo(Woogyom) Kim  */
66c93d08faSMilo(Woogyom) Kim struct lp55xx_platform_data {
67c93d08faSMilo(Woogyom) Kim 
68c93d08faSMilo(Woogyom) Kim 	/* LED channel configuration */
69c93d08faSMilo(Woogyom) Kim 	struct lp55xx_led_config *led_config;
70c93d08faSMilo(Woogyom) Kim 	u8 num_channels;
71c93d08faSMilo(Woogyom) Kim 	const char *label;
72c93d08faSMilo(Woogyom) Kim 
73c93d08faSMilo(Woogyom) Kim 	/* Clock configuration */
74c93d08faSMilo(Woogyom) Kim 	u8 clock_mode;
75c93d08faSMilo(Woogyom) Kim 
76*54a7bef5SMaarten Zanders 	/* Charge pump mode */
77*54a7bef5SMaarten Zanders 	u32 charge_pump_mode;
78*54a7bef5SMaarten Zanders 
7930dae2f9SSebastian Reichel 	/* optional enable GPIO */
80ac219bf3SLinus Walleij 	struct gpio_desc *enable_gpiod;
81c93d08faSMilo(Woogyom) Kim 
82c93d08faSMilo(Woogyom) Kim 	/* Predefined pattern data */
83c93d08faSMilo(Woogyom) Kim 	struct lp55xx_predef_pattern *patterns;
84c93d08faSMilo(Woogyom) Kim 	unsigned int num_patterns;
8533b3a561SKim, Milo 
8633b3a561SKim, Milo 	/* LP8501 specific */
8733b3a561SKim, Milo 	enum lp8501_pwr_sel pwr_sel;
88c93d08faSMilo(Woogyom) Kim };
89c93d08faSMilo(Woogyom) Kim 
90c93d08faSMilo(Woogyom) Kim #endif /* _LEDS_LP55XX_H */
91