~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/sound/soc/tegra/tegra210_admaif.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-only */
  2 /*
  3  * tegra210_admaif.h - Tegra ADMAIF registers
  4  *
  5  * Copyright (c) 2020 NVIDIA CORPORATION.  All rights reserved.
  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 /* Tegra186 specific */
 20 #define TEGRA186_ADMAIF_LAST_REG                        0xd5f
 21 #define TEGRA186_ADMAIF_CHANNEL_COUNT                   20
 22 #define TEGRA186_ADMAIF_RX_BASE                         0x0
 23 #define TEGRA186_ADMAIF_TX_BASE                         0x500
 24 #define TEGRA186_ADMAIF_GLOBAL_BASE                     0xd00
 25 /* Global registers */
 26 #define TEGRA_ADMAIF_GLOBAL_ENABLE                      0x0
 27 #define TEGRA_ADMAIF_GLOBAL_CG_0                        0x8
 28 #define TEGRA_ADMAIF_GLOBAL_STATUS                      0x10
 29 #define TEGRA_ADMAIF_GLOBAL_RX_ENABLE_STATUS            0x20
 30 #define TEGRA_ADMAIF_GLOBAL_TX_ENABLE_STATUS            0x24
 31 /* RX channel registers */
 32 #define TEGRA_ADMAIF_RX_ENABLE                          0x0
 33 #define TEGRA_ADMAIF_RX_SOFT_RESET                      0x4
 34 #define TEGRA_ADMAIF_RX_STATUS                          0xc
 35 #define TEGRA_ADMAIF_RX_INT_STATUS                      0x10
 36 #define TEGRA_ADMAIF_RX_INT_MASK                        0x14
 37 #define TEGRA_ADMAIF_RX_INT_SET                         0x18
 38 #define TEGRA_ADMAIF_RX_INT_CLEAR                       0x1c
 39 #define TEGRA_ADMAIF_CH_ACIF_RX_CTRL                    0x20
 40 #define TEGRA_ADMAIF_RX_FIFO_CTRL                       0x28
 41 #define TEGRA_ADMAIF_RX_FIFO_READ                       0x2c
 42 /* TX channel registers */
 43 #define TEGRA_ADMAIF_TX_ENABLE                          0x0
 44 #define TEGRA_ADMAIF_TX_SOFT_RESET                      0x4
 45 #define TEGRA_ADMAIF_TX_STATUS                          0xc
 46 #define TEGRA_ADMAIF_TX_INT_STATUS                      0x10
 47 #define TEGRA_ADMAIF_TX_INT_MASK                        0x14
 48 #define TEGRA_ADMAIF_TX_INT_SET                         0x18
 49 #define TEGRA_ADMAIF_TX_INT_CLEAR                       0x1c
 50 #define TEGRA_ADMAIF_CH_ACIF_TX_CTRL                    0x20
 51 #define TEGRA_ADMAIF_TX_FIFO_CTRL                       0x28
 52 #define TEGRA_ADMAIF_TX_FIFO_WRITE                      0x2c
 53 /* Bit fields */
 54 #define PACK8_EN_SHIFT                                  31
 55 #define PACK8_EN_MASK                                   BIT(PACK8_EN_SHIFT)
 56 #define PACK8_EN                                        BIT(PACK8_EN_SHIFT)
 57 #define PACK16_EN_SHIFT                                 30
 58 #define PACK16_EN_MASK                                  BIT(PACK16_EN_SHIFT)
 59 #define PACK16_EN                                       BIT(PACK16_EN_SHIFT)
 60 #define TX_ENABLE_SHIFT                                 0
 61 #define TX_ENABLE_MASK                                  BIT(TX_ENABLE_SHIFT)
 62 #define TX_ENABLE                                       BIT(TX_ENABLE_SHIFT)
 63 #define RX_ENABLE_SHIFT                                 0
 64 #define RX_ENABLE_MASK                                  BIT(RX_ENABLE_SHIFT)
 65 #define RX_ENABLE                                       BIT(RX_ENABLE_SHIFT)
 66 #define SW_RESET_MASK                                   1
 67 #define SW_RESET                                        1
 68 /* Default values - Tegra210 */
 69 #define TEGRA210_ADMAIF_RX1_FIFO_CTRL_REG_DEFAULT       0x00000300
 70 #define TEGRA210_ADMAIF_RX2_FIFO_CTRL_REG_DEFAULT       0x00000304
 71 #define TEGRA210_ADMAIF_RX3_FIFO_CTRL_REG_DEFAULT       0x00000208
 72 #define TEGRA210_ADMAIF_RX4_FIFO_CTRL_REG_DEFAULT       0x0000020b
 73 #define TEGRA210_ADMAIF_RX5_FIFO_CTRL_REG_DEFAULT       0x0000020e
 74 #define TEGRA210_ADMAIF_RX6_FIFO_CTRL_REG_DEFAULT       0x00000211
 75 #define TEGRA210_ADMAIF_RX7_FIFO_CTRL_REG_DEFAULT       0x00000214
 76 #define TEGRA210_ADMAIF_RX8_FIFO_CTRL_REG_DEFAULT       0x00000217
 77 #define TEGRA210_ADMAIF_RX9_FIFO_CTRL_REG_DEFAULT       0x0000021a
 78 #define TEGRA210_ADMAIF_RX10_FIFO_CTRL_REG_DEFAULT      0x0000021d
 79 #define TEGRA210_ADMAIF_TX1_FIFO_CTRL_REG_DEFAULT       0x02000300
 80 #define TEGRA210_ADMAIF_TX2_FIFO_CTRL_REG_DEFAULT       0x02000304
 81 #define TEGRA210_ADMAIF_TX3_FIFO_CTRL_REG_DEFAULT       0x01800208
 82 #define TEGRA210_ADMAIF_TX4_FIFO_CTRL_REG_DEFAULT       0x0180020b
 83 #define TEGRA210_ADMAIF_TX5_FIFO_CTRL_REG_DEFAULT       0x0180020e
 84 #define TEGRA210_ADMAIF_TX6_FIFO_CTRL_REG_DEFAULT       0x01800211
 85 #define TEGRA210_ADMAIF_TX7_FIFO_CTRL_REG_DEFAULT       0x01800214
 86 #define TEGRA210_ADMAIF_TX8_FIFO_CTRL_REG_DEFAULT       0x01800217
 87 #define TEGRA210_ADMAIF_TX9_FIFO_CTRL_REG_DEFAULT       0x0180021a
 88 #define TEGRA210_ADMAIF_TX10_FIFO_CTRL_REG_DEFAULT      0x0180021d
 89 /* Default values - Tegra186 */
 90 #define TEGRA186_ADMAIF_RX1_FIFO_CTRL_REG_DEFAULT       0x00000300
 91 #define TEGRA186_ADMAIF_RX2_FIFO_CTRL_REG_DEFAULT       0x00000304
 92 #define TEGRA186_ADMAIF_RX3_FIFO_CTRL_REG_DEFAULT       0x00000308
 93 #define TEGRA186_ADMAIF_RX4_FIFO_CTRL_REG_DEFAULT       0x0000030c
 94 #define TEGRA186_ADMAIF_RX5_FIFO_CTRL_REG_DEFAULT       0x00000210
 95 #define TEGRA186_ADMAIF_RX6_FIFO_CTRL_REG_DEFAULT       0x00000213
 96 #define TEGRA186_ADMAIF_RX7_FIFO_CTRL_REG_DEFAULT       0x00000216
 97 #define TEGRA186_ADMAIF_RX8_FIFO_CTRL_REG_DEFAULT       0x00000219
 98 #define TEGRA186_ADMAIF_RX9_FIFO_CTRL_REG_DEFAULT       0x0000021c
 99 #define TEGRA186_ADMAIF_RX10_FIFO_CTRL_REG_DEFAULT      0x0000021f
