linux/include/linux/leds-lp3952.h
<<
>>
Prefs
   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_ */
 122