/* 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_ */
