epl2182.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. #ifndef __EPL2182_H__
  2. #define __EPL2182_H__
  3. #define REG_0 0X00
  4. #define REG_1 0X01
  5. #define REG_2 0X02
  6. #define REG_3 0X03
  7. #define REG_4 0X04
  8. #define REG_5 0X05
  9. #define REG_6 0X06
  10. #define REG_7 0X07
  11. #define REG_8 0X08
  12. #define REG_9 0X09
  13. #define REG_10 0X0A
  14. #define REG_11 0X0B
  15. #define REG_12 0X0C
  16. #define REG_13 0X0D
  17. #define REG_14 0X0E
  18. #define REG_15 0X0F
  19. #define REG_16 0X10
  20. #define REG_17 0X11
  21. #define REG_18 0X12
  22. #define REG_19 0X13
  23. #define REG_20 0X14
  24. #define REG_21 0X15
  25. #define W_SINGLE_BYTE 0X00
  26. #define W_TWO_BYTE 0X01
  27. #define W_THREE_BYTE 0X02
  28. #define W_FOUR_BYTE 0X03
  29. #define W_FIVE_BYTE 0X04
  30. #define W_SIX_BYTE 0X05
  31. #define W_SEVEN_BYTE 0X06
  32. #define W_EIGHT_BYTE 0X07
  33. #define R_SINGLE_BYTE 0X00
  34. #define R_TWO_BYTE 0X01
  35. #define R_THREE_BYTE 0X02
  36. #define R_FOUR_BYTE 0X03
  37. #define R_FIVE_BYTE 0X04
  38. #define R_SIX_BYTE 0X05
  39. #define R_SEVEN_BYTE 0X06
  40. #define R_EIGHT_BYTE 0X07
  41. #define EPL_SENSING_1_TIME (0 << 5)
  42. #define EPL_SENSING_2_TIME (1 << 5)
  43. #define EPL_SENSING_4_TIME (2 << 5)
  44. #define EPL_SENSING_8_TIME (3 << 5)
  45. #define EPL_SENSING_16_TIME (4 << 5)
  46. #define EPL_SENSING_32_TIME (5 << 5)
  47. #define EPL_SENSING_64_TIME (6 << 5)
  48. #define EPL_SENSING_128_TIME (7 << 5)
  49. #define EPL_C_SENSING_MODE (0 << 4)
  50. #define EPL_S_SENSING_MODE (1 << 4)
  51. #define EPL_ALS_MODE (0 << 2)
  52. #define EPL_PS_MODE (1 << 2)
  53. #define EPL_H_GAIN (0)
  54. #define EPL_M_GAIN (1)
  55. #define EPL_L_GAIN (3)
  56. #define EPL_AUTO_GAIN (2)
  57. #define EPL_8BIT_ADC 0
  58. #define EPL_10BIT_ADC 1
  59. #define EPL_12BIT_ADC 2
  60. #define EPL_14BIT_ADC 3
  61. #define EPL_C_RESET 0x00
  62. #define EPL_C_START_RUN 0x04
  63. #define EPL_C_P_UP 0x04
  64. #define EPL_C_P_DOWN 0x06
  65. #define EPL_DATA_LOCK_ONLY 0x01
  66. #define EPL_DATA_LOCK 0x05
  67. #define EPL_DATA_UNLOCK 0x04
  68. #define EPL_GO_MID 0x1E
  69. #define EPL_GO_LOW 0x1E
  70. #define EPL_DRIVE_60MA (0<<4)
  71. #define EPL_DRIVE_120MA (1<<4)
  72. #define EPL_INT_BINARY 0
  73. #define EPL_INT_DISABLE 2
  74. #define EPL_INT_ACTIVE_LOW 3
  75. #define EPL_INT_FRAME_ENABLE 4
  76. #define EPL_PST_1_TIME (0 << 2)
  77. #define EPL_PST_4_TIME (1 << 2)
  78. #define EPL_PST_8_TIME (2 << 2)
  79. #define EPL_PST_16_TIME (3 << 2)
  80. /*----------------------------------------------------------------------------*/
  81. enum EPL2182_NOTIFY_TYPE {
  82. EPL2182_NOTIFY_PROXIMITY_CHANGE = 1,
  83. EPL2182_NOTIFY_ALS_RAW_DATA,
  84. EPL2182_NOTIFY_PS_RAW_DATA,
  85. EPL2182_NOTIFY_PROXIMITY_NOT_CHANGE
  86. };
  87. /*----------------------------------------------------------------------------*/
  88. enum EPL2182_CUST_ACTION {
  89. EPL2182_CUST_ACTION_SET_CUST = 1,
  90. EPL2182_CUST_ACTION_CLR_CALI,
  91. EPL2182_CUST_ACTION_SET_CALI,
  92. EPL2182_CUST_ACTION_SET_PS_THRESHODL,
  93. EPL2182_CUST_ACTION_SET_EINT_INFO,
  94. EPL2182_CUST_ACTION_GET_ALS_RAW_DATA,
  95. EPL2182_CUST_ACTION_GET_PS_RAW_DATA,
  96. };
  97. /*----------------------------------------------------------------------------*/
  98. struct EPL2182_CUST {
  99. uint16_t action;
  100. };
  101. /*----------------------------------------------------------------------------*/
  102. struct EPL2182_SET_CUST {
  103. uint16_t action;
  104. uint16_t part;
  105. int32_t data[0];
  106. };
  107. /*----------------------------------------------------------------------------*/
  108. /*----------------------------------------------------------------------------*/
  109. struct EPL2182_SET_CALI {
  110. uint16_t action;
  111. int32_t cali;
  112. };
  113. /*----------------------------------------------------------------------------*/
  114. struct EPL2182_SET_PS_THRESHOLD {
  115. uint16_t action;
  116. int32_t threshold[2];
  117. };
  118. /*----------------------------------------------------------------------------*/
  119. struct EPL2182_SET_EINT_INFO {
  120. uint16_t action;
  121. uint32_t gpio_pin;
  122. uint32_t gpio_mode;
  123. uint32_t eint_num;
  124. uint32_t eint_is_deb_en;
  125. uint32_t eint_type;
  126. };
  127. /*----------------------------------------------------------------------------*/
  128. /*----------------------------------------------------------------------------*/
  129. union EPL2182_CUST_DATA {
  130. uint32_t data[10];
  131. struct EPL2182_CUST cust;
  132. struct EPL2182_SET_CUST setCust;
  133. struct EPL2182_CUST clearCali;
  134. struct EPL2182_SET_CALI setCali;
  135. struct EPL2182_SET_PS_THRESHOLD setPSThreshold;
  136. struct EPL2182_SET_EINT_INFO setEintInfo;
  137. struct EPL2182_CUST getALSRawData;
  138. struct EPL2182_CUST getPSRawData;
  139. };
  140. /*----------------------------------------------------------------------------*/
  141. extern struct platform_device *get_alsps_platformdev(void);
  142. #endif