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