xref: /openbmc/linux/include/media/i2c/lm3560.h (revision b5dcee225ce972fecb054e104be22b2a6f65303d)
1*b5dcee22SMauro Carvalho Chehab /*
2*b5dcee22SMauro Carvalho Chehab  * include/media/i2c/lm3560.h
3*b5dcee22SMauro Carvalho Chehab  *
4*b5dcee22SMauro Carvalho Chehab  * Copyright (C) 2013 Texas Instruments
5*b5dcee22SMauro Carvalho Chehab  *
6*b5dcee22SMauro Carvalho Chehab  * Contact: Daniel Jeong <gshark.jeong@gmail.com>
7*b5dcee22SMauro Carvalho Chehab  *			Ldd-Mlp <ldd-mlp@list.ti.com>
8*b5dcee22SMauro Carvalho Chehab  *
9*b5dcee22SMauro Carvalho Chehab  * This program is free software; you can redistribute it and/or
10*b5dcee22SMauro Carvalho Chehab  * modify it under the terms of the GNU General Public License
11*b5dcee22SMauro Carvalho Chehab  * version 2 as published by the Free Software Foundation.
12*b5dcee22SMauro Carvalho Chehab  *
13*b5dcee22SMauro Carvalho Chehab  * This program is distributed in the hope that it will be useful, but
14*b5dcee22SMauro Carvalho Chehab  * WITHOUT ANY WARRANTY; without even the implied warranty of
15*b5dcee22SMauro Carvalho Chehab  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16*b5dcee22SMauro Carvalho Chehab  * General Public License for more details.
17*b5dcee22SMauro Carvalho Chehab  *
18*b5dcee22SMauro Carvalho Chehab  * You should have received a copy of the GNU General Public License
19*b5dcee22SMauro Carvalho Chehab  * along with this program; if not, write to the Free Software
20*b5dcee22SMauro Carvalho Chehab  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
21*b5dcee22SMauro Carvalho Chehab  * 02110-1301 USA
22*b5dcee22SMauro Carvalho Chehab  *
23*b5dcee22SMauro Carvalho Chehab  */
24*b5dcee22SMauro Carvalho Chehab 
25*b5dcee22SMauro Carvalho Chehab #ifndef __LM3560_H__
26*b5dcee22SMauro Carvalho Chehab #define __LM3560_H__
27*b5dcee22SMauro Carvalho Chehab 
28*b5dcee22SMauro Carvalho Chehab #include <media/v4l2-subdev.h>
29*b5dcee22SMauro Carvalho Chehab 
30*b5dcee22SMauro Carvalho Chehab #define LM3560_NAME	"lm3560"
31*b5dcee22SMauro Carvalho Chehab #define LM3560_I2C_ADDR	(0x53)
32*b5dcee22SMauro Carvalho Chehab 
33*b5dcee22SMauro Carvalho Chehab /*  FLASH Brightness
34*b5dcee22SMauro Carvalho Chehab  *	min 62500uA, step 62500uA, max 1000000uA
35*b5dcee22SMauro Carvalho Chehab  */
36*b5dcee22SMauro Carvalho Chehab #define LM3560_FLASH_BRT_MIN 62500
37*b5dcee22SMauro Carvalho Chehab #define LM3560_FLASH_BRT_STEP 62500
38*b5dcee22SMauro Carvalho Chehab #define LM3560_FLASH_BRT_MAX 1000000
39*b5dcee22SMauro Carvalho Chehab #define LM3560_FLASH_BRT_uA_TO_REG(a)	\
40*b5dcee22SMauro Carvalho Chehab 	((a) < LM3560_FLASH_BRT_MIN ? 0 :	\
41*b5dcee22SMauro Carvalho Chehab 	 (((a) - LM3560_FLASH_BRT_MIN) / LM3560_FLASH_BRT_STEP))
42*b5dcee22SMauro Carvalho Chehab #define LM3560_FLASH_BRT_REG_TO_uA(a)		\
43*b5dcee22SMauro Carvalho Chehab 	((a) * LM3560_FLASH_BRT_STEP + LM3560_FLASH_BRT_MIN)
44*b5dcee22SMauro Carvalho Chehab 
45*b5dcee22SMauro Carvalho Chehab /*  FLASH TIMEOUT DURATION
46*b5dcee22SMauro Carvalho Chehab  *	min 32ms, step 32ms, max 1024ms
47*b5dcee22SMauro Carvalho Chehab  */
48*b5dcee22SMauro Carvalho Chehab #define LM3560_FLASH_TOUT_MIN 32
49*b5dcee22SMauro Carvalho Chehab #define LM3560_FLASH_TOUT_STEP 32
50*b5dcee22SMauro Carvalho Chehab #define LM3560_FLASH_TOUT_MAX 1024
51*b5dcee22SMauro Carvalho Chehab #define LM3560_FLASH_TOUT_ms_TO_REG(a)	\
52*b5dcee22SMauro Carvalho Chehab 	((a) < LM3560_FLASH_TOUT_MIN ? 0 :	\
53*b5dcee22SMauro Carvalho Chehab 	 (((a) - LM3560_FLASH_TOUT_MIN) / LM3560_FLASH_TOUT_STEP))
54*b5dcee22SMauro Carvalho Chehab #define LM3560_FLASH_TOUT_REG_TO_ms(a)		\
55*b5dcee22SMauro Carvalho Chehab 	((a) * LM3560_FLASH_TOUT_STEP + LM3560_FLASH_TOUT_MIN)
56*b5dcee22SMauro Carvalho Chehab 
57*b5dcee22SMauro Carvalho Chehab /*  TORCH BRT
58*b5dcee22SMauro Carvalho Chehab  *	min 31250uA, step 31250uA, max 250000uA
59*b5dcee22SMauro Carvalho Chehab  */
60*b5dcee22SMauro Carvalho Chehab #define LM3560_TORCH_BRT_MIN 31250
61*b5dcee22SMauro Carvalho Chehab #define LM3560_TORCH_BRT_STEP 31250
62*b5dcee22SMauro Carvalho Chehab #define LM3560_TORCH_BRT_MAX 250000
63*b5dcee22SMauro Carvalho Chehab #define LM3560_TORCH_BRT_uA_TO_REG(a)	\
64*b5dcee22SMauro Carvalho Chehab 	((a) < LM3560_TORCH_BRT_MIN ? 0 :	\
65*b5dcee22SMauro Carvalho Chehab 	 (((a) - LM3560_TORCH_BRT_MIN) / LM3560_TORCH_BRT_STEP))
66*b5dcee22SMauro Carvalho Chehab #define LM3560_TORCH_BRT_REG_TO_uA(a)		\
67*b5dcee22SMauro Carvalho Chehab 	((a) * LM3560_TORCH_BRT_STEP + LM3560_TORCH_BRT_MIN)
68*b5dcee22SMauro Carvalho Chehab 
69*b5dcee22SMauro Carvalho Chehab enum lm3560_led_id {
70*b5dcee22SMauro Carvalho Chehab 	LM3560_LED0 = 0,
71*b5dcee22SMauro Carvalho Chehab 	LM3560_LED1,
72*b5dcee22SMauro Carvalho Chehab 	LM3560_LED_MAX
73*b5dcee22SMauro Carvalho Chehab };
74*b5dcee22SMauro Carvalho Chehab 
75*b5dcee22SMauro Carvalho Chehab enum lm3560_peak_current {
76*b5dcee22SMauro Carvalho Chehab 	LM3560_PEAK_1600mA = 0x00,
77*b5dcee22SMauro Carvalho Chehab 	LM3560_PEAK_2300mA = 0x20,
78*b5dcee22SMauro Carvalho Chehab 	LM3560_PEAK_3000mA = 0x40,
79*b5dcee22SMauro Carvalho Chehab 	LM3560_PEAK_3600mA = 0x60
80*b5dcee22SMauro Carvalho Chehab };
81*b5dcee22SMauro Carvalho Chehab 
82*b5dcee22SMauro Carvalho Chehab /* struct lm3560_platform_data
83*b5dcee22SMauro Carvalho Chehab  *
84*b5dcee22SMauro Carvalho Chehab  * @peak :  peak current
85*b5dcee22SMauro Carvalho Chehab  * @max_flash_timeout: flash timeout
86*b5dcee22SMauro Carvalho Chehab  * @max_flash_brt: flash mode led brightness
87*b5dcee22SMauro Carvalho Chehab  * @max_torch_brt: torch mode led brightness
88*b5dcee22SMauro Carvalho Chehab  */
89*b5dcee22SMauro Carvalho Chehab struct lm3560_platform_data {
90*b5dcee22SMauro Carvalho Chehab 	enum lm3560_peak_current peak;
91*b5dcee22SMauro Carvalho Chehab 
92*b5dcee22SMauro Carvalho Chehab 	u32 max_flash_timeout;
93*b5dcee22SMauro Carvalho Chehab 	u32 max_flash_brt[LM3560_LED_MAX];
94*b5dcee22SMauro Carvalho Chehab 	u32 max_torch_brt[LM3560_LED_MAX];
95*b5dcee22SMauro Carvalho Chehab };
96*b5dcee22SMauro Carvalho Chehab 
97*b5dcee22SMauro Carvalho Chehab #endif /* __LM3560_H__ */
98