File Index
Files and directories
Sign in
FILE

tegra210_admaif.h

File preview with syntax highlighting.

linux-6.19.14/sound/soc/tegra/tegra210_admaif.h C
  1/* SPDX-License-Identifier: GPL-2.0-only
  2 * SPDX-FileCopyrightText: Copyright (c) 2020-2025 NVIDIA CORPORATION & AFFILIATES.
  3 * All rights reserved.
  4 *
  5 * tegra210_admaif.h - Tegra ADMAIF registers
  6 *
  7 */
  8
  9#ifndef __TEGRA_ADMAIF_H__
 10#define __TEGRA_ADMAIF_H__
 11
 12#define TEGRA_ADMAIF_CHANNEL_REG_STRIDE			0x40
 13/* Tegra210 specific */
 14#define TEGRA210_ADMAIF_LAST_REG			0x75f
 15#define TEGRA210_ADMAIF_CHANNEL_COUNT			10
 16#define TEGRA210_ADMAIF_RX_BASE				0x0
 17#define TEGRA210_ADMAIF_TX_BASE				0x300
 18#define TEGRA210_ADMAIF_GLOBAL_BASE			0x700
 19#define TEGRA210_ADMAIF_MAX_CHANNEL			16
 20/* Tegra186 specific */
 21#define TEGRA186_ADMAIF_LAST_REG			0xd5f
 22#define TEGRA186_ADMAIF_CHANNEL_COUNT			20
 23#define TEGRA186_ADMAIF_RX_BASE				0x0
 24#define TEGRA186_ADMAIF_TX_BASE				0x500
 25#define TEGRA186_ADMAIF_GLOBAL_BASE			0xd00
 26#define TEGRA186_ADMAIF_MAX_CHANNEL			16
 27/* Tegra264 specific */
 28#define TEGRA264_ADMAIF_LAST_REG			0x205f
 29#define TEGRA264_ADMAIF_CHANNEL_COUNT			32
 30#define TEGRA264_ADMAIF_RX_BASE				0x0
 31#define TEGRA264_ADMAIF_TX_BASE				0x1000
 32#define TEGRA264_ADMAIF_GLOBAL_BASE			0x2000
 33#define TEGRA264_ADMAIF_MAX_CHANNEL			32
 34/* Global registers */
 35#define TEGRA_ADMAIF_GLOBAL_ENABLE			0x0
 36#define TEGRA_ADMAIF_GLOBAL_CG_0			0x8
 37#define TEGRA_ADMAIF_GLOBAL_STATUS			0x10
 38#define TEGRA_ADMAIF_GLOBAL_RX_ENABLE_STATUS		0x20
 39#define TEGRA_ADMAIF_GLOBAL_TX_ENABLE_STATUS		0x24
 40/* RX channel registers */
 41#define TEGRA_ADMAIF_RX_ENABLE				0x0
 42#define TEGRA_ADMAIF_RX_SOFT_RESET			0x4
 43#define TEGRA_ADMAIF_RX_STATUS				0xc
 44#define TEGRA_ADMAIF_RX_INT_STATUS			0x10
 45#define TEGRA_ADMAIF_RX_INT_MASK			0x14
 46#define TEGRA_ADMAIF_RX_INT_SET				0x18
 47#define TEGRA_ADMAIF_RX_INT_CLEAR			0x1c
 48#define TEGRA_ADMAIF_CH_ACIF_RX_CTRL			0x20
 49#define TEGRA_ADMAIF_RX_FIFO_CTRL			0x28
 50#define TEGRA_ADMAIF_RX_FIFO_READ			0x2c
 51/* TX channel registers */
 52#define TEGRA_ADMAIF_TX_ENABLE				0x0
 53#define TEGRA_ADMAIF_TX_SOFT_RESET			0x4
 54#define TEGRA_ADMAIF_TX_STATUS				0xc
 55#define TEGRA_ADMAIF_TX_INT_STATUS			0x10
 56#define TEGRA_ADMAIF_TX_INT_MASK			0x14
 57#define TEGRA_ADMAIF_TX_INT_SET				0x18
 58#define TEGRA_ADMAIF_TX_INT_CLEAR			0x1c
 59#define TEGRA_ADMAIF_CH_ACIF_TX_CTRL			0x20
 60#define TEGRA_ADMAIF_TX_FIFO_CTRL			0x28
 61#define TEGRA_ADMAIF_TX_FIFO_WRITE			0x2c
 62/* Bit fields */
 63#define PACK8_EN_SHIFT					31
 64#define PACK8_EN_MASK					BIT(PACK8_EN_SHIFT)
 65#define PACK8_EN					BIT(PACK8_EN_SHIFT)
 66#define PACK16_EN_SHIFT					30
 67#define PACK16_EN_MASK					BIT(PACK16_EN_SHIFT)
 68#define PACK16_EN					BIT(PACK16_EN_SHIFT)
 69#define TX_ENABLE_SHIFT					0
 70#define TX_ENABLE_MASK					BIT(TX_ENABLE_SHIFT)
 71#define TX_ENABLE					BIT(TX_ENABLE_SHIFT)
 72#define RX_ENABLE_SHIFT					0
 73#define RX_ENABLE_MASK					BIT(RX_ENABLE_SHIFT)
 74#define RX_ENABLE					BIT(RX_ENABLE_SHIFT)
 75#define SW_RESET_MASK					1
 76#define SW_RESET					1
 77/* Default values - Tegra210 */
 78#define TEGRA210_ADMAIF_CIF_REG_DEFAULT			0x00007700
 79#define TEGRA210_ADMAIF_RX1_FIFO_CTRL_REG_DEFAULT	0x00000300
 80#define TEGRA210_ADMAIF_RX2_FIFO_CTRL_REG_DEFAULT	0x00000304
 81#define TEGRA210_ADMAIF_RX3_FIFO_CTRL_REG_DEFAULT	0x00000208
 82#define TEGRA210_ADMAIF_RX4_FIFO_CTRL_REG_DEFAULT	0x0000020b
 83#define TEGRA210_ADMAIF_RX5_FIFO_CTRL_REG_DEFAULT	0x0000020e
 84#define TEGRA210_ADMAIF_RX6_FIFO_CTRL_REG_DEFAULT	0x00000211
 85#define TEGRA210_ADMAIF_RX7_FIFO_CTRL_REG_DEFAULT	0x00000214
 86#define TEGRA210_ADMAIF_RX8_FIFO_CTRL_REG_DEFAULT	0x00000217
 87#define TEGRA210_ADMAIF_RX9_FIFO_CTRL_REG_DEFAULT	0x0000021a
 88#define TEGRA210_ADMAIF_RX10_FIFO_CTRL_REG_DEFAULT	0x0000021d
 89#define TEGRA210_ADMAIF_TX1_FIFO_CTRL_REG_DEFAULT	0x02000300
 90#define TEGRA210_ADMAIF_TX2_FIFO_CTRL_REG_DEFAULT	0x02000304
 91#define TEGRA210_ADMAIF_TX3_FIFO_CTRL_REG_DEFAULT	0x01800208
 92#define TEGRA210_ADMAIF_TX4_FIFO_CTRL_REG_DEFAULT	0x0180020b
 93#define TEGRA210_ADMAIF_TX5_FIFO_CTRL_REG_DEFAULT	0x0180020e
 94#define TEGRA210_ADMAIF_TX6_FIFO_CTRL_REG_DEFAULT	0x01800211
 95#define TEGRA210_ADMAIF_TX7_FIFO_CTRL_REG_DEFAULT	0x01800214
 96#define TEGRA210_ADMAIF_TX8_FIFO_CTRL_REG_DEFAULT	0x01800217
 97#define TEGRA210_ADMAIF_TX9_FIFO_CTRL_REG_DEFAULT	0x0180021a
 98#define TEGRA210_ADMAIF_TX10_FIFO_CTRL_REG_DEFAULT	0x0180021d
 99/* Default values - Tegra186 */
