mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-01 10:43:43 +00:00
ASoC: mediatek: Commonize ADDA rate transform functions and enums
Both the enumerations for UL/DL rates, delay data and the functions adda_{dl,ul}_rate_transform were duplicated for each MediaTek SoC dai-adda driver: move the common bits to a new mtk-dai-adda-common file and its header. While at it, also add the "mtk_" prefix to the exported functions. Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Link: https://msgid.link/r/20240313110147.1267793-4-angelogioacchino.delregno@collabora.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
324c603a4e
commit
d6c0175580
@ -1,6 +1,8 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# platform driver
|
||||
snd-soc-mtk-common-objs := mtk-afe-platform-driver.o mtk-afe-fe-dai.o mtk-dsp-sof-common.o mtk-soundcard-driver.o
|
||||
snd-soc-mtk-common-objs += mtk-dai-adda-common.o
|
||||
|
||||
obj-$(CONFIG_SND_SOC_MEDIATEK) += snd-soc-mtk-common.o
|
||||
|
||||
obj-$(CONFIG_SND_SOC_MTK_BTCVSD) += mtk-btcvsd.o
|
||||
|
70
sound/soc/mediatek/common/mtk-dai-adda-common.c
Normal file
70
sound/soc/mediatek/common/mtk-dai-adda-common.c
Normal file
@ -0,0 +1,70 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* MediaTek ALSA SoC Audio DAI ADDA Common
|
||||
*
|
||||
* Copyright (c) 2021 MediaTek Inc.
|
||||
* Copyright (c) 2024 Collabora Ltd.
|
||||
* AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
*/
|
||||
|
||||
#include <linux/delay.h>
|
||||
#include <linux/dev_printk.h>
|
||||
|
||||
#include "mtk-base-afe.h"
|
||||
#include "mtk-dai-adda-common.h"
|
||||
|
||||
unsigned int mtk_adda_dl_rate_transform(struct mtk_base_afe *afe, u32 rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_DL_RATE_8K;
|
||||
case 11025:
|
||||
return MTK_AFE_ADDA_DL_RATE_11K;
|
||||
case 12000:
|
||||
return MTK_AFE_ADDA_DL_RATE_12K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_DL_RATE_16K;
|
||||
case 22050:
|
||||
return MTK_AFE_ADDA_DL_RATE_22K;
|
||||
case 24000:
|
||||
return MTK_AFE_ADDA_DL_RATE_24K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_DL_RATE_32K;
|
||||
case 44100:
|
||||
return MTK_AFE_ADDA_DL_RATE_44K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_DL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_DL_RATE_192K;
|
||||
default:
|
||||
dev_info(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mtk_adda_dl_rate_transform);
|
||||
|
||||
unsigned int mtk_adda_ul_rate_transform(struct mtk_base_afe *afe, u32 rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_UL_RATE_8K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_UL_RATE_16K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_UL_RATE_32K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_UL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_UL_RATE_192K;
|
||||
default:
|
||||
dev_info(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mtk_adda_ul_rate_transform);
|
45
sound/soc/mediatek/common/mtk-dai-adda-common.h
Normal file
45
sound/soc/mediatek/common/mtk-dai-adda-common.h
Normal file
@ -0,0 +1,45 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2021 MediaTek Inc.
|
||||
* Copyright (c) 2024 Collabora Ltd.
|
||||
* AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
*/
|
||||
|
||||
#ifndef _MTK_DAI_ADDA_COMMON_H_
|
||||
#define _MTK_DAI_ADDA_COMMON_H_
|
||||
|
||||
struct mtk_base_afe;
|
||||
|
||||
enum adda_input_mode_rate {
|
||||
MTK_AFE_ADDA_DL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_DL_RATE_11K = 1,
|
||||
MTK_AFE_ADDA_DL_RATE_12K = 2,
|
||||
MTK_AFE_ADDA_DL_RATE_16K = 3,
|
||||
MTK_AFE_ADDA_DL_RATE_22K = 4,
|
||||
MTK_AFE_ADDA_DL_RATE_24K = 5,
|
||||
MTK_AFE_ADDA_DL_RATE_32K = 6,
|
||||
MTK_AFE_ADDA_DL_RATE_44K = 7,
|
||||
MTK_AFE_ADDA_DL_RATE_48K = 8,
|
||||
MTK_AFE_ADDA_DL_RATE_96K = 9,
|
||||
MTK_AFE_ADDA_DL_RATE_192K = 10,
|
||||
};
|
||||
|
||||
enum adda_voice_mode_rate {
|
||||
MTK_AFE_ADDA_UL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_UL_RATE_16K = 1,
|
||||
MTK_AFE_ADDA_UL_RATE_32K = 2,
|
||||
MTK_AFE_ADDA_UL_RATE_48K = 3,
|
||||
MTK_AFE_ADDA_UL_RATE_96K = 4,
|
||||
MTK_AFE_ADDA_UL_RATE_192K = 5,
|
||||
MTK_AFE_ADDA_UL_RATE_48K_HD = 6,
|
||||
};
|
||||
|
||||
enum adda_rxif_delay_data {
|
||||
DELAY_DATA_MISO1 = 0,
|
||||
DELAY_DATA_MISO0 = 1,
|
||||
DELAY_DATA_MISO2 = 1,
|
||||
};
|
||||
|
||||
unsigned int mtk_adda_dl_rate_transform(struct mtk_base_afe *afe, u32 rate);
|
||||
unsigned int mtk_adda_ul_rate_transform(struct mtk_base_afe *afe, u32 rate);
|
||||
#endif
|
@ -10,86 +10,7 @@
|
||||
#include "mt6797-afe-common.h"
|
||||
#include "mt6797-interconnection.h"
|
||||
#include "mt6797-reg.h"
|
||||
|
||||
enum {
|
||||
MTK_AFE_ADDA_DL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_DL_RATE_11K = 1,
|
||||
MTK_AFE_ADDA_DL_RATE_12K = 2,
|
||||
MTK_AFE_ADDA_DL_RATE_16K = 3,
|
||||
MTK_AFE_ADDA_DL_RATE_22K = 4,
|
||||
MTK_AFE_ADDA_DL_RATE_24K = 5,
|
||||
MTK_AFE_ADDA_DL_RATE_32K = 6,
|
||||
MTK_AFE_ADDA_DL_RATE_44K = 7,
|
||||
MTK_AFE_ADDA_DL_RATE_48K = 8,
|
||||
MTK_AFE_ADDA_DL_RATE_96K = 9,
|
||||
MTK_AFE_ADDA_DL_RATE_192K = 10,
|
||||
};
|
||||
|
||||
enum {
|
||||
MTK_AFE_ADDA_UL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_UL_RATE_16K = 1,
|
||||
MTK_AFE_ADDA_UL_RATE_32K = 2,
|
||||
MTK_AFE_ADDA_UL_RATE_48K = 3,
|
||||
MTK_AFE_ADDA_UL_RATE_96K = 4,
|
||||
MTK_AFE_ADDA_UL_RATE_192K = 5,
|
||||
MTK_AFE_ADDA_UL_RATE_48K_HD = 6,
|
||||
};
|
||||
|
||||
static unsigned int adda_dl_rate_transform(struct mtk_base_afe *afe,
|
||||
unsigned int rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_DL_RATE_8K;
|
||||
case 11025:
|
||||
return MTK_AFE_ADDA_DL_RATE_11K;
|
||||
case 12000:
|
||||
return MTK_AFE_ADDA_DL_RATE_12K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_DL_RATE_16K;
|
||||
case 22050:
|
||||
return MTK_AFE_ADDA_DL_RATE_22K;
|
||||
case 24000:
|
||||
return MTK_AFE_ADDA_DL_RATE_24K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_DL_RATE_32K;
|
||||
case 44100:
|
||||
return MTK_AFE_ADDA_DL_RATE_44K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_DL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_DL_RATE_192K;
|
||||
default:
|
||||
dev_warn(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned int adda_ul_rate_transform(struct mtk_base_afe *afe,
|
||||
unsigned int rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_UL_RATE_8K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_UL_RATE_16K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_UL_RATE_32K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_UL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_UL_RATE_192K;
|
||||
default:
|
||||
dev_warn(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
}
|
||||
}
|
||||
#include "../common/mtk-dai-adda-common.h"
|
||||
|
||||
/* dai component */
|
||||
static const struct snd_kcontrol_new mtk_adda_dl_ch1_mix[] = {
|
||||
@ -246,7 +167,7 @@ static int mtk_dai_adda_hw_params(struct snd_pcm_substream *substream,
|
||||
regmap_write(afe->regmap, AFE_ADDA_PREDIS_CON1, 0);
|
||||
|
||||
/* set input sampling rate */
|
||||
dl_src2_con0 = adda_dl_rate_transform(afe, rate) << 28;
|
||||
dl_src2_con0 = mtk_adda_dl_rate_transform(afe, rate) << 28;
|
||||
|
||||
/* set output mode */
|
||||
switch (rate) {
|
||||
@ -296,7 +217,7 @@ static int mtk_dai_adda_hw_params(struct snd_pcm_substream *substream,
|
||||
0x1 << 0,
|
||||
0x0 << 0);
|
||||
|
||||
voice_mode = adda_ul_rate_transform(afe, rate);
|
||||
voice_mode = mtk_adda_ul_rate_transform(afe, rate);
|
||||
|
||||
ul_src_con0 |= (voice_mode << 17) & (0x7 << 17);
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "mt8183-afe-common.h"
|
||||
#include "mt8183-interconnection.h"
|
||||
#include "mt8183-reg.h"
|
||||
#include "../common/mtk-dai-adda-common.h"
|
||||
|
||||
enum {
|
||||
AUDIO_SDM_LEVEL_MUTE = 0,
|
||||
@ -18,91 +19,6 @@ enum {
|
||||
/* you need to change formula of hp impedance and dc trim too */
|
||||
};
|
||||
|
||||
enum {
|
||||
DELAY_DATA_MISO1 = 0,
|
||||
DELAY_DATA_MISO2,
|
||||
};
|
||||
|
||||
enum {
|
||||
MTK_AFE_ADDA_DL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_DL_RATE_11K = 1,
|
||||
MTK_AFE_ADDA_DL_RATE_12K = 2,
|
||||
MTK_AFE_ADDA_DL_RATE_16K = 3,
|
||||
MTK_AFE_ADDA_DL_RATE_22K = 4,
|
||||
MTK_AFE_ADDA_DL_RATE_24K = 5,
|
||||
MTK_AFE_ADDA_DL_RATE_32K = 6,
|
||||
MTK_AFE_ADDA_DL_RATE_44K = 7,
|
||||
MTK_AFE_ADDA_DL_RATE_48K = 8,
|
||||
MTK_AFE_ADDA_DL_RATE_96K = 9,
|
||||
MTK_AFE_ADDA_DL_RATE_192K = 10,
|
||||
};
|
||||
|
||||
enum {
|
||||
MTK_AFE_ADDA_UL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_UL_RATE_16K = 1,
|
||||
MTK_AFE_ADDA_UL_RATE_32K = 2,
|
||||
MTK_AFE_ADDA_UL_RATE_48K = 3,
|
||||
MTK_AFE_ADDA_UL_RATE_96K = 4,
|
||||
MTK_AFE_ADDA_UL_RATE_192K = 5,
|
||||
MTK_AFE_ADDA_UL_RATE_48K_HD = 6,
|
||||
};
|
||||
|
||||
static unsigned int adda_dl_rate_transform(struct mtk_base_afe *afe,
|
||||
unsigned int rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_DL_RATE_8K;
|
||||
case 11025:
|
||||
return MTK_AFE_ADDA_DL_RATE_11K;
|
||||
case 12000:
|
||||
return MTK_AFE_ADDA_DL_RATE_12K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_DL_RATE_16K;
|
||||
case 22050:
|
||||
return MTK_AFE_ADDA_DL_RATE_22K;
|
||||
case 24000:
|
||||
return MTK_AFE_ADDA_DL_RATE_24K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_DL_RATE_32K;
|
||||
case 44100:
|
||||
return MTK_AFE_ADDA_DL_RATE_44K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_DL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_DL_RATE_192K;
|
||||
default:
|
||||
dev_warn(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned int adda_ul_rate_transform(struct mtk_base_afe *afe,
|
||||
unsigned int rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_UL_RATE_8K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_UL_RATE_16K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_UL_RATE_32K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_UL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_UL_RATE_192K;
|
||||
default:
|
||||
dev_warn(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
}
|
||||
}
|
||||
|
||||
/* dai component */
|
||||
static const struct snd_kcontrol_new mtk_adda_dl_ch1_mix[] = {
|
||||
SOC_DAPM_SINGLE_AUTODISABLE("DL1_CH1", AFE_CONN3, I_DL1_CH1, 1, 0),
|
||||
@ -369,7 +285,7 @@ static int mtk_dai_adda_hw_params(struct snd_pcm_substream *substream,
|
||||
regmap_write(afe->regmap, AFE_ADDA_PREDIS_CON1, 0);
|
||||
|
||||
/* set sampling rate */
|
||||
dl_src2_con0 = adda_dl_rate_transform(afe, rate) << 28;
|
||||
dl_src2_con0 = mtk_adda_dl_rate_transform(afe, rate) << 28;
|
||||
|
||||
/* set output mode */
|
||||
switch (rate) {
|
||||
@ -420,7 +336,7 @@ static int mtk_dai_adda_hw_params(struct snd_pcm_substream *substream,
|
||||
0x1 << 0,
|
||||
0x0 << 0);
|
||||
|
||||
voice_mode = adda_ul_rate_transform(afe, rate);
|
||||
voice_mode = mtk_adda_ul_rate_transform(afe, rate);
|
||||
|
||||
ul_src_con0 |= (voice_mode << 17) & (0x7 << 17);
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "mt8186-afe-common.h"
|
||||
#include "mt8186-afe-gpio.h"
|
||||
#include "mt8186-interconnection.h"
|
||||
#include "../common/mtk-dai-adda-common.h"
|
||||
|
||||
enum {
|
||||
UL_IIR_SW = 0,
|
||||
@ -33,35 +34,6 @@ enum {
|
||||
AUDIO_SDM_3RD,
|
||||
};
|
||||
|
||||
enum {
|
||||
DELAY_DATA_MISO1 = 0,
|
||||
DELAY_DATA_MISO2,
|
||||
};
|
||||
|
||||
enum {
|
||||
MTK_AFE_ADDA_DL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_DL_RATE_11K = 1,
|
||||
MTK_AFE_ADDA_DL_RATE_12K = 2,
|
||||
MTK_AFE_ADDA_DL_RATE_16K = 3,
|
||||
MTK_AFE_ADDA_DL_RATE_22K = 4,
|
||||
MTK_AFE_ADDA_DL_RATE_24K = 5,
|
||||
MTK_AFE_ADDA_DL_RATE_32K = 6,
|
||||
MTK_AFE_ADDA_DL_RATE_44K = 7,
|
||||
MTK_AFE_ADDA_DL_RATE_48K = 8,
|
||||
MTK_AFE_ADDA_DL_RATE_96K = 9,
|
||||
MTK_AFE_ADDA_DL_RATE_192K = 10,
|
||||
};
|
||||
|
||||
enum {
|
||||
MTK_AFE_ADDA_UL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_UL_RATE_16K = 1,
|
||||
MTK_AFE_ADDA_UL_RATE_32K = 2,
|
||||
MTK_AFE_ADDA_UL_RATE_48K = 3,
|
||||
MTK_AFE_ADDA_UL_RATE_96K = 4,
|
||||
MTK_AFE_ADDA_UL_RATE_192K = 5,
|
||||
MTK_AFE_ADDA_UL_RATE_48K_HD = 6,
|
||||
};
|
||||
|
||||
#define SDM_AUTO_RESET_THRESHOLD 0x190000
|
||||
|
||||
struct mtk_afe_adda_priv {
|
||||
@ -83,64 +55,6 @@ static struct mtk_afe_adda_priv *get_adda_priv_by_name(struct mtk_base_afe *afe,
|
||||
return afe_priv->dai_priv[dai_id];
|
||||
}
|
||||
|
||||
static unsigned int adda_dl_rate_transform(struct mtk_base_afe *afe,
|
||||
unsigned int rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_DL_RATE_8K;
|
||||
case 11025:
|
||||
return MTK_AFE_ADDA_DL_RATE_11K;
|
||||
case 12000:
|
||||
return MTK_AFE_ADDA_DL_RATE_12K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_DL_RATE_16K;
|
||||
case 22050:
|
||||
return MTK_AFE_ADDA_DL_RATE_22K;
|
||||
case 24000:
|
||||
return MTK_AFE_ADDA_DL_RATE_24K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_DL_RATE_32K;
|
||||
case 44100:
|
||||
return MTK_AFE_ADDA_DL_RATE_44K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_DL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_DL_RATE_192K;
|
||||
default:
|
||||
dev_dbg(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
}
|
||||
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
}
|
||||
|
||||
static unsigned int adda_ul_rate_transform(struct mtk_base_afe *afe,
|
||||
unsigned int rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_UL_RATE_8K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_UL_RATE_16K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_UL_RATE_32K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_UL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_UL_RATE_192K;
|
||||
default:
|
||||
dev_dbg(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
}
|
||||
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
}
|
||||
|
||||
/* dai component */
|
||||
static const struct snd_kcontrol_new mtk_adda_dl_ch1_mix[] = {
|
||||
SOC_DAPM_SINGLE_AUTODISABLE("DL1_CH1 Switch", AFE_CONN3, I_DL1_CH1, 1, 0),
|
||||
@ -658,7 +572,7 @@ static int mtk_dai_adda_hw_params(struct snd_pcm_substream *substream,
|
||||
adda_priv->dl_rate = rate;
|
||||
|
||||
/* set sampling rate */
|
||||
dl_src2_con0 = adda_dl_rate_transform(afe, rate) <<
|
||||
dl_src2_con0 = mtk_adda_dl_rate_transform(afe, rate) <<
|
||||
DL_2_INPUT_MODE_CTL_SFT;
|
||||
|
||||
/* set output mode, UP_SAMPLING_RATE_X8 */
|
||||
@ -721,7 +635,7 @@ static int mtk_dai_adda_hw_params(struct snd_pcm_substream *substream,
|
||||
}
|
||||
} else {
|
||||
unsigned int ul_src_con0 = 0;
|
||||
unsigned int voice_mode = adda_ul_rate_transform(afe, rate);
|
||||
unsigned int voice_mode = mtk_adda_ul_rate_transform(afe, rate);
|
||||
|
||||
adda_priv->ul_rate = rate;
|
||||
ul_src_con0 |= (voice_mode << 17) & (0x7 << 17);
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "mt8188-afe-clk.h"
|
||||
#include "mt8188-afe-common.h"
|
||||
#include "mt8188-reg.h"
|
||||
#include "../common/mtk-dai-adda-common.h"
|
||||
|
||||
#define ADDA_HIRES_THRES 48000
|
||||
|
||||
@ -24,94 +25,10 @@ enum {
|
||||
SUPPLY_SEQ_ADDA_AFE_ON,
|
||||
};
|
||||
|
||||
enum {
|
||||
MTK_AFE_ADDA_DL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_DL_RATE_11K = 1,
|
||||
MTK_AFE_ADDA_DL_RATE_12K = 2,
|
||||
MTK_AFE_ADDA_DL_RATE_16K = 3,
|
||||
MTK_AFE_ADDA_DL_RATE_22K = 4,
|
||||
MTK_AFE_ADDA_DL_RATE_24K = 5,
|
||||
MTK_AFE_ADDA_DL_RATE_32K = 6,
|
||||
MTK_AFE_ADDA_DL_RATE_44K = 7,
|
||||
MTK_AFE_ADDA_DL_RATE_48K = 8,
|
||||
MTK_AFE_ADDA_DL_RATE_96K = 9,
|
||||
MTK_AFE_ADDA_DL_RATE_192K = 10,
|
||||
};
|
||||
|
||||
enum {
|
||||
MTK_AFE_ADDA_UL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_UL_RATE_16K = 1,
|
||||
MTK_AFE_ADDA_UL_RATE_32K = 2,
|
||||
MTK_AFE_ADDA_UL_RATE_48K = 3,
|
||||
MTK_AFE_ADDA_UL_RATE_96K = 4,
|
||||
MTK_AFE_ADDA_UL_RATE_192K = 5,
|
||||
};
|
||||
|
||||
enum {
|
||||
DELAY_DATA_MISO1 = 0,
|
||||
DELAY_DATA_MISO0 = 1,
|
||||
};
|
||||
|
||||
struct mtk_dai_adda_priv {
|
||||
bool hires_required;
|
||||
};
|
||||
|
||||
static unsigned int afe_adda_dl_rate_transform(struct mtk_base_afe *afe,
|
||||
unsigned int rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_DL_RATE_8K;
|
||||
case 11025:
|
||||
return MTK_AFE_ADDA_DL_RATE_11K;
|
||||
case 12000:
|
||||
return MTK_AFE_ADDA_DL_RATE_12K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_DL_RATE_16K;
|
||||
case 22050:
|
||||
return MTK_AFE_ADDA_DL_RATE_22K;
|
||||
case 24000:
|
||||
return MTK_AFE_ADDA_DL_RATE_24K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_DL_RATE_32K;
|
||||
case 44100:
|
||||
return MTK_AFE_ADDA_DL_RATE_44K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_DL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_DL_RATE_192K;
|
||||
default:
|
||||
dev_info(afe->dev, "%s(), rate %u invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned int afe_adda_ul_rate_transform(struct mtk_base_afe *afe,
|
||||
unsigned int rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_UL_RATE_8K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_UL_RATE_16K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_UL_RATE_32K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_UL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_UL_RATE_192K;
|
||||
default:
|
||||
dev_info(afe->dev, "%s(), rate %u invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
}
|
||||
}
|
||||
|
||||
static int mt8188_adda_mtkaif_init(struct mtk_base_afe *afe)
|
||||
{
|
||||
struct mt8188_afe_private *afe_priv = afe->platform_priv;
|
||||
@ -440,7 +357,7 @@ static int mtk_dai_da_configure(struct mtk_base_afe *afe,
|
||||
/* set sampling rate */
|
||||
mask |= DL_2_INPUT_MODE_CTL_MASK;
|
||||
val |= FIELD_PREP(DL_2_INPUT_MODE_CTL_MASK,
|
||||
afe_adda_dl_rate_transform(afe, rate));
|
||||
mtk_adda_dl_rate_transform(afe, rate));
|
||||
|
||||
/* turn off saturation */
|
||||
mask |= DL_2_CH1_SATURATION_EN_CTL;
|
||||
@ -474,7 +391,7 @@ static int mtk_dai_ad_configure(struct mtk_base_afe *afe,
|
||||
|
||||
mask = UL_VOICE_MODE_CTL_MASK;
|
||||
val = FIELD_PREP(UL_VOICE_MODE_CTL_MASK,
|
||||
afe_adda_ul_rate_transform(afe, rate));
|
||||
mtk_adda_ul_rate_transform(afe, rate));
|
||||
|
||||
regmap_update_bits(afe->regmap, AFE_ADDA_UL_SRC_CON0,
|
||||
mask, val);
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "mt8192-afe-common.h"
|
||||
#include "mt8192-afe-gpio.h"
|
||||
#include "mt8192-interconnection.h"
|
||||
#include "../common/mtk-dai-adda-common.h"
|
||||
|
||||
enum {
|
||||
UL_IIR_SW = 0,
|
||||
@ -35,93 +36,8 @@ enum {
|
||||
AUDIO_SDM_3RD,
|
||||
};
|
||||
|
||||
enum {
|
||||
DELAY_DATA_MISO1 = 0,
|
||||
DELAY_DATA_MISO2,
|
||||
};
|
||||
|
||||
enum {
|
||||
MTK_AFE_ADDA_DL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_DL_RATE_11K = 1,
|
||||
MTK_AFE_ADDA_DL_RATE_12K = 2,
|
||||
MTK_AFE_ADDA_DL_RATE_16K = 3,
|
||||
MTK_AFE_ADDA_DL_RATE_22K = 4,
|
||||
MTK_AFE_ADDA_DL_RATE_24K = 5,
|
||||
MTK_AFE_ADDA_DL_RATE_32K = 6,
|
||||
MTK_AFE_ADDA_DL_RATE_44K = 7,
|
||||
MTK_AFE_ADDA_DL_RATE_48K = 8,
|
||||
MTK_AFE_ADDA_DL_RATE_96K = 9,
|
||||
MTK_AFE_ADDA_DL_RATE_192K = 10,
|
||||
};
|
||||
|
||||
enum {
|
||||
MTK_AFE_ADDA_UL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_UL_RATE_16K = 1,
|
||||
MTK_AFE_ADDA_UL_RATE_32K = 2,
|
||||
MTK_AFE_ADDA_UL_RATE_48K = 3,
|
||||
MTK_AFE_ADDA_UL_RATE_96K = 4,
|
||||
MTK_AFE_ADDA_UL_RATE_192K = 5,
|
||||
MTK_AFE_ADDA_UL_RATE_48K_HD = 6,
|
||||
};
|
||||
|
||||
#define SDM_AUTO_RESET_THRESHOLD 0x190000
|
||||
|
||||
static unsigned int adda_dl_rate_transform(struct mtk_base_afe *afe,
|
||||
unsigned int rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_DL_RATE_8K;
|
||||
case 11025:
|
||||
return MTK_AFE_ADDA_DL_RATE_11K;
|
||||
case 12000:
|
||||
return MTK_AFE_ADDA_DL_RATE_12K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_DL_RATE_16K;
|
||||
case 22050:
|
||||
return MTK_AFE_ADDA_DL_RATE_22K;
|
||||
case 24000:
|
||||
return MTK_AFE_ADDA_DL_RATE_24K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_DL_RATE_32K;
|
||||
case 44100:
|
||||
return MTK_AFE_ADDA_DL_RATE_44K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_DL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_DL_RATE_192K;
|
||||
default:
|
||||
dev_warn(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned int adda_ul_rate_transform(struct mtk_base_afe *afe,
|
||||
unsigned int rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_UL_RATE_8K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_UL_RATE_16K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_UL_RATE_32K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_UL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_UL_RATE_192K;
|
||||
default:
|
||||
dev_warn(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
}
|
||||
}
|
||||
|
||||
/* dai component */
|
||||
static const struct snd_kcontrol_new mtk_adda_dl_ch1_mix[] = {
|
||||
SOC_DAPM_SINGLE_AUTODISABLE("DL1_CH1", AFE_CONN3, I_DL1_CH1, 1, 0),
|
||||
@ -1156,7 +1072,7 @@ static int mtk_dai_adda_hw_params(struct snd_pcm_substream *substream,
|
||||
unsigned int dl_src2_con1 = 0;
|
||||
|
||||
/* set sampling rate */
|
||||
dl_src2_con0 = adda_dl_rate_transform(afe, rate) <<
|
||||
dl_src2_con0 = mtk_adda_dl_rate_transform(afe, rate) <<
|
||||
DL_2_INPUT_MODE_CTL_SFT;
|
||||
|
||||
/* set output mode, UP_SAMPLING_RATE_X8 */
|
||||
@ -1246,7 +1162,7 @@ static int mtk_dai_adda_hw_params(struct snd_pcm_substream *substream,
|
||||
unsigned int voice_mode = 0;
|
||||
unsigned int ul_src_con0 = 0; /* default value */
|
||||
|
||||
voice_mode = adda_ul_rate_transform(afe, rate);
|
||||
voice_mode = mtk_adda_ul_rate_transform(afe, rate);
|
||||
|
||||
ul_src_con0 |= (voice_mode << 17) & (0x7 << 17);
|
||||
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "mt8195-afe-clk.h"
|
||||
#include "mt8195-afe-common.h"
|
||||
#include "mt8195-reg.h"
|
||||
#include "../common/mtk-dai-adda-common.h"
|
||||
|
||||
#define ADDA_DL_GAIN_LOOPBACK 0x1800
|
||||
#define ADDA_HIRES_THRES 48000
|
||||
@ -25,35 +26,6 @@ enum {
|
||||
SUPPLY_SEQ_ADDA_AFE_ON,
|
||||
};
|
||||
|
||||
enum {
|
||||
MTK_AFE_ADDA_DL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_DL_RATE_11K = 1,
|
||||
MTK_AFE_ADDA_DL_RATE_12K = 2,
|
||||
MTK_AFE_ADDA_DL_RATE_16K = 3,
|
||||
MTK_AFE_ADDA_DL_RATE_22K = 4,
|
||||
MTK_AFE_ADDA_DL_RATE_24K = 5,
|
||||
MTK_AFE_ADDA_DL_RATE_32K = 6,
|
||||
MTK_AFE_ADDA_DL_RATE_44K = 7,
|
||||
MTK_AFE_ADDA_DL_RATE_48K = 8,
|
||||
MTK_AFE_ADDA_DL_RATE_96K = 9,
|
||||
MTK_AFE_ADDA_DL_RATE_192K = 10,
|
||||
};
|
||||
|
||||
enum {
|
||||
MTK_AFE_ADDA_UL_RATE_8K = 0,
|
||||
MTK_AFE_ADDA_UL_RATE_16K = 1,
|
||||
MTK_AFE_ADDA_UL_RATE_32K = 2,
|
||||
MTK_AFE_ADDA_UL_RATE_48K = 3,
|
||||
MTK_AFE_ADDA_UL_RATE_96K = 4,
|
||||
MTK_AFE_ADDA_UL_RATE_192K = 5,
|
||||
};
|
||||
|
||||
enum {
|
||||
DELAY_DATA_MISO1 = 0,
|
||||
DELAY_DATA_MISO0 = 1,
|
||||
DELAY_DATA_MISO2 = 1,
|
||||
};
|
||||
|
||||
enum {
|
||||
MTK_AFE_ADDA,
|
||||
MTK_AFE_ADDA6,
|
||||
@ -63,62 +35,6 @@ struct mtk_dai_adda_priv {
|
||||
bool hires_required;
|
||||
};
|
||||
|
||||
static unsigned int afe_adda_dl_rate_transform(struct mtk_base_afe *afe,
|
||||
unsigned int rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_DL_RATE_8K;
|
||||
case 11025:
|
||||
return MTK_AFE_ADDA_DL_RATE_11K;
|
||||
case 12000:
|
||||
return MTK_AFE_ADDA_DL_RATE_12K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_DL_RATE_16K;
|
||||
case 22050:
|
||||
return MTK_AFE_ADDA_DL_RATE_22K;
|
||||
case 24000:
|
||||
return MTK_AFE_ADDA_DL_RATE_24K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_DL_RATE_32K;
|
||||
case 44100:
|
||||
return MTK_AFE_ADDA_DL_RATE_44K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_DL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_DL_RATE_192K;
|
||||
default:
|
||||
dev_info(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
return MTK_AFE_ADDA_DL_RATE_48K;
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned int afe_adda_ul_rate_transform(struct mtk_base_afe *afe,
|
||||
unsigned int rate)
|
||||
{
|
||||
switch (rate) {
|
||||
case 8000:
|
||||
return MTK_AFE_ADDA_UL_RATE_8K;
|
||||
case 16000:
|
||||
return MTK_AFE_ADDA_UL_RATE_16K;
|
||||
case 32000:
|
||||
return MTK_AFE_ADDA_UL_RATE_32K;
|
||||
case 48000:
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
case 96000:
|
||||
return MTK_AFE_ADDA_UL_RATE_96K;
|
||||
case 192000:
|
||||
return MTK_AFE_ADDA_UL_RATE_192K;
|
||||
default:
|
||||
dev_info(afe->dev, "%s(), rate %d invalid, use 48kHz!!!\n",
|
||||
__func__, rate);
|
||||
return MTK_AFE_ADDA_UL_RATE_48K;
|
||||
}
|
||||
}
|
||||
|
||||
static int mt8195_adda_mtkaif_init(struct mtk_base_afe *afe)
|
||||
{
|
||||
struct mt8195_afe_private *afe_priv = afe->platform_priv;
|
||||
@ -644,7 +560,7 @@ static int mtk_dai_da_configure(struct mtk_base_afe *afe,
|
||||
|
||||
/* set sampling rate */
|
||||
mask |= DL_2_INPUT_MODE_CTL_MASK;
|
||||
val |= DL_2_INPUT_MODE_CTL(afe_adda_dl_rate_transform(afe, rate));
|
||||
val |= DL_2_INPUT_MODE_CTL(mtk_adda_dl_rate_transform(afe, rate));
|
||||
|
||||
/* turn off saturation */
|
||||
mask |= DL_2_CH1_SATURATION_EN_CTL;
|
||||
@ -681,7 +597,7 @@ static int mtk_dai_ad_configure(struct mtk_base_afe *afe,
|
||||
unsigned int mask = 0;
|
||||
|
||||
mask |= UL_VOICE_MODE_CTL_MASK;
|
||||
val |= UL_VOICE_MODE_CTL(afe_adda_ul_rate_transform(afe, rate));
|
||||
val |= UL_VOICE_MODE_CTL(mtk_adda_ul_rate_transform(afe, rate));
|
||||
|
||||
switch (id) {
|
||||
case MT8195_AFE_IO_UL_SRC1:
|
||||
|
Loading…
Reference in New Issue
Block a user