lm3560.h 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*
  2. * include/media/lm3560.h
  3. *
  4. * Copyright (C) 2013 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. *
  13. * This program is distributed in the hope that it will be useful, but
  14. * WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  16. * General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  21. * 02110-1301 USA
  22. *
  23. */
  24. #ifndef __LM3560_H__
  25. #define __LM3560_H__
  26. #include <media/v4l2-subdev.h>
  27. #define LM3560_NAME "lm3560"
  28. #define LM3560_I2C_ADDR (0x53)
  29. /* FLASH Brightness
  30. * min 62500uA, step 62500uA, max 1000000uA
  31. */
  32. #define LM3560_FLASH_BRT_MIN 62500
  33. #define LM3560_FLASH_BRT_STEP 62500
  34. #define LM3560_FLASH_BRT_MAX 1000000
  35. #define LM3560_FLASH_BRT_uA_TO_REG(a) \
  36. ((a) < LM3560_FLASH_BRT_MIN ? 0 : \
  37. (((a) - LM3560_FLASH_BRT_MIN) / LM3560_FLASH_BRT_STEP))
  38. #define LM3560_FLASH_BRT_REG_TO_uA(a) \
  39. ((a) * LM3560_FLASH_BRT_STEP + LM3560_FLASH_BRT_MIN)
  40. /* FLASH TIMEOUT DURATION
  41. * min 32ms, step 32ms, max 1024ms
  42. */
  43. #define LM3560_FLASH_TOUT_MIN 32
  44. #define LM3560_FLASH_TOUT_STEP 32
  45. #define LM3560_FLASH_TOUT_MAX 1024
  46. #define LM3560_FLASH_TOUT_ms_TO_REG(a) \
  47. ((a) < LM3560_FLASH_TOUT_MIN ? 0 : \
  48. (((a) - LM3560_FLASH_TOUT_MIN) / LM3560_FLASH_TOUT_STEP))
  49. #define LM3560_FLASH_TOUT_REG_TO_ms(a) \
  50. ((a) * LM3560_FLASH_TOUT_STEP + LM3560_FLASH_TOUT_MIN)
  51. /* TORCH BRT
  52. * min 31250uA, step 31250uA, max 250000uA
  53. */
  54. #define LM3560_TORCH_BRT_MIN 31250
  55. #define LM3560_TORCH_BRT_STEP 31250
  56. #define LM3560_TORCH_BRT_MAX 250000
  57. #define LM3560_TORCH_BRT_uA_TO_REG(a) \
  58. ((a) < LM3560_TORCH_BRT_MIN ? 0 : \
  59. (((a) - LM3560_TORCH_BRT_MIN) / LM3560_TORCH_BRT_STEP))
  60. #define LM3560_TORCH_BRT_REG_TO_uA(a) \
  61. ((a) * LM3560_TORCH_BRT_STEP + LM3560_TORCH_BRT_MIN)
  62. enum lm3560_led_id {
  63. LM3560_LED0 = 0,
  64. LM3560_LED1,
  65. LM3560_LED_MAX
  66. };
  67. enum lm3560_peak_current {
  68. LM3560_PEAK_1600mA = 0x00,
  69. LM3560_PEAK_2300mA = 0x20,
  70. LM3560_PEAK_3000mA = 0x40,
  71. LM3560_PEAK_3600mA = 0x60
  72. };
  73. /* struct lm3560_platform_data
  74. *
  75. * @peak : peak current
  76. * @max_flash_timeout: flash timeout
  77. * @max_flash_brt: flash mode led brightness
  78. * @max_torch_brt: torch mode led brightness
  79. */
  80. struct lm3560_platform_data {
  81. enum lm3560_peak_current peak;
  82. u32 max_flash_timeout;
  83. u32 max_flash_brt[LM3560_LED_MAX];
  84. u32 max_torch_brt[LM3560_LED_MAX];
  85. };
  86. #endif /* __LM3560_H__ */