100#define TEGRA186_ADMAIF_CIF_REG_DEFAULT			0x00007700
101#define TEGRA186_ADMAIF_RX1_FIFO_CTRL_REG_DEFAULT	0x00000300
102#define TEGRA186_ADMAIF_RX2_FIFO_CTRL_REG_DEFAULT	0x00000304
103#define TEGRA186_ADMAIF_RX3_FIFO_CTRL_REG_DEFAULT	0x00000308
104#define TEGRA186_ADMAIF_RX4_FIFO_CTRL_REG_DEFAULT	0x0000030c
105#define TEGRA186_ADMAIF_RX5_FIFO_CTRL_REG_DEFAULT	0x00000210
106#define TEGRA186_ADMAIF_RX6_FIFO_CTRL_REG_DEFAULT	0x00000213
107#define TEGRA186_ADMAIF_RX7_FIFO_CTRL_REG_DEFAULT	0x00000216
108#define TEGRA186_ADMAIF_RX8_FIFO_CTRL_REG_DEFAULT	0x00000219
109#define TEGRA186_ADMAIF_RX9_FIFO_CTRL_REG_DEFAULT	0x0000021c
110#define TEGRA186_ADMAIF_RX10_FIFO_CTRL_REG_DEFAULT	0x0000021f
111#define TEGRA186_ADMAIF_RX11_FIFO_CTRL_REG_DEFAULT	0x00000222
112#define TEGRA186_ADMAIF_RX12_FIFO_CTRL_REG_DEFAULT	0x00000225
113#define TEGRA186_ADMAIF_RX13_FIFO_CTRL_REG_DEFAULT	0x00000228
114#define TEGRA186_ADMAIF_RX14_FIFO_CTRL_REG_DEFAULT	0x0000022b
115#define TEGRA186_ADMAIF_RX15_FIFO_CTRL_REG_DEFAULT	0x0000022e
116#define TEGRA186_ADMAIF_RX16_FIFO_CTRL_REG_DEFAULT	0x00000231
117#define TEGRA186_ADMAIF_RX17_FIFO_CTRL_REG_DEFAULT	0x00000234
118#define TEGRA186_ADMAIF_RX18_FIFO_CTRL_REG_DEFAULT	0x00000237
119#define TEGRA186_ADMAIF_RX19_FIFO_CTRL_REG_DEFAULT	0x0000023a
120#define TEGRA186_ADMAIF_RX20_FIFO_CTRL_REG_DEFAULT	0x0000023d
121#define TEGRA186_ADMAIF_TX1_FIFO_CTRL_REG_DEFAULT	0x02000300
122#define TEGRA186_ADMAIF_TX2_FIFO_CTRL_REG_DEFAULT	0x02000304
123#define TEGRA186_ADMAIF_TX3_FIFO_CTRL_REG_DEFAULT	0x02000308
124#define TEGRA186_ADMAIF_TX4_FIFO_CTRL_REG_DEFAULT	0x0200030c
125#define TEGRA186_ADMAIF_TX5_FIFO_CTRL_REG_DEFAULT	0x01800210
126#define TEGRA186_ADMAIF_TX6_FIFO_CTRL_REG_DEFAULT	0x01800213
127#define TEGRA186_ADMAIF_TX7_FIFO_CTRL_REG_DEFAULT	0x01800216
128#define TEGRA186_ADMAIF_TX8_FIFO_CTRL_REG_DEFAULT	0x01800219
129#define TEGRA186_ADMAIF_TX9_FIFO_CTRL_REG_DEFAULT	0x0180021c
130#define TEGRA186_ADMAIF_TX10_FIFO_CTRL_REG_DEFAULT	0x0180021f
131#define TEGRA186_ADMAIF_TX11_FIFO_CTRL_REG_DEFAULT	0x01800222
132#define TEGRA186_ADMAIF_TX12_FIFO_CTRL_REG_DEFAULT	0x01800225
133#define TEGRA186_ADMAIF_TX13_FIFO_CTRL_REG_DEFAULT	0x01800228
134#define TEGRA186_ADMAIF_TX14_FIFO_CTRL_REG_DEFAULT	0x0180022b
135#define TEGRA186_ADMAIF_TX15_FIFO_CTRL_REG_DEFAULT	0x0180022e
136#define TEGRA186_ADMAIF_TX16_FIFO_CTRL_REG_DEFAULT	0x01800231
137#define TEGRA186_ADMAIF_TX17_FIFO_CTRL_REG_DEFAULT	0x01800234
138#define TEGRA186_ADMAIF_TX18_FIFO_CTRL_REG_DEFAULT	0x01800237
139#define TEGRA186_ADMAIF_TX19_FIFO_CTRL_REG_DEFAULT	0x0180023a
140#define TEGRA186_ADMAIF_TX20_FIFO_CTRL_REG_DEFAULT	0x0180023d
141/* Default values - Tegra264 */
142#define TEGRA264_ADMAIF_CIF_REG_DEFAULT			0x00003f00
143#define TEGRA264_ADMAIF_RX1_FIFO_CTRL_REG_DEFAULT	0x00000200
144#define TEGRA264_ADMAIF_RX2_FIFO_CTRL_REG_DEFAULT	0x00000203
145#define TEGRA264_ADMAIF_RX3_FIFO_CTRL_REG_DEFAULT	0x00000206
146#define TEGRA264_ADMAIF_RX4_FIFO_CTRL_REG_DEFAULT	0x00000209
147#define TEGRA264_ADMAIF_RX5_FIFO_CTRL_REG_DEFAULT	0x0000020c
148#define TEGRA264_ADMAIF_RX6_FIFO_CTRL_REG_DEFAULT	0x0000020f
149#define TEGRA264_ADMAIF_RX7_FIFO_CTRL_REG_DEFAULT	0x00000212
150#define TEGRA264_ADMAIF_RX8_FIFO_CTRL_REG_DEFAULT	0x00000215
151#define TEGRA264_ADMAIF_RX9_FIFO_CTRL_REG_DEFAULT	0x00000218
152#define TEGRA264_ADMAIF_RX10_FIFO_CTRL_REG_DEFAULT	0x0000021b
153#define TEGRA264_ADMAIF_RX11_FIFO_CTRL_REG_DEFAULT	0x0000021e
154#define TEGRA264_ADMAIF_RX12_FIFO_CTRL_REG_DEFAULT	0x00000221
155#define TEGRA264_ADMAIF_RX13_FIFO_CTRL_REG_DEFAULT	0x00000224
156#define TEGRA264_ADMAIF_RX14_FIFO_CTRL_REG_DEFAULT	0x00000227
157#define TEGRA264_ADMAIF_RX15_FIFO_CTRL_REG_DEFAULT	0x0000022a
158#define TEGRA264_ADMAIF_RX16_FIFO_CTRL_REG_DEFAULT	0x0000022d
159#define TEGRA264_ADMAIF_RX17_FIFO_CTRL_REG_DEFAULT	0x00000230
160#define TEGRA264_ADMAIF_RX18_FIFO_CTRL_REG_DEFAULT	0x00000233
161#define TEGRA264_ADMAIF_RX19_FIFO_CTRL_REG_DEFAULT	0x00000236
162#define TEGRA264_ADMAIF_RX20_FIFO_CTRL_REG_DEFAULT	0x00000239
163#define TEGRA264_ADMAIF_RX21_FIFO_CTRL_REG_DEFAULT	0x0000023c
164#define TEGRA264_ADMAIF_RX22_FIFO_CTRL_REG_DEFAULT	0x0000023f
165#define TEGRA264_ADMAIF_RX23_FIFO_CTRL_REG_DEFAULT	0x00000242
166#define TEGRA264_ADMAIF_RX24_FIFO_CTRL_REG_DEFAULT	0x00000245
167#define TEGRA264_ADMAIF_RX25_FIFO_CTRL_REG_DEFAULT	0x00000248
168#define TEGRA264_ADMAIF_RX26_FIFO_CTRL_REG_DEFAULT	0x0000024b
169#define TEGRA264_ADMAIF_RX27_FIFO_CTRL_REG_DEFAULT	0x0000024e
170#define TEGRA264_ADMAIF_RX28_FIFO_CTRL_REG_DEFAULT	0x00000251
171#define TEGRA264_ADMAIF_RX29_FIFO_CTRL_REG_DEFAULT	0x00000254
172#define TEGRA264_ADMAIF_RX30_FIFO_CTRL_REG_DEFAULT	0x00000257
173#define TEGRA264_ADMAIF_RX31_FIFO_CTRL_REG_DEFAULT	0x0000025a
174#define TEGRA264_ADMAIF_RX32_FIFO_CTRL_REG_DEFAULT	0x0000025d
175#define TEGRA264_ADMAIF_TX1_FIFO_CTRL_REG_DEFAULT	0x01800200
176#define TEGRA264_ADMAIF_TX2_FIFO_CTRL_REG_DEFAULT	0x01800203
177#define TEGRA264_ADMAIF_TX3_FIFO_CTRL_REG_DEFAULT	0x01800206
178#define TEGRA264_ADMAIF_TX4_FIFO_CTRL_REG_DEFAULT	0x01800209
179#define TEGRA264_ADMAIF_TX5_FIFO_CTRL_REG_DEFAULT	0x0180020c
180#define TEGRA264_ADMAIF_TX6_FIFO_CTRL_REG_DEFAULT	0x0180020f
181#define TEGRA264_ADMAIF_TX7_FIFO_CTRL_REG_DEFAULT	0x01800212
182#define TEGRA264_ADMAIF_TX8_FIFO_CTRL_REG_DEFAULT	0x01800215
183#define TEGRA264_ADMAIF_TX9_FIFO_CTRL_REG_DEFAULT	0x01800218
184#define TEGRA264_ADMAIF_TX10_FIFO_CTRL_REG_DEFAULT	0x0180021b
185#define TEGRA264_ADMAIF_TX11_FIFO_CTRL_REG_DEFAULT	0x0180021e
186#define TEGRA264_ADMAIF_TX12_FIFO_CTRL_REG_DEFAULT	0x01800221
187#define TEGRA264_ADMAIF_TX13_FIFO_CTRL_REG_DEFAULT	0x01800224
188#define TEGRA264_ADMAIF_TX14_FIFO_CTRL_REG_DEFAULT	0x01800227
189#define TEGRA264_ADMAIF_TX15_FIFO_CTRL_REG_DEFAULT	0x0180022a
190#define TEGRA264_ADMAIF_TX16_FIFO_CTRL_REG_DEFAULT	0x0180022d
191#define TEGRA264_ADMAIF_TX17_FIFO_CTRL_REG_DEFAULT	0x01800230
192#define TEGRA264_ADMAIF_TX18_FIFO_CTRL_REG_DEFAULT	0x01800233
193#define TEGRA264_ADMAIF_TX19_FIFO_CTRL_REG_DEFAULT	0x01800236
194#define TEGRA264_ADMAIF_TX20_FIFO_CTRL_REG_DEFAULT	0x01800239
195#define TEGRA264_ADMAIF_TX21_FIFO_CTRL_REG_DEFAULT	0x0180023c
196#define TEGRA264_ADMAIF_TX22_FIFO_CTRL_REG_DEFAULT	0x0180023f
197#define TEGRA264_ADMAIF_TX23_FIFO_CTRL_REG_DEFAULT	0x01800242
198#define TEGRA264_ADMAIF_TX24_FIFO_CTRL_REG_DEFAULT	0x01800245
199#define TEGRA264_ADMAIF_TX25_FIFO_CTRL_REG_DEFAULT	0x01800248
200#define TEGRA264_ADMAIF_TX26_FIFO_CTRL_REG_DEFAULT	0x0180024b
201#define TEGRA264_ADMAIF_TX27_FIFO_CTRL_REG_DEFAULT	0x0180024e
202#define TEGRA264_ADMAIF_TX28_FIFO_CTRL_REG_DEFAULT	0x01800251
203#define TEGRA264_ADMAIF_TX29_FIFO_CTRL_REG_DEFAULT	0x01800254
204#define TEGRA264_ADMAIF_TX30_FIFO_CTRL_REG_DEFAULT	0x01800257
205#define TEGRA264_ADMAIF_TX31_FIFO_CTRL_REG_DEFAULT	0x0180025a
206#define TEGRA264_ADMAIF_TX32_FIFO_CTRL_REG_DEFAULT	0x0180025d
207
208enum {
209	DATA_8BIT,
210	DATA_16BIT,
211	DATA_32BIT
212};
213
214enum {
215	ADMAIF_RX_PATH,
216	ADMAIF_TX_PATH,
217	ADMAIF_PATHS,
218};
219
220struct tegra_admaif_soc_data {
221	const struct snd_soc_component_driver *cmpnt;
222	const struct regmap_config *regmap_conf;
223	struct snd_soc_dai_driver *dais;
224	unsigned int global_base;
225	unsigned int tx_base;
226	unsigned int rx_base;
227	unsigned int num_ch;
228	unsigned int max_stream_ch;
229};
230
231struct tegra_admaif {
232	struct snd_dmaengine_dai_dma_data *capture_dma_data;
233	struct snd_dmaengine_dai_dma_data *playback_dma_data;
234	const struct tegra_admaif_soc_data *soc_data;
235	unsigned int *mono_to_stereo[ADMAIF_PATHS];
236	unsigned int *stereo_to_mono[ADMAIF_PATHS];
237	struct regmap *regmap;
238	struct tegra_adma_isomgr *adma_isomgr;
239};
240
241#endif
~/ Read-only file preview.