ep92.h 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright (c) 2018, The Linux Foundation. All rights reserved.
  4. */
  5. #ifndef __EP92_H__
  6. #define __EP92_H__
  7. /* EP92 register addresses */
  8. /* BI = Basic Info */
  9. #define EP92_BI_VENDOR_ID_0 0x00
  10. #define EP92_BI_VENDOR_ID_1 0x01
  11. #define EP92_BI_DEVICE_ID_0 0x02
  12. #define EP92_BI_DEVICE_ID_1 0x03
  13. #define EP92_BI_VERSION_NUM 0x04
  14. #define EP92_BI_VERSION_YEAR 0x05
  15. #define EP92_BI_VERSION_MONTH 0x06
  16. #define EP92_BI_VERSION_DATE 0x07
  17. #define EP92_BI_GENERAL_INFO_0 0x08
  18. #define EP92_BI_GENERAL_INFO_1 0x09
  19. #define EP92_BI_GENERAL_INFO_2 0x0A
  20. #define EP92_BI_GENERAL_INFO_3 0x0B
  21. #define EP92_BI_GENERAL_INFO_4 0x0C
  22. #define EP92_BI_GENERAL_INFO_5 0x0D
  23. #define EP92_BI_GENERAL_INFO_6 0x0E
  24. #define EP92_ISP_MODE_ENTER_ISP 0x0F
  25. #define EP92_GENERAL_CONTROL_0 0x10
  26. #define EP92_GENERAL_CONTROL_1 0x11
  27. #define EP92_GENERAL_CONTROL_2 0x12
  28. #define EP92_GENERAL_CONTROL_3 0x13
  29. #define EP92_GENERAL_CONTROL_4 0x14
  30. #define EP92_CEC_EVENT_CODE 0x15
  31. #define EP92_CEC_EVENT_PARAM_1 0x16
  32. #define EP92_CEC_EVENT_PARAM_2 0x17
  33. #define EP92_CEC_EVENT_PARAM_3 0x18
  34. #define EP92_CEC_EVENT_PARAM_4 0x19
  35. /* RESERVED 0x1A */
  36. /* ... ... */
  37. /* RESERVED 0x1F */
  38. #define EP92_AUDIO_INFO_SYSTEM_STATUS_0 0x20
  39. #define EP92_AUDIO_INFO_SYSTEM_STATUS_1 0x21
  40. #define EP92_AUDIO_INFO_AUDIO_STATUS 0x22
  41. #define EP92_AUDIO_INFO_CHANNEL_STATUS_0 0x23
  42. #define EP92_AUDIO_INFO_CHANNEL_STATUS_1 0x24
  43. #define EP92_AUDIO_INFO_CHANNEL_STATUS_2 0x25
  44. #define EP92_AUDIO_INFO_CHANNEL_STATUS_3 0x26
  45. #define EP92_AUDIO_INFO_CHANNEL_STATUS_4 0x27
  46. #define EP92_AUDIO_INFO_ADO_INFO_FRAME_0 0x28
  47. #define EP92_AUDIO_INFO_ADO_INFO_FRAME_1 0x29
  48. #define EP92_AUDIO_INFO_ADO_INFO_FRAME_2 0x2A
  49. #define EP92_AUDIO_INFO_ADO_INFO_FRAME_3 0x2B
  50. #define EP92_AUDIO_INFO_ADO_INFO_FRAME_4 0x2C
  51. #define EP92_AUDIO_INFO_ADO_INFO_FRAME_5 0x2D
  52. #define EP92_OTHER_PACKETS_HDMI_VS_0 0x2E
  53. #define EP92_OTHER_PACKETS_HDMI_VS_1 0x2F
  54. #define EP92_OTHER_PACKETS_ACP_PACKET 0x30
  55. #define EP92_OTHER_PACKETS_AVI_INFO_FRAME_0 0x31
  56. #define EP92_OTHER_PACKETS_AVI_INFO_FRAME_1 0x32
  57. #define EP92_OTHER_PACKETS_AVI_INFO_FRAME_2 0x33
  58. #define EP92_OTHER_PACKETS_AVI_INFO_FRAME_3 0x34
  59. #define EP92_OTHER_PACKETS_AVI_INFO_FRAME_4 0x35
  60. #define EP92_OTHER_PACKETS_GC_PACKET_0 0x36
  61. #define EP92_OTHER_PACKETS_GC_PACKET_1 0x37
  62. #define EP92_OTHER_PACKETS_GC_PACKET_2 0x38
  63. #define EP92_MAX_REGISTER_ADDR EP92_OTHER_PACKETS_GC_PACKET_2
  64. /* EP92 register default values */
  65. static struct reg_default ep92_reg_defaults[] = {
  66. {EP92_BI_VENDOR_ID_0, 0x17},
  67. {EP92_BI_VENDOR_ID_1, 0x7A},
  68. {EP92_BI_DEVICE_ID_0, 0x94},
  69. {EP92_BI_DEVICE_ID_1, 0xA3},
  70. {EP92_BI_VERSION_NUM, 0x10},
  71. {EP92_BI_VERSION_YEAR, 0x09},
  72. {EP92_BI_VERSION_MONTH, 0x07},
  73. {EP92_BI_VERSION_DATE, 0x06},
  74. {EP92_BI_GENERAL_INFO_0, 0x00},
  75. {EP92_BI_GENERAL_INFO_1, 0x00},
  76. {EP92_BI_GENERAL_INFO_2, 0x00},
  77. {EP92_BI_GENERAL_INFO_3, 0x00},
  78. {EP92_BI_GENERAL_INFO_4, 0x00},
  79. {EP92_BI_GENERAL_INFO_5, 0x00},
  80. {EP92_BI_GENERAL_INFO_6, 0x00},
  81. {EP92_ISP_MODE_ENTER_ISP, 0x00},
  82. {EP92_GENERAL_CONTROL_0, 0x20},
  83. {EP92_GENERAL_CONTROL_1, 0x00},
  84. {EP92_GENERAL_CONTROL_2, 0x00},
  85. {EP92_GENERAL_CONTROL_3, 0x10},
  86. {EP92_GENERAL_CONTROL_4, 0x00},
  87. {EP92_CEC_EVENT_CODE, 0x00},
  88. {EP92_CEC_EVENT_PARAM_1, 0x00},
  89. {EP92_CEC_EVENT_PARAM_2, 0x00},
  90. {EP92_CEC_EVENT_PARAM_3, 0x00},
  91. {EP92_CEC_EVENT_PARAM_4, 0x00},
  92. {EP92_AUDIO_INFO_SYSTEM_STATUS_0, 0x00},
  93. {EP92_AUDIO_INFO_SYSTEM_STATUS_1, 0x00},
  94. {EP92_AUDIO_INFO_AUDIO_STATUS, 0x00},
  95. {EP92_AUDIO_INFO_CHANNEL_STATUS_0, 0x00},
  96. {EP92_AUDIO_INFO_CHANNEL_STATUS_1, 0x00},
  97. {EP92_AUDIO_INFO_CHANNEL_STATUS_2, 0x00},
  98. {EP92_AUDIO_INFO_CHANNEL_STATUS_3, 0x00},
  99. {EP92_AUDIO_INFO_CHANNEL_STATUS_4, 0x00},
  100. {EP92_AUDIO_INFO_ADO_INFO_FRAME_0, 0x00},
  101. {EP92_AUDIO_INFO_ADO_INFO_FRAME_1, 0x00},
  102. {EP92_AUDIO_INFO_ADO_INFO_FRAME_2, 0x00},
  103. {EP92_AUDIO_INFO_ADO_INFO_FRAME_3, 0x00},
  104. {EP92_AUDIO_INFO_ADO_INFO_FRAME_4, 0x00},
  105. {EP92_AUDIO_INFO_ADO_INFO_FRAME_5, 0x00},
  106. {EP92_OTHER_PACKETS_HDMI_VS_0, 0x00},
  107. {EP92_OTHER_PACKETS_HDMI_VS_1, 0x00},
  108. {EP92_OTHER_PACKETS_ACP_PACKET, 0x00},
  109. {EP92_OTHER_PACKETS_AVI_INFO_FRAME_0, 0x00},
  110. {EP92_OTHER_PACKETS_AVI_INFO_FRAME_1, 0x00},
  111. {EP92_OTHER_PACKETS_AVI_INFO_FRAME_2, 0x00},
  112. {EP92_OTHER_PACKETS_AVI_INFO_FRAME_3, 0x00},
  113. {EP92_OTHER_PACKETS_AVI_INFO_FRAME_4, 0x00},
  114. {EP92_OTHER_PACKETS_GC_PACKET_0, 0x00},
  115. {EP92_OTHER_PACKETS_GC_PACKET_1, 0x00},
  116. {EP92_OTHER_PACKETS_GC_PACKET_2, 0x00},
  117. };
  118. /* shift/masks for register bits
  119. * GI = General Info
  120. * GC = General Control
  121. * AI = Audio Info
  122. */
  123. #define EP92_GI_ADO_CHF_MASK 0x01
  124. #define EP92_GI_CEC_ECF_MASK 0x02
  125. #define EP92_GI_TX_HOT_PLUG_SHIFT 7
  126. #define EP92_GI_TX_HOT_PLUG_MASK 0x80
  127. #define EP92_GI_VIDEO_LATENCY_SHIFT 0
  128. #define EP92_GI_VIDEO_LATENCY_MASK 0xff
  129. #define EP92_GC_POWER_SHIFT 7
  130. #define EP92_GC_POWER_MASK 0x80
  131. #define EP92_GC_AUDIO_PATH_SHIFT 5
  132. #define EP92_GC_AUDIO_PATH_MASK 0x20
  133. #define EP92_GC_CEC_MUTE_SHIFT 1
  134. #define EP92_GC_CEC_MUTE_MASK 0x02
  135. #define EP92_GC_ARC_EN_SHIFT 0
  136. #define EP92_GC_ARC_EN_MASK 0x01
  137. #define EP92_GC_ARC_DIS_SHIFT 6
  138. #define EP92_GC_ARC_DIS_MASK 0x40
  139. #define EP92_GC_RX_SEL_SHIFT 0
  140. #define EP92_GC_RX_SEL_MASK 0x07
  141. #define EP92_GC_CEC_VOLUME_SHIFT 0
  142. #define EP92_GC_CEC_VOLUME_MASK 0xff
  143. #define EP92_GC_LINK_ON0_SHIFT 0
  144. #define EP92_GC_LINK_ON0_MASK 0x01
  145. #define EP92_GC_LINK_ON1_SHIFT 1
  146. #define EP92_GC_LINK_ON1_MASK 0x02
  147. #define EP92_GC_LINK_ON2_SHIFT 2
  148. #define EP92_GC_LINK_ON2_MASK 0x04
  149. #define EP92_AI_MCLK_ON_SHIFT 6
  150. #define EP92_AI_MCLK_ON_MASK 0x40
  151. #define EP92_AI_AVMUTE_SHIFT 5
  152. #define EP92_AI_AVMUTE_MASK 0x20
  153. #define EP92_AI_LAYOUT_SHIFT 0
  154. #define EP92_AI_LAYOUT_MASK 0x01
  155. #define EP92_AI_HBR_ADO_SHIFT 5
  156. #define EP92_AI_HBR_ADO_MASK 0x20
  157. #define EP92_AI_STD_ADO_SHIFT 3
  158. #define EP92_AI_STD_ADO_MASK 0x08
  159. #define EP92_AI_RATE_MASK 0x07
  160. #define EP92_AI_NPCM_MASK 0x02
  161. #define EP92_AI_CH_COUNT_MASK 0x07
  162. #define EP92_AI_CH_ALLOC_MASK 0xff
  163. #define EP92_2CHOICE_MASK 1
  164. #define EP92_GC_CEC_VOLUME_MIN 0
  165. #define EP92_GC_CEC_VOLUME_MAX 100
  166. #define EP92_AI_RATE_MIN 0
  167. #define EP92_AI_RATE_MAX 768000
  168. #define EP92_AI_CH_COUNT_MIN 0
  169. #define EP92_AI_CH_COUNT_MAX 8
  170. #define EP92_AI_CH_ALLOC_MIN 0
  171. #define EP92_AI_CH_ALLOC_MAX 0xff
  172. #define EP92_STATUS_NO_SIGNAL 0
  173. #define EP92_STATUS_AUDIO_ACTIVE 1
  174. /* kcontrol storage indices */
  175. enum {
  176. EP92_KCTL_POWER = 0,
  177. EP92_KCTL_AUDIO_PATH,
  178. EP92_KCTL_CEC_MUTE,
  179. EP92_KCTL_ARC_EN,
  180. EP92_KCTL_RX_SEL,
  181. EP92_KCTL_CEC_VOLUME,
  182. EP92_KCTL_STATE,
  183. EP92_KCTL_AVMUTE,
  184. EP92_KCTL_LAYOUT,
  185. EP92_KCTL_MODE,
  186. EP92_KCTL_RATE,
  187. EP92_KCTL_CH_COUNT,
  188. EP92_KCTL_CH_ALLOC,
  189. EP92_KCTL_MAX
  190. };
  191. #endif /* __EP92_H__ */