cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

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