mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-24 02:01:36 +03:00
Building the tegra-virt-alt driver with Linux v6.13 fails because some
of the header files are not found ...
sound/soc/tegra-virt-alt/tegra210_virt_alt_admaif.c:17:10: fatal error:
tegra_pcm_alt.h: No such file or directory
17 | #include "tegra_pcm_alt.h"
| ^~~~~~~~~~~~~~~~~
The 'tegra_pcm_alt.h' header is located in a 'include' sub-directory and
although the cflags add this path for find headers, the header is not
found because the '#include' of the file uses double-quotes and not
"<>". This could be fixed by simply updating the file with
'#include <tegra_pcm_alt.h>'. However, reviewing the code it simplifies
the Makefile to remove the 'include' sub-directory and directly include
the header files. Similarly, we can remove the search path of the
'nvaudio_ivc' headers and directly include these.
Bug 4991705
Change-Id: I1993d1f619698f33fc9edab05ad9235334fd3b5b
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3260938
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
1570 lines
47 KiB
C
1570 lines
47 KiB
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
/*
|
|
* Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
*/
|
|
|
|
#include <linux/module.h>
|
|
|
|
#include "nvaudio_ivc/tegra_virt_alt_ivc.h"
|
|
#include "tegra_asoc_util_virt_alt.h"
|
|
#include "tegra_asoc_xbar_virt_alt.h"
|
|
|
|
static const struct soc_enum *tegra_virt_enum_source;
|
|
|
|
#define DAI(sname, channels) \
|
|
{ \
|
|
.name = #sname " CIF", \
|
|
.playback = { \
|
|
.stream_name = #sname " CIF Receive", \
|
|
.channels_min = 1, \
|
|
.channels_max = channels, \
|
|
.rates = SNDRV_PCM_RATE_8000_192000, \
|
|
.formats = SNDRV_PCM_FMTBIT_S8 | \
|
|
SNDRV_PCM_FMTBIT_S16_LE | \
|
|
SNDRV_PCM_FMTBIT_S24_LE | \
|
|
SNDRV_PCM_FMTBIT_S32_LE, \
|
|
}, \
|
|
.capture = { \
|
|
.stream_name = #sname " CIF Transmit", \
|
|
.channels_min = 1, \
|
|
.channels_max = channels, \
|
|
.rates = SNDRV_PCM_RATE_8000_192000, \
|
|
.formats = SNDRV_PCM_FMTBIT_S8 | \
|
|
SNDRV_PCM_FMTBIT_S16_LE | \
|
|
SNDRV_PCM_FMTBIT_S24_LE | \
|
|
SNDRV_PCM_FMTBIT_S32_LE, \
|
|
}, \
|
|
}
|
|
|
|
static struct snd_soc_dai_driver tegra264_virt_xbar_dais[] = {
|
|
DAI(ADMAIF1, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF2, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF3, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF4, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF5, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF6, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF7, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF8, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF9, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF10, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF11, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF12, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF13, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF14, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF15, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF16, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF17, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF18, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF19, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF20, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF21, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF22, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF23, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF24, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF25, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF26, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF27, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF28, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF29, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF30, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF31, TEGRA264_MAX_CHANNELS),
|
|
DAI(ADMAIF32, TEGRA264_MAX_CHANNELS),
|
|
};
|
|
|
|
static struct snd_soc_dai_driver tegra234_virt_xbar_dais[] = {
|
|
DAI(ADMAIF1, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF2, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF3, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF4, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF5, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF6, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF7, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF8, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF9, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF10, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF11, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF12, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF13, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF14, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF15, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF16, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF17, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF18, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF19, TEGRA186_MAX_CHANNELS),
|
|
DAI(ADMAIF20, TEGRA186_MAX_CHANNELS),
|
|
};
|
|
|
|
static const int tegra_virt_t234ref_source_value[] = {
|
|
0,
|
|
MUX_VALUE(0, 0),
|
|
MUX_VALUE(0, 1),
|
|
MUX_VALUE(0, 2),
|
|
MUX_VALUE(0, 3),
|
|
MUX_VALUE(0, 4),
|
|
MUX_VALUE(0, 5),
|
|
MUX_VALUE(0, 6),
|
|
MUX_VALUE(0, 7),
|
|
MUX_VALUE(0, 8),
|
|
MUX_VALUE(0, 9),
|
|
MUX_VALUE(0, 10),
|
|
MUX_VALUE(0, 11),
|
|
MUX_VALUE(0, 12),
|
|
MUX_VALUE(0, 13),
|
|
MUX_VALUE(0, 14),
|
|
MUX_VALUE(0, 15),
|
|
MUX_VALUE(0, 16),
|
|
MUX_VALUE(0, 17),
|
|
MUX_VALUE(0, 18),
|
|
MUX_VALUE(0, 19),
|
|
MUX_VALUE(0, 20),
|
|
MUX_VALUE(0, 21),
|
|
MUX_VALUE(0, 24),
|
|
MUX_VALUE(0, 25),
|
|
MUX_VALUE(0, 26),
|
|
MUX_VALUE(0, 27),
|
|
MUX_VALUE(1, 0),
|
|
MUX_VALUE(1, 1),
|
|
MUX_VALUE(1, 2),
|
|
MUX_VALUE(1, 3),
|
|
MUX_VALUE(1, 4),
|
|
MUX_VALUE(1, 8),
|
|
MUX_VALUE(1, 9),
|
|
MUX_VALUE(1, 10),
|
|
MUX_VALUE(1, 11),
|
|
MUX_VALUE(1, 16),
|
|
MUX_VALUE(1, 20),
|
|
MUX_VALUE(1, 21),
|
|
MUX_VALUE(1, 24),
|
|
MUX_VALUE(1, 25),
|
|
MUX_VALUE(1, 26),
|
|
MUX_VALUE(1, 27),
|
|
MUX_VALUE(1, 28),
|
|
MUX_VALUE(1, 29),
|
|
MUX_VALUE(2, 0),
|
|
MUX_VALUE(2, 4),
|
|
MUX_VALUE(2, 8),
|
|
MUX_VALUE(2, 9),
|
|
MUX_VALUE(2, 12),
|
|
MUX_VALUE(2, 13),
|
|
MUX_VALUE(2, 14),
|
|
MUX_VALUE(2, 15),
|
|
MUX_VALUE(2, 18),
|
|
MUX_VALUE(2, 19),
|
|
MUX_VALUE(2, 20),
|
|
MUX_VALUE(2, 21),
|
|
MUX_VALUE(2, 24),
|
|
MUX_VALUE(2, 25),
|
|
MUX_VALUE(2, 26),
|
|
MUX_VALUE(2, 27),
|
|
MUX_VALUE(2, 28),
|
|
MUX_VALUE(2, 29),
|
|
MUX_VALUE(2, 30),
|
|
MUX_VALUE(2, 31),
|
|
MUX_VALUE(3, 0),
|
|
MUX_VALUE(3, 1),
|
|
MUX_VALUE(3, 2),
|
|
MUX_VALUE(3, 3),
|
|
MUX_VALUE(3, 4),
|
|
MUX_VALUE(3, 5),
|
|
MUX_VALUE(3, 6),
|
|
MUX_VALUE(3, 7),
|
|
MUX_VALUE(3, 16),
|
|
MUX_VALUE(3, 17),
|
|
MUX_VALUE(3, 18),
|
|
MUX_VALUE(3, 19),
|
|
MUX_VALUE(3, 24),
|
|
MUX_VALUE(3, 25),
|
|
MUX_VALUE(3, 26),
|
|
MUX_VALUE(3, 27),
|
|
MUX_VALUE(3, 28),
|
|
MUX_VALUE(3, 29),
|
|
};
|
|
|
|
const char * const tegra_virt_t234ref_source_text[] = {
|
|
"None",
|
|
"ADMAIF1",
|
|
"ADMAIF2",
|
|
"ADMAIF3",
|
|
"ADMAIF4",
|
|
"ADMAIF5",
|
|
"ADMAIF6",
|
|
"ADMAIF7",
|
|
"ADMAIF8",
|
|
"ADMAIF9",
|
|
"ADMAIF10",
|
|
"ADMAIF11",
|
|
"ADMAIF12",
|
|
"ADMAIF13",
|
|
"ADMAIF14",
|
|
"ADMAIF15",
|
|
"ADMAIF16",
|
|
"I2S1",
|
|
"I2S2",
|
|
"I2S3",
|
|
"I2S4",
|
|
"I2S5",
|
|
"I2S6",
|
|
"SFC1",
|
|
"SFC2",
|
|
"SFC3",
|
|
"SFC4",
|
|
"MIXER1 TX1",
|
|
"MIXER1 TX2",
|
|
"MIXER1 TX3",
|
|
"MIXER1 TX4",
|
|
"MIXER1 TX5",
|
|
"AMX1",
|
|
"AMX2",
|
|
"AMX3",
|
|
"AMX4",
|
|
"ARAD1",
|
|
"SPDIF1-1",
|
|
"SPDIF1-2",
|
|
"AFC1",
|
|
"AFC2",
|
|
"AFC3",
|
|
"AFC4",
|
|
"AFC5",
|
|
"AFC6",
|
|
"OPE1",
|
|
"SPKPROT1",
|
|
"MVC1",
|
|
"MVC2",
|
|
"IQC1-1",
|
|
"IQC1-2",
|
|
"IQC2-1",
|
|
"IQC2-2",
|
|
"DMIC1",
|
|
"DMIC2",
|
|
"DMIC3",
|
|
"DMIC4",
|
|
"ADX1 TX1",
|
|
"ADX1 TX2",
|
|
"ADX1 TX3",
|
|
"ADX1 TX4",
|
|
"ADX2 TX1",
|
|
"ADX2 TX2",
|
|
"ADX2 TX3",
|
|
"ADX2 TX4",
|
|
"ADX3 TX1",
|
|
"ADX3 TX2",
|
|
"ADX3 TX3",
|
|
"ADX3 TX4",
|
|
"ADX4 TX1",
|
|
"ADX4 TX2",
|
|
"ADX4 TX3",
|
|
"ADX4 TX4",
|
|
"ADMAIF17",
|
|
"ADMAIF18",
|
|
"ADMAIF19",
|
|
"ADMAIF20",
|
|
"ASRC1 TX1",
|
|
"ASRC1 TX2",
|
|
"ASRC1 TX3",
|
|
"ASRC1 TX4",
|
|
"ASRC1 TX5",
|
|
"ASRC1 TX6",
|
|
};
|
|
|
|
const int tegra_virt_t264ref_source_value[] = {
|
|
0,
|
|
MUX_VALUE(0, 0),
|
|
MUX_VALUE(0, 1),
|
|
MUX_VALUE(0, 2),
|
|
MUX_VALUE(0, 3),
|
|
MUX_VALUE(0, 4),
|
|
MUX_VALUE(0, 5),
|
|
MUX_VALUE(0, 6),
|
|
MUX_VALUE(0, 7),
|
|
MUX_VALUE(0, 8),
|
|
MUX_VALUE(0, 9),
|
|
MUX_VALUE(0, 10),
|
|
MUX_VALUE(0, 11),
|
|
MUX_VALUE(0, 12),
|
|
MUX_VALUE(0, 13),
|
|
MUX_VALUE(0, 14),
|
|
MUX_VALUE(0, 15),
|
|
MUX_VALUE(0, 16),
|
|
MUX_VALUE(0, 17),
|
|
MUX_VALUE(0, 18),
|
|
MUX_VALUE(0, 19),
|
|
MUX_VALUE(0, 20),
|
|
MUX_VALUE(0, 21),
|
|
MUX_VALUE(0, 22),
|
|
MUX_VALUE(0, 23),
|
|
MUX_VALUE(0, 24),
|
|
MUX_VALUE(0, 25),
|
|
MUX_VALUE(0, 26),
|
|
MUX_VALUE(0, 27),
|
|
MUX_VALUE(1, 0),
|
|
MUX_VALUE(1, 1),
|
|
MUX_VALUE(1, 2),
|
|
MUX_VALUE(1, 3),
|
|
MUX_VALUE(1, 4),
|
|
MUX_VALUE(1, 8),
|
|
MUX_VALUE(1, 9),
|
|
MUX_VALUE(1, 10),
|
|
MUX_VALUE(1, 11),
|
|
MUX_VALUE(1, 12),
|
|
MUX_VALUE(1, 13),
|
|
MUX_VALUE(1, 16),
|
|
MUX_VALUE(1, 24),
|
|
MUX_VALUE(1, 25),
|
|
MUX_VALUE(1, 26),
|
|
MUX_VALUE(1, 27),
|
|
MUX_VALUE(1, 28),
|
|
MUX_VALUE(1, 29),
|
|
MUX_VALUE(2, 0),
|
|
MUX_VALUE(2, 8),
|
|
MUX_VALUE(2, 9),
|
|
MUX_VALUE(2, 18),
|
|
MUX_VALUE(2, 19),
|
|
MUX_VALUE(2, 20),
|
|
MUX_VALUE(2, 21),
|
|
MUX_VALUE(2, 24),
|
|
MUX_VALUE(2, 25),
|
|
MUX_VALUE(2, 26),
|
|
MUX_VALUE(2, 27),
|
|
MUX_VALUE(2, 28),
|
|
MUX_VALUE(2, 29),
|
|
MUX_VALUE(2, 30),
|
|
MUX_VALUE(2, 31),
|
|
MUX_VALUE(3, 0),
|
|
MUX_VALUE(3, 1),
|
|
MUX_VALUE(3, 2),
|
|
MUX_VALUE(3, 3),
|
|
MUX_VALUE(3, 4),
|
|
MUX_VALUE(3, 5),
|
|
MUX_VALUE(3, 6),
|
|
MUX_VALUE(3, 7),
|
|
MUX_VALUE(3, 8),
|
|
MUX_VALUE(3, 9),
|
|
MUX_VALUE(3, 10),
|
|
MUX_VALUE(3, 11),
|
|
MUX_VALUE(3, 12),
|
|
MUX_VALUE(3, 13),
|
|
MUX_VALUE(3, 14),
|
|
MUX_VALUE(3, 15),
|
|
MUX_VALUE(3, 24),
|
|
MUX_VALUE(3, 25),
|
|
MUX_VALUE(3, 26),
|
|
MUX_VALUE(3, 27),
|
|
MUX_VALUE(3, 28),
|
|
MUX_VALUE(3, 29),
|
|
MUX_VALUE(4, 7),
|
|
MUX_VALUE(4, 8),
|
|
MUX_VALUE(4, 9),
|
|
MUX_VALUE(4, 10),
|
|
MUX_VALUE(4, 11),
|
|
MUX_VALUE(4, 12),
|
|
MUX_VALUE(4, 13),
|
|
MUX_VALUE(4, 14),
|
|
MUX_VALUE(4, 15),
|
|
MUX_VALUE(4, 16),
|
|
MUX_VALUE(4, 17),
|
|
MUX_VALUE(4, 18),
|
|
MUX_VALUE(4, 19),
|
|
MUX_VALUE(4, 20),
|
|
MUX_VALUE(4, 21),
|
|
MUX_VALUE(4, 22),
|
|
};
|
|
|
|
const char * const tegra_virt_t264ref_source_text[] = {
|
|
"None",
|
|
"ADMAIF1",
|
|
"ADMAIF2",
|
|
"ADMAIF3",
|
|
"ADMAIF4",
|
|
"ADMAIF5",
|
|
"ADMAIF6",
|
|
"ADMAIF7",
|
|
"ADMAIF8",
|
|
"ADMAIF9",
|
|
"ADMAIF10",
|
|
"ADMAIF11",
|
|
"ADMAIF12",
|
|
"ADMAIF13",
|
|
"ADMAIF14",
|
|
"ADMAIF15",
|
|
"ADMAIF16",
|
|
"I2S1",
|
|
"I2S2",
|
|
"I2S3",
|
|
"I2S4",
|
|
"I2S5",
|
|
"I2S6",
|
|
"I2S7",
|
|
"I2S8",
|
|
"SFC1",
|
|
"SFC2",
|
|
"SFC3",
|
|
"SFC4",
|
|
"MIXER1 TX1",
|
|
"MIXER1 TX2",
|
|
"MIXER1 TX3",
|
|
"MIXER1 TX4",
|
|
"MIXER1 TX5",
|
|
"AMX1",
|
|
"AMX2",
|
|
"AMX3",
|
|
"AMX4",
|
|
"AMX5",
|
|
"AMX6",
|
|
"ARAD1",
|
|
"AFC1",
|
|
"AFC2",
|
|
"AFC3",
|
|
"AFC4",
|
|
"AFC5",
|
|
"AFC6",
|
|
"OPE1",
|
|
"MVC1",
|
|
"MVC2",
|
|
"DMIC1",
|
|
"DMIC2",
|
|
"DMIC3",
|
|
"DMIC4",
|
|
"ADX1 TX1",
|
|
"ADX1 TX2",
|
|
"ADX1 TX3",
|
|
"ADX1 TX4",
|
|
"ADX2 TX1",
|
|
"ADX2 TX2",
|
|
"ADX2 TX3",
|
|
"ADX2 TX4",
|
|
"ADX3 TX1",
|
|
"ADX3 TX2",
|
|
"ADX3 TX3",
|
|
"ADX3 TX4",
|
|
"ADX4 TX1",
|
|
"ADX4 TX2",
|
|
"ADX4 TX3",
|
|
"ADX4 TX4",
|
|
"ADX5 TX1",
|
|
"ADX5 TX2",
|
|
"ADX5 TX3",
|
|
"ADX5 TX4",
|
|
"ADX6 TX1",
|
|
"ADX6 TX2",
|
|
"ADX6 TX3",
|
|
"ADX6 TX4",
|
|
"ASRC1 TX1",
|
|
"ASRC1 TX2",
|
|
"ASRC1 TX3",
|
|
"ASRC1 TX4",
|
|
"ASRC1 TX5",
|
|
"ASRC1 TX6",
|
|
"ADMAIF17",
|
|
"ADMAIF18",
|
|
"ADMAIF19",
|
|
"ADMAIF20",
|
|
"ADMAIF21",
|
|
"ADMAIF22",
|
|
"ADMAIF23",
|
|
"ADMAIF24",
|
|
"ADMAIF25",
|
|
"ADMAIF26",
|
|
"ADMAIF27",
|
|
"ADMAIF28",
|
|
"ADMAIF29",
|
|
"ADMAIF30",
|
|
"ADMAIF31",
|
|
"ADMAIF32",
|
|
};
|
|
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif1_tx, 0x00);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif2_tx, 0x01);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif3_tx, 0x02);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif4_tx, 0x03);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif5_tx, 0x04);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif6_tx, 0x05);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif7_tx, 0x06);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif8_tx, 0x07);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif9_tx, 0x08);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif10_tx, 0x09);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif11_tx, 0x0a);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif12_tx, 0x0b);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif13_tx, 0x0c);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif14_tx, 0x0d);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif15_tx, 0x0e);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif16_tx, 0x0f);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif17_tx, 0x60);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif18_tx, 0x61);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif19_tx, 0x62);
|
|
MUX_ENUM_CTRL_DECL_234(t234_admaif20_tx, 0x63);
|
|
MUX_ENUM_CTRL_DECL_234(t234_i2s1_tx, 0x10);
|
|
MUX_ENUM_CTRL_DECL_234(t234_i2s2_tx, 0x11);
|
|
MUX_ENUM_CTRL_DECL_234(t234_i2s3_tx, 0x12);
|
|
MUX_ENUM_CTRL_DECL_234(t234_i2s4_tx, 0x13);
|
|
MUX_ENUM_CTRL_DECL_234(t234_i2s5_tx, 0x14);
|
|
MUX_ENUM_CTRL_DECL_234(t234_i2s6_tx, 0x15);
|
|
MUX_ENUM_CTRL_DECL_234(t234_sfc1_tx, 0x18);
|
|
MUX_ENUM_CTRL_DECL_234(t234_sfc2_tx, 0x19);
|
|
MUX_ENUM_CTRL_DECL_234(t234_sfc3_tx, 0x1a);
|
|
MUX_ENUM_CTRL_DECL_234(t234_sfc4_tx, 0x1b);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx11_tx, 0x48);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx12_tx, 0x49);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx13_tx, 0x4a);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx14_tx, 0x4b);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx21_tx, 0x4c);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx22_tx, 0x4d);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx23_tx, 0x4e);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx24_tx, 0x4f);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx31_tx, 0x50);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx32_tx, 0x51);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx33_tx, 0x52);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx34_tx, 0x53);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx41_tx, 0x5c);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx42_tx, 0x5d);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx43_tx, 0x5e);
|
|
MUX_ENUM_CTRL_DECL_234(t234_amx44_tx, 0x5f);
|
|
MUX_ENUM_CTRL_DECL_234(t234_adx1_tx, 0x58);
|
|
MUX_ENUM_CTRL_DECL_234(t234_adx2_tx, 0x59);
|
|
MUX_ENUM_CTRL_DECL_234(t234_adx3_tx, 0x5a);
|
|
MUX_ENUM_CTRL_DECL_234(t234_adx4_tx, 0x5b);
|
|
MUX_ENUM_CTRL_DECL_234(t234_mixer11_tx, 0x20);
|
|
MUX_ENUM_CTRL_DECL_234(t234_mixer12_tx, 0x21);
|
|
MUX_ENUM_CTRL_DECL_234(t234_mixer13_tx, 0x22);
|
|
MUX_ENUM_CTRL_DECL_234(t234_mixer14_tx, 0x23);
|
|
MUX_ENUM_CTRL_DECL_234(t234_mixer15_tx, 0x24);
|
|
MUX_ENUM_CTRL_DECL_234(t234_mixer16_tx, 0x25);
|
|
MUX_ENUM_CTRL_DECL_234(t234_mixer17_tx, 0x26);
|
|
MUX_ENUM_CTRL_DECL_234(t234_mixer18_tx, 0x27);
|
|
MUX_ENUM_CTRL_DECL_234(t234_mixer19_tx, 0x28);
|
|
MUX_ENUM_CTRL_DECL_234(t234_mixer110_tx, 0x29);
|
|
MUX_ENUM_CTRL_DECL_234(t234_afc1_tx, 0x34);
|
|
MUX_ENUM_CTRL_DECL_234(t234_afc2_tx, 0x35);
|
|
MUX_ENUM_CTRL_DECL_234(t234_afc3_tx, 0x36);
|
|
MUX_ENUM_CTRL_DECL_234(t234_afc4_tx, 0x37);
|
|
MUX_ENUM_CTRL_DECL_234(t234_afc5_tx, 0x38);
|
|
MUX_ENUM_CTRL_DECL_234(t234_afc6_tx, 0x39);
|
|
MUX_ENUM_CTRL_DECL_234(t234_spkprot_tx, 0x41);
|
|
MUX_ENUM_CTRL_DECL_234(t234_mvc1_tx, 0x44);
|
|
MUX_ENUM_CTRL_DECL_234(t234_mvc2_tx, 0x45);
|
|
MUX_ENUM_CTRL_DECL_234(t234_asrc11_tx, 0x64);
|
|
MUX_ENUM_CTRL_DECL_234(t234_asrc12_tx, 0x65);
|
|
MUX_ENUM_CTRL_DECL_234(t234_asrc13_tx, 0x66);
|
|
MUX_ENUM_CTRL_DECL_234(t234_asrc14_tx, 0x67);
|
|
MUX_ENUM_CTRL_DECL_234(t234_asrc15_tx, 0x68);
|
|
MUX_ENUM_CTRL_DECL_234(t234_asrc16_tx, 0x69);
|
|
MUX_ENUM_CTRL_DECL_234(t234_ope1_tx, 0x40);
|
|
|
|
ADDER_CTRL_DECL(Adder1, 0x0);
|
|
ADDER_CTRL_DECL(Adder2, 0x1);
|
|
ADDER_CTRL_DECL(Adder3, 0x2);
|
|
ADDER_CTRL_DECL(Adder4, 0x3);
|
|
ADDER_CTRL_DECL(Adder5, 0x4);
|
|
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif1_tx, 0x00);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif2_tx, 0x01);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif3_tx, 0x02);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif4_tx, 0x03);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif5_tx, 0x04);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif6_tx, 0x05);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif7_tx, 0x06);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif8_tx, 0x07);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif9_tx, 0x08);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif10_tx, 0x09);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif11_tx, 0x0a);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif12_tx, 0x0b);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif13_tx, 0x0c);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif14_tx, 0x0d);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif15_tx, 0x0e);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif16_tx, 0x0f);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif17_tx, 0x60);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif18_tx, 0x61);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif19_tx, 0x62);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif20_tx, 0x63);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif21_tx, 0x74);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif22_tx, 0x75);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif23_tx, 0x76);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif24_tx, 0x77);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif25_tx, 0x78);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif26_tx, 0x79);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif27_tx, 0x7a);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif28_tx, 0x7b);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif29_tx, 0x7c);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif30_tx, 0x7d);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif31_tx, 0x7e);
|
|
MUX_ENUM_CTRL_DECL_264(t264_admaif32_tx, 0x7f);
|
|
MUX_ENUM_CTRL_DECL_264(t264_i2s1_tx, 0x10);
|
|
MUX_ENUM_CTRL_DECL_264(t264_i2s2_tx, 0x11);
|
|
MUX_ENUM_CTRL_DECL_264(t264_i2s3_tx, 0x12);
|
|
MUX_ENUM_CTRL_DECL_264(t264_i2s4_tx, 0x13);
|
|
MUX_ENUM_CTRL_DECL_264(t264_i2s5_tx, 0x14);
|
|
MUX_ENUM_CTRL_DECL_264(t264_i2s6_tx, 0x15);
|
|
MUX_ENUM_CTRL_DECL_264(t264_i2s7_tx, 0x16);
|
|
MUX_ENUM_CTRL_DECL_264(t264_i2s8_tx, 0x17);
|
|
MUX_ENUM_CTRL_DECL_264(t264_sfc1_tx, 0x18);
|
|
MUX_ENUM_CTRL_DECL_264(t264_sfc2_tx, 0x19);
|
|
MUX_ENUM_CTRL_DECL_264(t264_sfc3_tx, 0x1a);
|
|
MUX_ENUM_CTRL_DECL_264(t264_sfc4_tx, 0x1b);
|
|
MUX_ENUM_CTRL_DECL_264(t264_mixer11_tx, 0x20);
|
|
MUX_ENUM_CTRL_DECL_264(t264_mixer12_tx, 0x21);
|
|
MUX_ENUM_CTRL_DECL_264(t264_mixer13_tx, 0x22);
|
|
MUX_ENUM_CTRL_DECL_264(t264_mixer14_tx, 0x23);
|
|
MUX_ENUM_CTRL_DECL_264(t264_mixer15_tx, 0x24);
|
|
MUX_ENUM_CTRL_DECL_264(t264_mixer16_tx, 0x25);
|
|
MUX_ENUM_CTRL_DECL_264(t264_mixer17_tx, 0x26);
|
|
MUX_ENUM_CTRL_DECL_264(t264_mixer18_tx, 0x27);
|
|
MUX_ENUM_CTRL_DECL_264(t264_mixer19_tx, 0x28);
|
|
MUX_ENUM_CTRL_DECL_264(t264_mixer110_tx, 0x29);
|
|
MUX_ENUM_CTRL_DECL_264(t264_dspk1_tx, 0x30);
|
|
MUX_ENUM_CTRL_DECL_264(t264_afc1_tx, 0x34);
|
|
MUX_ENUM_CTRL_DECL_264(t264_afc2_tx, 0x35);
|
|
MUX_ENUM_CTRL_DECL_264(t264_afc3_tx, 0x36);
|
|
MUX_ENUM_CTRL_DECL_264(t264_afc4_tx, 0x37);
|
|
MUX_ENUM_CTRL_DECL_264(t264_afc5_tx, 0x38);
|
|
MUX_ENUM_CTRL_DECL_264(t264_afc6_tx, 0x39);
|
|
MUX_ENUM_CTRL_DECL_264(t264_ope1_tx, 0x40);
|
|
MUX_ENUM_CTRL_DECL_264(t264_mvc1_tx, 0x44);
|
|
MUX_ENUM_CTRL_DECL_264(t264_mvc2_tx, 0x45);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx11_tx, 0x48);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx12_tx, 0x49);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx13_tx, 0x4a);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx14_tx, 0x4b);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx21_tx, 0x4c);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx22_tx, 0x4d);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx23_tx, 0x4e);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx24_tx, 0x4f);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx31_tx, 0x50);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx32_tx, 0x51);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx33_tx, 0x52);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx34_tx, 0x53);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx41_tx, 0x5c);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx42_tx, 0x5d);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx43_tx, 0x5e);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx44_tx, 0x5f);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx51_tx, 0x80);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx52_tx, 0x81);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx53_tx, 0x82);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx54_tx, 0x83);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx61_tx, 0x84);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx62_tx, 0x85);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx63_tx, 0x86);
|
|
MUX_ENUM_CTRL_DECL_264(t264_amx64_tx, 0x87);
|
|
MUX_ENUM_CTRL_DECL_264(t264_adx1_tx, 0x58);
|
|
MUX_ENUM_CTRL_DECL_264(t264_adx2_tx, 0x59);
|
|
MUX_ENUM_CTRL_DECL_264(t264_adx3_tx, 0x5a);
|
|
MUX_ENUM_CTRL_DECL_264(t264_adx4_tx, 0x5b);
|
|
MUX_ENUM_CTRL_DECL_264(t264_adx5_tx, 0x88);
|
|
MUX_ENUM_CTRL_DECL_264(t264_adx6_tx, 0x89);
|
|
MUX_ENUM_CTRL_DECL_264(t264_asrc11_tx, 0x64);
|
|
MUX_ENUM_CTRL_DECL_264(t264_asrc12_tx, 0x65);
|
|
MUX_ENUM_CTRL_DECL_264(t264_asrc13_tx, 0x66);
|
|
MUX_ENUM_CTRL_DECL_264(t264_asrc14_tx, 0x67);
|
|
MUX_ENUM_CTRL_DECL_264(t264_asrc15_tx, 0x68);
|
|
MUX_ENUM_CTRL_DECL_264(t264_asrc16_tx, 0x69);
|
|
|
|
static struct snd_soc_dapm_widget tegra264_virt_xbar_widgets[] = {
|
|
WIDGETS("ADMAIF1", t264_admaif1_tx),
|
|
WIDGETS("ADMAIF2", t264_admaif2_tx),
|
|
WIDGETS("ADMAIF3", t264_admaif3_tx),
|
|
WIDGETS("ADMAIF4", t264_admaif4_tx),
|
|
WIDGETS("ADMAIF5", t264_admaif5_tx),
|
|
WIDGETS("ADMAIF6", t264_admaif6_tx),
|
|
WIDGETS("ADMAIF7", t264_admaif7_tx),
|
|
WIDGETS("ADMAIF8", t264_admaif8_tx),
|
|
WIDGETS("ADMAIF9", t264_admaif9_tx),
|
|
WIDGETS("ADMAIF10", t264_admaif10_tx),
|
|
WIDGETS("ADMAIF11", t264_admaif11_tx),
|
|
WIDGETS("ADMAIF12", t264_admaif12_tx),
|
|
WIDGETS("ADMAIF13", t264_admaif13_tx),
|
|
WIDGETS("ADMAIF14", t264_admaif14_tx),
|
|
WIDGETS("ADMAIF15", t264_admaif15_tx),
|
|
WIDGETS("ADMAIF16", t264_admaif16_tx),
|
|
WIDGETS("I2S1", t264_i2s1_tx),
|
|
WIDGETS("I2S2", t264_i2s2_tx),
|
|
WIDGETS("I2S3", t264_i2s3_tx),
|
|
WIDGETS("I2S4", t264_i2s4_tx),
|
|
WIDGETS("I2S5", t264_i2s5_tx),
|
|
WIDGETS("I2S6", t264_i2s6_tx),
|
|
WIDGETS("I2S7", t264_i2s7_tx),
|
|
WIDGETS("I2S8", t264_i2s8_tx),
|
|
WIDGETS("SFC1", t264_sfc1_tx),
|
|
WIDGETS("SFC2", t264_sfc2_tx),
|
|
WIDGETS("SFC3", t264_sfc3_tx),
|
|
WIDGETS("SFC4", t264_sfc4_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX1", t264_mixer11_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX2", t264_mixer12_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX3", t264_mixer13_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX4", t264_mixer14_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX5", t264_mixer15_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX6", t264_mixer16_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX7", t264_mixer17_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX8", t264_mixer18_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX9", t264_mixer19_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX10", t264_mixer110_tx),
|
|
|
|
MIXER_OUT_WIDGETS("MIXER1 TX1"),
|
|
MIXER_OUT_WIDGETS("MIXER1 TX2"),
|
|
MIXER_OUT_WIDGETS("MIXER1 TX3"),
|
|
MIXER_OUT_WIDGETS("MIXER1 TX4"),
|
|
MIXER_OUT_WIDGETS("MIXER1 TX5"),
|
|
SND_SOC_DAPM_MIXER("MIXER1 Adder1", SND_SOC_NOPM, 1, 0,
|
|
Adder1, ARRAY_SIZE(Adder1)),
|
|
SND_SOC_DAPM_MIXER("MIXER1 Adder2", SND_SOC_NOPM, 1, 0,
|
|
Adder2, ARRAY_SIZE(Adder2)),
|
|
SND_SOC_DAPM_MIXER("MIXER1 Adder3", SND_SOC_NOPM, 1, 0,
|
|
Adder3, ARRAY_SIZE(Adder3)),
|
|
SND_SOC_DAPM_MIXER("MIXER1 Adder4", SND_SOC_NOPM, 1, 0,
|
|
Adder4, ARRAY_SIZE(Adder4)),
|
|
SND_SOC_DAPM_MIXER("MIXER1 Adder5", SND_SOC_NOPM, 1, 0,
|
|
Adder5, ARRAY_SIZE(Adder5)),
|
|
WIDGETS("AFC1", t264_afc1_tx),
|
|
WIDGETS("AFC2", t264_afc2_tx),
|
|
WIDGETS("AFC3", t264_afc3_tx),
|
|
WIDGETS("AFC4", t264_afc4_tx),
|
|
WIDGETS("AFC5", t264_afc5_tx),
|
|
WIDGETS("AFC6", t264_afc6_tx),
|
|
WIDGETS("OPE1", t264_ope1_tx),
|
|
WIDGETS("MVC1", t264_mvc1_tx),
|
|
WIDGETS("MVC2", t264_mvc2_tx),
|
|
WIDGETS("AMX1 RX1", t264_amx11_tx),
|
|
WIDGETS("AMX1 RX2", t264_amx12_tx),
|
|
WIDGETS("AMX1 RX3", t264_amx13_tx),
|
|
WIDGETS("AMX1 RX4", t264_amx14_tx),
|
|
WIDGETS("AMX2 RX1", t264_amx21_tx),
|
|
WIDGETS("AMX2 RX2", t264_amx22_tx),
|
|
WIDGETS("AMX2 RX3", t264_amx23_tx),
|
|
WIDGETS("AMX2 RX4", t264_amx24_tx),
|
|
WIDGETS("ADX1", t264_adx1_tx),
|
|
WIDGETS("ADX2", t264_adx2_tx),
|
|
|
|
TX_WIDGETS("DMIC1"),
|
|
TX_WIDGETS("DMIC2"),
|
|
TX_WIDGETS("DMIC3"),
|
|
TX_WIDGETS("DMIC4"),
|
|
|
|
TX_WIDGETS("ADX1 TX1"),
|
|
TX_WIDGETS("ADX1 TX2"),
|
|
TX_WIDGETS("ADX1 TX3"),
|
|
TX_WIDGETS("ADX1 TX4"),
|
|
|
|
TX_WIDGETS("ADX2 TX1"),
|
|
TX_WIDGETS("ADX2 TX2"),
|
|
TX_WIDGETS("ADX2 TX3"),
|
|
TX_WIDGETS("ADX2 TX4"),
|
|
TX_WIDGETS("AMX1"),
|
|
TX_WIDGETS("AMX2"),
|
|
WIDGETS("ADMAIF17", t264_admaif17_tx),
|
|
WIDGETS("ADMAIF18", t264_admaif18_tx),
|
|
WIDGETS("ADMAIF19", t264_admaif19_tx),
|
|
WIDGETS("ADMAIF20", t264_admaif20_tx),
|
|
WIDGETS("AMX3 RX1", t264_amx31_tx),
|
|
WIDGETS("AMX3 RX2", t264_amx32_tx),
|
|
WIDGETS("AMX3 RX3", t264_amx33_tx),
|
|
WIDGETS("AMX3 RX4", t264_amx34_tx),
|
|
WIDGETS("AMX4 RX1", t264_amx41_tx),
|
|
WIDGETS("AMX4 RX2", t264_amx42_tx),
|
|
WIDGETS("AMX4 RX3", t264_amx43_tx),
|
|
WIDGETS("AMX4 RX4", t264_amx44_tx),
|
|
WIDGETS("AMX5 RX1", t264_amx51_tx),
|
|
WIDGETS("AMX5 RX2", t264_amx52_tx),
|
|
WIDGETS("AMX5 RX3", t264_amx53_tx),
|
|
WIDGETS("AMX5 RX4", t264_amx54_tx),
|
|
WIDGETS("AMX6 RX1", t264_amx61_tx),
|
|
WIDGETS("AMX6 RX2", t264_amx62_tx),
|
|
WIDGETS("AMX6 RX3", t264_amx63_tx),
|
|
WIDGETS("AMX6 RX4", t264_amx64_tx),
|
|
WIDGETS("ADX3", t264_adx3_tx),
|
|
WIDGETS("ADX4", t264_adx4_tx),
|
|
WIDGETS("ADX5", t264_adx5_tx),
|
|
WIDGETS("ADX6", t264_adx6_tx),
|
|
WIDGETS("ASRC1 RX1", t264_asrc11_tx),
|
|
WIDGETS("ASRC1 RX2", t264_asrc12_tx),
|
|
WIDGETS("ASRC1 RX3", t264_asrc13_tx),
|
|
WIDGETS("ASRC1 RX4", t264_asrc14_tx),
|
|
WIDGETS("ASRC1 RX5", t264_asrc15_tx),
|
|
WIDGETS("ASRC1 RX6", t264_asrc16_tx),
|
|
|
|
TX_WIDGETS("ADX3 TX1"),
|
|
TX_WIDGETS("ADX3 TX2"),
|
|
TX_WIDGETS("ADX3 TX3"),
|
|
TX_WIDGETS("ADX3 TX4"),
|
|
|
|
TX_WIDGETS("ADX4 TX1"),
|
|
TX_WIDGETS("ADX4 TX2"),
|
|
TX_WIDGETS("ADX4 TX3"),
|
|
TX_WIDGETS("ADX4 TX4"),
|
|
TX_WIDGETS("ADX5 TX1"),
|
|
TX_WIDGETS("ADX5 TX2"),
|
|
TX_WIDGETS("ADX5 TX3"),
|
|
TX_WIDGETS("ADX5 TX4"),
|
|
|
|
TX_WIDGETS("ADX6 TX1"),
|
|
TX_WIDGETS("ADX6 TX2"),
|
|
TX_WIDGETS("ADX6 TX3"),
|
|
TX_WIDGETS("ADX6 TX4"),
|
|
TX_WIDGETS("AMX3"),
|
|
TX_WIDGETS("AMX4"),
|
|
TX_WIDGETS("AMX5"),
|
|
TX_WIDGETS("AMX6"),
|
|
TX_WIDGETS("ARAD1"),
|
|
CODEC_WIDGET("I2S1"),
|
|
CODEC_WIDGET("I2S2"),
|
|
CODEC_WIDGET("I2S3"),
|
|
CODEC_WIDGET("I2S4"),
|
|
CODEC_WIDGET("I2S5"),
|
|
CODEC_WIDGET("I2S6"),
|
|
CODEC_WIDGET("I2S7"),
|
|
CODEC_WIDGET("I2S8"),
|
|
WIDGETS("ADMAIF21", t264_admaif21_tx),
|
|
WIDGETS("ADMAIF22", t264_admaif22_tx),
|
|
WIDGETS("ADMAIF23", t264_admaif23_tx),
|
|
WIDGETS("ADMAIF24", t264_admaif24_tx),
|
|
WIDGETS("ADMAIF25", t264_admaif25_tx),
|
|
WIDGETS("ADMAIF26", t264_admaif26_tx),
|
|
WIDGETS("ADMAIF27", t264_admaif27_tx),
|
|
WIDGETS("ADMAIF28", t264_admaif28_tx),
|
|
WIDGETS("ADMAIF29", t264_admaif29_tx),
|
|
WIDGETS("ADMAIF30", t264_admaif30_tx),
|
|
WIDGETS("ADMAIF31", t264_admaif31_tx),
|
|
WIDGETS("ADMAIF32", t264_admaif32_tx),
|
|
TX_WIDGETS("ASRC1 TX1"),
|
|
TX_WIDGETS("ASRC1 TX2"),
|
|
TX_WIDGETS("ASRC1 TX3"),
|
|
TX_WIDGETS("ASRC1 TX4"),
|
|
TX_WIDGETS("ASRC1 TX5"),
|
|
TX_WIDGETS("ASRC1 TX6"),
|
|
};
|
|
|
|
static struct snd_soc_dapm_widget tegra234_virt_xbar_widgets[] = {
|
|
WIDGETS("ADMAIF1", t234_admaif1_tx),
|
|
WIDGETS("ADMAIF2", t234_admaif2_tx),
|
|
WIDGETS("ADMAIF3", t234_admaif3_tx),
|
|
WIDGETS("ADMAIF4", t234_admaif4_tx),
|
|
WIDGETS("ADMAIF5", t234_admaif5_tx),
|
|
WIDGETS("ADMAIF6", t234_admaif6_tx),
|
|
WIDGETS("ADMAIF7", t234_admaif7_tx),
|
|
WIDGETS("ADMAIF8", t234_admaif8_tx),
|
|
WIDGETS("ADMAIF9", t234_admaif9_tx),
|
|
WIDGETS("ADMAIF10", t234_admaif10_tx),
|
|
WIDGETS("I2S1", t234_i2s1_tx),
|
|
WIDGETS("I2S2", t234_i2s2_tx),
|
|
WIDGETS("I2S3", t234_i2s3_tx),
|
|
WIDGETS("I2S4", t234_i2s4_tx),
|
|
WIDGETS("I2S5", t234_i2s5_tx),
|
|
WIDGETS("SFC1", t234_sfc1_tx),
|
|
WIDGETS("SFC2", t234_sfc2_tx),
|
|
WIDGETS("SFC3", t234_sfc3_tx),
|
|
WIDGETS("SFC4", t234_sfc4_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX1", t234_mixer11_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX2", t234_mixer12_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX3", t234_mixer13_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX4", t234_mixer14_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX5", t234_mixer15_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX6", t234_mixer16_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX7", t234_mixer17_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX8", t234_mixer18_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX9", t234_mixer19_tx),
|
|
MIXER_IN_WIDGETS("MIXER1 RX10", t234_mixer110_tx),
|
|
|
|
MIXER_OUT_WIDGETS("MIXER1 TX1"),
|
|
MIXER_OUT_WIDGETS("MIXER1 TX2"),
|
|
MIXER_OUT_WIDGETS("MIXER1 TX3"),
|
|
MIXER_OUT_WIDGETS("MIXER1 TX4"),
|
|
MIXER_OUT_WIDGETS("MIXER1 TX5"),
|
|
SND_SOC_DAPM_MIXER("MIXER1 Adder1", SND_SOC_NOPM, 1, 0,
|
|
Adder1, ARRAY_SIZE(Adder1)),
|
|
SND_SOC_DAPM_MIXER("MIXER1 Adder2", SND_SOC_NOPM, 1, 0,
|
|
Adder2, ARRAY_SIZE(Adder2)),
|
|
SND_SOC_DAPM_MIXER("MIXER1 Adder3", SND_SOC_NOPM, 1, 0,
|
|
Adder3, ARRAY_SIZE(Adder3)),
|
|
SND_SOC_DAPM_MIXER("MIXER1 Adder4", SND_SOC_NOPM, 1, 0,
|
|
Adder4, ARRAY_SIZE(Adder4)),
|
|
SND_SOC_DAPM_MIXER("MIXER1 Adder5", SND_SOC_NOPM, 1, 0,
|
|
Adder5, ARRAY_SIZE(Adder5)),
|
|
WIDGETS("AFC1", t234_afc1_tx),
|
|
WIDGETS("AFC2", t234_afc2_tx),
|
|
WIDGETS("AFC3", t234_afc3_tx),
|
|
WIDGETS("AFC4", t234_afc4_tx),
|
|
WIDGETS("AFC5", t234_afc5_tx),
|
|
WIDGETS("AFC6", t234_afc6_tx),
|
|
WIDGETS("OPE1", t234_ope1_tx),
|
|
WIDGETS("SPKPROT1", t234_spkprot_tx),
|
|
WIDGETS("MVC1", t234_mvc1_tx),
|
|
WIDGETS("MVC2", t234_mvc2_tx),
|
|
WIDGETS("AMX1 RX1", t234_amx11_tx),
|
|
WIDGETS("AMX1 RX2", t234_amx12_tx),
|
|
WIDGETS("AMX1 RX3", t234_amx13_tx),
|
|
WIDGETS("AMX1 RX4", t234_amx14_tx),
|
|
WIDGETS("AMX2 RX1", t234_amx21_tx),
|
|
WIDGETS("AMX2 RX2", t234_amx22_tx),
|
|
WIDGETS("AMX2 RX3", t234_amx23_tx),
|
|
WIDGETS("AMX2 RX4", t234_amx24_tx),
|
|
WIDGETS("ADX1", t234_adx1_tx),
|
|
WIDGETS("ADX2", t234_adx2_tx),
|
|
TX_WIDGETS("DMIC1"),
|
|
TX_WIDGETS("DMIC2"),
|
|
TX_WIDGETS("DMIC3"),
|
|
TX_WIDGETS("AMX1"),
|
|
TX_WIDGETS("ADX1 TX1"),
|
|
TX_WIDGETS("ADX1 TX2"),
|
|
TX_WIDGETS("ADX1 TX3"),
|
|
TX_WIDGETS("ADX1 TX4"),
|
|
TX_WIDGETS("AMX2"),
|
|
TX_WIDGETS("ADX2 TX1"),
|
|
TX_WIDGETS("ADX2 TX2"),
|
|
TX_WIDGETS("ADX2 TX3"),
|
|
TX_WIDGETS("ADX2 TX4"),
|
|
WIDGETS("ADMAIF11", t234_admaif11_tx),
|
|
WIDGETS("ADMAIF12", t234_admaif12_tx),
|
|
WIDGETS("ADMAIF13", t234_admaif13_tx),
|
|
WIDGETS("ADMAIF14", t234_admaif14_tx),
|
|
WIDGETS("ADMAIF15", t234_admaif15_tx),
|
|
WIDGETS("ADMAIF16", t234_admaif16_tx),
|
|
WIDGETS("ADMAIF17", t234_admaif17_tx),
|
|
WIDGETS("ADMAIF18", t234_admaif18_tx),
|
|
WIDGETS("ADMAIF19", t234_admaif19_tx),
|
|
WIDGETS("ADMAIF20", t234_admaif20_tx),
|
|
WIDGETS("I2S6", t234_i2s6_tx),
|
|
WIDGETS("AMX3 RX1", t234_amx31_tx),
|
|
WIDGETS("AMX3 RX2", t234_amx32_tx),
|
|
WIDGETS("AMX3 RX3", t234_amx33_tx),
|
|
WIDGETS("AMX3 RX4", t234_amx34_tx),
|
|
WIDGETS("AMX4 RX1", t234_amx41_tx),
|
|
WIDGETS("AMX4 RX2", t234_amx42_tx),
|
|
WIDGETS("AMX4 RX3", t234_amx43_tx),
|
|
WIDGETS("AMX4 RX4", t234_amx44_tx),
|
|
WIDGETS("ADX3", t234_adx3_tx),
|
|
WIDGETS("ADX4", t234_adx4_tx),
|
|
WIDGETS("ASRC1 RX1", t234_asrc11_tx),
|
|
WIDGETS("ASRC1 RX2", t234_asrc12_tx),
|
|
WIDGETS("ASRC1 RX3", t234_asrc13_tx),
|
|
WIDGETS("ASRC1 RX4", t234_asrc14_tx),
|
|
WIDGETS("ASRC1 RX5", t234_asrc15_tx),
|
|
WIDGETS("ASRC1 RX6", t234_asrc16_tx),
|
|
TX_WIDGETS("AMX3"),
|
|
TX_WIDGETS("ADX3 TX1"),
|
|
TX_WIDGETS("ADX3 TX2"),
|
|
TX_WIDGETS("ADX3 TX3"),
|
|
TX_WIDGETS("ADX3 TX4"),
|
|
TX_WIDGETS("AMX4"),
|
|
TX_WIDGETS("ADX4 TX1"),
|
|
TX_WIDGETS("ADX4 TX2"),
|
|
TX_WIDGETS("ADX4 TX3"),
|
|
TX_WIDGETS("ADX4 TX4"),
|
|
TX_WIDGETS("DMIC4"),
|
|
TX_WIDGETS("ARAD1"),
|
|
CODEC_WIDGET("I2S1"),
|
|
CODEC_WIDGET("I2S2"),
|
|
CODEC_WIDGET("I2S3"),
|
|
CODEC_WIDGET("I2S4"),
|
|
CODEC_WIDGET("I2S5"),
|
|
CODEC_WIDGET("I2S6"),
|
|
TX_WIDGETS("ASRC1 TX1"),
|
|
TX_WIDGETS("ASRC1 TX2"),
|
|
TX_WIDGETS("ASRC1 TX3"),
|
|
TX_WIDGETS("ASRC1 TX4"),
|
|
TX_WIDGETS("ASRC1 TX5"),
|
|
TX_WIDGETS("ASRC1 TX6"),
|
|
};
|
|
|
|
#define MUX_ROUTES_234(name) \
|
|
{ name " Mux", "ADMAIF1", "ADMAIF1 RX" }, \
|
|
{ name " Mux", "ADMAIF2", "ADMAIF2 RX" }, \
|
|
{ name " Mux", "ADMAIF3", "ADMAIF3 RX" }, \
|
|
{ name " Mux", "ADMAIF4", "ADMAIF4 RX" }, \
|
|
{ name " Mux", "ADMAIF5", "ADMAIF5 RX" }, \
|
|
{ name " Mux", "ADMAIF6", "ADMAIF6 RX" }, \
|
|
{ name " Mux", "ADMAIF7", "ADMAIF7 RX" }, \
|
|
{ name " Mux", "ADMAIF8", "ADMAIF8 RX" }, \
|
|
{ name " Mux", "ADMAIF9", "ADMAIF9 RX" }, \
|
|
{ name " Mux", "ADMAIF10", "ADMAIF10 RX" }, \
|
|
{ name " Mux", "I2S1", "I2S1 RX" }, \
|
|
{ name " Mux", "I2S2", "I2S2 RX" }, \
|
|
{ name " Mux", "I2S3", "I2S3 RX" }, \
|
|
{ name " Mux", "I2S4", "I2S4 RX" }, \
|
|
{ name " Mux", "I2S5", "I2S5 RX" }, \
|
|
{ name " Mux", "SFC1", "SFC1 RX" }, \
|
|
{ name " Mux", "SFC2", "SFC2 RX" }, \
|
|
{ name " Mux", "SFC3", "SFC3 RX" }, \
|
|
{ name " Mux", "SFC4", "SFC4 RX" }, \
|
|
{ name " Mux", "MIXER1 TX1", "MIXER1 TX1 RX" }, \
|
|
{ name " Mux", "MIXER1 TX2", "MIXER1 TX2 RX" }, \
|
|
{ name " Mux", "MIXER1 TX3", "MIXER1 TX3 RX" }, \
|
|
{ name " Mux", "MIXER1 TX4", "MIXER1 TX4 RX" }, \
|
|
{ name " Mux", "MIXER1 TX5", "MIXER1 TX5 RX" }, \
|
|
{ name " Mux", "AFC1", "AFC1 RX" }, \
|
|
{ name " Mux", "AFC2", "AFC2 RX" }, \
|
|
{ name " Mux", "AFC3", "AFC3 RX" }, \
|
|
{ name " Mux", "AFC4", "AFC4 RX" }, \
|
|
{ name " Mux", "AFC5", "AFC5 RX" }, \
|
|
{ name " Mux", "AFC6", "AFC6 RX" }, \
|
|
{ name " Mux", "OPE1", "OPE1 RX" }, \
|
|
{ name " Mux", "MVC1", "MVC1 RX" }, \
|
|
{ name " Mux", "MVC2", "MVC2 RX" }, \
|
|
{ name " Mux", "DMIC1", "DMIC1 RX" }, \
|
|
{ name " Mux", "DMIC2", "DMIC2 RX" }, \
|
|
{ name " Mux", "DMIC3", "DMIC3 RX" }, \
|
|
{ name " Mux", "AMX1", "AMX1 RX" }, \
|
|
{ name " Mux", "ADX1 TX1", "ADX1 TX1 RX" }, \
|
|
{ name " Mux", "ADX1 TX2", "ADX1 TX2 RX" }, \
|
|
{ name " Mux", "ADX1 TX3", "ADX1 TX3 RX" }, \
|
|
{ name " Mux", "ADX1 TX4", "ADX1 TX4 RX" }, \
|
|
{ name " Mux", "AMX2", "AMX2 RX" }, \
|
|
{ name " Mux", "ADX2 TX1", "ADX2 TX1 RX" }, \
|
|
{ name " Mux", "ADX2 TX2", "ADX2 TX2 RX" }, \
|
|
{ name " Mux", "ADX2 TX3", "ADX2 TX3 RX" }, \
|
|
{ name " Mux", "ADX2 TX4", "ADX2 TX4 RX" }, \
|
|
{ name " Mux", "ADMAIF11", "ADMAIF11 RX" }, \
|
|
{ name " Mux", "ADMAIF12", "ADMAIF12 RX" }, \
|
|
{ name " Mux", "ADMAIF13", "ADMAIF13 RX" }, \
|
|
{ name " Mux", "ADMAIF14", "ADMAIF14 RX" }, \
|
|
{ name " Mux", "ADMAIF15", "ADMAIF15 RX" }, \
|
|
{ name " Mux", "ADMAIF16", "ADMAIF16 RX" }, \
|
|
{ name " Mux", "ADMAIF17", "ADMAIF17 RX" }, \
|
|
{ name " Mux", "ADMAIF18", "ADMAIF18 RX" }, \
|
|
{ name " Mux", "ADMAIF19", "ADMAIF19 RX" }, \
|
|
{ name " Mux", "ADMAIF20", "ADMAIF20 RX" }, \
|
|
{ name " Mux", "DMIC4", "DMIC4 RX" }, \
|
|
{ name " Mux", "I2S6", "I2S6 RX" }, \
|
|
{ name " Mux", "ASRC1 TX1", "ASRC1 TX1 RX" }, \
|
|
{ name " Mux", "ASRC1 TX2", "ASRC1 TX2 RX" }, \
|
|
{ name " Mux", "ASRC1 TX3", "ASRC1 TX3 RX" }, \
|
|
{ name " Mux", "ASRC1 TX4", "ASRC1 TX4 RX" }, \
|
|
{ name " Mux", "ASRC1 TX5", "ASRC1 TX5 RX" }, \
|
|
{ name " Mux", "ASRC1 TX6", "ASRC1 TX6 RX" }, \
|
|
{ name " Mux", "AMX3", "AMX3 RX" }, \
|
|
{ name " Mux", "ADX3 TX1", "ADX3 TX1 RX" }, \
|
|
{ name " Mux", "ADX3 TX2", "ADX3 TX2 RX" }, \
|
|
{ name " Mux", "ADX3 TX3", "ADX3 TX3 RX" }, \
|
|
{ name " Mux", "ADX3 TX4", "ADX3 TX4 RX" }, \
|
|
{ name " Mux", "AMX4", "AMX4 RX" }, \
|
|
{ name " Mux", "ADX4 TX1", "ADX4 TX1 RX" }, \
|
|
{ name " Mux", "ADX4 TX2", "ADX4 TX2 RX" }, \
|
|
{ name " Mux", "ADX4 TX3", "ADX4 TX3 RX" }, \
|
|
{ name " Mux", "ADX4 TX4", "ADX4 TX4 RX" }, \
|
|
{ name " Mux", "ARAD1", "ARAD1 RX" },
|
|
|
|
#define AMX_OUT_ROUTES(name) \
|
|
{ name " RX", NULL, name " RX1 Mux" }, \
|
|
{ name " RX", NULL, name " RX2 Mux" }, \
|
|
{ name " RX", NULL, name " RX3 Mux" }, \
|
|
{ name " RX", NULL, name " RX4 Mux" },
|
|
|
|
#define ADX_IN_ROUTES_234(name) \
|
|
{ name " TX1 RX", NULL, name " Mux" }, \
|
|
{ name " TX2 RX", NULL, name " Mux" }, \
|
|
{ name " TX3 RX", NULL, name " Mux" }, \
|
|
{ name " TX4 RX", NULL, name " Mux" }, \
|
|
TEGRA234_ROUTES(name)
|
|
|
|
#define IN_OUT_ROUTES_234(name) \
|
|
{ name " RX", NULL, name " CIF Receive"}, \
|
|
{ name " CIF Transmit", NULL, name " Mux"}, \
|
|
MUX_ROUTES_234(name)
|
|
|
|
#define TEGRA234_ROUTES(name) \
|
|
{ name " RX", NULL, name " Mux"}, \
|
|
MUX_ROUTES_234(name)
|
|
|
|
#define MIXER_IN_ROUTES_234(name) \
|
|
MUX_ROUTES_234(name)
|
|
|
|
#define MIC_SPK_ROUTES_234(name) \
|
|
{ name " RX", NULL, name " MIC"}, \
|
|
{ name " HEADPHONE", NULL, name " Mux"}, \
|
|
MUX_ROUTES_234(name)
|
|
|
|
#define MIXER_ROUTES(name, id) \
|
|
{name, "RX1", "MIXER1 RX1 Mux",}, \
|
|
{name, "RX2", "MIXER1 RX2 Mux",}, \
|
|
{name, "RX3", "MIXER1 RX3 Mux",}, \
|
|
{name, "RX4", "MIXER1 RX4 Mux",}, \
|
|
{name, "RX5", "MIXER1 RX5 Mux",}, \
|
|
{name, "RX6", "MIXER1 RX6 Mux",}, \
|
|
{name, "RX7", "MIXER1 RX7 Mux",}, \
|
|
{name, "RX8", "MIXER1 RX8 Mux",}, \
|
|
{name, "RX9", "MIXER1 RX9 Mux",}, \
|
|
{name, "RX10", "MIXER1 RX10 Mux"}, \
|
|
{"MIXER1 TX"#id " RX", NULL, name}
|
|
|
|
#define MUX_ROUTES_264(name) \
|
|
{ name " Mux", "ADMAIF1", "ADMAIF1 RX" }, \
|
|
{ name " Mux", "ADMAIF2", "ADMAIF2 RX" }, \
|
|
{ name " Mux", "ADMAIF3", "ADMAIF3 RX" }, \
|
|
{ name " Mux", "ADMAIF4", "ADMAIF4 RX" }, \
|
|
{ name " Mux", "ADMAIF5", "ADMAIF5 RX" }, \
|
|
{ name " Mux", "ADMAIF6", "ADMAIF6 RX" }, \
|
|
{ name " Mux", "ADMAIF7", "ADMAIF7 RX" }, \
|
|
{ name " Mux", "ADMAIF8", "ADMAIF8 RX" }, \
|
|
{ name " Mux", "ADMAIF9", "ADMAIF9 RX" }, \
|
|
{ name " Mux", "ADMAIF10", "ADMAIF10 RX" }, \
|
|
{ name " Mux", "I2S1", "I2S1 RX" }, \
|
|
{ name " Mux", "I2S2", "I2S2 RX" }, \
|
|
{ name " Mux", "I2S3", "I2S3 RX" }, \
|
|
{ name " Mux", "I2S4", "I2S4 RX" }, \
|
|
{ name " Mux", "I2S5", "I2S5 RX" }, \
|
|
{ name " Mux", "SFC1", "SFC1 RX" }, \
|
|
{ name " Mux", "SFC2", "SFC2 RX" }, \
|
|
{ name " Mux", "SFC3", "SFC3 RX" }, \
|
|
{ name " Mux", "SFC4", "SFC4 RX" }, \
|
|
{ name " Mux", "MIXER1 TX1", "MIXER1 TX1 RX" }, \
|
|
{ name " Mux", "MIXER1 TX2", "MIXER1 TX2 RX" }, \
|
|
{ name " Mux", "MIXER1 TX3", "MIXER1 TX3 RX" }, \
|
|
{ name " Mux", "MIXER1 TX4", "MIXER1 TX4 RX" }, \
|
|
{ name " Mux", "MIXER1 TX5", "MIXER1 TX5 RX" }, \
|
|
{ name " Mux", "AFC1", "AFC1 RX" }, \
|
|
{ name " Mux", "AFC2", "AFC2 RX" }, \
|
|
{ name " Mux", "AFC3", "AFC3 RX" }, \
|
|
{ name " Mux", "AFC4", "AFC4 RX" }, \
|
|
{ name " Mux", "AFC5", "AFC5 RX" }, \
|
|
{ name " Mux", "AFC6", "AFC6 RX" }, \
|
|
{ name " Mux", "OPE1", "OPE1 RX" }, \
|
|
{ name " Mux", "MVC1", "MVC1 RX" }, \
|
|
{ name " Mux", "MVC2", "MVC2 RX" }, \
|
|
{ name " Mux", "DMIC1", "DMIC1 RX" }, \
|
|
{ name " Mux", "DMIC2", "DMIC2 RX" }, \
|
|
{ name " Mux", "DMIC3", "DMIC3 RX" }, \
|
|
{ name " Mux", "DMIC4", "DMIC4 RX" }, \
|
|
{ name " Mux", "AMX1", "AMX1 RX" }, \
|
|
{ name " Mux", "ADX1 TX1", "ADX1 TX1 RX" }, \
|
|
{ name " Mux", "ADX1 TX2", "ADX1 TX2 RX" }, \
|
|
{ name " Mux", "ADX1 TX3", "ADX1 TX3 RX" }, \
|
|
{ name " Mux", "ADX1 TX4", "ADX1 TX4 RX" }, \
|
|
{ name " Mux", "AMX2", "AMX2 RX" }, \
|
|
{ name " Mux", "ADX2 TX1", "ADX2 TX1 RX" }, \
|
|
{ name " Mux", "ADX2 TX2", "ADX2 TX2 RX" }, \
|
|
{ name " Mux", "ADX2 TX3", "ADX2 TX3 RX" }, \
|
|
{ name " Mux", "ADX2 TX4", "ADX2 TX4 RX" }, \
|
|
{ name " Mux", "ADMAIF11", "ADMAIF11 RX" }, \
|
|
{ name " Mux", "ADMAIF12", "ADMAIF12 RX" }, \
|
|
{ name " Mux", "ADMAIF13", "ADMAIF13 RX" }, \
|
|
{ name " Mux", "ADMAIF14", "ADMAIF14 RX" }, \
|
|
{ name " Mux", "ADMAIF15", "ADMAIF15 RX" }, \
|
|
{ name " Mux", "ADMAIF16", "ADMAIF16 RX" }, \
|
|
{ name " Mux", "ADMAIF17", "ADMAIF17 RX" }, \
|
|
{ name " Mux", "ADMAIF18", "ADMAIF18 RX" }, \
|
|
{ name " Mux", "ADMAIF19", "ADMAIF19 RX" }, \
|
|
{ name " Mux", "ADMAIF20", "ADMAIF20 RX" }, \
|
|
{ name " Mux", "ADMAIF21", "ADMAIF21 RX" }, \
|
|
{ name " Mux", "ADMAIF22", "ADMAIF22 RX" }, \
|
|
{ name " Mux", "ADMAIF23", "ADMAIF23 RX" }, \
|
|
{ name " Mux", "ADMAIF24", "ADMAIF24 RX" }, \
|
|
{ name " Mux", "ADMAIF25", "ADMAIF25 RX" }, \
|
|
{ name " Mux", "ADMAIF26", "ADMAIF26 RX" }, \
|
|
{ name " Mux", "ADMAIF27", "ADMAIF27 RX" }, \
|
|
{ name " Mux", "ADMAIF28", "ADMAIF28 RX" }, \
|
|
{ name " Mux", "ADMAIF29", "ADMAIF29 RX" }, \
|
|
{ name " Mux", "ADMAIF30", "ADMAIF30 RX" }, \
|
|
{ name " Mux", "ADMAIF31", "ADMAIF31 RX" }, \
|
|
{ name " Mux", "ADMAIF32", "ADMAIF32 RX" }, \
|
|
{ name " Mux", "I2S6", "I2S6 RX" }, \
|
|
{ name " Mux", "I2S7", "I2S7 RX" }, \
|
|
{ name " Mux", "I2S8", "I2S8 RX" }, \
|
|
{ name " Mux", "ASRC1 TX1", "ASRC1 TX1 RX" }, \
|
|
{ name " Mux", "ASRC1 TX2", "ASRC1 TX2 RX" }, \
|
|
{ name " Mux", "ASRC1 TX3", "ASRC1 TX3 RX" }, \
|
|
{ name " Mux", "ASRC1 TX4", "ASRC1 TX4 RX" }, \
|
|
{ name " Mux", "ASRC1 TX5", "ASRC1 TX5 RX" }, \
|
|
{ name " Mux", "ASRC1 TX6", "ASRC1 TX6 RX" }, \
|
|
{ name " Mux", "AMX3", "AMX3 RX" }, \
|
|
{ name " Mux", "ADX3 TX1", "ADX3 TX1 RX" }, \
|
|
{ name " Mux", "ADX3 TX2", "ADX3 TX2 RX" }, \
|
|
{ name " Mux", "ADX3 TX3", "ADX3 TX3 RX" }, \
|
|
{ name " Mux", "ADX3 TX4", "ADX3 TX4 RX" }, \
|
|
{ name " Mux", "AMX4", "AMX4 RX" }, \
|
|
{ name " Mux", "ADX4 TX1", "ADX4 TX1 RX" }, \
|
|
{ name " Mux", "ADX4 TX2", "ADX4 TX2 RX" }, \
|
|
{ name " Mux", "ADX4 TX3", "ADX4 TX3 RX" }, \
|
|
{ name " Mux", "ADX4 TX4", "ADX4 TX4 RX" }, \
|
|
{ name " Mux", "AMX5", "AMX5 RX" }, \
|
|
{ name " Mux", "ADX5 TX1", "ADX5 TX1 RX" }, \
|
|
{ name " Mux", "ADX5 TX2", "ADX5 TX2 RX" }, \
|
|
{ name " Mux", "ADX5 TX3", "ADX5 TX3 RX" }, \
|
|
{ name " Mux", "ADX5 TX4", "ADX5 TX4 RX" }, \
|
|
{ name " Mux", "AMX6", "AMX6 RX" }, \
|
|
{ name " Mux", "ADX6 TX1", "ADX6 TX1 RX" }, \
|
|
{ name " Mux", "ADX6 TX2", "ADX6 TX2 RX" }, \
|
|
{ name " Mux", "ADX6 TX3", "ADX6 TX3 RX" }, \
|
|
{ name " Mux", "ADX6 TX4", "ADX6 TX4 RX" }, \
|
|
{ name " Mux", "ARAD1", "ARAD1 RX" },
|
|
|
|
#define ADX_IN_ROUTES_264(name) \
|
|
{ name " TX1 RX", NULL, name " Mux" }, \
|
|
{ name " TX2 RX", NULL, name " Mux" }, \
|
|
{ name " TX3 RX", NULL, name " Mux" }, \
|
|
{ name " TX4 RX", NULL, name " Mux" }, \
|
|
TEGRA264_ROUTES(name)
|
|
|
|
#define IN_OUT_ROUTES_264(name) \
|
|
{ name " RX", NULL, name " CIF Receive"}, \
|
|
{ name " CIF Transmit", NULL, name " Mux"}, \
|
|
MUX_ROUTES_264(name)
|
|
|
|
#define TEGRA264_ROUTES(name) \
|
|
{ name " RX", NULL, name " Mux"}, \
|
|
MUX_ROUTES_264(name)
|
|
|
|
#define MIXER_IN_ROUTES_264(name) \
|
|
MUX_ROUTES_264(name)
|
|
|
|
#define MIC_SPK_ROUTES_264(name) \
|
|
{ name " RX", NULL, name " MIC"}, \
|
|
{ name " HEADPHONE", NULL, name " Mux"}, \
|
|
MUX_ROUTES_264(name)
|
|
|
|
static struct snd_soc_dapm_route tegra234_virt_xbar_routes[] = {
|
|
IN_OUT_ROUTES_234("ADMAIF1")
|
|
IN_OUT_ROUTES_234("ADMAIF2")
|
|
IN_OUT_ROUTES_234("ADMAIF3")
|
|
IN_OUT_ROUTES_234("ADMAIF4")
|
|
IN_OUT_ROUTES_234("ADMAIF5")
|
|
IN_OUT_ROUTES_234("ADMAIF6")
|
|
IN_OUT_ROUTES_234("ADMAIF7")
|
|
IN_OUT_ROUTES_234("ADMAIF8")
|
|
IN_OUT_ROUTES_234("ADMAIF9")
|
|
IN_OUT_ROUTES_234("ADMAIF10")
|
|
MIC_SPK_ROUTES_234("I2S1")
|
|
MIC_SPK_ROUTES_234("I2S2")
|
|
MIC_SPK_ROUTES_234("I2S3")
|
|
MIC_SPK_ROUTES_234("I2S4")
|
|
MIC_SPK_ROUTES_234("I2S5")
|
|
TEGRA234_ROUTES("SFC1")
|
|
TEGRA234_ROUTES("SFC2")
|
|
TEGRA234_ROUTES("SFC3")
|
|
TEGRA234_ROUTES("SFC4")
|
|
MIXER_IN_ROUTES_234("MIXER1 RX1")
|
|
MIXER_IN_ROUTES_234("MIXER1 RX2")
|
|
MIXER_IN_ROUTES_234("MIXER1 RX3")
|
|
MIXER_IN_ROUTES_234("MIXER1 RX4")
|
|
MIXER_IN_ROUTES_234("MIXER1 RX5")
|
|
MIXER_IN_ROUTES_234("MIXER1 RX6")
|
|
MIXER_IN_ROUTES_234("MIXER1 RX7")
|
|
MIXER_IN_ROUTES_234("MIXER1 RX8")
|
|
MIXER_IN_ROUTES_234("MIXER1 RX9")
|
|
MIXER_IN_ROUTES_234("MIXER1 RX10")
|
|
|
|
MIXER_ROUTES("MIXER1 Adder1", 1),
|
|
MIXER_ROUTES("MIXER1 Adder2", 2),
|
|
MIXER_ROUTES("MIXER1 Adder3", 3),
|
|
MIXER_ROUTES("MIXER1 Adder4", 4),
|
|
MIXER_ROUTES("MIXER1 Adder5", 5),
|
|
|
|
TEGRA234_ROUTES("AFC1")
|
|
TEGRA234_ROUTES("AFC2")
|
|
TEGRA234_ROUTES("AFC3")
|
|
TEGRA234_ROUTES("AFC4")
|
|
TEGRA234_ROUTES("AFC5")
|
|
TEGRA234_ROUTES("AFC6")
|
|
TEGRA234_ROUTES("OPE1")
|
|
TEGRA234_ROUTES("SPKPROT1")
|
|
TEGRA234_ROUTES("MVC1")
|
|
TEGRA234_ROUTES("MVC2")
|
|
TEGRA234_ROUTES("AMX1 RX1")
|
|
TEGRA234_ROUTES("AMX1 RX2")
|
|
TEGRA234_ROUTES("AMX1 RX3")
|
|
TEGRA234_ROUTES("AMX1 RX4")
|
|
TEGRA234_ROUTES("AMX2 RX1")
|
|
TEGRA234_ROUTES("AMX2 RX2")
|
|
TEGRA234_ROUTES("AMX2 RX3")
|
|
TEGRA234_ROUTES("AMX2 RX4")
|
|
ADX_IN_ROUTES_234("ADX1")
|
|
ADX_IN_ROUTES_234("ADX2")
|
|
AMX_OUT_ROUTES("AMX1")
|
|
AMX_OUT_ROUTES("AMX2")
|
|
IN_OUT_ROUTES_234("ADMAIF11")
|
|
IN_OUT_ROUTES_234("ADMAIF12")
|
|
IN_OUT_ROUTES_234("ADMAIF13")
|
|
IN_OUT_ROUTES_234("ADMAIF14")
|
|
IN_OUT_ROUTES_234("ADMAIF15")
|
|
IN_OUT_ROUTES_234("ADMAIF16")
|
|
IN_OUT_ROUTES_234("ADMAIF17")
|
|
IN_OUT_ROUTES_234("ADMAIF18")
|
|
IN_OUT_ROUTES_234("ADMAIF19")
|
|
IN_OUT_ROUTES_234("ADMAIF20")
|
|
TEGRA234_ROUTES("AMX3 RX1")
|
|
TEGRA234_ROUTES("AMX3 RX2")
|
|
TEGRA234_ROUTES("AMX3 RX3")
|
|
TEGRA234_ROUTES("AMX3 RX4")
|
|
TEGRA234_ROUTES("AMX4 RX1")
|
|
TEGRA234_ROUTES("AMX4 RX2")
|
|
TEGRA234_ROUTES("AMX4 RX3")
|
|
TEGRA234_ROUTES("AMX4 RX4")
|
|
ADX_IN_ROUTES_234("ADX3")
|
|
ADX_IN_ROUTES_234("ADX4")
|
|
MIC_SPK_ROUTES_234("I2S6")
|
|
TEGRA234_ROUTES("ASRC1 RX1")
|
|
TEGRA234_ROUTES("ASRC1 RX2")
|
|
TEGRA234_ROUTES("ASRC1 RX3")
|
|
TEGRA234_ROUTES("ASRC1 RX4")
|
|
TEGRA234_ROUTES("ASRC1 RX5")
|
|
TEGRA234_ROUTES("ASRC1 RX6")
|
|
AMX_OUT_ROUTES("AMX3")
|
|
AMX_OUT_ROUTES("AMX4")
|
|
};
|
|
|
|
static struct snd_soc_dapm_route tegra264_virt_xbar_routes[] = {
|
|
IN_OUT_ROUTES_264("ADMAIF1")
|
|
IN_OUT_ROUTES_264("ADMAIF2")
|
|
IN_OUT_ROUTES_264("ADMAIF3")
|
|
IN_OUT_ROUTES_264("ADMAIF4")
|
|
IN_OUT_ROUTES_264("ADMAIF5")
|
|
IN_OUT_ROUTES_264("ADMAIF6")
|
|
IN_OUT_ROUTES_264("ADMAIF7")
|
|
IN_OUT_ROUTES_264("ADMAIF8")
|
|
IN_OUT_ROUTES_264("ADMAIF9")
|
|
IN_OUT_ROUTES_264("ADMAIF10")
|
|
IN_OUT_ROUTES_264("ADMAIF11")
|
|
IN_OUT_ROUTES_264("ADMAIF12")
|
|
IN_OUT_ROUTES_264("ADMAIF13")
|
|
IN_OUT_ROUTES_264("ADMAIF14")
|
|
IN_OUT_ROUTES_264("ADMAIF15")
|
|
IN_OUT_ROUTES_264("ADMAIF16")
|
|
MIC_SPK_ROUTES_264("I2S1")
|
|
MIC_SPK_ROUTES_264("I2S2")
|
|
MIC_SPK_ROUTES_264("I2S3")
|
|
MIC_SPK_ROUTES_264("I2S4")
|
|
MIC_SPK_ROUTES_264("I2S5")
|
|
MIC_SPK_ROUTES_264("I2S6")
|
|
MIC_SPK_ROUTES_264("I2S7")
|
|
MIC_SPK_ROUTES_264("I2S8")
|
|
TEGRA264_ROUTES("SFC1")
|
|
TEGRA264_ROUTES("SFC2")
|
|
TEGRA264_ROUTES("SFC3")
|
|
TEGRA264_ROUTES("SFC4")
|
|
MIXER_IN_ROUTES_264("MIXER1 RX1")
|
|
MIXER_IN_ROUTES_264("MIXER1 RX2")
|
|
MIXER_IN_ROUTES_264("MIXER1 RX3")
|
|
MIXER_IN_ROUTES_264("MIXER1 RX4")
|
|
MIXER_IN_ROUTES_264("MIXER1 RX5")
|
|
MIXER_IN_ROUTES_264("MIXER1 RX6")
|
|
MIXER_IN_ROUTES_264("MIXER1 RX7")
|
|
MIXER_IN_ROUTES_264("MIXER1 RX8")
|
|
MIXER_IN_ROUTES_264("MIXER1 RX9")
|
|
MIXER_IN_ROUTES_264("MIXER1 RX10")
|
|
MIXER_ROUTES("MIXER1 Adder1", 1),
|
|
MIXER_ROUTES("MIXER1 Adder2", 2),
|
|
MIXER_ROUTES("MIXER1 Adder3", 3),
|
|
MIXER_ROUTES("MIXER1 Adder4", 4),
|
|
MIXER_ROUTES("MIXER1 Adder5", 5),
|
|
AMX_OUT_ROUTES("AMX1")
|
|
AMX_OUT_ROUTES("AMX2")
|
|
AMX_OUT_ROUTES("AMX3")
|
|
AMX_OUT_ROUTES("AMX4")
|
|
AMX_OUT_ROUTES("AMX5")
|
|
AMX_OUT_ROUTES("AMX6")
|
|
TEGRA264_ROUTES("AMX1 RX1")
|
|
TEGRA264_ROUTES("AMX1 RX2")
|
|
TEGRA264_ROUTES("AMX1 RX3")
|
|
TEGRA264_ROUTES("AMX1 RX4")
|
|
TEGRA264_ROUTES("AMX2 RX1")
|
|
TEGRA264_ROUTES("AMX2 RX2")
|
|
TEGRA264_ROUTES("AMX2 RX3")
|
|
TEGRA264_ROUTES("AMX2 RX4")
|
|
TEGRA264_ROUTES("AMX3 RX1")
|
|
TEGRA264_ROUTES("AMX3 RX2")
|
|
TEGRA264_ROUTES("AMX3 RX3")
|
|
TEGRA264_ROUTES("AMX3 RX4")
|
|
TEGRA264_ROUTES("AMX4 RX1")
|
|
TEGRA264_ROUTES("AMX4 RX2")
|
|
TEGRA264_ROUTES("AMX4 RX3")
|
|
TEGRA264_ROUTES("AMX4 RX4")
|
|
TEGRA264_ROUTES("AMX5 RX1")
|
|
TEGRA264_ROUTES("AMX5 RX2")
|
|
TEGRA264_ROUTES("AMX5 RX3")
|
|
TEGRA264_ROUTES("AMX5 RX4")
|
|
TEGRA264_ROUTES("AMX6 RX1")
|
|
TEGRA264_ROUTES("AMX6 RX2")
|
|
TEGRA264_ROUTES("AMX6 RX3")
|
|
TEGRA264_ROUTES("AMX6 RX4")
|
|
TEGRA264_ROUTES("AFC1")
|
|
TEGRA264_ROUTES("AFC2")
|
|
TEGRA264_ROUTES("AFC3")
|
|
TEGRA264_ROUTES("AFC4")
|
|
TEGRA264_ROUTES("AFC5")
|
|
TEGRA264_ROUTES("AFC6")
|
|
TEGRA264_ROUTES("OPE1")
|
|
TEGRA264_ROUTES("MVC1")
|
|
TEGRA264_ROUTES("MVC2")
|
|
ADX_IN_ROUTES_264("ADX1")
|
|
ADX_IN_ROUTES_264("ADX2")
|
|
ADX_IN_ROUTES_264("ADX3")
|
|
ADX_IN_ROUTES_264("ADX4")
|
|
ADX_IN_ROUTES_264("ADX5")
|
|
ADX_IN_ROUTES_264("ADX6")
|
|
TEGRA264_ROUTES("ASRC1 RX1")
|
|
TEGRA264_ROUTES("ASRC1 RX2")
|
|
TEGRA264_ROUTES("ASRC1 RX3")
|
|
TEGRA264_ROUTES("ASRC1 RX4")
|
|
TEGRA264_ROUTES("ASRC1 RX5")
|
|
TEGRA264_ROUTES("ASRC1 RX6")
|
|
IN_OUT_ROUTES_264("ADMAIF17")
|
|
IN_OUT_ROUTES_264("ADMAIF18")
|
|
IN_OUT_ROUTES_264("ADMAIF19")
|
|
IN_OUT_ROUTES_264("ADMAIF20")
|
|
IN_OUT_ROUTES_264("ADMAIF21")
|
|
IN_OUT_ROUTES_264("ADMAIF22")
|
|
IN_OUT_ROUTES_264("ADMAIF23")
|
|
IN_OUT_ROUTES_264("ADMAIF24")
|
|
IN_OUT_ROUTES_264("ADMAIF25")
|
|
IN_OUT_ROUTES_264("ADMAIF26")
|
|
IN_OUT_ROUTES_264("ADMAIF27")
|
|
IN_OUT_ROUTES_264("ADMAIF28")
|
|
IN_OUT_ROUTES_264("ADMAIF29")
|
|
IN_OUT_ROUTES_264("ADMAIF30")
|
|
IN_OUT_ROUTES_264("ADMAIF31")
|
|
IN_OUT_ROUTES_264("ADMAIF32")
|
|
};
|
|
|
|
static unsigned int tegra_virt_xbar_read(struct snd_soc_component *component,
|
|
unsigned int reg)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static int tegra_virt_xbar_write(struct snd_soc_component *component,
|
|
unsigned int reg, unsigned int val)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static int tegra_virt_xbar_component_probe(struct snd_soc_component *component)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static const struct snd_soc_component_driver tegra234_virt_xbar_codec = {
|
|
.probe = tegra_virt_xbar_component_probe,
|
|
.read = tegra_virt_xbar_read,
|
|
.write = tegra_virt_xbar_write,
|
|
.dapm_widgets = tegra234_virt_xbar_widgets,
|
|
.num_dapm_widgets = ARRAY_SIZE(tegra234_virt_xbar_widgets),
|
|
.dapm_routes = tegra234_virt_xbar_routes,
|
|
.num_dapm_routes = ARRAY_SIZE(tegra234_virt_xbar_routes),
|
|
};
|
|
|
|
static const struct snd_soc_component_driver tegra264_virt_xbar_codec = {
|
|
.probe = tegra_virt_xbar_component_probe,
|
|
.read = tegra_virt_xbar_read,
|
|
.write = tegra_virt_xbar_write,
|
|
.dapm_widgets = tegra264_virt_xbar_widgets,
|
|
.num_dapm_widgets = ARRAY_SIZE(tegra264_virt_xbar_widgets),
|
|
.dapm_routes = tegra264_virt_xbar_routes,
|
|
.num_dapm_routes = ARRAY_SIZE(tegra264_virt_xbar_routes),
|
|
};
|
|
|
|
int tegra_virt_get_route(struct snd_kcontrol *kcontrol,
|
|
struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
|
|
struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
|
|
struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
|
|
int32_t reg = e->reg;
|
|
struct nvaudio_ivc_ctxt *hivc_client =
|
|
nvaudio_ivc_alloc_ctxt(card->dev);
|
|
int err, i = 0;
|
|
struct nvaudio_ivc_msg msg;
|
|
|
|
memset(&msg, 0, sizeof(struct nvaudio_ivc_msg));
|
|
msg.cmd = NVAUDIO_XBAR_GET_ROUTE;
|
|
msg.params.xbar_info.rx_reg = reg;
|
|
|
|
err = nvaudio_ivc_send_receive(hivc_client,
|
|
&msg,
|
|
sizeof(struct nvaudio_ivc_msg));
|
|
if (err < 0)
|
|
pr_err("%s: error on ivc_send_receive\n", __func__);
|
|
|
|
for (i = 0; i < e->items; i++) {
|
|
if (msg.params.xbar_info.bit_pos ==
|
|
e->values[i])
|
|
break;
|
|
}
|
|
|
|
if (i == e->items)
|
|
ucontrol->value.integer.value[0] = 0;
|
|
|
|
ucontrol->value.integer.value[0] = i;
|
|
|
|
if (err < 0)
|
|
return err;
|
|
|
|
return 0;
|
|
}
|
|
EXPORT_SYMBOL(tegra_virt_get_route);
|
|
|
|
|
|
int tegra_virt_put_route(struct snd_kcontrol *kcontrol,
|
|
struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
|
|
struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
|
|
int32_t reg = e->reg;
|
|
struct nvaudio_ivc_ctxt *hivc_client =
|
|
nvaudio_ivc_alloc_ctxt(card->dev);
|
|
int err;
|
|
struct nvaudio_ivc_msg msg;
|
|
struct snd_soc_dapm_context *dapm =
|
|
snd_soc_dapm_kcontrol_dapm(kcontrol);
|
|
|
|
memset(&msg, 0, sizeof(struct nvaudio_ivc_msg));
|
|
msg.cmd = NVAUDIO_XBAR_SET_ROUTE;
|
|
msg.params.xbar_info.rx_reg = reg;
|
|
msg.params.xbar_info.tx_value =
|
|
e->values[ucontrol->value.integer.value[0]];
|
|
|
|
msg.params.xbar_info.tx_idx =
|
|
ucontrol->value.integer.value[0] - 1;
|
|
msg.ack_required = true;
|
|
|
|
err = nvaudio_ivc_send_receive(hivc_client,
|
|
&msg,
|
|
sizeof(struct nvaudio_ivc_msg));
|
|
if (err < 0) {
|
|
pr_err("%s: error on ivc_send_receive\n", __func__);
|
|
|
|
return err;
|
|
}
|
|
|
|
snd_soc_dapm_mux_update_power(dapm, kcontrol,
|
|
ucontrol->value.integer.value[0], e, NULL);
|
|
|
|
return 0;
|
|
}
|
|
EXPORT_SYMBOL(tegra_virt_put_route);
|
|
|
|
void tegra_virt_set_enum_source(const struct soc_enum *enum_virt)
|
|
{
|
|
tegra_virt_enum_source = enum_virt;
|
|
}
|
|
EXPORT_SYMBOL(tegra_virt_set_enum_source);
|
|
|
|
static inline const struct soc_enum *tegra_virt_get_enum_source(void)
|
|
{
|
|
return tegra_virt_enum_source;
|
|
}
|
|
|
|
int tegra_virt_xbar_register_codec(struct platform_device *pdev)
|
|
{
|
|
|
|
int ret;
|
|
|
|
if (of_device_is_compatible(pdev->dev.of_node,
|
|
"nvidia,tegra264-virt-pcm-oot")) {
|
|
ret = tegra_register_component(&pdev->dev,
|
|
&tegra264_virt_xbar_codec,
|
|
tegra264_virt_xbar_dais,
|
|
ARRAY_SIZE(tegra264_virt_xbar_dais), "xbar");
|
|
} else if (of_device_is_compatible(pdev->dev.of_node,
|
|
"nvidia,tegra234-virt-pcm-oot")) {
|
|
ret = tegra_register_component(&pdev->dev,
|
|
&tegra234_virt_xbar_codec,
|
|
tegra234_virt_xbar_dais,
|
|
ARRAY_SIZE(tegra234_virt_xbar_dais), "xbar");
|
|
}
|
|
|
|
if (ret != 0) {
|
|
dev_err(&pdev->dev, "Could not register CODEC: %d\n", ret);
|
|
return -EBUSY;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
EXPORT_SYMBOL(tegra_virt_xbar_register_codec);
|
|
MODULE_AUTHOR("Dipesh Gandhi <dipeshg@nvidia.com>");
|
|
MODULE_DESCRIPTION("Tegra Virt ASoC XBAR code");
|
|
MODULE_LICENSE("GPL");
|