Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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