diff options
Diffstat (limited to 'include/linux/leds-lp3952.h')
| -rw-r--r-- | include/linux/leds-lp3952.h | 125 | 
1 files changed, 125 insertions, 0 deletions
| diff --git a/include/linux/leds-lp3952.h b/include/linux/leds-lp3952.h new file mode 100644 index 000000000000..49b37ed8d456 --- /dev/null +++ b/include/linux/leds-lp3952.h @@ -0,0 +1,125 @@ +/* + *	LED driver for TI lp3952 controller + * + *	Copyright (C) 2016, DAQRI, LLC. + *	Author: Tony Makkiel <[email protected]> + * + * 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. + * + */ + +#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_ */ |