mfd : add new mfd device LM3631-backlight and regulator
[mlp-open-source/kernel.git] / include / media / lm3648.h
1 /*
2  * include/media/lm3648.h
3  *
4  * Copyright (C) 2014 Texas Instruments
5  *
6  * Contact: Daniel Jeong <gshark.jeong@gmail.com>
7  *                      Ldd-Mlp <ldd-mlp@list.ti.com>
8  *
9  * This program is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License
11  * version 2 as published by the Free Software Foundation.
12  */
14 #ifndef __LM3648_H__
15 #define __LM3648_H__
17 #include <media/v4l2-subdev.h>
19 #define LM3648_NAME     "lm3648"
20 #define LM3648_I2C_ADDR (0x63)
22 /*  TOTAL FLASH Brightness Max
23  *      min 21800uA, step 23450uA, max 1500000uA
24  */
25 #define LM3648_FLASH_BRT_MIN 21800
26 #define LM3648_FLASH_BRT_STEP 23450
27 #define LM3648_FLASH_BRT_MAX 1500000
28 #define LM3648_FLASH_BRT_uA_TO_REG(a)   \
29         ((a) < LM3648_FLASH_BRT_MIN ? 0 :       \
30          ((((a) - LM3648_FLASH_BRT_MIN) / LM3648_FLASH_BRT_STEP)))
32 /*  TOTAL TORCH Brightness Max
33  *      min 1954uA, step 2800uA, max 357600uA
34  */
35 #define LM3648_TORCH_BRT_MIN 1954
36 #define LM3648_TORCH_BRT_STEP 2800
37 #define LM3648_TORCH_BRT_MAX 357600
38 #define LM3648_TORCH_BRT_uA_TO_REG(a)   \
39         ((a) < LM3648_TORCH_BRT_MIN ? 0 :       \
40          ((((a) - LM3648_TORCH_BRT_MIN) / LM3648_TORCH_BRT_STEP)))
42 /*  FLASH TIMEOUT DURATION
43  *      min 10ms, max 400ms
44  *  step 10ms in range from  10ms to 100ms
45  *  setp 50ms in range from 100ms to 400ms
46  */
47 #define LM3648_FLASH_TOUT_MIN           10
48 #define LM3648_FLASH_TOUT_LOW_STEP      10
49 #define LM3648_FLASH_TOUT_LOW_MAX       100
50 #define LM3648_FLASH_TOUT_HIGH_STEP     50
51 #define LM3648_FLASH_TOUT_MAX           400
52 #define LM3648_FLASH_TOUT_ms_TO_REG(a)  \
53         ((a) < LM3648_FLASH_TOUT_MIN ? 0 :      \
54          ((a) <= LM3648_FLASH_TOUT_LOW_MAX ?    \
55           (((a) - LM3648_FLASH_TOUT_MIN) / LM3648_FLASH_TOUT_LOW_STEP) :        \
56            ((((a) - LM3648_FLASH_TOUT_LOW_MAX) / LM3648_FLASH_TOUT_HIGH_STEP)   \
57                 +((LM3648_FLASH_TOUT_LOW_MAX - LM3648_FLASH_TOUT_MIN)   \
58                 / LM3648_FLASH_TOUT_LOW_STEP))))
60 /* struct lm3648_platform_data
61  *
62  * @flash_timeout: flash timeout
63  */
64 struct lm3648_platform_data {
66         u32 flash_timeout;
67 };
69 #endif /* __LM3648_H__ */