root/include/linux/leds-lp3952.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 */
  39 enum 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 */
  51 enum 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 % */
  70 enum lp3952_colour_I_log_0 {
  71         I0,
  72         I7,
  73         I14,
  74         I21,
  75         I32,
  76         I46,
  77         I71,
  78         I100
  79 };
  80 
  81 enum 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 
  91 struct 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 
  98 struct 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 
 114 struct 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_ */

/* [<][>][^][v][top][bottom][index][help] */