alistair23-linux/include/linux/leds-lp3952.h
Thomas Gleixner d2912cb15b treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
Based on 2 normalized pattern(s):

  this program is free software you can redistribute it and or modify
  it under the terms of the gnu general public license version 2 as
  published by the free software foundation

  this program is free software you can redistribute it and or modify
  it under the terms of the gnu general public license version 2 as
  published by the free software foundation #

extracted by the scancode license scanner the SPDX license identifier

  GPL-2.0-only

has been chosen to replace the boilerplate/reference in 4122 file(s).

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Enrico Weigelt <info@metux.net>
Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org>
Reviewed-by: Allison Randal <allison@lohutok.net>
Cc: linux-spdx@vger.kernel.org
Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-06-19 17:09:55 +02:00

122 lines
2.4 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* LED driver for TI lp3952 controller
*
* Copyright (C) 2016, DAQRI, LLC.
* Author: Tony Makkiel <tony.makkiel@daqri.com>
*/
#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_ */