lm3560.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /*
  2. * include/media/i2c/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. */
  19. #ifndef __LM3560_H__
  20. #define __LM3560_H__
  21. #include <media/v4l2-subdev.h>
  22. #define LM3560_NAME "lm3560"
  23. #define LM3560_I2C_ADDR (0x53)
  24. /* FLASH Brightness
  25. * min 62500uA, step 62500uA, max 1000000uA
  26. */
  27. #define LM3560_FLASH_BRT_MIN 62500
  28. #define LM3560_FLASH_BRT_STEP 62500
  29. #define LM3560_FLASH_BRT_MAX 1000000
  30. #define LM3560_FLASH_BRT_uA_TO_REG(a) \
  31. ((a) < LM3560_FLASH_BRT_MIN ? 0 : \
  32. (((a) - LM3560_FLASH_BRT_MIN) / LM3560_FLASH_BRT_STEP))
  33. #define LM3560_FLASH_BRT_REG_TO_uA(a) \
  34. ((a) * LM3560_FLASH_BRT_STEP + LM3560_FLASH_BRT_MIN)
  35. /* FLASH TIMEOUT DURATION
  36. * min 32ms, step 32ms, max 1024ms
  37. */
  38. #define LM3560_FLASH_TOUT_MIN 32
  39. #define LM3560_FLASH_TOUT_STEP 32
  40. #define LM3560_FLASH_TOUT_MAX 1024
  41. #define LM3560_FLASH_TOUT_ms_TO_REG(a) \
  42. ((a) < LM3560_FLASH_TOUT_MIN ? 0 : \
  43. (((a) - LM3560_FLASH_TOUT_MIN) / LM3560_FLASH_TOUT_STEP))
  44. #define LM3560_FLASH_TOUT_REG_TO_ms(a) \
  45. ((a) * LM3560_FLASH_TOUT_STEP + LM3560_FLASH_TOUT_MIN)
  46. /* TORCH BRT
  47. * min 31250uA, step 31250uA, max 250000uA
  48. */
  49. #define LM3560_TORCH_BRT_MIN 31250
  50. #define LM3560_TORCH_BRT_STEP 31250
  51. #define LM3560_TORCH_BRT_MAX 250000
  52. #define LM3560_TORCH_BRT_uA_TO_REG(a) \
  53. ((a) < LM3560_TORCH_BRT_MIN ? 0 : \
  54. (((a) - LM3560_TORCH_BRT_MIN) / LM3560_TORCH_BRT_STEP))
  55. #define LM3560_TORCH_BRT_REG_TO_uA(a) \
  56. ((a) * LM3560_TORCH_BRT_STEP + LM3560_TORCH_BRT_MIN)
  57. enum lm3560_led_id {
  58. LM3560_LED0 = 0,
  59. LM3560_LED1,
  60. LM3560_LED_MAX
  61. };
  62. enum lm3560_peak_current {
  63. LM3560_PEAK_1600mA = 0x00,
  64. LM3560_PEAK_2300mA = 0x20,
  65. LM3560_PEAK_3000mA = 0x40,
  66. LM3560_PEAK_3600mA = 0x60
  67. };
  68. /* struct lm3560_platform_data
  69. *
  70. * @peak : peak current
  71. * @max_flash_timeout: flash timeout
  72. * @max_flash_brt: flash mode led brightness
  73. * @max_torch_brt: torch mode led brightness
  74. */
  75. struct lm3560_platform_data {
  76. enum lm3560_peak_current peak;
  77. u32 max_flash_timeout;
  78. u32 max_flash_brt[LM3560_LED_MAX];
  79. u32 max_torch_brt[LM3560_LED_MAX];
  80. };
  81. #endif /* __LM3560_H__ */