video: tegra: dtv: Move swizzling into ioctl
[linux-3.10.git] / include / media / lm3565.h
1 /*
2  * Copyright (c) 2012, NVIDIA CORPORATION.  All rights reserved.
3
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms and conditions of the GNU General Public License,
6  * version 2, as published by the Free Software Foundation.
7
8  * This program is distributed in the hope it will be useful, but WITHOUT
9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
11  * more details.
12
13  * You should have received a copy of the GNU General Public License
14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  */
16
17 #ifndef __LM3565_H__
18 #define __LM3565_H__
19
20 #include <media/nvc_torch.h>
21
22 struct lm3565_led_config {
23         u16 color_setting;
24         u16 granularity;        /* 1, 10, 100, ... to carry float settings */
25         u16 flash_levels;       /* calibrated flash levels < 32 */
26         /* this table contains the calibrated flash level - luminance pair */
27         struct nvc_torch_lumi_level_v1 *lumi_levels;
28 };
29
30 struct lm3565_config {
31         u16 txmask_current_mA; /* 30, 60, ... 480, in 30 mA steps */
32         u16 txmask_inductor_mA; /* 2300, 2600, 2900, 3300 */
33         u16 vin_low_v_mV; /* 0=off, 3000, 3100, 3200, 3300, 3400, 3500,
34                                 3600mV, 3700mV battery limit for flash denial */
35         u16 vin_low_c_mA; /* 0=off, 150, 180, 210, 240 */
36         u8 strobe_type; /* 1=edge, 2=level, 3=i2c */
37         u16 max_peak_current_mA; /* This led's maximum peak current in mA */
38         u16 max_peak_duration_ms; /* the maximum duration max_peak_current_mA
39                                      can be applied */
40         u16 max_sustained_current_mA; /* This leds maximum sustained current
41                                          in mA */
42         u16 min_current_mA; /* This leds minimum current in mA, desired
43                                values smaller than this will be realised
44                                using PWM. */
45         /* default flash timer setting in mS, zero will be ignored. */
46         u16 def_flash_time_mS;
47         struct lm3565_led_config led_config;
48 };
49
50 struct lm3565_power_rail {
51         struct regulator *v_in;
52         struct regulator *v_i2c;
53         struct nvc_gpio enable_gpio;
54 };
55
56 struct lm3565_platform_data {
57         struct lm3565_config config;
58         u32 type; /* flash device type, refer to lm3565_type */
59         unsigned cfg; /* use the NVC_CFG_ defines */
60         unsigned num; /* see implementation notes in driver */
61         const char *dev_name; /* see implementation notes in driver */
62         struct nvc_torch_pin_state pinstate; /* see notes in driver */
63         /* GPIO configuration connected to the ACT signal */
64         struct nvc_gpio_pdata strobe_gpio;
65         /* GPIO configuration connected to the enable pin */
66         struct nvc_gpio_pdata enable_gpio;
67         struct edp_client edpc_config;
68
69         int (*power_on_callback)(struct lm3565_power_rail *pw);
70         int (*power_off_callback)(struct lm3565_power_rail *pw);
71 };
72
73 #endif
74 /* __LM3565_H__ */