JFIF$        dd7 

Viewing File: /usr/src/kernels/5.14.0-570.32.1.el9_6.x86_64/include/linux/leds-lp3952.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 *	LED driver for TI lp3952 controller
 *
 *	Copyright (C) 2016, DAQRI, LLC.
 *	Author: Tony Makkiel <tony.makkiel@daqri.com>
 */

#ifndef LEDS_LP3952_H_
#define LEDS_LP3952_H_

#define LP3952_NAME                         "lp3952"
#define LP3952_CMD_REG_COUNT                8
#define LP3952_BRIGHT_MAX                   4
#define LP3952_LABEL_MAX_LEN                15

#define LP3952_REG_LED_CTRL                 0x00
#define LP3952_REG_R1_BLNK_TIME_CTRL        0x01
#define LP3952_REG_R1_BLNK_CYCLE_CTRL       0x02
#define LP3952_REG_G1_BLNK_TIME_CTRL        0x03
#define LP3952_REG_G1_BLNK_CYCLE_CTRL       0x04
#define LP3952_REG_B1_BLNK_TIME_CTRL        0x05
#define LP3952_REG_B1_BLNK_CYCLE_CTRL       0x06
#define LP3952_REG_ENABLES                  0x0B
#define LP3952_REG_PAT_GEN_CTRL             0x11
#define LP3952_REG_RGB1_MAX_I_CTRL          0x12
#define LP3952_REG_RGB2_MAX_I_CTRL          0x13
#define LP3952_REG_CMD_0                    0x50
#define LP3952_REG_RESET                    0x60
#define REG_MAX                             LP3952_REG_RESET

#define LP3952_PATRN_LOOP                   BIT(1)
#define LP3952_PATRN_GEN_EN                 BIT(2)
#define LP3952_INT_B00ST_LDR                BIT(2)
#define LP3952_ACTIVE_MODE                  BIT(6)
#define LP3952_LED_MASK_ALL                 0x3f

/* Transition Time in ms */
enum lp3952_tt {
	TT0,
	TT55,
	TT110,
	TT221,
	TT422,
	TT885,
	TT1770,
	TT3539
};

/* Command Execution Time in ms */
enum lp3952_cet {
	CET197,
	CET393,
	CET590,
	CET786,
	CET1180,
	CET1376,
	CET1573,
	CET1769,
	CET1966,
	CET2163,
	CET2359,
	CET2556,
	CET2763,
	CET2949,
	CET3146
};

/* Max Current in % */
enum lp3952_colour_I_log_0 {
	I0,
	I7,
	I14,
	I21,
	I32,
	I46,
	I71,
	I100
};

enum lp3952_leds {
	LP3952_BLUE_2,
	LP3952_GREEN_2,
	LP3952_RED_2,
	LP3952_BLUE_1,
	LP3952_GREEN_1,
	LP3952_RED_1,
	LP3952_LED_ALL
};

struct lp3952_ctrl_hdl {
	struct led_classdev cdev;
	char name[LP3952_LABEL_MAX_LEN];
	enum lp3952_leds channel;
	void *priv;
};

struct ptrn_gen_cmd {
	union {
		struct {
			u16 tt:3;
			u16 b:3;
			u16 cet:4;
			u16 g:3;
			u16 r:3;
		};
		struct {
			u8 lsb;
			u8 msb;
		} bytes;
	};
} __packed;

struct lp3952_led_array {
	struct regmap *regmap;
	struct i2c_client *client;
	struct gpio_desc *enable_gpio;
	struct lp3952_ctrl_hdl leds[LP3952_LED_ALL];
};

#endif /* LEDS_LP3952_H_ */
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg