ep92.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2018-2020, 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. /* shift/masks for register bits
  65. * GI = General Info
  66. * GC = General Control
  67. * AI = Audio Info
  68. */
  69. #define EP92_GI_ADO_CHF_MASK 0x01
  70. #define EP92_GI_CEC_ECF_MASK 0x02
  71. #define EP92_GI_TX_HOT_PLUG_SHIFT 7
  72. #define EP92_GI_TX_HOT_PLUG_MASK 0x80
  73. #define EP92_GI_VIDEO_LATENCY_SHIFT 0
  74. #define EP92_GI_VIDEO_LATENCY_MASK 0xff
  75. #define EP92_GC_POWER_SHIFT 7
  76. #define EP92_GC_POWER_MASK 0x80
  77. #define EP92_GC_AUDIO_PATH_SHIFT 5
  78. #define EP92_GC_AUDIO_PATH_MASK 0x20
  79. #define EP92_GC_CEC_MUTE_SHIFT 1
  80. #define EP92_GC_CEC_MUTE_MASK 0x02
  81. #define EP92_GC_ARC_EN_SHIFT 0
  82. #define EP92_GC_ARC_EN_MASK 0x01
  83. #define EP92_GC_ARC_DIS_SHIFT 6
  84. #define EP92_GC_ARC_DIS_MASK 0x40
  85. #define EP92_GC_RX_SEL_SHIFT 0
  86. #define EP92_GC_RX_SEL_MASK 0x07
  87. #define EP92_GC_CEC_VOLUME_SHIFT 0
  88. #define EP92_GC_CEC_VOLUME_MASK 0xff
  89. #define EP92_GC_LINK_ON0_SHIFT 0
  90. #define EP92_GC_LINK_ON0_MASK 0x01
  91. #define EP92_GC_LINK_ON1_SHIFT 1
  92. #define EP92_GC_LINK_ON1_MASK 0x02
  93. #define EP92_GC_LINK_ON2_SHIFT 2
  94. #define EP92_GC_LINK_ON2_MASK 0x04
  95. #define EP92_AI_MCLK_ON_SHIFT 6
  96. #define EP92_AI_MCLK_ON_MASK 0x40
  97. #define EP92_AI_AVMUTE_SHIFT 5
  98. #define EP92_AI_AVMUTE_MASK 0x20
  99. #define EP92_AI_LAYOUT_SHIFT 0
  100. #define EP92_AI_LAYOUT_MASK 0x01
  101. #define EP92_AI_HBR_ADO_SHIFT 5
  102. #define EP92_AI_HBR_ADO_MASK 0x20
  103. #define EP92_AI_STD_ADO_SHIFT 3
  104. #define EP92_AI_STD_ADO_MASK 0x08
  105. #define EP92_AI_RATE_MASK 0x07
  106. #define EP92_AI_NPCM_MASK 0x02
  107. #define EP92_AI_PREEMPH_SHIFT 3
  108. #define EP92_AI_PREEMPH_MASK 0x38
  109. #define EP92_AI_CH_COUNT_MASK 0x07
  110. #define EP92_AI_CH_ALLOC_MASK 0xff
  111. #define EP92_AI_DSD_ADO_SHIFT 4
  112. #define EP92_AI_DSD_ADO_MASK 0x10
  113. #define EP92_AI_DSD_RATE_SHIFT 4
  114. #define EP92_AI_DSD_RATE_MASK 0x30
  115. #define EP92_2CHOICE_MASK 1
  116. #define EP92_GC_CEC_VOLUME_MIN 0
  117. #define EP92_GC_CEC_VOLUME_MAX 100
  118. #define EP92_AI_RATE_MIN 0
  119. #define EP92_AI_RATE_MAX 768000
  120. #define EP92_AI_CH_COUNT_MIN 0
  121. #define EP92_AI_CH_COUNT_MAX 8
  122. #define EP92_AI_CH_ALLOC_MIN 0
  123. #define EP92_AI_CH_ALLOC_MAX 0xff
  124. #define EP92_STATUS_NO_SIGNAL 0
  125. #define EP92_STATUS_AUDIO_ACTIVE 1
  126. /* kcontrol storage indices */
  127. enum {
  128. EP92_KCTL_POWER = 0,
  129. EP92_KCTL_AUDIO_PATH,
  130. EP92_KCTL_CEC_MUTE,
  131. EP92_KCTL_ARC_EN,
  132. EP92_KCTL_RX_SEL,
  133. EP92_KCTL_CEC_VOLUME,
  134. EP92_KCTL_STATE,
  135. EP92_KCTL_AVMUTE,
  136. EP92_KCTL_LAYOUT,
  137. EP92_KCTL_MODE,
  138. EP92_KCTL_RATE,
  139. EP92_KCTL_CH_COUNT,
  140. EP92_KCTL_CH_ALLOC,
  141. EP92_KCTL_MAX
  142. };
  143. int ep92_set_ext_mclk(struct snd_soc_codec *codec, uint32_t mclk_freq);
  144. #endif /* __EP92_H__ */