/* * Copyright (c) 2012 - 2013, NVIDIA CORPORATION. All rights reserved. * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __LM3565_H__ #define __LM3565_H__ #include struct lm3565_led_config { u16 color_setting; u16 granularity; /* 1, 10, 100, ... to carry float settings */ u16 flash_levels; /* calibrated flash levels < 32 */ /* this table contains the calibrated flash level - luminance pair */ struct nvc_torch_lumi_level_v1 *lumi_levels; }; struct lm3565_config { u16 txmask_current_mA; /* 30, 60, ... 480, in 30 mA steps */ u16 txmask_inductor_mA; /* 2300, 2600, 2900, 3300 */ u16 vin_low_v_mV; /* 0=off, 3000, 3100, 3200, 3300, 3400, 3500, 3600mV, 3700mV battery limit for flash denial */ u16 vin_low_c_mA; /* 0=off, 150, 180, 210, 240 */ u8 strobe_type; /* 1=edge, 2=level, 3=i2c */ u16 max_peak_current_mA; /* This led's maximum peak current in mA */ u16 max_peak_duration_ms; /* the maximum duration max_peak_current_mA can be applied */ u16 max_torch_current_mA; /* This leds maximum torch current in mA */ u16 max_sustained_current_mA; /* This leds maximum sustained current in mA */ u16 min_current_mA; /* This leds minimum current in mA, desired values smaller than this will be realised using PWM. */ /* default flash timer setting in mS, zero will be ignored. */ u16 def_flash_time_mS; struct lm3565_led_config led_config; }; struct lm3565_power_rail { struct regulator *v_in; struct regulator *v_i2c; struct nvc_gpio enable_gpio; }; struct lm3565_platform_data { struct lm3565_config config; u32 type; /* flash device type, refer to lm3565_type */ unsigned cfg; /* use the NVC_CFG_ defines */ unsigned num; /* see implementation notes in driver */ const char *dev_name; /* see implementation notes in driver */ struct nvc_torch_pin_state pinstate; /* see notes in driver */ /* GPIO configuration connected to the ACT signal */ struct nvc_gpio_pdata strobe_gpio; /* GPIO configuration connected to the enable pin */ struct nvc_gpio_pdata enable_gpio; int (*power_on_callback)(struct lm3565_power_rail *pw); int (*power_off_callback)(struct lm3565_power_rail *pw); }; #endif /* __LM3565_H__ */