860-v6.6-01-ASoC-mediatek-mt7986-add-common-header.patch 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. From d35469096915f2551ed1d26da1ab12ff500fc963 Mon Sep 17 00:00:00 2001
  2. From: Maso Huang <[email protected]>
  3. Date: Thu, 17 Aug 2023 18:13:33 +0800
  4. Subject: [PATCH 1/9] ASoC: mediatek: mt7986: add common header
  5. Add header files for register definition and structure.
  6. Signed-off-by: Maso Huang <[email protected]>
  7. Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
  8. Link: https://lore.kernel.org/r/[email protected]
  9. Signed-off-by: Mark Brown <[email protected]>
  10. ---
  11. sound/soc/mediatek/mt7986/mt7986-afe-common.h | 49 +++++
  12. sound/soc/mediatek/mt7986/mt7986-reg.h | 196 ++++++++++++++++++
  13. 2 files changed, 245 insertions(+)
  14. create mode 100644 sound/soc/mediatek/mt7986/mt7986-afe-common.h
  15. create mode 100644 sound/soc/mediatek/mt7986/mt7986-reg.h
  16. --- /dev/null
  17. +++ b/sound/soc/mediatek/mt7986/mt7986-afe-common.h
  18. @@ -0,0 +1,49 @@
  19. +/* SPDX-License-Identifier: GPL-2.0 */
  20. +/*
  21. + * mt7986-afe-common.h -- MediaTek 7986 audio driver definitions
  22. + *
  23. + * Copyright (c) 2023 MediaTek Inc.
  24. + * Authors: Vic Wu <[email protected]>
  25. + * Maso Huang <[email protected]>
  26. + */
  27. +
  28. +#ifndef _MT_7986_AFE_COMMON_H_
  29. +#define _MT_7986_AFE_COMMON_H_
  30. +
  31. +#include <sound/soc.h>
  32. +#include <linux/clk.h>
  33. +#include <linux/list.h>
  34. +#include <linux/regmap.h>
  35. +#include "../common/mtk-base-afe.h"
  36. +
  37. +enum {
  38. + MT7986_MEMIF_DL1,
  39. + MT7986_MEMIF_VUL12,
  40. + MT7986_MEMIF_NUM,
  41. + MT7986_DAI_ETDM = MT7986_MEMIF_NUM,
  42. + MT7986_DAI_NUM,
  43. +};
  44. +
  45. +enum {
  46. + MT7986_IRQ_0,
  47. + MT7986_IRQ_1,
  48. + MT7986_IRQ_2,
  49. + MT7986_IRQ_NUM,
  50. +};
  51. +
  52. +struct mt7986_afe_private {
  53. + struct clk_bulk_data *clks;
  54. + int num_clks;
  55. +
  56. + int pm_runtime_bypass_reg_ctl;
  57. +
  58. + /* dai */
  59. + void *dai_priv[MT7986_DAI_NUM];
  60. +};
  61. +
  62. +unsigned int mt7986_afe_rate_transform(struct device *dev,
  63. + unsigned int rate);
  64. +
  65. +/* dai register */
  66. +int mt7986_dai_etdm_register(struct mtk_base_afe *afe);
  67. +#endif
  68. --- /dev/null
  69. +++ b/sound/soc/mediatek/mt7986/mt7986-reg.h
  70. @@ -0,0 +1,196 @@
  71. +/* SPDX-License-Identifier: GPL-2.0 */
  72. +/*
  73. + * mt7986-reg.h -- MediaTek 7986 audio driver reg definition
  74. + *
  75. + * Copyright (c) 2023 MediaTek Inc.
  76. + * Authors: Vic Wu <[email protected]>
  77. + * Maso Huang <[email protected]>
  78. + */
  79. +
  80. +#ifndef _MT7986_REG_H_
  81. +#define _MT7986_REG_H_
  82. +
  83. +#define AUDIO_TOP_CON2 0x0008
  84. +#define AUDIO_TOP_CON4 0x0010
  85. +#define AUDIO_ENGEN_CON0 0x0014
  86. +#define AFE_IRQ_MCU_EN 0x0100
  87. +#define AFE_IRQ_MCU_STATUS 0x0120
  88. +#define AFE_IRQ_MCU_CLR 0x0128
  89. +#define AFE_IRQ0_MCU_CFG0 0x0140
  90. +#define AFE_IRQ0_MCU_CFG1 0x0144
  91. +#define AFE_IRQ1_MCU_CFG0 0x0148
  92. +#define AFE_IRQ1_MCU_CFG1 0x014c
  93. +#define AFE_IRQ2_MCU_CFG0 0x0150
  94. +#define AFE_IRQ2_MCU_CFG1 0x0154
  95. +#define ETDM_IN5_CON0 0x13f0
  96. +#define ETDM_IN5_CON1 0x13f4
  97. +#define ETDM_IN5_CON2 0x13f8
  98. +#define ETDM_IN5_CON3 0x13fc
  99. +#define ETDM_IN5_CON4 0x1400
  100. +#define ETDM_OUT5_CON0 0x1570
  101. +#define ETDM_OUT5_CON4 0x1580
  102. +#define ETDM_OUT5_CON5 0x1584
  103. +#define ETDM_4_7_COWORK_CON0 0x15e0
  104. +#define ETDM_4_7_COWORK_CON1 0x15e4
  105. +#define AFE_CONN018_1 0x1b44
  106. +#define AFE_CONN018_4 0x1b50
  107. +#define AFE_CONN019_1 0x1b64
  108. +#define AFE_CONN019_4 0x1b70
  109. +#define AFE_CONN124_1 0x2884
  110. +#define AFE_CONN124_4 0x2890
  111. +#define AFE_CONN125_1 0x28a4
  112. +#define AFE_CONN125_4 0x28b0
  113. +#define AFE_CONN_RS_0 0x3920
  114. +#define AFE_CONN_RS_3 0x392c
  115. +#define AFE_CONN_16BIT_0 0x3960
  116. +#define AFE_CONN_16BIT_3 0x396c
  117. +#define AFE_CONN_24BIT_0 0x3980
  118. +#define AFE_CONN_24BIT_3 0x398c
  119. +#define AFE_MEMIF_CON0 0x3d98
  120. +#define AFE_MEMIF_RD_MON 0x3da0
  121. +#define AFE_MEMIF_WR_MON 0x3da4
  122. +#define AFE_DL0_BASE_MSB 0x3e40
  123. +#define AFE_DL0_BASE 0x3e44
  124. +#define AFE_DL0_CUR_MSB 0x3e48
  125. +#define AFE_DL0_CUR 0x3e4c
  126. +#define AFE_DL0_END_MSB 0x3e50
  127. +#define AFE_DL0_END 0x3e54
  128. +#define AFE_DL0_RCH_MON 0x3e58
  129. +#define AFE_DL0_LCH_MON 0x3e5c
  130. +#define AFE_DL0_CON0 0x3e60
  131. +#define AFE_VUL0_BASE_MSB 0x4220
  132. +#define AFE_VUL0_BASE 0x4224
  133. +#define AFE_VUL0_CUR_MSB 0x4228
  134. +#define AFE_VUL0_CUR 0x422c
  135. +#define AFE_VUL0_END_MSB 0x4230
  136. +#define AFE_VUL0_END 0x4234
  137. +#define AFE_VUL0_CON0 0x4238
  138. +
  139. +#define AFE_MAX_REGISTER AFE_VUL0_CON0
  140. +#define AFE_IRQ_STATUS_BITS 0x7
  141. +#define AFE_IRQ_CNT_SHIFT 0
  142. +#define AFE_IRQ_CNT_MASK 0xffffff
  143. +
  144. +/* AUDIO_TOP_CON2 */
  145. +#define CLK_OUT5_PDN BIT(14)
  146. +#define CLK_OUT5_PDN_MASK BIT(14)
  147. +#define CLK_IN5_PDN BIT(7)
  148. +#define CLK_IN5_PDN_MASK BIT(7)
  149. +
  150. +/* AUDIO_TOP_CON4 */
  151. +#define PDN_APLL_TUNER2 BIT(12)
  152. +#define PDN_APLL_TUNER2_MASK BIT(12)
  153. +
  154. +/* AUDIO_ENGEN_CON0 */
  155. +#define AUD_APLL2_EN BIT(3)
  156. +#define AUD_APLL2_EN_MASK BIT(3)
  157. +#define AUD_26M_EN BIT(0)
  158. +#define AUD_26M_EN_MASK BIT(0)
  159. +
  160. +/* AFE_DL0_CON0 */
  161. +#define DL0_ON_SFT 28
  162. +#define DL0_ON_MASK 0x1
  163. +#define DL0_ON_MASK_SFT BIT(28)
  164. +#define DL0_MINLEN_SFT 20
  165. +#define DL0_MINLEN_MASK 0xf
  166. +#define DL0_MINLEN_MASK_SFT (0xf << 20)
  167. +#define DL0_MODE_SFT 8
  168. +#define DL0_MODE_MASK 0x1f
  169. +#define DL0_MODE_MASK_SFT (0x1f << 8)
  170. +#define DL0_PBUF_SIZE_SFT 5
  171. +#define DL0_PBUF_SIZE_MASK 0x3
  172. +#define DL0_PBUF_SIZE_MASK_SFT (0x3 << 5)
  173. +#define DL0_MONO_SFT 4
  174. +#define DL0_MONO_MASK 0x1
  175. +#define DL0_MONO_MASK_SFT BIT(4)
  176. +#define DL0_HALIGN_SFT 2
  177. +#define DL0_HALIGN_MASK 0x1
  178. +#define DL0_HALIGN_MASK_SFT BIT(2)
  179. +#define DL0_HD_MODE_SFT 0
  180. +#define DL0_HD_MODE_MASK 0x3
  181. +#define DL0_HD_MODE_MASK_SFT (0x3 << 0)
  182. +
  183. +/* AFE_VUL0_CON0 */
  184. +#define VUL0_ON_SFT 28
  185. +#define VUL0_ON_MASK 0x1
  186. +#define VUL0_ON_MASK_SFT BIT(28)
  187. +#define VUL0_MODE_SFT 8
  188. +#define VUL0_MODE_MASK 0x1f
  189. +#define VUL0_MODE_MASK_SFT (0x1f << 8)
  190. +#define VUL0_MONO_SFT 4
  191. +#define VUL0_MONO_MASK 0x1
  192. +#define VUL0_MONO_MASK_SFT BIT(4)
  193. +#define VUL0_HALIGN_SFT 2
  194. +#define VUL0_HALIGN_MASK 0x1
  195. +#define VUL0_HALIGN_MASK_SFT BIT(2)
  196. +#define VUL0_HD_MODE_SFT 0
  197. +#define VUL0_HD_MODE_MASK 0x3
  198. +#define VUL0_HD_MODE_MASK_SFT (0x3 << 0)
  199. +
  200. +/* AFE_IRQ_MCU_CON */
  201. +#define IRQ_MCU_MODE_SFT 4
  202. +#define IRQ_MCU_MODE_MASK 0x1f
  203. +#define IRQ_MCU_MODE_MASK_SFT (0x1f << 4)
  204. +#define IRQ_MCU_ON_SFT 0
  205. +#define IRQ_MCU_ON_MASK 0x1
  206. +#define IRQ_MCU_ON_MASK_SFT BIT(0)
  207. +#define IRQ0_MCU_CLR_SFT 0
  208. +#define IRQ0_MCU_CLR_MASK 0x1
  209. +#define IRQ0_MCU_CLR_MASK_SFT BIT(0)
  210. +#define IRQ1_MCU_CLR_SFT 1
  211. +#define IRQ1_MCU_CLR_MASK 0x1
  212. +#define IRQ1_MCU_CLR_MASK_SFT BIT(1)
  213. +#define IRQ2_MCU_CLR_SFT 2
  214. +#define IRQ2_MCU_CLR_MASK 0x1
  215. +#define IRQ2_MCU_CLR_MASK_SFT BIT(2)
  216. +
  217. +/* ETDM_IN5_CON2 */
  218. +#define IN_CLK_SRC(x) ((x) << 10)
  219. +#define IN_CLK_SRC_SFT 10
  220. +#define IN_CLK_SRC_MASK GENMASK(12, 10)
  221. +
  222. +/* ETDM_IN5_CON3 */
  223. +#define IN_SEL_FS(x) ((x) << 26)
  224. +#define IN_SEL_FS_SFT 26
  225. +#define IN_SEL_FS_MASK GENMASK(30, 26)
  226. +
  227. +/* ETDM_IN5_CON4 */
  228. +#define IN_RELATCH(x) ((x) << 20)
  229. +#define IN_RELATCH_SFT 20
  230. +#define IN_RELATCH_MASK GENMASK(24, 20)
  231. +#define IN_CLK_INV BIT(18)
  232. +#define IN_CLK_INV_MASK BIT(18)
  233. +
  234. +/* ETDM_IN5_CON0 & ETDM_OUT5_CON0 */
  235. +#define RELATCH_SRC_MASK GENMASK(30, 28)
  236. +#define ETDM_CH_NUM_MASK GENMASK(27, 23)
  237. +#define ETDM_WRD_LEN_MASK GENMASK(20, 16)
  238. +#define ETDM_BIT_LEN_MASK GENMASK(15, 11)
  239. +#define ETDM_FMT_MASK GENMASK(8, 6)
  240. +#define ETDM_SYNC BIT(1)
  241. +#define ETDM_SYNC_MASK BIT(1)
  242. +#define ETDM_EN BIT(0)
  243. +#define ETDM_EN_MASK BIT(0)
  244. +
  245. +/* ETDM_OUT5_CON4 */
  246. +#define OUT_RELATCH(x) ((x) << 24)
  247. +#define OUT_RELATCH_SFT 24
  248. +#define OUT_RELATCH_MASK GENMASK(28, 24)
  249. +#define OUT_CLK_SRC(x) ((x) << 6)
  250. +#define OUT_CLK_SRC_SFT 6
  251. +#define OUT_CLK_SRC_MASK GENMASK(8, 6)
  252. +#define OUT_SEL_FS(x) (x)
  253. +#define OUT_SEL_FS_SFT 0
  254. +#define OUT_SEL_FS_MASK GENMASK(4, 0)
  255. +
  256. +/* ETDM_OUT5_CON5 */
  257. +#define ETDM_CLK_DIV BIT(12)
  258. +#define ETDM_CLK_DIV_MASK BIT(12)
  259. +#define OUT_CLK_INV BIT(9)
  260. +#define OUT_CLK_INV_MASK BIT(9)
  261. +
  262. +/* ETDM_4_7_COWORK_CON0 */
  263. +#define OUT_SEL(x) ((x) << 12)
  264. +#define OUT_SEL_SFT 12
  265. +#define OUT_SEL_MASK GENMASK(15, 12)
  266. +#endif