100 #define TEGRA186_ADMAIF_RX11_FIFO_CTRL_REG_DEFAULT      0x00000222
101 #define TEGRA186_ADMAIF_RX12_FIFO_CTRL_REG_DEFAULT      0x00000225
102 #define TEGRA186_ADMAIF_RX13_FIFO_CTRL_REG_DEFAULT      0x00000228
103 #define TEGRA186_ADMAIF_RX14_FIFO_CTRL_REG_DEFAULT      0x0000022b
104 #define TEGRA186_ADMAIF_RX15_FIFO_CTRL_REG_DEFAULT      0x0000022e
105 #define TEGRA186_ADMAIF_RX16_FIFO_CTRL_REG_DEFAULT      0x00000231
106 #define TEGRA186_ADMAIF_RX17_FIFO_CTRL_REG_DEFAULT      0x00000234
107 #define TEGRA186_ADMAIF_RX18_FIFO_CTRL_REG_DEFAULT      0x00000237
108 #define TEGRA186_ADMAIF_RX19_FIFO_CTRL_REG_DEFAULT      0x0000023a
109 #define TEGRA186_ADMAIF_RX20_FIFO_CTRL_REG_DEFAULT      0x0000023d
110 #define TEGRA186_ADMAIF_TX1_FIFO_CTRL_REG_DEFAULT       0x02000300
111 #define TEGRA186_ADMAIF_TX2_FIFO_CTRL_REG_DEFAULT       0x02000304
112 #define TEGRA186_ADMAIF_TX3_FIFO_CTRL_REG_DEFAULT       0x02000308
113 #define TEGRA186_ADMAIF_TX4_FIFO_CTRL_REG_DEFAULT       0x0200030c
114 #define TEGRA186_ADMAIF_TX5_FIFO_CTRL_REG_DEFAULT       0x01800210
115 #define TEGRA186_ADMAIF_TX6_FIFO_CTRL_REG_DEFAULT       0x01800213
116 #define TEGRA186_ADMAIF_TX7_FIFO_CTRL_REG_DEFAULT       0x01800216
117 #define TEGRA186_ADMAIF_TX8_FIFO_CTRL_REG_DEFAULT       0x01800219
118 #define TEGRA186_ADMAIF_TX9_FIFO_CTRL_REG_DEFAULT       0x0180021c
119 #define TEGRA186_ADMAIF_TX10_FIFO_CTRL_REG_DEFAULT      0x0180021f
120 #define TEGRA186_ADMAIF_TX11_FIFO_CTRL_REG_DEFAULT      0x01800222
121 #define TEGRA186_ADMAIF_TX12_FIFO_CTRL_REG_DEFAULT      0x01800225
122 #define TEGRA186_ADMAIF_TX13_FIFO_CTRL_REG_DEFAULT      0x01800228
123 #define TEGRA186_ADMAIF_TX14_FIFO_CTRL_REG_DEFAULT      0x0180022b
124 #define TEGRA186_ADMAIF_TX15_FIFO_CTRL_REG_DEFAULT      0x0180022e
125 #define TEGRA186_ADMAIF_TX16_FIFO_CTRL_REG_DEFAULT      0x01800231
126 #define TEGRA186_ADMAIF_TX17_FIFO_CTRL_REG_DEFAULT      0x01800234
127 #define TEGRA186_ADMAIF_TX18_FIFO_CTRL_REG_DEFAULT      0x01800237
128 #define TEGRA186_ADMAIF_TX19_FIFO_CTRL_REG_DEFAULT      0x0180023a
129 #define TEGRA186_ADMAIF_TX20_FIFO_CTRL_REG_DEFAULT      0x0180023d
130 
131 enum {
132         DATA_8BIT,
133         DATA_16BIT,
134         DATA_32BIT
135 };
136 
137 enum {
138         ADMAIF_RX_PATH,
139         ADMAIF_TX_PATH,
140         ADMAIF_PATHS,
141 };
142 
143 struct tegra_admaif_soc_data {
144         const struct snd_soc_component_driver *cmpnt;
145         const struct regmap_config *regmap_conf;
146         struct snd_soc_dai_driver *dais;
147         unsigned int global_base;
148         unsigned int tx_base;
149         unsigned int rx_base;
150         unsigned int num_ch;
151 };
152 
153 struct tegra_admaif {
154         struct snd_dmaengine_dai_dma_data *capture_dma_data;
155         struct snd_dmaengine_dai_dma_data *playback_dma_data;
156         const struct tegra_admaif_soc_data *soc_data;
157         unsigned int *mono_to_stereo[ADMAIF_PATHS];
158         unsigned int *stereo_to_mono[ADMAIF_PATHS];
159         struct regmap *regmap;
160 };
161 
162 #endif
163 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php