Skip to content

Commit 35c0d1d

Browse files
Sheetalbroonie
authored andcommitted
ASoC: tegra: CIF: Add Tegra264 support
In Tegra264, the CIF register data bit positions are changed for I2S, AMX, ADX and ADMAIF AHUB modules, as they now support a maximum of 32 channels. tegra264_set_cif API added to set the CIF for IPs supporting 32 channels. Signed-off-by: Sheetal <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent 628dafc commit 35c0d1d

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

sound/soc/tegra/tegra_cif.h

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
/* SPDX-License-Identifier: GPL-2.0-only */
2-
/*
3-
* tegra_cif.h - TEGRA Audio CIF Programming
1+
/* SPDX-License-Identifier: GPL-2.0-only
2+
* SPDX-FileCopyrightText: Copyright (c) 2020-2025 NVIDIA CORPORATION. All rights reserved.
43
*
5-
* Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved.
4+
* tegra_cif.h - TEGRA Audio CIF Programming
65
*
76
*/
87

@@ -22,6 +21,10 @@
2221
#define TEGRA_ACIF_CTRL_TRUNCATE_SHIFT 1
2322
#define TEGRA_ACIF_CTRL_MONO_CONV_SHIFT 0
2423

24+
#define TEGRA264_ACIF_CTRL_AUDIO_BITS_SHIFT 11
25+
#define TEGRA264_ACIF_CTRL_CLIENT_CH_SHIFT 14
26+
#define TEGRA264_ACIF_CTRL_AUDIO_CH_SHIFT 19
27+
2528
/* AUDIO/CLIENT_BITS values */
2629
#define TEGRA_ACIF_BITS_8 1
2730
#define TEGRA_ACIF_BITS_16 3
@@ -62,4 +65,23 @@ static inline void tegra_set_cif(struct regmap *regmap, unsigned int reg,
6265
regmap_update_bits(regmap, reg, TEGRA_ACIF_UPDATE_MASK, value);
6366
}
6467

68+
static inline void tegra264_set_cif(struct regmap *regmap, unsigned int reg,
69+
struct tegra_cif_conf *conf)
70+
{
71+
unsigned int value;
72+
73+
value = (conf->threshold << TEGRA_ACIF_CTRL_FIFO_TH_SHIFT) |
74+
((conf->audio_ch - 1) << TEGRA264_ACIF_CTRL_AUDIO_CH_SHIFT) |
75+
((conf->client_ch - 1) << TEGRA264_ACIF_CTRL_CLIENT_CH_SHIFT) |
76+
(conf->audio_bits << TEGRA264_ACIF_CTRL_AUDIO_BITS_SHIFT) |
77+
(conf->client_bits << TEGRA_ACIF_CTRL_CLIENT_BITS_SHIFT) |
78+
(conf->expand << TEGRA_ACIF_CTRL_EXPAND_SHIFT) |
79+
(conf->stereo_conv << TEGRA_ACIF_CTRL_STEREO_CONV_SHIFT) |
80+
(conf->replicate << TEGRA_ACIF_CTRL_REPLICATE_SHIFT) |
81+
(conf->truncate << TEGRA_ACIF_CTRL_TRUNCATE_SHIFT) |
82+
(conf->mono_conv << TEGRA_ACIF_CTRL_MONO_CONV_SHIFT);
83+
84+
regmap_update_bits(regmap, reg, TEGRA_ACIF_UPDATE_MASK, value);
85+
}
86+
6587
#endif

0 commit comments

Comments
 (0)