leds-lp3952.h (2410B)
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * LED driver for TI lp3952 controller 4 * 5 * Copyright (C) 2016, DAQRI, LLC. 6 * Author: Tony Makkiel <tony.makkiel@daqri.com> 7 */ 8 9#ifndef LEDS_LP3952_H_ 10#define LEDS_LP3952_H_ 11 12#define LP3952_NAME "lp3952" 13#define LP3952_CMD_REG_COUNT 8 14#define LP3952_BRIGHT_MAX 4 15#define LP3952_LABEL_MAX_LEN 15 16 17#define LP3952_REG_LED_CTRL 0x00 18#define LP3952_REG_R1_BLNK_TIME_CTRL 0x01 19#define LP3952_REG_R1_BLNK_CYCLE_CTRL 0x02 20#define LP3952_REG_G1_BLNK_TIME_CTRL 0x03 21#define LP3952_REG_G1_BLNK_CYCLE_CTRL 0x04 22#define LP3952_REG_B1_BLNK_TIME_CTRL 0x05 23#define LP3952_REG_B1_BLNK_CYCLE_CTRL 0x06 24#define LP3952_REG_ENABLES 0x0B 25#define LP3952_REG_PAT_GEN_CTRL 0x11 26#define LP3952_REG_RGB1_MAX_I_CTRL 0x12 27#define LP3952_REG_RGB2_MAX_I_CTRL 0x13 28#define LP3952_REG_CMD_0 0x50 29#define LP3952_REG_RESET 0x60 30#define REG_MAX LP3952_REG_RESET 31 32#define LP3952_PATRN_LOOP BIT(1) 33#define LP3952_PATRN_GEN_EN BIT(2) 34#define LP3952_INT_B00ST_LDR BIT(2) 35#define LP3952_ACTIVE_MODE BIT(6) 36#define LP3952_LED_MASK_ALL 0x3f 37 38/* Transition Time in ms */ 39enum lp3952_tt { 40 TT0, 41 TT55, 42 TT110, 43 TT221, 44 TT422, 45 TT885, 46 TT1770, 47 TT3539 48}; 49 50/* Command Execution Time in ms */ 51enum lp3952_cet { 52 CET197, 53 CET393, 54 CET590, 55 CET786, 56 CET1180, 57 CET1376, 58 CET1573, 59 CET1769, 60 CET1966, 61 CET2163, 62 CET2359, 63 CET2556, 64 CET2763, 65 CET2949, 66 CET3146 67}; 68 69/* Max Current in % */ 70enum lp3952_colour_I_log_0 { 71 I0, 72 I7, 73 I14, 74 I21, 75 I32, 76 I46, 77 I71, 78 I100 79}; 80 81enum lp3952_leds { 82 LP3952_BLUE_2, 83 LP3952_GREEN_2, 84 LP3952_RED_2, 85 LP3952_BLUE_1, 86 LP3952_GREEN_1, 87 LP3952_RED_1, 88 LP3952_LED_ALL 89}; 90 91struct lp3952_ctrl_hdl { 92 struct led_classdev cdev; 93 char name[LP3952_LABEL_MAX_LEN]; 94 enum lp3952_leds channel; 95 void *priv; 96}; 97 98struct ptrn_gen_cmd { 99 union { 100 struct { 101 u16 tt:3; 102 u16 b:3; 103 u16 cet:4; 104 u16 g:3; 105 u16 r:3; 106 }; 107 struct { 108 u8 lsb; 109 u8 msb; 110 } bytes; 111 }; 112} __packed; 113 114struct lp3952_led_array { 115 struct regmap *regmap; 116 struct i2c_client *client; 117 struct gpio_desc *enable_gpio; 118 struct lp3952_ctrl_hdl leds[LP3952_LED_ALL]; 119}; 120 121#endif /* LEDS_LP3952_H_ */