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