mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-09-03 10:33:11 +02:00

The LP55xx range of devices have an internal charge pump which can (automatically) increase the output voltage towards the LED's, boosting the output voltage to 4.5V. Implement this option from the devicetree. When the setting is not present it will operate in automatic mode as before. Tested on LP55231. Datasheet analysis shows that LP5521, LP5523 and LP8501 are identical in topology and are modified in the same way. Signed-off-by: Maarten Zanders <maarten.zanders@mind.be> Signed-off-by: Lee Jones <lee@kernel.org> Link: https://lore.kernel.org/r/20230421075305.37597-3-maarten.zanders@mind.be
91 lines
2.2 KiB
C
91 lines
2.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* LP55XX Platform Data Header
|
|
*
|
|
* Copyright (C) 2012 Texas Instruments
|
|
*
|
|
* Author: Milo(Woogyom) Kim <milo.kim@ti.com>
|
|
*
|
|
* Derived from leds-lp5521.h, leds-lp5523.h
|
|
*/
|
|
|
|
#ifndef _LEDS_LP55XX_H
|
|
#define _LEDS_LP55XX_H
|
|
|
|
#include <linux/gpio/consumer.h>
|
|
#include <linux/led-class-multicolor.h>
|
|
|
|
/* Clock configuration */
|
|
#define LP55XX_CLOCK_AUTO 0
|
|
#define LP55XX_CLOCK_INT 1
|
|
#define LP55XX_CLOCK_EXT 2
|
|
|
|
#define LP55XX_MAX_GROUPED_CHAN 4
|
|
|
|
struct lp55xx_led_config {
|
|
const char *name;
|
|
const char *default_trigger;
|
|
u8 chan_nr;
|
|
u8 led_current; /* mA x10, 0 if led is not connected */
|
|
u8 max_current;
|
|
int num_colors;
|
|
unsigned int max_channel;
|
|
int color_id[LED_COLOR_ID_MAX];
|
|
int output_num[LED_COLOR_ID_MAX];
|
|
};
|
|
|
|
struct lp55xx_predef_pattern {
|
|
const u8 *r;
|
|
const u8 *g;
|
|
const u8 *b;
|
|
u8 size_r;
|
|
u8 size_g;
|
|
u8 size_b;
|
|
};
|
|
|
|
enum lp8501_pwr_sel {
|
|
LP8501_ALL_VDD, /* D1~9 are connected to VDD */
|
|
LP8501_6VDD_3VOUT, /* D1~6 with VDD, D7~9 with VOUT */
|
|
LP8501_3VDD_6VOUT, /* D1~6 with VOUT, D7~9 with VDD */
|
|
LP8501_ALL_VOUT, /* D1~9 are connected to VOUT */
|
|
};
|
|
|
|
/*
|
|
* struct lp55xx_platform_data
|
|
* @led_config : Configurable led class device
|
|
* @num_channels : Number of LED channels
|
|
* @label : Used for naming LEDs
|
|
* @clock_mode : Input clock mode. LP55XX_CLOCK_AUTO or _INT or _EXT
|
|
* @setup_resources : Platform specific function before enabling the chip
|
|
* @release_resources : Platform specific function after disabling the chip
|
|
* @enable_gpiod : enable GPIO descriptor
|
|
* @patterns : Predefined pattern data for RGB channels
|
|
* @num_patterns : Number of patterns
|
|
* @update_config : Value of CONFIG register
|
|
*/
|
|
struct lp55xx_platform_data {
|
|
|
|
/* LED channel configuration */
|
|
struct lp55xx_led_config *led_config;
|
|
u8 num_channels;
|
|
const char *label;
|
|
|
|
/* Clock configuration */
|
|
u8 clock_mode;
|
|
|
|
/* Charge pump mode */
|
|
u32 charge_pump_mode;
|
|
|
|
/* optional enable GPIO */
|
|
struct gpio_desc *enable_gpiod;
|
|
|
|
/* Predefined pattern data */
|
|
struct lp55xx_predef_pattern *patterns;
|
|
unsigned int num_patterns;
|
|
|
|
/* LP8501 specific */
|
|
enum lp8501_pwr_sel pwr_sel;
|
|
};
|
|
|
|
#endif /* _LEDS_LP55XX_H */
|