lm3646.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * include/media/i2c/lm3646.h
  4. *
  5. * Copyright (C) 2014 Texas Instruments
  6. *
  7. * Contact: Daniel Jeong <[email protected]>
  8. * Ldd-Mlp <[email protected]>
  9. */
  10. #ifndef __LM3646_H__
  11. #define __LM3646_H__
  12. #include <media/v4l2-subdev.h>
  13. #define LM3646_NAME "lm3646"
  14. #define LM3646_I2C_ADDR_REV1 (0x67)
  15. #define LM3646_I2C_ADDR_REV0 (0x63)
  16. /* TOTAL FLASH Brightness Max
  17. * min 93350uA, step 93750uA, max 1499600uA
  18. */
  19. #define LM3646_TOTAL_FLASH_BRT_MIN 93350
  20. #define LM3646_TOTAL_FLASH_BRT_STEP 93750
  21. #define LM3646_TOTAL_FLASH_BRT_MAX 1499600
  22. #define LM3646_TOTAL_FLASH_BRT_uA_TO_REG(a) \
  23. ((a) < LM3646_TOTAL_FLASH_BRT_MIN ? 0 : \
  24. ((((a) - LM3646_TOTAL_FLASH_BRT_MIN) / LM3646_TOTAL_FLASH_BRT_STEP)))
  25. /* TOTAL TORCH Brightness Max
  26. * min 23040uA, step 23430uA, max 187100uA
  27. */
  28. #define LM3646_TOTAL_TORCH_BRT_MIN 23040
  29. #define LM3646_TOTAL_TORCH_BRT_STEP 23430
  30. #define LM3646_TOTAL_TORCH_BRT_MAX 187100
  31. #define LM3646_TOTAL_TORCH_BRT_uA_TO_REG(a) \
  32. ((a) < LM3646_TOTAL_TORCH_BRT_MIN ? 0 : \
  33. ((((a) - LM3646_TOTAL_TORCH_BRT_MIN) / LM3646_TOTAL_TORCH_BRT_STEP)))
  34. /* LED1 FLASH Brightness
  35. * min 23040uA, step 11718uA, max 1499600uA
  36. */
  37. #define LM3646_LED1_FLASH_BRT_MIN 23040
  38. #define LM3646_LED1_FLASH_BRT_STEP 11718
  39. #define LM3646_LED1_FLASH_BRT_MAX 1499600
  40. #define LM3646_LED1_FLASH_BRT_uA_TO_REG(a) \
  41. ((a) <= LM3646_LED1_FLASH_BRT_MIN ? 0 : \
  42. ((((a) - LM3646_LED1_FLASH_BRT_MIN) / LM3646_LED1_FLASH_BRT_STEP))+1)
  43. /* LED1 TORCH Brightness
  44. * min 2530uA, step 1460uA, max 187100uA
  45. */
  46. #define LM3646_LED1_TORCH_BRT_MIN 2530
  47. #define LM3646_LED1_TORCH_BRT_STEP 1460
  48. #define LM3646_LED1_TORCH_BRT_MAX 187100
  49. #define LM3646_LED1_TORCH_BRT_uA_TO_REG(a) \
  50. ((a) <= LM3646_LED1_TORCH_BRT_MIN ? 0 : \
  51. ((((a) - LM3646_LED1_TORCH_BRT_MIN) / LM3646_LED1_TORCH_BRT_STEP))+1)
  52. /* FLASH TIMEOUT DURATION
  53. * min 50ms, step 50ms, max 400ms
  54. */
  55. #define LM3646_FLASH_TOUT_MIN 50
  56. #define LM3646_FLASH_TOUT_STEP 50
  57. #define LM3646_FLASH_TOUT_MAX 400
  58. #define LM3646_FLASH_TOUT_ms_TO_REG(a) \
  59. ((a) <= LM3646_FLASH_TOUT_MIN ? 0 : \
  60. (((a) - LM3646_FLASH_TOUT_MIN) / LM3646_FLASH_TOUT_STEP))
  61. /* struct lm3646_platform_data
  62. *
  63. * @flash_timeout: flash timeout
  64. * @led1_flash_brt: led1 flash mode brightness, uA
  65. * @led1_torch_brt: led1 torch mode brightness, uA
  66. */
  67. struct lm3646_platform_data {
  68. u32 flash_timeout;
  69. u32 led1_flash_brt;
  70. u32 led1_torch_brt;
  71. };
  72. #endif /* __LM3646_H__ */