lm3646.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /*
  2. * include/media/lm3646.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. */
  13. #ifndef __LM3646_H__
  14. #define __LM3646_H__
  15. #include <media/v4l2-subdev.h>
  16. #define LM3646_NAME "lm3646"
  17. #define LM3646_I2C_ADDR_REV1 (0x67)
  18. #define LM3646_I2C_ADDR_REV0 (0x63)
  19. /* TOTAL FLASH Brightness Max
  20. * min 93350uA, step 93750uA, max 1499600uA
  21. */
  22. #define LM3646_TOTAL_FLASH_BRT_MIN 93350
  23. #define LM3646_TOTAL_FLASH_BRT_STEP 93750
  24. #define LM3646_TOTAL_FLASH_BRT_MAX 1499600
  25. #define LM3646_TOTAL_FLASH_BRT_uA_TO_REG(a) \
  26. ((a) < LM3646_TOTAL_FLASH_BRT_MIN ? 0 : \
  27. ((((a) - LM3646_TOTAL_FLASH_BRT_MIN) / LM3646_TOTAL_FLASH_BRT_STEP)))
  28. /* TOTAL TORCH Brightness Max
  29. * min 23040uA, step 23430uA, max 187100uA
  30. */
  31. #define LM3646_TOTAL_TORCH_BRT_MIN 23040
  32. #define LM3646_TOTAL_TORCH_BRT_STEP 23430
  33. #define LM3646_TOTAL_TORCH_BRT_MAX 187100
  34. #define LM3646_TOTAL_TORCH_BRT_uA_TO_REG(a) \
  35. ((a) < LM3646_TOTAL_TORCH_BRT_MIN ? 0 : \
  36. ((((a) - LM3646_TOTAL_TORCH_BRT_MIN) / LM3646_TOTAL_TORCH_BRT_STEP)))
  37. /* LED1 FLASH Brightness
  38. * min 23040uA, step 11718uA, max 1499600uA
  39. */
  40. #define LM3646_LED1_FLASH_BRT_MIN 23040
  41. #define LM3646_LED1_FLASH_BRT_STEP 11718
  42. #define LM3646_LED1_FLASH_BRT_MAX 1499600
  43. #define LM3646_LED1_FLASH_BRT_uA_TO_REG(a) \
  44. ((a) <= LM3646_LED1_FLASH_BRT_MIN ? 0 : \
  45. ((((a) - LM3646_LED1_FLASH_BRT_MIN) / LM3646_LED1_FLASH_BRT_STEP))+1)
  46. /* LED1 TORCH Brightness
  47. * min 2530uA, step 1460uA, max 187100uA
  48. */
  49. #define LM3646_LED1_TORCH_BRT_MIN 2530
  50. #define LM3646_LED1_TORCH_BRT_STEP 1460
  51. #define LM3646_LED1_TORCH_BRT_MAX 187100
  52. #define LM3646_LED1_TORCH_BRT_uA_TO_REG(a) \
  53. ((a) <= LM3646_LED1_TORCH_BRT_MIN ? 0 : \
  54. ((((a) - LM3646_LED1_TORCH_BRT_MIN) / LM3646_LED1_TORCH_BRT_STEP))+1)
  55. /* FLASH TIMEOUT DURATION
  56. * min 50ms, step 50ms, max 400ms
  57. */
  58. #define LM3646_FLASH_TOUT_MIN 50
  59. #define LM3646_FLASH_TOUT_STEP 50
  60. #define LM3646_FLASH_TOUT_MAX 400
  61. #define LM3646_FLASH_TOUT_ms_TO_REG(a) \
  62. ((a) <= LM3646_FLASH_TOUT_MIN ? 0 : \
  63. (((a) - LM3646_FLASH_TOUT_MIN) / LM3646_FLASH_TOUT_STEP))
  64. /* struct lm3646_platform_data
  65. *
  66. * @flash_timeout: flash timeout
  67. * @led1_flash_brt: led1 flash mode brightness, uA
  68. * @led1_torch_brt: led1 torch mode brightness, uA
  69. */
  70. struct lm3646_platform_data {
  71. u32 flash_timeout;
  72. u32 led1_flash_brt;
  73. u32 led1_torch_brt;
  74. };
  75. #endif /* __LM3646_H__ */