0001
0002
0003
0004
0005
0006
0007
0008 #ifndef __TEGRA30_AHUB_H__
0009 #define __TEGRA30_AHUB_H__
0010
0011
0012
0013 #define TEGRA30_AUDIOCIF_CTRL_FIFO_THRESHOLD_SHIFT 28
0014 #define TEGRA30_AUDIOCIF_CTRL_FIFO_THRESHOLD_MASK_US 0xf
0015 #define TEGRA30_AUDIOCIF_CTRL_FIFO_THRESHOLD_MASK (TEGRA30_AUDIOCIF_CTRL_FIFO_THRESHOLD_MASK_US << TEGRA30_AUDIOCIF_CTRL_FIFO_THRESHOLD_SHIFT)
0016
0017 #define TEGRA124_AUDIOCIF_CTRL_FIFO_THRESHOLD_SHIFT 24
0018 #define TEGRA124_AUDIOCIF_CTRL_FIFO_THRESHOLD_MASK_US 0x3f
0019 #define TEGRA124_AUDIOCIF_CTRL_FIFO_THRESHOLD_MASK (TEGRA124_AUDIOCIF_CTRL_FIFO_THRESHOLD_MASK_US << TEGRA124_AUDIOCIF_CTRL_FIFO_THRESHOLD_SHIFT)
0020
0021
0022 #define TEGRA30_AUDIOCIF_CTRL_AUDIO_CHANNELS_SHIFT 24
0023 #define TEGRA30_AUDIOCIF_CTRL_AUDIO_CHANNELS_MASK_US 7
0024 #define TEGRA30_AUDIOCIF_CTRL_AUDIO_CHANNELS_MASK (TEGRA30_AUDIOCIF_CTRL_AUDIO_CHANNELS_MASK_US << TEGRA30_AUDIOCIF_CTRL_AUDIO_CHANNELS_SHIFT)
0025
0026
0027 #define TEGRA124_AUDIOCIF_CTRL_AUDIO_CHANNELS_SHIFT 20
0028 #define TEGRA124_AUDIOCIF_CTRL_AUDIO_CHANNELS_MASK_US 0xf
0029 #define TEGRA124_AUDIOCIF_CTRL_AUDIO_CHANNELS_MASK (TEGRA124_AUDIOCIF_CTRL_AUDIO_CHANNELS_MASK_US << TEGRA124_AUDIOCIF_CTRL_AUDIO_CHANNELS_SHIFT)
0030
0031
0032 #define TEGRA30_AUDIOCIF_CTRL_CLIENT_CHANNELS_SHIFT 16
0033 #define TEGRA30_AUDIOCIF_CTRL_CLIENT_CHANNELS_MASK_US 7
0034 #define TEGRA30_AUDIOCIF_CTRL_CLIENT_CHANNELS_MASK (TEGRA30_AUDIOCIF_CTRL_CLIENT_CHANNELS_MASK_US << TEGRA30_AUDIOCIF_CTRL_CLIENT_CHANNELS_SHIFT)
0035
0036
0037 #define TEGRA124_AUDIOCIF_CTRL_CLIENT_CHANNELS_SHIFT 16
0038 #define TEGRA124_AUDIOCIF_CTRL_CLIENT_CHANNELS_MASK_US 0xf
0039 #define TEGRA124_AUDIOCIF_CTRL_CLIENT_CHANNELS_MASK (TEGRA30_AUDIOCIF_CTRL_CLIENT_CHANNELS_MASK_US << TEGRA30_AUDIOCIF_CTRL_CLIENT_CHANNELS_SHIFT)
0040
0041 #define TEGRA30_AUDIOCIF_BITS_4 0
0042 #define TEGRA30_AUDIOCIF_BITS_8 1
0043 #define TEGRA30_AUDIOCIF_BITS_12 2
0044 #define TEGRA30_AUDIOCIF_BITS_16 3
0045 #define TEGRA30_AUDIOCIF_BITS_20 4
0046 #define TEGRA30_AUDIOCIF_BITS_24 5
0047 #define TEGRA30_AUDIOCIF_BITS_28 6
0048 #define TEGRA30_AUDIOCIF_BITS_32 7
0049
0050 #define TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_SHIFT 12
0051 #define TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_MASK (7 << TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_SHIFT)
0052 #define TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_4 (TEGRA30_AUDIOCIF_BITS_4 << TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_SHIFT)
0053 #define TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_8 (TEGRA30_AUDIOCIF_BITS_8 << TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_SHIFT)
0054 #define TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_12 (TEGRA30_AUDIOCIF_BITS_12 << TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_SHIFT)
0055 #define TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_16 (TEGRA30_AUDIOCIF_BITS_16 << TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_SHIFT)
0056 #define TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_20 (TEGRA30_AUDIOCIF_BITS_20 << TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_SHIFT)
0057 #define TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_24 (TEGRA30_AUDIOCIF_BITS_24 << TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_SHIFT)
0058 #define TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_28 (TEGRA30_AUDIOCIF_BITS_28 << TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_SHIFT)
0059 #define TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_32 (TEGRA30_AUDIOCIF_BITS_32 << TEGRA30_AUDIOCIF_CTRL_AUDIO_BITS_SHIFT)
0060
0061 #define TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_SHIFT 8
0062 #define TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_MASK (7 << TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_SHIFT)
0063 #define TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_4 (TEGRA30_AUDIOCIF_BITS_4 << TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_SHIFT)
0064 #define TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_8 (TEGRA30_AUDIOCIF_BITS_8 << TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_SHIFT)
0065 #define TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_12 (TEGRA30_AUDIOCIF_BITS_12 << TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_SHIFT)
0066 #define TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_16 (TEGRA30_AUDIOCIF_BITS_16 << TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_SHIFT)
0067 #define TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_20 (TEGRA30_AUDIOCIF_BITS_20 << TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_SHIFT)
0068 #define TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_24 (TEGRA30_AUDIOCIF_BITS_24 << TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_SHIFT)
0069 #define TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_28 (TEGRA30_AUDIOCIF_BITS_28 << TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_SHIFT)
0070 #define TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_32 (TEGRA30_AUDIOCIF_BITS_32 << TEGRA30_AUDIOCIF_CTRL_CLIENT_BITS_SHIFT)
0071
0072 #define TEGRA30_AUDIOCIF_EXPAND_ZERO 0
0073 #define TEGRA30_AUDIOCIF_EXPAND_ONE 1
0074 #define TEGRA30_AUDIOCIF_EXPAND_LFSR 2
0075
0076 #define TEGRA30_AUDIOCIF_CTRL_EXPAND_SHIFT 6
0077 #define TEGRA30_AUDIOCIF_CTRL_EXPAND_MASK (3 << TEGRA30_AUDIOCIF_CTRL_EXPAND_SHIFT)
0078 #define TEGRA30_AUDIOCIF_CTRL_EXPAND_ZERO (TEGRA30_AUDIOCIF_EXPAND_ZERO << TEGRA30_AUDIOCIF_CTRL_EXPAND_SHIFT)
0079 #define TEGRA30_AUDIOCIF_CTRL_EXPAND_ONE (TEGRA30_AUDIOCIF_EXPAND_ONE << TEGRA30_AUDIOCIF_CTRL_EXPAND_SHIFT)
0080 #define TEGRA30_AUDIOCIF_CTRL_EXPAND_LFSR (TEGRA30_AUDIOCIF_EXPAND_LFSR << TEGRA30_AUDIOCIF_CTRL_EXPAND_SHIFT)
0081
0082 #define TEGRA30_AUDIOCIF_STEREO_CONV_CH0 0
0083 #define TEGRA30_AUDIOCIF_STEREO_CONV_CH1 1
0084 #define TEGRA30_AUDIOCIF_STEREO_CONV_AVG 2
0085
0086 #define TEGRA30_AUDIOCIF_CTRL_STEREO_CONV_SHIFT 4
0087 #define TEGRA30_AUDIOCIF_CTRL_STEREO_CONV_MASK (3 << TEGRA30_AUDIOCIF_CTRL_STEREO_CONV_SHIFT)
0088 #define TEGRA30_AUDIOCIF_CTRL_STEREO_CONV_CH0 (TEGRA30_AUDIOCIF_STEREO_CONV_CH0 << TEGRA30_AUDIOCIF_CTRL_STEREO_CONV_SHIFT)
0089 #define TEGRA30_AUDIOCIF_CTRL_STEREO_CONV_CH1 (TEGRA30_AUDIOCIF_STEREO_CONV_CH1 << TEGRA30_AUDIOCIF_CTRL_STEREO_CONV_SHIFT)
0090 #define TEGRA30_AUDIOCIF_CTRL_STEREO_CONV_AVG (TEGRA30_AUDIOCIF_STEREO_CONV_AVG << TEGRA30_AUDIOCIF_CTRL_STEREO_CONV_SHIFT)
0091
0092 #define TEGRA30_AUDIOCIF_CTRL_REPLICATE_SHIFT 3
0093
0094 #define TEGRA30_AUDIOCIF_DIRECTION_TX 0
0095 #define TEGRA30_AUDIOCIF_DIRECTION_RX 1
0096
0097 #define TEGRA30_AUDIOCIF_CTRL_DIRECTION_SHIFT 2
0098 #define TEGRA30_AUDIOCIF_CTRL_DIRECTION_MASK (1 << TEGRA30_AUDIOCIF_CTRL_DIRECTION_SHIFT)
0099 #define TEGRA30_AUDIOCIF_CTRL_DIRECTION_TX (TEGRA30_AUDIOCIF_DIRECTION_TX << TEGRA30_AUDIOCIF_CTRL_DIRECTION_SHIFT)
0100 #define TEGRA30_AUDIOCIF_CTRL_DIRECTION_RX (TEGRA30_AUDIOCIF_DIRECTION_RX << TEGRA30_AUDIOCIF_CTRL_DIRECTION_SHIFT)
0101
0102 #define TEGRA30_AUDIOCIF_TRUNCATE_ROUND 0
0103 #define TEGRA30_AUDIOCIF_TRUNCATE_CHOP 1
0104
0105 #define TEGRA30_AUDIOCIF_CTRL_TRUNCATE_SHIFT 1
0106 #define TEGRA30_AUDIOCIF_CTRL_TRUNCATE_MASK (1 << TEGRA30_AUDIOCIF_CTRL_TRUNCATE_SHIFT)
0107 #define TEGRA30_AUDIOCIF_CTRL_TRUNCATE_ROUND (TEGRA30_AUDIOCIF_TRUNCATE_ROUND << TEGRA30_AUDIOCIF_CTRL_TRUNCATE_SHIFT)
0108 #define TEGRA30_AUDIOCIF_CTRL_TRUNCATE_CHOP (TEGRA30_AUDIOCIF_TRUNCATE_CHOP << TEGRA30_AUDIOCIF_CTRL_TRUNCATE_SHIFT)
0109
0110 #define TEGRA30_AUDIOCIF_MONO_CONV_ZERO 0
0111 #define TEGRA30_AUDIOCIF_MONO_CONV_COPY 1
0112
0113 #define TEGRA30_AUDIOCIF_CTRL_MONO_CONV_SHIFT 0
0114 #define TEGRA30_AUDIOCIF_CTRL_MONO_CONV_MASK (1 << TEGRA30_AUDIOCIF_CTRL_MONO_CONV_SHIFT)
0115 #define TEGRA30_AUDIOCIF_CTRL_MONO_CONV_ZERO (TEGRA30_AUDIOCIF_MONO_CONV_ZERO << TEGRA30_AUDIOCIF_CTRL_MONO_CONV_SHIFT)
0116 #define TEGRA30_AUDIOCIF_CTRL_MONO_CONV_COPY (TEGRA30_AUDIOCIF_MONO_CONV_COPY << TEGRA30_AUDIOCIF_CTRL_MONO_CONV_SHIFT)
0117
0118
0119
0120
0121
0122 #define TEGRA30_AHUB_CHANNEL_CTRL 0x0
0123 #define TEGRA30_AHUB_CHANNEL_CTRL_STRIDE 0x20
0124 #define TEGRA30_AHUB_CHANNEL_CTRL_COUNT 4
0125 #define TEGRA30_AHUB_CHANNEL_CTRL_TX_EN (1 << 31)
0126 #define TEGRA30_AHUB_CHANNEL_CTRL_RX_EN (1 << 30)
0127 #define TEGRA30_AHUB_CHANNEL_CTRL_LOOPBACK (1 << 29)
0128
0129 #define TEGRA30_AHUB_CHANNEL_CTRL_TX_THRESHOLD_SHIFT 16
0130 #define TEGRA30_AHUB_CHANNEL_CTRL_TX_THRESHOLD_MASK_US 0xff
0131 #define TEGRA30_AHUB_CHANNEL_CTRL_TX_THRESHOLD_MASK (TEGRA30_AHUB_CHANNEL_CTRL_TX_THRESHOLD_MASK_US << TEGRA30_AHUB_CHANNEL_CTRL_TX_THRESHOLD_SHIFT)
0132
0133 #define TEGRA30_AHUB_CHANNEL_CTRL_RX_THRESHOLD_SHIFT 8
0134 #define TEGRA30_AHUB_CHANNEL_CTRL_RX_THRESHOLD_MASK_US 0xff
0135 #define TEGRA30_AHUB_CHANNEL_CTRL_RX_THRESHOLD_MASK (TEGRA30_AHUB_CHANNEL_CTRL_RX_THRESHOLD_MASK_US << TEGRA30_AHUB_CHANNEL_CTRL_RX_THRESHOLD_SHIFT)
0136
0137 #define TEGRA30_AHUB_CHANNEL_CTRL_TX_PACK_EN (1 << 6)
0138
0139 #define TEGRA30_PACK_8_4 2
0140 #define TEGRA30_PACK_16 3
0141
0142 #define TEGRA30_AHUB_CHANNEL_CTRL_TX_PACK_SHIFT 4
0143 #define TEGRA30_AHUB_CHANNEL_CTRL_TX_PACK_MASK_US 3
0144 #define TEGRA30_AHUB_CHANNEL_CTRL_TX_PACK_MASK (TEGRA30_AHUB_CHANNEL_CTRL_TX_PACK_MASK_US << TEGRA30_AHUB_CHANNEL_CTRL_TX_PACK_SHIFT)
0145 #define TEGRA30_AHUB_CHANNEL_CTRL_TX_PACK_8_4 (TEGRA30_PACK_8_4 << TEGRA30_AHUB_CHANNEL_CTRL_TX_PACK_SHIFT)
0146 #define TEGRA30_AHUB_CHANNEL_CTRL_TX_PACK_16 (TEGRA30_PACK_16 << TEGRA30_AHUB_CHANNEL_CTRL_TX_PACK_SHIFT)
0147
0148 #define TEGRA30_AHUB_CHANNEL_CTRL_RX_PACK_EN (1 << 2)
0149
0150 #define TEGRA30_AHUB_CHANNEL_CTRL_RX_PACK_SHIFT 0
0151 #define TEGRA30_AHUB_CHANNEL_CTRL_RX_PACK_MASK_US 3
0152 #define TEGRA30_AHUB_CHANNEL_CTRL_RX_PACK_MASK (TEGRA30_AHUB_CHANNEL_CTRL_RX_PACK_MASK_US << TEGRA30_AHUB_CHANNEL_CTRL_RX_PACK_SHIFT)
0153 #define TEGRA30_AHUB_CHANNEL_CTRL_RX_PACK_8_4 (TEGRA30_PACK_8_4 << TEGRA30_AHUB_CHANNEL_CTRL_RX_PACK_SHIFT)
0154 #define TEGRA30_AHUB_CHANNEL_CTRL_RX_PACK_16 (TEGRA30_PACK_16 << TEGRA30_AHUB_CHANNEL_CTRL_RX_PACK_SHIFT)
0155
0156
0157
0158 #define TEGRA30_AHUB_CHANNEL_CLEAR 0x4
0159 #define TEGRA30_AHUB_CHANNEL_CLEAR_STRIDE 0x20
0160 #define TEGRA30_AHUB_CHANNEL_CLEAR_COUNT 4
0161 #define TEGRA30_AHUB_CHANNEL_CLEAR_TX_SOFT_RESET (1 << 31)
0162 #define TEGRA30_AHUB_CHANNEL_CLEAR_RX_SOFT_RESET (1 << 30)
0163
0164
0165
0166 #define TEGRA30_AHUB_CHANNEL_STATUS 0x8
0167 #define TEGRA30_AHUB_CHANNEL_STATUS_STRIDE 0x20
0168 #define TEGRA30_AHUB_CHANNEL_STATUS_COUNT 4
0169 #define TEGRA30_AHUB_CHANNEL_STATUS_TX_FREE_SHIFT 24
0170 #define TEGRA30_AHUB_CHANNEL_STATUS_TX_FREE_MASK_US 0xff
0171 #define TEGRA30_AHUB_CHANNEL_STATUS_TX_FREE_MASK (TEGRA30_AHUB_CHANNEL_STATUS_TX_FREE_MASK_US << TEGRA30_AHUB_CHANNEL_STATUS_TX_FREE_SHIFT)
0172 #define TEGRA30_AHUB_CHANNEL_STATUS_RX_FREE_SHIFT 16
0173 #define TEGRA30_AHUB_CHANNEL_STATUS_RX_FREE_MASK_US 0xff
0174 #define TEGRA30_AHUB_CHANNEL_STATUS_RX_FREE_MASK (TEGRA30_AHUB_CHANNEL_STATUS_RX_FREE_MASK_US << TEGRA30_AHUB_CHANNEL_STATUS_RX_FREE_SHIFT)
0175 #define TEGRA30_AHUB_CHANNEL_STATUS_TX_TRIG (1 << 1)
0176 #define TEGRA30_AHUB_CHANNEL_STATUS_RX_TRIG (1 << 0)
0177
0178
0179
0180 #define TEGRA30_AHUB_CHANNEL_TXFIFO 0xc
0181 #define TEGRA30_AHUB_CHANNEL_TXFIFO_STRIDE 0x20
0182 #define TEGRA30_AHUB_CHANNEL_TXFIFO_COUNT 4
0183
0184
0185
0186 #define TEGRA30_AHUB_CHANNEL_RXFIFO 0x10
0187 #define TEGRA30_AHUB_CHANNEL_RXFIFO_STRIDE 0x20
0188 #define TEGRA30_AHUB_CHANNEL_RXFIFO_COUNT 4
0189
0190
0191
0192 #define TEGRA30_AHUB_CIF_TX_CTRL 0x14
0193 #define TEGRA30_AHUB_CIF_TX_CTRL_STRIDE 0x20
0194 #define TEGRA30_AHUB_CIF_TX_CTRL_COUNT 4
0195
0196
0197
0198
0199 #define TEGRA30_AHUB_CIF_RX_CTRL 0x18
0200 #define TEGRA30_AHUB_CIF_RX_CTRL_STRIDE 0x20
0201 #define TEGRA30_AHUB_CIF_RX_CTRL_COUNT 4
0202
0203
0204
0205
0206 #define TEGRA30_AHUB_CONFIG_LINK_CTRL 0x80
0207 #define TEGRA30_AHUB_CONFIG_LINK_CTRL_MASTER_FIFO_FULL_CNT_SHIFT 28
0208 #define TEGRA30_AHUB_CONFIG_LINK_CTRL_MASTER_FIFO_FULL_CNT_MASK_US 0xf
0209 #define TEGRA30_AHUB_CONFIG_LINK_CTRL_MASTER_FIFO_FULL_CNT_MASK (TEGRA30_AHUB_CONFIG_LINK_CTRL_MASTER_FIFO_FULL_CNT_MASK_US << TEGRA30_AHUB_CONFIG_LINK_CTRL_MASTER_FIFO_FULL_CNT_SHIFT)
0210 #define TEGRA30_AHUB_CONFIG_LINK_CTRL_TIMEOUT_CNT_SHIFT 16
0211 #define TEGRA30_AHUB_CONFIG_LINK_CTRL_TIMEOUT_CNT_MASK_US 0xfff
0212 #define TEGRA30_AHUB_CONFIG_LINK_CTRL_TIMEOUT_CNT_MASK (TEGRA30_AHUB_CONFIG_LINK_CTRL_TIMEOUT_CNT_MASK_US << TEGRA30_AHUB_CONFIG_LINK_CTRL_TIMEOUT_CNT_SHIFT)
0213 #define TEGRA30_AHUB_CONFIG_LINK_CTRL_IDLE_CNT_SHIFT 4
0214 #define TEGRA30_AHUB_CONFIG_LINK_CTRL_IDLE_CNT_MASK_US 0xfff
0215 #define TEGRA30_AHUB_CONFIG_LINK_CTRL_IDLE_CNT_MASK (TEGRA30_AHUB_CONFIG_LINK_CTRL_IDLE_CNT_MASK_US << TEGRA30_AHUB_CONFIG_LINK_CTRL_IDLE_CNT_SHIFT)
0216 #define TEGRA30_AHUB_CONFIG_LINK_CTRL_CG_EN (1 << 2)
0217 #define TEGRA30_AHUB_CONFIG_LINK_CTRL_CLEAR_TIMEOUT_CNTR (1 << 1)
0218 #define TEGRA30_AHUB_CONFIG_LINK_CTRL_SOFT_RESET (1 << 0)
0219
0220
0221
0222 #define TEGRA30_AHUB_MISC_CTRL 0x84
0223 #define TEGRA30_AHUB_MISC_CTRL_AUDIO_ACTIVE (1 << 31)
0224 #define TEGRA30_AHUB_MISC_CTRL_AUDIO_CG_EN (1 << 8)
0225 #define TEGRA30_AHUB_MISC_CTRL_AUDIO_OBS_SEL_SHIFT 0
0226 #define TEGRA30_AHUB_MISC_CTRL_AUDIO_OBS_SEL_MASK (0x1f << TEGRA30_AHUB_MISC_CTRL_AUDIO_OBS_SEL_SHIFT)
0227
0228
0229
0230 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS 0x88
0231 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH3_RX_CIF_FIFO_FULL (1 << 31)
0232 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH3_TX_CIF_FIFO_FULL (1 << 30)
0233 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH2_RX_CIF_FIFO_FULL (1 << 29)
0234 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH2_TX_CIF_FIFO_FULL (1 << 28)
0235 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH1_RX_CIF_FIFO_FULL (1 << 27)
0236 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH1_TX_CIF_FIFO_FULL (1 << 26)
0237 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH0_RX_CIF_FIFO_FULL (1 << 25)
0238 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH0_TX_CIF_FIFO_FULL (1 << 24)
0239 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH3_RX_CIF_FIFO_EMPTY (1 << 23)
0240 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH3_TX_CIF_FIFO_EMPTY (1 << 22)
0241 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH2_RX_CIF_FIFO_EMPTY (1 << 21)
0242 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH2_TX_CIF_FIFO_EMPTY (1 << 20)
0243 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH1_RX_CIF_FIFO_EMPTY (1 << 19)
0244 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH1_TX_CIF_FIFO_EMPTY (1 << 18)
0245 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH0_RX_CIF_FIFO_EMPTY (1 << 17)
0246 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH0_TX_CIF_FIFO_EMPTY (1 << 16)
0247 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH3_RX_DMA_FIFO_FULL (1 << 15)
0248 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH3_TX_DMA_FIFO_FULL (1 << 14)
0249 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH2_RX_DMA_FIFO_FULL (1 << 13)
0250 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH2_TX_DMA_FIFO_FULL (1 << 12)
0251 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH1_RX_DMA_FIFO_FULL (1 << 11)
0252 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH1_TX_DMA_FIFO_FULL (1 << 10)
0253 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH0_RX_DMA_FIFO_FULL (1 << 9)
0254 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH0_TX_DMA_FIFO_FULL (1 << 8)
0255 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH3_RX_DMA_FIFO_EMPTY (1 << 7)
0256 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH3_TX_DMA_FIFO_EMPTY (1 << 6)
0257 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH2_RX_DMA_FIFO_EMPTY (1 << 5)
0258 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH2_TX_DMA_FIFO_EMPTY (1 << 4)
0259 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH1_RX_DMA_FIFO_EMPTY (1 << 3)
0260 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH1_TX_DMA_FIFO_EMPTY (1 << 2)
0261 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH0_RX_DMA_FIFO_EMPTY (1 << 1)
0262 #define TEGRA30_AHUB_APBDMA_LIVE_STATUS_CH0_TX_DMA_FIFO_EMPTY (1 << 0)
0263
0264
0265
0266 #define TEGRA30_AHUB_I2S_LIVE_STATUS 0x8c
0267 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S4_RX_FIFO_FULL (1 << 29)
0268 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S4_TX_FIFO_FULL (1 << 28)
0269 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S3_RX_FIFO_FULL (1 << 27)
0270 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S3_TX_FIFO_FULL (1 << 26)
0271 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S2_RX_FIFO_FULL (1 << 25)
0272 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S2_TX_FIFO_FULL (1 << 24)
0273 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S1_RX_FIFO_FULL (1 << 23)
0274 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S1_TX_FIFO_FULL (1 << 22)
0275 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S0_RX_FIFO_FULL (1 << 21)
0276 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S0_TX_FIFO_FULL (1 << 20)
0277 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S4_RX_FIFO_ENABLED (1 << 19)
0278 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S4_TX_FIFO_ENABLED (1 << 18)
0279 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S3_RX_FIFO_ENABLED (1 << 17)
0280 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S3_TX_FIFO_ENABLED (1 << 16)
0281 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S2_RX_FIFO_ENABLED (1 << 15)
0282 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S2_TX_FIFO_ENABLED (1 << 14)
0283 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S1_RX_FIFO_ENABLED (1 << 13)
0284 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S1_TX_FIFO_ENABLED (1 << 12)
0285 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S0_RX_FIFO_ENABLED (1 << 11)
0286 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S0_TX_FIFO_ENABLED (1 << 10)
0287 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S4_RX_FIFO_EMPTY (1 << 9)
0288 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S4_TX_FIFO_EMPTY (1 << 8)
0289 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S3_RX_FIFO_EMPTY (1 << 7)
0290 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S3_TX_FIFO_EMPTY (1 << 6)
0291 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S2_RX_FIFO_EMPTY (1 << 5)
0292 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S2_TX_FIFO_EMPTY (1 << 4)
0293 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S1_RX_FIFO_EMPTY (1 << 3)
0294 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S1_TX_FIFO_EMPTY (1 << 2)
0295 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S0_RX_FIFO_EMPTY (1 << 1)
0296 #define TEGRA30_AHUB_I2S_LIVE_STATUS_I2S0_TX_FIFO_EMPTY (1 << 0)
0297
0298
0299
0300 #define TEGRA30_AHUB_DAM_LIVE_STATUS 0x90
0301 #define TEGRA30_AHUB_DAM_LIVE_STATUS_STRIDE 0x8
0302 #define TEGRA30_AHUB_DAM_LIVE_STATUS_COUNT 3
0303 #define TEGRA30_AHUB_DAM_LIVE_STATUS_TX_ENABLED (1 << 26)
0304 #define TEGRA30_AHUB_DAM_LIVE_STATUS_RX1_ENABLED (1 << 25)
0305 #define TEGRA30_AHUB_DAM_LIVE_STATUS_RX0_ENABLED (1 << 24)
0306 #define TEGRA30_AHUB_DAM_LIVE_STATUS_TXFIFO_FULL (1 << 15)
0307 #define TEGRA30_AHUB_DAM_LIVE_STATUS_RX1FIFO_FULL (1 << 9)
0308 #define TEGRA30_AHUB_DAM_LIVE_STATUS_RX0FIFO_FULL (1 << 8)
0309 #define TEGRA30_AHUB_DAM_LIVE_STATUS_TXFIFO_EMPTY (1 << 7)
0310 #define TEGRA30_AHUB_DAM_LIVE_STATUS_RX1FIFO_EMPTY (1 << 1)
0311 #define TEGRA30_AHUB_DAM_LIVE_STATUS_RX0FIFO_EMPTY (1 << 0)
0312
0313
0314
0315 #define TEGRA30_AHUB_SPDIF_LIVE_STATUS 0xa8
0316 #define TEGRA30_AHUB_SPDIF_LIVE_STATUS_USER_TX_ENABLED (1 << 11)
0317 #define TEGRA30_AHUB_SPDIF_LIVE_STATUS_USER_RX_ENABLED (1 << 10)
0318 #define TEGRA30_AHUB_SPDIF_LIVE_STATUS_DATA_TX_ENABLED (1 << 9)
0319 #define TEGRA30_AHUB_SPDIF_LIVE_STATUS_DATA_RX_ENABLED (1 << 8)
0320 #define TEGRA30_AHUB_SPDIF_LIVE_STATUS_USER_TXFIFO_FULL (1 << 7)
0321 #define TEGRA30_AHUB_SPDIF_LIVE_STATUS_USER_RXFIFO_FULL (1 << 6)
0322 #define TEGRA30_AHUB_SPDIF_LIVE_STATUS_DATA_TXFIFO_FULL (1 << 5)
0323 #define TEGRA30_AHUB_SPDIF_LIVE_STATUS_DATA_RXFIFO_FULL (1 << 4)
0324 #define TEGRA30_AHUB_SPDIF_LIVE_STATUS_USER_TXFIFO_EMPTY (1 << 3)
0325 #define TEGRA30_AHUB_SPDIF_LIVE_STATUS_USER_RXFIFO_EMPTY (1 << 2)
0326 #define TEGRA30_AHUB_SPDIF_LIVE_STATUS_DATA_TXFIFO_EMPTY (1 << 1)
0327 #define TEGRA30_AHUB_SPDIF_LIVE_STATUS_DATA_RXFIFO_EMPTY (1 << 0)
0328
0329
0330
0331 #define TEGRA30_AHUB_I2S_INT_MASK 0xb0
0332
0333
0334
0335 #define TEGRA30_AHUB_DAM_INT_MASK 0xb4
0336
0337
0338
0339 #define TEGRA30_AHUB_SPDIF_INT_MASK 0xbc
0340
0341
0342
0343 #define TEGRA30_AHUB_APBIF_INT_MASK 0xc0
0344
0345
0346
0347 #define TEGRA30_AHUB_I2S_INT_STATUS 0xc8
0348
0349
0350
0351 #define TEGRA30_AHUB_DAM_INT_STATUS 0xcc
0352
0353
0354
0355 #define TEGRA30_AHUB_SPDIF_INT_STATUS 0xd4
0356
0357
0358
0359 #define TEGRA30_AHUB_APBIF_INT_STATUS 0xd8
0360
0361
0362
0363 #define TEGRA30_AHUB_I2S_INT_SOURCE 0xe0
0364
0365
0366
0367 #define TEGRA30_AHUB_DAM_INT_SOURCE 0xe4
0368
0369
0370
0371 #define TEGRA30_AHUB_SPDIF_INT_SOURCE 0xec
0372
0373
0374
0375 #define TEGRA30_AHUB_APBIF_INT_SOURCE 0xf0
0376
0377
0378
0379 #define TEGRA30_AHUB_I2S_INT_SET 0xf8
0380
0381
0382
0383 #define TEGRA30_AHUB_DAM_INT_SET 0xfc
0384
0385
0386
0387 #define TEGRA30_AHUB_SPDIF_INT_SET 0x100
0388
0389
0390
0391 #define TEGRA30_AHUB_APBIF_INT_SET 0x104
0392
0393
0394
0395 #define TEGRA30_AHUB_AUDIO_RX 0x0
0396 #define TEGRA30_AHUB_AUDIO_RX_STRIDE 0x4
0397 #define TEGRA30_AHUB_AUDIO_RX_COUNT 17
0398
0399
0400
0401
0402
0403
0404
0405
0406
0407
0408
0409
0410
0411
0412
0413
0414
0415
0416
0417
0418
0419 enum tegra30_ahub_txcif {
0420 TEGRA30_AHUB_TXCIF_APBIF_TX0,
0421 TEGRA30_AHUB_TXCIF_APBIF_TX1,
0422 TEGRA30_AHUB_TXCIF_APBIF_TX2,
0423 TEGRA30_AHUB_TXCIF_APBIF_TX3,
0424 TEGRA30_AHUB_TXCIF_I2S0_TX0,
0425 TEGRA30_AHUB_TXCIF_I2S1_TX0,
0426 TEGRA30_AHUB_TXCIF_I2S2_TX0,
0427 TEGRA30_AHUB_TXCIF_I2S3_TX0,
0428 TEGRA30_AHUB_TXCIF_I2S4_TX0,
0429 TEGRA30_AHUB_TXCIF_DAM0_TX0,
0430 TEGRA30_AHUB_TXCIF_DAM1_TX0,
0431 TEGRA30_AHUB_TXCIF_DAM2_TX0,
0432 TEGRA30_AHUB_TXCIF_SPDIF_TX0,
0433 TEGRA30_AHUB_TXCIF_SPDIF_TX1,
0434 };
0435
0436 enum tegra30_ahub_rxcif {
0437 TEGRA30_AHUB_RXCIF_APBIF_RX0,
0438 TEGRA30_AHUB_RXCIF_APBIF_RX1,
0439 TEGRA30_AHUB_RXcIF_APBIF_RX2,
0440 TEGRA30_AHUB_RXCIF_APBIF_RX3,
0441 TEGRA30_AHUB_RXCIF_I2S0_RX0,
0442 TEGRA30_AHUB_RXCIF_I2S1_RX0,
0443 TEGRA30_AHUB_RXCIF_I2S2_RX0,
0444 TEGRA30_AHUB_RXCIF_I2S3_RX0,
0445 TEGRA30_AHUB_RXCIF_I2S4_RX0,
0446 TEGRA30_AHUB_RXCIF_DAM0_RX0,
0447 TEGRA30_AHUB_RXCIF_DAM0_RX1,
0448 TEGRA30_AHUB_RXCIF_DAM1_RX0,
0449 TEGRA30_AHUB_RXCIF_DAM2_RX1,
0450 TEGRA30_AHUB_RXCIF_DAM3_RX0,
0451 TEGRA30_AHUB_RXCIF_DAM3_RX1,
0452 TEGRA30_AHUB_RXCIF_SPDIF_RX0,
0453 TEGRA30_AHUB_RXCIF_SPDIF_RX1,
0454 };
0455
0456 extern int tegra30_ahub_allocate_rx_fifo(enum tegra30_ahub_rxcif *rxcif,
0457 char *dmachan, int dmachan_len,
0458 dma_addr_t *fiforeg);
0459 extern int tegra30_ahub_enable_rx_fifo(enum tegra30_ahub_rxcif rxcif);
0460 extern int tegra30_ahub_disable_rx_fifo(enum tegra30_ahub_rxcif rxcif);
0461 extern int tegra30_ahub_free_rx_fifo(enum tegra30_ahub_rxcif rxcif);
0462
0463 extern int tegra30_ahub_allocate_tx_fifo(enum tegra30_ahub_txcif *txcif,
0464 char *dmachan, int dmachan_len,
0465 dma_addr_t *fiforeg);
0466 extern int tegra30_ahub_enable_tx_fifo(enum tegra30_ahub_txcif txcif);
0467 extern int tegra30_ahub_disable_tx_fifo(enum tegra30_ahub_txcif txcif);
0468 extern int tegra30_ahub_free_tx_fifo(enum tegra30_ahub_txcif txcif);
0469
0470 extern int tegra30_ahub_set_rx_cif_source(enum tegra30_ahub_rxcif rxcif,
0471 enum tegra30_ahub_txcif txcif);
0472 extern int tegra30_ahub_unset_rx_cif_source(enum tegra30_ahub_rxcif rxcif);
0473
0474 struct tegra30_ahub_cif_conf {
0475 unsigned int threshold;
0476 unsigned int audio_channels;
0477 unsigned int client_channels;
0478 unsigned int audio_bits;
0479 unsigned int client_bits;
0480 unsigned int expand;
0481 unsigned int stereo_conv;
0482 unsigned int replicate;
0483 unsigned int direction;
0484 unsigned int truncate;
0485 unsigned int mono_conv;
0486 };
0487
0488 void tegra30_ahub_set_cif(struct regmap *regmap, unsigned int reg,
0489 struct tegra30_ahub_cif_conf *conf);
0490 void tegra124_ahub_set_cif(struct regmap *regmap, unsigned int reg,
0491 struct tegra30_ahub_cif_conf *conf);
0492
0493 struct tegra30_ahub_soc_data {
0494 unsigned int num_resets;
0495 void (*set_audio_cif)(struct regmap *regmap,
0496 unsigned int reg,
0497 struct tegra30_ahub_cif_conf *conf);
0498
0499
0500
0501
0502
0503
0504
0505
0506
0507
0508
0509 };
0510
0511 struct tegra30_ahub {
0512 const struct tegra30_ahub_soc_data *soc_data;
0513 struct device *dev;
0514 struct reset_control_bulk_data resets[21];
0515 unsigned int nresets;
0516 struct clk_bulk_data clocks[2];
0517 unsigned int nclocks;
0518 resource_size_t apbif_addr;
0519 struct regmap *regmap_apbif;
0520 struct regmap *regmap_ahub;
0521 DECLARE_BITMAP(rx_usage, TEGRA30_AHUB_CHANNEL_CTRL_COUNT);
0522 DECLARE_BITMAP(tx_usage, TEGRA30_AHUB_CHANNEL_CTRL_COUNT);
0523 };
0524
0525 #endif