lm3560.h 2.5 KB

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