cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

tegra210_admaif.h (6810B)


      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
    131enum {
    132	DATA_8BIT,
    133	DATA_16BIT,
    134	DATA_32BIT
    135};
    136
    137enum {
    138	ADMAIF_RX_PATH,
    139	ADMAIF_TX_PATH,
    140	ADMAIF_PATHS,
    141};
    142
    143struct 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
    153struct 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