162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * MediaTek ALSA SoC AFE platform driver for 8188
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (c) 2022 MediaTek Inc.
662306a36Sopenharmony_ci * Author: Bicycle Tsai <bicycle.tsai@mediatek.com>
762306a36Sopenharmony_ci *         Trevor Wu <trevor.wu@mediatek.com>
862306a36Sopenharmony_ci *         Chun-Chia Chiu <chun-chia.chiu@mediatek.com>
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include <linux/arm-smccc.h>
1262306a36Sopenharmony_ci#include <linux/delay.h>
1362306a36Sopenharmony_ci#include <linux/dma-mapping.h>
1462306a36Sopenharmony_ci#include <linux/module.h>
1562306a36Sopenharmony_ci#include <linux/mfd/syscon.h>
1662306a36Sopenharmony_ci#include <linux/of.h>
1762306a36Sopenharmony_ci#include <linux/of_address.h>
1862306a36Sopenharmony_ci#include <linux/of_platform.h>
1962306a36Sopenharmony_ci#include <linux/of_reserved_mem.h>
2062306a36Sopenharmony_ci#include <linux/pm_runtime.h>
2162306a36Sopenharmony_ci#include <linux/soc/mediatek/infracfg.h>
2262306a36Sopenharmony_ci#include <linux/reset.h>
2362306a36Sopenharmony_ci#include <sound/pcm_params.h>
2462306a36Sopenharmony_ci#include "mt8188-afe-common.h"
2562306a36Sopenharmony_ci#include "mt8188-afe-clk.h"
2662306a36Sopenharmony_ci#include "mt8188-reg.h"
2762306a36Sopenharmony_ci#include "../common/mtk-afe-platform-driver.h"
2862306a36Sopenharmony_ci#include "../common/mtk-afe-fe-dai.h"
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci#define MT8188_MEMIF_BUFFER_BYTES_ALIGN  (0x40)
3162306a36Sopenharmony_ci#define MT8188_MEMIF_DL7_MAX_PERIOD_SIZE (0x3fff)
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci#define MEMIF_AXI_MINLEN 9 /* register default value */
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_cistruct mtk_dai_memif_priv {
3662306a36Sopenharmony_ci	unsigned int asys_timing_sel;
3762306a36Sopenharmony_ci	unsigned int fs_timing;
3862306a36Sopenharmony_ci};
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_cistatic const struct snd_pcm_hardware mt8188_afe_hardware = {
4162306a36Sopenharmony_ci	.info = SNDRV_PCM_INFO_MMAP |
4262306a36Sopenharmony_ci		SNDRV_PCM_INFO_INTERLEAVED |
4362306a36Sopenharmony_ci		SNDRV_PCM_INFO_MMAP_VALID,
4462306a36Sopenharmony_ci	.formats = SNDRV_PCM_FMTBIT_S16_LE |
4562306a36Sopenharmony_ci		   SNDRV_PCM_FMTBIT_S24_LE |
4662306a36Sopenharmony_ci		   SNDRV_PCM_FMTBIT_S32_LE,
4762306a36Sopenharmony_ci	.period_bytes_min = 64,
4862306a36Sopenharmony_ci	.period_bytes_max = 256 * 1024,
4962306a36Sopenharmony_ci	.periods_min = 2,
5062306a36Sopenharmony_ci	.periods_max = 256,
5162306a36Sopenharmony_ci	.buffer_bytes_max = 256 * 2 * 1024,
5262306a36Sopenharmony_ci};
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_cistruct mt8188_afe_rate {
5562306a36Sopenharmony_ci	unsigned int rate;
5662306a36Sopenharmony_ci	unsigned int reg_value;
5762306a36Sopenharmony_ci};
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_cistatic const struct mt8188_afe_rate mt8188_afe_rates[] = {
6062306a36Sopenharmony_ci	{ .rate = 8000, .reg_value = 0, },
6162306a36Sopenharmony_ci	{ .rate = 12000, .reg_value = 1, },
6262306a36Sopenharmony_ci	{ .rate = 16000, .reg_value = 2, },
6362306a36Sopenharmony_ci	{ .rate = 24000, .reg_value = 3, },
6462306a36Sopenharmony_ci	{ .rate = 32000, .reg_value = 4, },
6562306a36Sopenharmony_ci	{ .rate = 48000, .reg_value = 5, },
6662306a36Sopenharmony_ci	{ .rate = 96000, .reg_value = 6, },
6762306a36Sopenharmony_ci	{ .rate = 192000, .reg_value = 7, },
6862306a36Sopenharmony_ci	{ .rate = 384000, .reg_value = 8, },
6962306a36Sopenharmony_ci	{ .rate = 7350, .reg_value = 16, },
7062306a36Sopenharmony_ci	{ .rate = 11025, .reg_value = 17, },
7162306a36Sopenharmony_ci	{ .rate = 14700, .reg_value = 18, },
7262306a36Sopenharmony_ci	{ .rate = 22050, .reg_value = 19, },
7362306a36Sopenharmony_ci	{ .rate = 29400, .reg_value = 20, },
7462306a36Sopenharmony_ci	{ .rate = 44100, .reg_value = 21, },
7562306a36Sopenharmony_ci	{ .rate = 88200, .reg_value = 22, },
7662306a36Sopenharmony_ci	{ .rate = 176400, .reg_value = 23, },
7762306a36Sopenharmony_ci	{ .rate = 352800, .reg_value = 24, },
7862306a36Sopenharmony_ci};
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ciint mt8188_afe_fs_timing(unsigned int rate)
8162306a36Sopenharmony_ci{
8262306a36Sopenharmony_ci	int i;
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci	for (i = 0; i < ARRAY_SIZE(mt8188_afe_rates); i++)
8562306a36Sopenharmony_ci		if (mt8188_afe_rates[i].rate == rate)
8662306a36Sopenharmony_ci			return mt8188_afe_rates[i].reg_value;
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci	return -EINVAL;
8962306a36Sopenharmony_ci}
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_cistatic int mt8188_memif_fs(struct snd_pcm_substream *substream,
9262306a36Sopenharmony_ci			   unsigned int rate)
9362306a36Sopenharmony_ci{
9462306a36Sopenharmony_ci	struct snd_soc_pcm_runtime *rtd = substream->private_data;
9562306a36Sopenharmony_ci	struct snd_soc_component *component = NULL;
9662306a36Sopenharmony_ci	struct mtk_base_afe *afe = NULL;
9762306a36Sopenharmony_ci	struct mt8188_afe_private *afe_priv = NULL;
9862306a36Sopenharmony_ci	struct mtk_base_afe_memif *memif = NULL;
9962306a36Sopenharmony_ci	struct mtk_dai_memif_priv *memif_priv = NULL;
10062306a36Sopenharmony_ci	int fs = mt8188_afe_fs_timing(rate);
10162306a36Sopenharmony_ci	int id = asoc_rtd_to_cpu(rtd, 0)->id;
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci	if (id < 0)
10462306a36Sopenharmony_ci		return -EINVAL;
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci	component = snd_soc_rtdcom_lookup(rtd, AFE_PCM_NAME);
10762306a36Sopenharmony_ci	if (!component)
10862306a36Sopenharmony_ci		return -EINVAL;
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci	afe = snd_soc_component_get_drvdata(component);
11162306a36Sopenharmony_ci	memif = &afe->memif[id];
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci	switch (memif->data->id) {
11462306a36Sopenharmony_ci	case MT8188_AFE_MEMIF_DL10:
11562306a36Sopenharmony_ci		fs = MT8188_ETDM_OUT3_1X_EN;
11662306a36Sopenharmony_ci		break;
11762306a36Sopenharmony_ci	case MT8188_AFE_MEMIF_UL8:
11862306a36Sopenharmony_ci		fs = MT8188_ETDM_IN1_NX_EN;
11962306a36Sopenharmony_ci		break;
12062306a36Sopenharmony_ci	case MT8188_AFE_MEMIF_UL3:
12162306a36Sopenharmony_ci		fs = MT8188_ETDM_IN2_NX_EN;
12262306a36Sopenharmony_ci		break;
12362306a36Sopenharmony_ci	default:
12462306a36Sopenharmony_ci		afe_priv = afe->platform_priv;
12562306a36Sopenharmony_ci		memif_priv = afe_priv->dai_priv[id];
12662306a36Sopenharmony_ci		if (memif_priv->fs_timing)
12762306a36Sopenharmony_ci			fs = memif_priv->fs_timing;
12862306a36Sopenharmony_ci		break;
12962306a36Sopenharmony_ci	}
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci	return fs;
13262306a36Sopenharmony_ci}
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_cistatic int mt8188_irq_fs(struct snd_pcm_substream *substream,
13562306a36Sopenharmony_ci			 unsigned int rate)
13662306a36Sopenharmony_ci{
13762306a36Sopenharmony_ci	int fs = mt8188_memif_fs(substream, rate);
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci	switch (fs) {
14062306a36Sopenharmony_ci	case MT8188_ETDM_IN1_NX_EN:
14162306a36Sopenharmony_ci		fs = MT8188_ETDM_IN1_1X_EN;
14262306a36Sopenharmony_ci		break;
14362306a36Sopenharmony_ci	case MT8188_ETDM_IN2_NX_EN:
14462306a36Sopenharmony_ci		fs = MT8188_ETDM_IN2_1X_EN;
14562306a36Sopenharmony_ci		break;
14662306a36Sopenharmony_ci	default:
14762306a36Sopenharmony_ci		break;
14862306a36Sopenharmony_ci	}
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci	return fs;
15162306a36Sopenharmony_ci}
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_cienum {
15462306a36Sopenharmony_ci	MT8188_AFE_CM0,
15562306a36Sopenharmony_ci	MT8188_AFE_CM1,
15662306a36Sopenharmony_ci	MT8188_AFE_CM2,
15762306a36Sopenharmony_ci	MT8188_AFE_CM_NUM,
15862306a36Sopenharmony_ci};
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_cistruct mt8188_afe_channel_merge {
16162306a36Sopenharmony_ci	int id;
16262306a36Sopenharmony_ci	int reg;
16362306a36Sopenharmony_ci	unsigned int sel_shift;
16462306a36Sopenharmony_ci	unsigned int sel_maskbit;
16562306a36Sopenharmony_ci	unsigned int sel_default;
16662306a36Sopenharmony_ci	unsigned int ch_num_shift;
16762306a36Sopenharmony_ci	unsigned int ch_num_maskbit;
16862306a36Sopenharmony_ci	unsigned int en_shift;
16962306a36Sopenharmony_ci	unsigned int en_maskbit;
17062306a36Sopenharmony_ci	unsigned int update_cnt_shift;
17162306a36Sopenharmony_ci	unsigned int update_cnt_maskbit;
17262306a36Sopenharmony_ci	unsigned int update_cnt_default;
17362306a36Sopenharmony_ci};
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_cistatic const struct mt8188_afe_channel_merge
17662306a36Sopenharmony_ci	mt8188_afe_cm[MT8188_AFE_CM_NUM] = {
17762306a36Sopenharmony_ci	[MT8188_AFE_CM0] = {
17862306a36Sopenharmony_ci		.id = MT8188_AFE_CM0,
17962306a36Sopenharmony_ci		.reg = AFE_CM0_CON,
18062306a36Sopenharmony_ci		.sel_shift = 30,
18162306a36Sopenharmony_ci		.sel_maskbit = 0x1,
18262306a36Sopenharmony_ci		.sel_default = 1,
18362306a36Sopenharmony_ci		.ch_num_shift = 2,
18462306a36Sopenharmony_ci		.ch_num_maskbit = 0x3f,
18562306a36Sopenharmony_ci		.en_shift = 0,
18662306a36Sopenharmony_ci		.en_maskbit = 0x1,
18762306a36Sopenharmony_ci		.update_cnt_shift = 16,
18862306a36Sopenharmony_ci		.update_cnt_maskbit = 0x1fff,
18962306a36Sopenharmony_ci		.update_cnt_default = 0x3,
19062306a36Sopenharmony_ci	},
19162306a36Sopenharmony_ci	[MT8188_AFE_CM1] = {
19262306a36Sopenharmony_ci		.id = MT8188_AFE_CM1,
19362306a36Sopenharmony_ci		.reg = AFE_CM1_CON,
19462306a36Sopenharmony_ci		.sel_shift = 30,
19562306a36Sopenharmony_ci		.sel_maskbit = 0x1,
19662306a36Sopenharmony_ci		.sel_default = 1,
19762306a36Sopenharmony_ci		.ch_num_shift = 2,
19862306a36Sopenharmony_ci		.ch_num_maskbit = 0x1f,
19962306a36Sopenharmony_ci		.en_shift = 0,
20062306a36Sopenharmony_ci		.en_maskbit = 0x1,
20162306a36Sopenharmony_ci		.update_cnt_shift = 16,
20262306a36Sopenharmony_ci		.update_cnt_maskbit = 0x1fff,
20362306a36Sopenharmony_ci		.update_cnt_default = 0x3,
20462306a36Sopenharmony_ci	},
20562306a36Sopenharmony_ci	[MT8188_AFE_CM2] = {
20662306a36Sopenharmony_ci		.id = MT8188_AFE_CM2,
20762306a36Sopenharmony_ci		.reg = AFE_CM2_CON,
20862306a36Sopenharmony_ci		.sel_shift = 30,
20962306a36Sopenharmony_ci		.sel_maskbit = 0x1,
21062306a36Sopenharmony_ci		.sel_default = 1,
21162306a36Sopenharmony_ci		.ch_num_shift = 2,
21262306a36Sopenharmony_ci		.ch_num_maskbit = 0x1f,
21362306a36Sopenharmony_ci		.en_shift = 0,
21462306a36Sopenharmony_ci		.en_maskbit = 0x1,
21562306a36Sopenharmony_ci		.update_cnt_shift = 16,
21662306a36Sopenharmony_ci		.update_cnt_maskbit = 0x1fff,
21762306a36Sopenharmony_ci		.update_cnt_default = 0x3,
21862306a36Sopenharmony_ci	},
21962306a36Sopenharmony_ci};
22062306a36Sopenharmony_ci
22162306a36Sopenharmony_cistatic int mt8188_afe_memif_is_ul(int id)
22262306a36Sopenharmony_ci{
22362306a36Sopenharmony_ci	if (id >= MT8188_AFE_MEMIF_UL_START && id < MT8188_AFE_MEMIF_END)
22462306a36Sopenharmony_ci		return 1;
22562306a36Sopenharmony_ci	else
22662306a36Sopenharmony_ci		return 0;
22762306a36Sopenharmony_ci}
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_cistatic const struct mt8188_afe_channel_merge *
23062306a36Sopenharmony_ci	mt8188_afe_found_cm(struct snd_soc_dai *dai)
23162306a36Sopenharmony_ci{
23262306a36Sopenharmony_ci	struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
23362306a36Sopenharmony_ci	int id = -EINVAL;
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci	if (mt8188_afe_memif_is_ul(dai->id) == 0)
23662306a36Sopenharmony_ci		return NULL;
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ci	switch (dai->id) {
23962306a36Sopenharmony_ci	case MT8188_AFE_MEMIF_UL9:
24062306a36Sopenharmony_ci		id = MT8188_AFE_CM0;
24162306a36Sopenharmony_ci		break;
24262306a36Sopenharmony_ci	case MT8188_AFE_MEMIF_UL2:
24362306a36Sopenharmony_ci		id = MT8188_AFE_CM1;
24462306a36Sopenharmony_ci		break;
24562306a36Sopenharmony_ci	case MT8188_AFE_MEMIF_UL10:
24662306a36Sopenharmony_ci		id = MT8188_AFE_CM2;
24762306a36Sopenharmony_ci		break;
24862306a36Sopenharmony_ci	default:
24962306a36Sopenharmony_ci		break;
25062306a36Sopenharmony_ci	}
25162306a36Sopenharmony_ci
25262306a36Sopenharmony_ci	if (id < 0) {
25362306a36Sopenharmony_ci		dev_dbg(afe->dev, "%s, memif %d cannot find CM!\n", __func__, dai->id);
25462306a36Sopenharmony_ci		return NULL;
25562306a36Sopenharmony_ci	}
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_ci	return &mt8188_afe_cm[id];
25862306a36Sopenharmony_ci}
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_cistatic int mt8188_afe_config_cm(struct mtk_base_afe *afe,
26162306a36Sopenharmony_ci				const struct mt8188_afe_channel_merge *cm,
26262306a36Sopenharmony_ci				unsigned int channels)
26362306a36Sopenharmony_ci{
26462306a36Sopenharmony_ci	if (!cm)
26562306a36Sopenharmony_ci		return -EINVAL;
26662306a36Sopenharmony_ci
26762306a36Sopenharmony_ci	regmap_update_bits(afe->regmap,
26862306a36Sopenharmony_ci			   cm->reg,
26962306a36Sopenharmony_ci			   cm->sel_maskbit << cm->sel_shift,
27062306a36Sopenharmony_ci			   cm->sel_default << cm->sel_shift);
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ci	regmap_update_bits(afe->regmap,
27362306a36Sopenharmony_ci			   cm->reg,
27462306a36Sopenharmony_ci			   cm->ch_num_maskbit << cm->ch_num_shift,
27562306a36Sopenharmony_ci			   (channels - 1) << cm->ch_num_shift);
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ci	regmap_update_bits(afe->regmap,
27862306a36Sopenharmony_ci			   cm->reg,
27962306a36Sopenharmony_ci			   cm->update_cnt_maskbit << cm->update_cnt_shift,
28062306a36Sopenharmony_ci			   cm->update_cnt_default << cm->update_cnt_shift);
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_ci	return 0;
28362306a36Sopenharmony_ci}
28462306a36Sopenharmony_ci
28562306a36Sopenharmony_cistatic int mt8188_afe_enable_cm(struct mtk_base_afe *afe,
28662306a36Sopenharmony_ci				const struct mt8188_afe_channel_merge *cm,
28762306a36Sopenharmony_ci				bool enable)
28862306a36Sopenharmony_ci{
28962306a36Sopenharmony_ci	if (!cm)
29062306a36Sopenharmony_ci		return -EINVAL;
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ci	regmap_update_bits(afe->regmap,
29362306a36Sopenharmony_ci			   cm->reg,
29462306a36Sopenharmony_ci			   cm->en_maskbit << cm->en_shift,
29562306a36Sopenharmony_ci			   enable << cm->en_shift);
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ci	return 0;
29862306a36Sopenharmony_ci}
29962306a36Sopenharmony_ci
30062306a36Sopenharmony_cistatic int mt8188_afe_fe_startup(struct snd_pcm_substream *substream,
30162306a36Sopenharmony_ci				 struct snd_soc_dai *dai)
30262306a36Sopenharmony_ci{
30362306a36Sopenharmony_ci	struct snd_soc_pcm_runtime *rtd = substream->private_data;
30462306a36Sopenharmony_ci	struct snd_pcm_runtime *runtime = substream->runtime;
30562306a36Sopenharmony_ci	struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
30662306a36Sopenharmony_ci	int id = asoc_rtd_to_cpu(rtd, 0)->id;
30762306a36Sopenharmony_ci	int ret;
30862306a36Sopenharmony_ci
30962306a36Sopenharmony_ci	ret = mtk_afe_fe_startup(substream, dai);
31062306a36Sopenharmony_ci
31162306a36Sopenharmony_ci	snd_pcm_hw_constraint_step(runtime, 0,
31262306a36Sopenharmony_ci				   SNDRV_PCM_HW_PARAM_BUFFER_BYTES,
31362306a36Sopenharmony_ci				   MT8188_MEMIF_BUFFER_BYTES_ALIGN);
31462306a36Sopenharmony_ci
31562306a36Sopenharmony_ci	if (id != MT8188_AFE_MEMIF_DL7)
31662306a36Sopenharmony_ci		goto out;
31762306a36Sopenharmony_ci
31862306a36Sopenharmony_ci	ret = snd_pcm_hw_constraint_minmax(runtime,
31962306a36Sopenharmony_ci					   SNDRV_PCM_HW_PARAM_PERIOD_SIZE, 1,
32062306a36Sopenharmony_ci					   MT8188_MEMIF_DL7_MAX_PERIOD_SIZE);
32162306a36Sopenharmony_ci	if (ret < 0)
32262306a36Sopenharmony_ci		dev_dbg(afe->dev, "hw_constraint_minmax failed\n");
32362306a36Sopenharmony_ciout:
32462306a36Sopenharmony_ci	return ret;
32562306a36Sopenharmony_ci}
32662306a36Sopenharmony_ci
32762306a36Sopenharmony_cistatic void mt8188_afe_fe_shutdown(struct snd_pcm_substream *substream,
32862306a36Sopenharmony_ci				   struct snd_soc_dai *dai)
32962306a36Sopenharmony_ci{
33062306a36Sopenharmony_ci	mtk_afe_fe_shutdown(substream, dai);
33162306a36Sopenharmony_ci}
33262306a36Sopenharmony_ci
33362306a36Sopenharmony_cistatic int mt8188_afe_fe_hw_params(struct snd_pcm_substream *substream,
33462306a36Sopenharmony_ci				   struct snd_pcm_hw_params *params,
33562306a36Sopenharmony_ci				   struct snd_soc_dai *dai)
33662306a36Sopenharmony_ci{
33762306a36Sopenharmony_ci	struct snd_soc_pcm_runtime *rtd = substream->private_data;
33862306a36Sopenharmony_ci	struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
33962306a36Sopenharmony_ci	int id = asoc_rtd_to_cpu(rtd, 0)->id;
34062306a36Sopenharmony_ci	struct mtk_base_afe_memif *memif = &afe->memif[id];
34162306a36Sopenharmony_ci	const struct mtk_base_memif_data *data = memif->data;
34262306a36Sopenharmony_ci	const struct mt8188_afe_channel_merge *cm = mt8188_afe_found_cm(dai);
34362306a36Sopenharmony_ci	unsigned int channels = params_channels(params);
34462306a36Sopenharmony_ci
34562306a36Sopenharmony_ci	mt8188_afe_config_cm(afe, cm, channels);
34662306a36Sopenharmony_ci
34762306a36Sopenharmony_ci	if (data->ch_num_reg >= 0) {
34862306a36Sopenharmony_ci		regmap_update_bits(afe->regmap, data->ch_num_reg,
34962306a36Sopenharmony_ci				   data->ch_num_maskbit << data->ch_num_shift,
35062306a36Sopenharmony_ci				   channels << data->ch_num_shift);
35162306a36Sopenharmony_ci	}
35262306a36Sopenharmony_ci
35362306a36Sopenharmony_ci	return mtk_afe_fe_hw_params(substream, params, dai);
35462306a36Sopenharmony_ci}
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_cistatic int mt8188_afe_fe_trigger(struct snd_pcm_substream *substream, int cmd,
35762306a36Sopenharmony_ci				 struct snd_soc_dai *dai)
35862306a36Sopenharmony_ci{
35962306a36Sopenharmony_ci	struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
36062306a36Sopenharmony_ci	const struct mt8188_afe_channel_merge *cm = mt8188_afe_found_cm(dai);
36162306a36Sopenharmony_ci	struct snd_soc_pcm_runtime *rtd = substream->private_data;
36262306a36Sopenharmony_ci	struct snd_pcm_runtime * const runtime = substream->runtime;
36362306a36Sopenharmony_ci	int id = asoc_rtd_to_cpu(rtd, 0)->id;
36462306a36Sopenharmony_ci	struct mtk_base_afe_memif *memif = &afe->memif[id];
36562306a36Sopenharmony_ci	struct mtk_base_afe_irq *irqs = &afe->irqs[memif->irq_usage];
36662306a36Sopenharmony_ci	const struct mtk_base_irq_data *irq_data = irqs->irq_data;
36762306a36Sopenharmony_ci	unsigned int counter = runtime->period_size;
36862306a36Sopenharmony_ci	int fs;
36962306a36Sopenharmony_ci	int ret;
37062306a36Sopenharmony_ci
37162306a36Sopenharmony_ci	switch (cmd) {
37262306a36Sopenharmony_ci	case SNDRV_PCM_TRIGGER_START:
37362306a36Sopenharmony_ci	case SNDRV_PCM_TRIGGER_RESUME:
37462306a36Sopenharmony_ci		mt8188_afe_enable_cm(afe, cm, true);
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_ci		ret = mtk_memif_set_enable(afe, id);
37762306a36Sopenharmony_ci		if (ret) {
37862306a36Sopenharmony_ci			dev_err(afe->dev, "%s(), error, id %d, memif enable, ret %d\n",
37962306a36Sopenharmony_ci				__func__, id, ret);
38062306a36Sopenharmony_ci			return ret;
38162306a36Sopenharmony_ci		}
38262306a36Sopenharmony_ci
38362306a36Sopenharmony_ci		/* set irq counter */
38462306a36Sopenharmony_ci		regmap_update_bits(afe->regmap, irq_data->irq_cnt_reg,
38562306a36Sopenharmony_ci				   irq_data->irq_cnt_maskbit << irq_data->irq_cnt_shift,
38662306a36Sopenharmony_ci				   counter << irq_data->irq_cnt_shift);
38762306a36Sopenharmony_ci
38862306a36Sopenharmony_ci		/* set irq fs */
38962306a36Sopenharmony_ci		fs = afe->irq_fs(substream, runtime->rate);
39062306a36Sopenharmony_ci
39162306a36Sopenharmony_ci		if (fs < 0)
39262306a36Sopenharmony_ci			return -EINVAL;
39362306a36Sopenharmony_ci
39462306a36Sopenharmony_ci		if (irq_data->irq_fs_reg >= 0)
39562306a36Sopenharmony_ci			regmap_update_bits(afe->regmap, irq_data->irq_fs_reg,
39662306a36Sopenharmony_ci					   irq_data->irq_fs_maskbit << irq_data->irq_fs_shift,
39762306a36Sopenharmony_ci					   fs << irq_data->irq_fs_shift);
39862306a36Sopenharmony_ci
39962306a36Sopenharmony_ci		/* delay for uplink */
40062306a36Sopenharmony_ci		if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
40162306a36Sopenharmony_ci			u32 sample_delay;
40262306a36Sopenharmony_ci
40362306a36Sopenharmony_ci			sample_delay = ((MEMIF_AXI_MINLEN + 1) * 64 +
40462306a36Sopenharmony_ci					(runtime->channels * runtime->sample_bits - 1)) /
40562306a36Sopenharmony_ci					(runtime->channels * runtime->sample_bits) + 1;
40662306a36Sopenharmony_ci
40762306a36Sopenharmony_ci			udelay(sample_delay * 1000000 / runtime->rate);
40862306a36Sopenharmony_ci		}
40962306a36Sopenharmony_ci
41062306a36Sopenharmony_ci		/* enable interrupt */
41162306a36Sopenharmony_ci		regmap_set_bits(afe->regmap, irq_data->irq_en_reg,
41262306a36Sopenharmony_ci				BIT(irq_data->irq_en_shift));
41362306a36Sopenharmony_ci		return 0;
41462306a36Sopenharmony_ci	case SNDRV_PCM_TRIGGER_STOP:
41562306a36Sopenharmony_ci	case SNDRV_PCM_TRIGGER_SUSPEND:
41662306a36Sopenharmony_ci		mt8188_afe_enable_cm(afe, cm, false);
41762306a36Sopenharmony_ci
41862306a36Sopenharmony_ci		ret = mtk_memif_set_disable(afe, id);
41962306a36Sopenharmony_ci		if (ret)
42062306a36Sopenharmony_ci			dev_err(afe->dev, "%s(), error, id %d, memif enable, ret %d\n",
42162306a36Sopenharmony_ci				__func__, id, ret);
42262306a36Sopenharmony_ci
42362306a36Sopenharmony_ci		/* disable interrupt */
42462306a36Sopenharmony_ci
42562306a36Sopenharmony_ci		regmap_clear_bits(afe->regmap, irq_data->irq_en_reg,
42662306a36Sopenharmony_ci				  BIT(irq_data->irq_en_shift));
42762306a36Sopenharmony_ci		/* and clear pending IRQ */
42862306a36Sopenharmony_ci		regmap_write(afe->regmap, irq_data->irq_clr_reg,
42962306a36Sopenharmony_ci			     BIT(irq_data->irq_clr_shift));
43062306a36Sopenharmony_ci		return ret;
43162306a36Sopenharmony_ci	default:
43262306a36Sopenharmony_ci		return -EINVAL;
43362306a36Sopenharmony_ci	}
43462306a36Sopenharmony_ci}
43562306a36Sopenharmony_ci
43662306a36Sopenharmony_cistatic const struct snd_soc_dai_ops mt8188_afe_fe_dai_ops = {
43762306a36Sopenharmony_ci	.startup	= mt8188_afe_fe_startup,
43862306a36Sopenharmony_ci	.shutdown	= mt8188_afe_fe_shutdown,
43962306a36Sopenharmony_ci	.hw_params	= mt8188_afe_fe_hw_params,
44062306a36Sopenharmony_ci	.hw_free	= mtk_afe_fe_hw_free,
44162306a36Sopenharmony_ci	.prepare	= mtk_afe_fe_prepare,
44262306a36Sopenharmony_ci	.trigger	= mt8188_afe_fe_trigger,
44362306a36Sopenharmony_ci};
44462306a36Sopenharmony_ci
44562306a36Sopenharmony_ci#define MTK_PCM_RATES (SNDRV_PCM_RATE_8000_48000 |\
44662306a36Sopenharmony_ci		       SNDRV_PCM_RATE_88200 |\
44762306a36Sopenharmony_ci		       SNDRV_PCM_RATE_96000 |\
44862306a36Sopenharmony_ci		       SNDRV_PCM_RATE_176400 |\
44962306a36Sopenharmony_ci		       SNDRV_PCM_RATE_192000 |\
45062306a36Sopenharmony_ci		       SNDRV_PCM_RATE_352800 |\
45162306a36Sopenharmony_ci		       SNDRV_PCM_RATE_384000)
45262306a36Sopenharmony_ci
45362306a36Sopenharmony_ci#define MTK_PCM_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
45462306a36Sopenharmony_ci			 SNDRV_PCM_FMTBIT_S24_LE |\
45562306a36Sopenharmony_ci			 SNDRV_PCM_FMTBIT_S32_LE)
45662306a36Sopenharmony_ci
45762306a36Sopenharmony_cistatic struct snd_soc_dai_driver mt8188_memif_dai_driver[] = {
45862306a36Sopenharmony_ci	/* FE DAIs: memory intefaces to CPU */
45962306a36Sopenharmony_ci	{
46062306a36Sopenharmony_ci		.name = "DL2",
46162306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL2,
46262306a36Sopenharmony_ci		.playback = {
46362306a36Sopenharmony_ci			.stream_name = "DL2",
46462306a36Sopenharmony_ci			.channels_min = 1,
46562306a36Sopenharmony_ci			.channels_max = 2,
46662306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
46762306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
46862306a36Sopenharmony_ci		},
46962306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
47062306a36Sopenharmony_ci	},
47162306a36Sopenharmony_ci	{
47262306a36Sopenharmony_ci		.name = "DL3",
47362306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL3,
47462306a36Sopenharmony_ci		.playback = {
47562306a36Sopenharmony_ci			.stream_name = "DL3",
47662306a36Sopenharmony_ci			.channels_min = 1,
47762306a36Sopenharmony_ci			.channels_max = 2,
47862306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
47962306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
48062306a36Sopenharmony_ci		},
48162306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
48262306a36Sopenharmony_ci	},
48362306a36Sopenharmony_ci	{
48462306a36Sopenharmony_ci		.name = "DL6",
48562306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL6,
48662306a36Sopenharmony_ci		.playback = {
48762306a36Sopenharmony_ci			.stream_name = "DL6",
48862306a36Sopenharmony_ci			.channels_min = 1,
48962306a36Sopenharmony_ci			.channels_max = 2,
49062306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
49162306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
49262306a36Sopenharmony_ci		},
49362306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
49462306a36Sopenharmony_ci	},
49562306a36Sopenharmony_ci	{
49662306a36Sopenharmony_ci		.name = "DL7",
49762306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL7,
49862306a36Sopenharmony_ci		.playback = {
49962306a36Sopenharmony_ci			.stream_name = "DL7",
50062306a36Sopenharmony_ci			.channels_min = 1,
50162306a36Sopenharmony_ci			.channels_max = 2,
50262306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
50362306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
50462306a36Sopenharmony_ci		},
50562306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
50662306a36Sopenharmony_ci	},
50762306a36Sopenharmony_ci	{
50862306a36Sopenharmony_ci		.name = "DL8",
50962306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL8,
51062306a36Sopenharmony_ci		.playback = {
51162306a36Sopenharmony_ci			.stream_name = "DL8",
51262306a36Sopenharmony_ci			.channels_min = 1,
51362306a36Sopenharmony_ci			.channels_max = 16,
51462306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
51562306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
51662306a36Sopenharmony_ci		},
51762306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
51862306a36Sopenharmony_ci	},
51962306a36Sopenharmony_ci	{
52062306a36Sopenharmony_ci		.name = "DL10",
52162306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL10,
52262306a36Sopenharmony_ci		.playback = {
52362306a36Sopenharmony_ci			.stream_name = "DL10",
52462306a36Sopenharmony_ci			.channels_min = 1,
52562306a36Sopenharmony_ci			.channels_max = 8,
52662306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
52762306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
52862306a36Sopenharmony_ci		},
52962306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
53062306a36Sopenharmony_ci	},
53162306a36Sopenharmony_ci	{
53262306a36Sopenharmony_ci		.name = "DL11",
53362306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL11,
53462306a36Sopenharmony_ci		.playback = {
53562306a36Sopenharmony_ci			.stream_name = "DL11",
53662306a36Sopenharmony_ci			.channels_min = 1,
53762306a36Sopenharmony_ci			.channels_max = 32,
53862306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
53962306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
54062306a36Sopenharmony_ci		},
54162306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
54262306a36Sopenharmony_ci	},
54362306a36Sopenharmony_ci	{
54462306a36Sopenharmony_ci		.name = "UL1",
54562306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL1,
54662306a36Sopenharmony_ci		.capture = {
54762306a36Sopenharmony_ci			.stream_name = "UL1",
54862306a36Sopenharmony_ci			.channels_min = 1,
54962306a36Sopenharmony_ci			.channels_max = 8,
55062306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
55162306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
55262306a36Sopenharmony_ci		},
55362306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
55462306a36Sopenharmony_ci	},
55562306a36Sopenharmony_ci	{
55662306a36Sopenharmony_ci		.name = "UL2",
55762306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL2,
55862306a36Sopenharmony_ci		.capture = {
55962306a36Sopenharmony_ci			.stream_name = "UL2",
56062306a36Sopenharmony_ci			.channels_min = 1,
56162306a36Sopenharmony_ci			.channels_max = 8,
56262306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
56362306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
56462306a36Sopenharmony_ci		},
56562306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
56662306a36Sopenharmony_ci	},
56762306a36Sopenharmony_ci	{
56862306a36Sopenharmony_ci		.name = "UL3",
56962306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL3,
57062306a36Sopenharmony_ci		.capture = {
57162306a36Sopenharmony_ci			.stream_name = "UL3",
57262306a36Sopenharmony_ci			.channels_min = 1,
57362306a36Sopenharmony_ci			.channels_max = 16,
57462306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
57562306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
57662306a36Sopenharmony_ci		},
57762306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
57862306a36Sopenharmony_ci	},
57962306a36Sopenharmony_ci	{
58062306a36Sopenharmony_ci		.name = "UL4",
58162306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL4,
58262306a36Sopenharmony_ci		.capture = {
58362306a36Sopenharmony_ci			.stream_name = "UL4",
58462306a36Sopenharmony_ci			.channels_min = 1,
58562306a36Sopenharmony_ci			.channels_max = 2,
58662306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
58762306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
58862306a36Sopenharmony_ci		},
58962306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
59062306a36Sopenharmony_ci	},
59162306a36Sopenharmony_ci	{
59262306a36Sopenharmony_ci		.name = "UL5",
59362306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL5,
59462306a36Sopenharmony_ci		.capture = {
59562306a36Sopenharmony_ci			.stream_name = "UL5",
59662306a36Sopenharmony_ci			.channels_min = 1,
59762306a36Sopenharmony_ci			.channels_max = 2,
59862306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
59962306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
60062306a36Sopenharmony_ci		},
60162306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
60262306a36Sopenharmony_ci	},
60362306a36Sopenharmony_ci	{
60462306a36Sopenharmony_ci		.name = "UL6",
60562306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL6,
60662306a36Sopenharmony_ci		.capture = {
60762306a36Sopenharmony_ci			.stream_name = "UL6",
60862306a36Sopenharmony_ci			.channels_min = 1,
60962306a36Sopenharmony_ci			.channels_max = 8,
61062306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
61162306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
61262306a36Sopenharmony_ci		},
61362306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
61462306a36Sopenharmony_ci	},
61562306a36Sopenharmony_ci	{
61662306a36Sopenharmony_ci		.name = "UL8",
61762306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL8,
61862306a36Sopenharmony_ci		.capture = {
61962306a36Sopenharmony_ci			.stream_name = "UL8",
62062306a36Sopenharmony_ci			.channels_min = 1,
62162306a36Sopenharmony_ci			.channels_max = 24,
62262306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
62362306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
62462306a36Sopenharmony_ci		},
62562306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
62662306a36Sopenharmony_ci	},
62762306a36Sopenharmony_ci	{
62862306a36Sopenharmony_ci		.name = "UL9",
62962306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL9,
63062306a36Sopenharmony_ci		.capture = {
63162306a36Sopenharmony_ci			.stream_name = "UL9",
63262306a36Sopenharmony_ci			.channels_min = 1,
63362306a36Sopenharmony_ci			.channels_max = 32,
63462306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
63562306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
63662306a36Sopenharmony_ci		},
63762306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
63862306a36Sopenharmony_ci	},
63962306a36Sopenharmony_ci	{
64062306a36Sopenharmony_ci		.name = "UL10",
64162306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL10,
64262306a36Sopenharmony_ci		.capture = {
64362306a36Sopenharmony_ci			.stream_name = "UL10",
64462306a36Sopenharmony_ci			.channels_min = 1,
64562306a36Sopenharmony_ci			.channels_max = 4,
64662306a36Sopenharmony_ci			.rates = MTK_PCM_RATES,
64762306a36Sopenharmony_ci			.formats = MTK_PCM_FORMATS,
64862306a36Sopenharmony_ci		},
64962306a36Sopenharmony_ci		.ops = &mt8188_afe_fe_dai_ops,
65062306a36Sopenharmony_ci	},
65162306a36Sopenharmony_ci};
65262306a36Sopenharmony_ci
65362306a36Sopenharmony_cistatic const struct snd_kcontrol_new o002_mix[] = {
65462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I000 Switch", AFE_CONN2, 0, 1, 0),
65562306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I012 Switch", AFE_CONN2, 12, 1, 0),
65662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I020 Switch", AFE_CONN2, 20, 1, 0),
65762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I022 Switch", AFE_CONN2, 22, 1, 0),
65862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I070 Switch", AFE_CONN2_2, 6, 1, 0),
65962306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I072 Switch", AFE_CONN2_2, 8, 1, 0),
66062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I168 Switch", AFE_CONN2_5, 8, 1, 0),
66162306a36Sopenharmony_ci};
66262306a36Sopenharmony_ci
66362306a36Sopenharmony_cistatic const struct snd_kcontrol_new o003_mix[] = {
66462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I001 Switch", AFE_CONN3, 1, 1, 0),
66562306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I013 Switch", AFE_CONN3, 13, 1, 0),
66662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I021 Switch", AFE_CONN3, 21, 1, 0),
66762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I023 Switch", AFE_CONN3, 23, 1, 0),
66862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I071 Switch", AFE_CONN3_2, 7, 1, 0),
66962306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I073 Switch", AFE_CONN3_2, 9, 1, 0),
67062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I169 Switch", AFE_CONN3_5, 9, 1, 0),
67162306a36Sopenharmony_ci};
67262306a36Sopenharmony_ci
67362306a36Sopenharmony_cistatic const struct snd_kcontrol_new o004_mix[] = {
67462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I000 Switch", AFE_CONN4, 0, 1, 0),
67562306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I014 Switch", AFE_CONN4, 14, 1, 0),
67662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I024 Switch", AFE_CONN4, 24, 1, 0),
67762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I074 Switch", AFE_CONN4_2, 10, 1, 0),
67862306a36Sopenharmony_ci};
67962306a36Sopenharmony_ci
68062306a36Sopenharmony_cistatic const struct snd_kcontrol_new o005_mix[] = {
68162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I001 Switch", AFE_CONN5, 1, 1, 0),
68262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I015 Switch", AFE_CONN5, 15, 1, 0),
68362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I025 Switch", AFE_CONN5, 25, 1, 0),
68462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I075 Switch", AFE_CONN5_2, 11, 1, 0),
68562306a36Sopenharmony_ci};
68662306a36Sopenharmony_ci
68762306a36Sopenharmony_cistatic const struct snd_kcontrol_new o006_mix[] = {
68862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I000 Switch", AFE_CONN6, 0, 1, 0),
68962306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I016 Switch", AFE_CONN6, 16, 1, 0),
69062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I026 Switch", AFE_CONN6, 26, 1, 0),
69162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I076 Switch", AFE_CONN6_2, 12, 1, 0),
69262306a36Sopenharmony_ci};
69362306a36Sopenharmony_ci
69462306a36Sopenharmony_cistatic const struct snd_kcontrol_new o007_mix[] = {
69562306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I001 Switch", AFE_CONN7, 1, 1, 0),
69662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I017 Switch", AFE_CONN7, 17, 1, 0),
69762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I027 Switch", AFE_CONN7, 27, 1, 0),
69862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I077 Switch", AFE_CONN7_2, 13, 1, 0),
69962306a36Sopenharmony_ci};
70062306a36Sopenharmony_ci
70162306a36Sopenharmony_cistatic const struct snd_kcontrol_new o008_mix[] = {
70262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I018 Switch", AFE_CONN8, 18, 1, 0),
70362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I028 Switch", AFE_CONN8, 28, 1, 0),
70462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I078 Switch", AFE_CONN8_2, 14, 1, 0),
70562306a36Sopenharmony_ci};
70662306a36Sopenharmony_ci
70762306a36Sopenharmony_cistatic const struct snd_kcontrol_new o009_mix[] = {
70862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I019 Switch", AFE_CONN9, 19, 1, 0),
70962306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I029 Switch", AFE_CONN9, 29, 1, 0),
71062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I079 Switch", AFE_CONN9_2, 15, 1, 0),
71162306a36Sopenharmony_ci};
71262306a36Sopenharmony_ci
71362306a36Sopenharmony_cistatic const struct snd_kcontrol_new o010_mix[] = {
71462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I022 Switch", AFE_CONN10, 22, 1, 0),
71562306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I030 Switch", AFE_CONN10, 30, 1, 0),
71662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I046 Switch", AFE_CONN10_1, 14, 1, 0),
71762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I072 Switch", AFE_CONN10_2, 8, 1, 0),
71862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I080 Switch", AFE_CONN10_2, 16, 1, 0),
71962306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I188 Switch", AFE_CONN10_5, 28, 1, 0),
72062306a36Sopenharmony_ci};
72162306a36Sopenharmony_ci
72262306a36Sopenharmony_cistatic const struct snd_kcontrol_new o011_mix[] = {
72362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I023 Switch", AFE_CONN11, 23, 1, 0),
72462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I031 Switch", AFE_CONN11, 31, 1, 0),
72562306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I047 Switch", AFE_CONN11_1, 15, 1, 0),
72662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I073 Switch", AFE_CONN11_2, 9, 1, 0),
72762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I081 Switch", AFE_CONN11_2, 17, 1, 0),
72862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I189 Switch", AFE_CONN11_5, 29, 1, 0),
72962306a36Sopenharmony_ci};
73062306a36Sopenharmony_ci
73162306a36Sopenharmony_cistatic const struct snd_kcontrol_new o012_mix[] = {
73262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I024 Switch", AFE_CONN12, 24, 1, 0),
73362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I032 Switch", AFE_CONN12_1, 0, 1, 0),
73462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I048 Switch", AFE_CONN12_1, 16, 1, 0),
73562306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I074 Switch", AFE_CONN12_2, 10, 1, 0),
73662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I082 Switch", AFE_CONN12_2, 18, 1, 0),
73762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I190 Switch", AFE_CONN12_5, 30, 1, 0),
73862306a36Sopenharmony_ci};
73962306a36Sopenharmony_ci
74062306a36Sopenharmony_cistatic const struct snd_kcontrol_new o013_mix[] = {
74162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I025 Switch", AFE_CONN13, 25, 1, 0),
74262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I033 Switch", AFE_CONN13_1, 1, 1, 0),
74362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I049 Switch", AFE_CONN13_1, 17, 1, 0),
74462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I075 Switch", AFE_CONN13_2, 11, 1, 0),
74562306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I083 Switch", AFE_CONN13_2, 19, 1, 0),
74662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I191 Switch", AFE_CONN13_5, 31, 1, 0),
74762306a36Sopenharmony_ci};
74862306a36Sopenharmony_ci
74962306a36Sopenharmony_cistatic const struct snd_kcontrol_new o014_mix[] = {
75062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I026 Switch", AFE_CONN14, 26, 1, 0),
75162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I034 Switch", AFE_CONN14_1, 2, 1, 0),
75262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I050 Switch", AFE_CONN14_1, 18, 1, 0),
75362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I076 Switch", AFE_CONN14_2, 12, 1, 0),
75462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I084 Switch", AFE_CONN14_2, 20, 1, 0),
75562306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I192 Switch", AFE_CONN14_6, 0, 1, 0),
75662306a36Sopenharmony_ci};
75762306a36Sopenharmony_ci
75862306a36Sopenharmony_cistatic const struct snd_kcontrol_new o015_mix[] = {
75962306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I027 Switch", AFE_CONN15, 27, 1, 0),
76062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I035 Switch", AFE_CONN15_1, 3, 1, 0),
76162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I051 Switch", AFE_CONN15_1, 19, 1, 0),
76262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I077 Switch", AFE_CONN15_2, 13, 1, 0),
76362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I085 Switch", AFE_CONN15_2, 21, 1, 0),
76462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I193 Switch", AFE_CONN15_6, 1, 1, 0),
76562306a36Sopenharmony_ci};
76662306a36Sopenharmony_ci
76762306a36Sopenharmony_cistatic const struct snd_kcontrol_new o016_mix[] = {
76862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I028 Switch", AFE_CONN16, 28, 1, 0),
76962306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I036 Switch", AFE_CONN16_1, 4, 1, 0),
77062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I052 Switch", AFE_CONN16_1, 20, 1, 0),
77162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I078 Switch", AFE_CONN16_2, 14, 1, 0),
77262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I086 Switch", AFE_CONN16_2, 22, 1, 0),
77362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I194 Switch", AFE_CONN16_6, 2, 1, 0),
77462306a36Sopenharmony_ci};
77562306a36Sopenharmony_ci
77662306a36Sopenharmony_cistatic const struct snd_kcontrol_new o017_mix[] = {
77762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I029 Switch", AFE_CONN17, 29, 1, 0),
77862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I037 Switch", AFE_CONN17_1, 5, 1, 0),
77962306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I053 Switch", AFE_CONN17_1, 21, 1, 0),
78062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I079 Switch", AFE_CONN17_2, 15, 1, 0),
78162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I087 Switch", AFE_CONN17_2, 23, 1, 0),
78262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I195 Switch", AFE_CONN17_6, 3, 1, 0),
78362306a36Sopenharmony_ci};
78462306a36Sopenharmony_ci
78562306a36Sopenharmony_cistatic const struct snd_kcontrol_new o018_mix[] = {
78662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I080 Switch", AFE_CONN18_2, 16, 1, 0),
78762306a36Sopenharmony_ci};
78862306a36Sopenharmony_ci
78962306a36Sopenharmony_cistatic const struct snd_kcontrol_new o019_mix[] = {
79062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I081 Switch", AFE_CONN19_2, 17, 1, 0),
79162306a36Sopenharmony_ci};
79262306a36Sopenharmony_ci
79362306a36Sopenharmony_cistatic const struct snd_kcontrol_new o020_mix[] = {
79462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I082 Switch", AFE_CONN20_2, 18, 1, 0),
79562306a36Sopenharmony_ci};
79662306a36Sopenharmony_ci
79762306a36Sopenharmony_cistatic const struct snd_kcontrol_new o021_mix[] = {
79862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I083 Switch", AFE_CONN21_2, 19, 1, 0),
79962306a36Sopenharmony_ci};
80062306a36Sopenharmony_ci
80162306a36Sopenharmony_cistatic const struct snd_kcontrol_new o022_mix[] = {
80262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I084 Switch", AFE_CONN22_2, 20, 1, 0),
80362306a36Sopenharmony_ci};
80462306a36Sopenharmony_ci
80562306a36Sopenharmony_cistatic const struct snd_kcontrol_new o023_mix[] = {
80662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I085 Switch", AFE_CONN23_2, 21, 1, 0),
80762306a36Sopenharmony_ci};
80862306a36Sopenharmony_ci
80962306a36Sopenharmony_cistatic const struct snd_kcontrol_new o024_mix[] = {
81062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I086 Switch", AFE_CONN24_2, 22, 1, 0),
81162306a36Sopenharmony_ci};
81262306a36Sopenharmony_ci
81362306a36Sopenharmony_cistatic const struct snd_kcontrol_new o025_mix[] = {
81462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I087 Switch", AFE_CONN25_2, 23, 1, 0),
81562306a36Sopenharmony_ci};
81662306a36Sopenharmony_ci
81762306a36Sopenharmony_cistatic const struct snd_kcontrol_new o026_mix[] = {
81862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I046 Switch", AFE_CONN26_1, 14, 1, 0),
81962306a36Sopenharmony_ci};
82062306a36Sopenharmony_ci
82162306a36Sopenharmony_cistatic const struct snd_kcontrol_new o027_mix[] = {
82262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I047 Switch", AFE_CONN27_1, 15, 1, 0),
82362306a36Sopenharmony_ci};
82462306a36Sopenharmony_ci
82562306a36Sopenharmony_cistatic const struct snd_kcontrol_new o028_mix[] = {
82662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I048 Switch", AFE_CONN28_1, 16, 1, 0),
82762306a36Sopenharmony_ci};
82862306a36Sopenharmony_ci
82962306a36Sopenharmony_cistatic const struct snd_kcontrol_new o029_mix[] = {
83062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I049 Switch", AFE_CONN29_1, 17, 1, 0),
83162306a36Sopenharmony_ci};
83262306a36Sopenharmony_ci
83362306a36Sopenharmony_cistatic const struct snd_kcontrol_new o030_mix[] = {
83462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I050 Switch", AFE_CONN30_1, 18, 1, 0),
83562306a36Sopenharmony_ci};
83662306a36Sopenharmony_ci
83762306a36Sopenharmony_cistatic const struct snd_kcontrol_new o031_mix[] = {
83862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I051 Switch", AFE_CONN31_1, 19, 1, 0),
83962306a36Sopenharmony_ci};
84062306a36Sopenharmony_ci
84162306a36Sopenharmony_cistatic const struct snd_kcontrol_new o032_mix[] = {
84262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I052 Switch", AFE_CONN32_1, 20, 1, 0),
84362306a36Sopenharmony_ci};
84462306a36Sopenharmony_ci
84562306a36Sopenharmony_cistatic const struct snd_kcontrol_new o033_mix[] = {
84662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I053 Switch", AFE_CONN33_1, 21, 1, 0),
84762306a36Sopenharmony_ci};
84862306a36Sopenharmony_ci
84962306a36Sopenharmony_cistatic const struct snd_kcontrol_new o034_mix[] = {
85062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I000 Switch", AFE_CONN34, 0, 1, 0),
85162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I002 Switch", AFE_CONN34, 2, 1, 0),
85262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I012 Switch", AFE_CONN34, 12, 1, 0),
85362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I020 Switch", AFE_CONN34, 20, 1, 0),
85462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I070 Switch", AFE_CONN34_2, 6, 1, 0),
85562306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I072 Switch", AFE_CONN34_2, 8, 1, 0),
85662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I168 Switch", AFE_CONN34_5, 8, 1, 0),
85762306a36Sopenharmony_ci};
85862306a36Sopenharmony_ci
85962306a36Sopenharmony_cistatic const struct snd_kcontrol_new o035_mix[] = {
86062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I001 Switch", AFE_CONN35, 1, 1, 0),
86162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I003 Switch", AFE_CONN35, 3, 1, 0),
86262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I013 Switch", AFE_CONN35, 13, 1, 0),
86362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I021 Switch", AFE_CONN35, 21, 1, 0),
86462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I071 Switch", AFE_CONN35_2, 7, 1, 0),
86562306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I073 Switch", AFE_CONN35_2, 9, 1, 0),
86662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I168 Switch", AFE_CONN35_5, 8, 1, 0),
86762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I169 Switch", AFE_CONN35_5, 9, 1, 0),
86862306a36Sopenharmony_ci};
86962306a36Sopenharmony_ci
87062306a36Sopenharmony_cistatic const struct snd_kcontrol_new o036_mix[] = {
87162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I000 Switch", AFE_CONN36, 0, 1, 0),
87262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I012 Switch", AFE_CONN36, 12, 1, 0),
87362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I020 Switch", AFE_CONN36, 20, 1, 0),
87462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I070 Switch", AFE_CONN36_2, 6, 1, 0),
87562306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I168 Switch", AFE_CONN36_5, 8, 1, 0),
87662306a36Sopenharmony_ci};
87762306a36Sopenharmony_ci
87862306a36Sopenharmony_cistatic const struct snd_kcontrol_new o037_mix[] = {
87962306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I001 Switch", AFE_CONN37, 1, 1, 0),
88062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I013 Switch", AFE_CONN37, 13, 1, 0),
88162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I021 Switch", AFE_CONN37, 21, 1, 0),
88262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I071 Switch", AFE_CONN37_2, 7, 1, 0),
88362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I169 Switch", AFE_CONN37_5, 9, 1, 0),
88462306a36Sopenharmony_ci};
88562306a36Sopenharmony_ci
88662306a36Sopenharmony_cistatic const struct snd_kcontrol_new o038_mix[] = {
88762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I022 Switch", AFE_CONN38, 22, 1, 0),
88862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I168 Switch", AFE_CONN38_5, 8, 1, 0),
88962306a36Sopenharmony_ci};
89062306a36Sopenharmony_ci
89162306a36Sopenharmony_cistatic const struct snd_kcontrol_new o039_mix[] = {
89262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I023 Switch", AFE_CONN39, 23, 1, 0),
89362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I169 Switch", AFE_CONN39_5, 9, 1, 0),
89462306a36Sopenharmony_ci};
89562306a36Sopenharmony_ci
89662306a36Sopenharmony_cistatic const struct snd_kcontrol_new o040_mix[] = {
89762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I002 Switch", AFE_CONN40, 2, 1, 0),
89862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I012 Switch", AFE_CONN40, 12, 1, 0),
89962306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I022 Switch", AFE_CONN40, 22, 1, 0),
90062306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I168 Switch", AFE_CONN40_5, 8, 1, 0),
90162306a36Sopenharmony_ci};
90262306a36Sopenharmony_ci
90362306a36Sopenharmony_cistatic const struct snd_kcontrol_new o041_mix[] = {
90462306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I003 Switch", AFE_CONN41, 3, 1, 0),
90562306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I013 Switch", AFE_CONN41, 13, 1, 0),
90662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I023 Switch", AFE_CONN41, 23, 1, 0),
90762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I169 Switch", AFE_CONN41_5, 9, 1, 0),
90862306a36Sopenharmony_ci};
90962306a36Sopenharmony_ci
91062306a36Sopenharmony_cistatic const struct snd_kcontrol_new o042_mix[] = {
91162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I014 Switch", AFE_CONN42, 14, 1, 0),
91262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I024 Switch", AFE_CONN42, 24, 1, 0),
91362306a36Sopenharmony_ci};
91462306a36Sopenharmony_ci
91562306a36Sopenharmony_cistatic const struct snd_kcontrol_new o043_mix[] = {
91662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I015 Switch", AFE_CONN43, 15, 1, 0),
91762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I025 Switch", AFE_CONN43, 25, 1, 0),
91862306a36Sopenharmony_ci};
91962306a36Sopenharmony_ci
92062306a36Sopenharmony_cistatic const struct snd_kcontrol_new o044_mix[] = {
92162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I016 Switch", AFE_CONN44, 16, 1, 0),
92262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I026 Switch", AFE_CONN44, 26, 1, 0),
92362306a36Sopenharmony_ci};
92462306a36Sopenharmony_ci
92562306a36Sopenharmony_cistatic const struct snd_kcontrol_new o045_mix[] = {
92662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I017 Switch", AFE_CONN45, 17, 1, 0),
92762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I027 Switch", AFE_CONN45, 27, 1, 0),
92862306a36Sopenharmony_ci};
92962306a36Sopenharmony_ci
93062306a36Sopenharmony_cistatic const struct snd_kcontrol_new o046_mix[] = {
93162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I018 Switch", AFE_CONN46, 18, 1, 0),
93262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I028 Switch", AFE_CONN46, 28, 1, 0),
93362306a36Sopenharmony_ci};
93462306a36Sopenharmony_ci
93562306a36Sopenharmony_cistatic const struct snd_kcontrol_new o047_mix[] = {
93662306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I019 Switch", AFE_CONN47, 19, 1, 0),
93762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I029 Switch", AFE_CONN47, 29, 1, 0),
93862306a36Sopenharmony_ci};
93962306a36Sopenharmony_ci
94062306a36Sopenharmony_cistatic const struct snd_kcontrol_new o182_mix[] = {
94162306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I020 Switch", AFE_CONN182, 20, 1, 0),
94262306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I022 Switch", AFE_CONN182, 22, 1, 0),
94362306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I024 Switch", AFE_CONN182, 24, 1, 0),
94462306a36Sopenharmony_ci};
94562306a36Sopenharmony_ci
94662306a36Sopenharmony_cistatic const struct snd_kcontrol_new o183_mix[] = {
94762306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I021 Switch", AFE_CONN183, 21, 1, 0),
94862306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I023 Switch", AFE_CONN183, 23, 1, 0),
94962306a36Sopenharmony_ci	SOC_DAPM_SINGLE_AUTODISABLE("I025 Switch", AFE_CONN183, 25, 1, 0),
95062306a36Sopenharmony_ci};
95162306a36Sopenharmony_ci
95262306a36Sopenharmony_cistatic const char * const dl8_dl11_data_sel_mux_text[] = {
95362306a36Sopenharmony_ci	"dl8", "dl11",
95462306a36Sopenharmony_ci};
95562306a36Sopenharmony_ci
95662306a36Sopenharmony_cistatic SOC_ENUM_SINGLE_DECL(dl8_dl11_data_sel_mux_enum,
95762306a36Sopenharmony_ci			    AFE_DAC_CON2, 0, dl8_dl11_data_sel_mux_text);
95862306a36Sopenharmony_ci
95962306a36Sopenharmony_cistatic const struct snd_kcontrol_new dl8_dl11_data_sel_mux =
96062306a36Sopenharmony_ci	SOC_DAPM_ENUM("DL8_DL11 Sink",
96162306a36Sopenharmony_ci		      dl8_dl11_data_sel_mux_enum);
96262306a36Sopenharmony_ci
96362306a36Sopenharmony_cistatic const struct snd_soc_dapm_widget mt8188_memif_widgets[] = {
96462306a36Sopenharmony_ci	/* DL6 */
96562306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I000", SND_SOC_NOPM, 0, 0, NULL, 0),
96662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I001", SND_SOC_NOPM, 0, 0, NULL, 0),
96762306a36Sopenharmony_ci
96862306a36Sopenharmony_ci	/* DL3 */
96962306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I020", SND_SOC_NOPM, 0, 0, NULL, 0),
97062306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I021", SND_SOC_NOPM, 0, 0, NULL, 0),
97162306a36Sopenharmony_ci
97262306a36Sopenharmony_ci	/* DL11 */
97362306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I022", SND_SOC_NOPM, 0, 0, NULL, 0),
97462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I023", SND_SOC_NOPM, 0, 0, NULL, 0),
97562306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I024", SND_SOC_NOPM, 0, 0, NULL, 0),
97662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I025", SND_SOC_NOPM, 0, 0, NULL, 0),
97762306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I026", SND_SOC_NOPM, 0, 0, NULL, 0),
97862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I027", SND_SOC_NOPM, 0, 0, NULL, 0),
97962306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I028", SND_SOC_NOPM, 0, 0, NULL, 0),
98062306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I029", SND_SOC_NOPM, 0, 0, NULL, 0),
98162306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I030", SND_SOC_NOPM, 0, 0, NULL, 0),
98262306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I031", SND_SOC_NOPM, 0, 0, NULL, 0),
98362306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I032", SND_SOC_NOPM, 0, 0, NULL, 0),
98462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I033", SND_SOC_NOPM, 0, 0, NULL, 0),
98562306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I034", SND_SOC_NOPM, 0, 0, NULL, 0),
98662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I035", SND_SOC_NOPM, 0, 0, NULL, 0),
98762306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I036", SND_SOC_NOPM, 0, 0, NULL, 0),
98862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I037", SND_SOC_NOPM, 0, 0, NULL, 0),
98962306a36Sopenharmony_ci
99062306a36Sopenharmony_ci	/* DL11/DL8 */
99162306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I046", SND_SOC_NOPM, 0, 0, NULL, 0),
99262306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I047", SND_SOC_NOPM, 0, 0, NULL, 0),
99362306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I048", SND_SOC_NOPM, 0, 0, NULL, 0),
99462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I049", SND_SOC_NOPM, 0, 0, NULL, 0),
99562306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I050", SND_SOC_NOPM, 0, 0, NULL, 0),
99662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I051", SND_SOC_NOPM, 0, 0, NULL, 0),
99762306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I052", SND_SOC_NOPM, 0, 0, NULL, 0),
99862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I053", SND_SOC_NOPM, 0, 0, NULL, 0),
99962306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I054", SND_SOC_NOPM, 0, 0, NULL, 0),
100062306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I055", SND_SOC_NOPM, 0, 0, NULL, 0),
100162306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I056", SND_SOC_NOPM, 0, 0, NULL, 0),
100262306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I057", SND_SOC_NOPM, 0, 0, NULL, 0),
100362306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I058", SND_SOC_NOPM, 0, 0, NULL, 0),
100462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I059", SND_SOC_NOPM, 0, 0, NULL, 0),
100562306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I060", SND_SOC_NOPM, 0, 0, NULL, 0),
100662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I061", SND_SOC_NOPM, 0, 0, NULL, 0),
100762306a36Sopenharmony_ci
100862306a36Sopenharmony_ci	/* DL2 */
100962306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I070", SND_SOC_NOPM, 0, 0, NULL, 0),
101062306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("I071", SND_SOC_NOPM, 0, 0, NULL, 0),
101162306a36Sopenharmony_ci
101262306a36Sopenharmony_ci	SND_SOC_DAPM_MUX("DL8_DL11 Mux",
101362306a36Sopenharmony_ci			 SND_SOC_NOPM, 0, 0, &dl8_dl11_data_sel_mux),
101462306a36Sopenharmony_ci
101562306a36Sopenharmony_ci	/* UL9 */
101662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O002", SND_SOC_NOPM, 0, 0,
101762306a36Sopenharmony_ci			   o002_mix, ARRAY_SIZE(o002_mix)),
101862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O003", SND_SOC_NOPM, 0, 0,
101962306a36Sopenharmony_ci			   o003_mix, ARRAY_SIZE(o003_mix)),
102062306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O004", SND_SOC_NOPM, 0, 0,
102162306a36Sopenharmony_ci			   o004_mix, ARRAY_SIZE(o004_mix)),
102262306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O005", SND_SOC_NOPM, 0, 0,
102362306a36Sopenharmony_ci			   o005_mix, ARRAY_SIZE(o005_mix)),
102462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O006", SND_SOC_NOPM, 0, 0,
102562306a36Sopenharmony_ci			   o006_mix, ARRAY_SIZE(o006_mix)),
102662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O007", SND_SOC_NOPM, 0, 0,
102762306a36Sopenharmony_ci			   o007_mix, ARRAY_SIZE(o007_mix)),
102862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O008", SND_SOC_NOPM, 0, 0,
102962306a36Sopenharmony_ci			   o008_mix, ARRAY_SIZE(o008_mix)),
103062306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O009", SND_SOC_NOPM, 0, 0,
103162306a36Sopenharmony_ci			   o009_mix, ARRAY_SIZE(o009_mix)),
103262306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O010", SND_SOC_NOPM, 0, 0,
103362306a36Sopenharmony_ci			   o010_mix, ARRAY_SIZE(o010_mix)),
103462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O011", SND_SOC_NOPM, 0, 0,
103562306a36Sopenharmony_ci			   o011_mix, ARRAY_SIZE(o011_mix)),
103662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O012", SND_SOC_NOPM, 0, 0,
103762306a36Sopenharmony_ci			   o012_mix, ARRAY_SIZE(o012_mix)),
103862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O013", SND_SOC_NOPM, 0, 0,
103962306a36Sopenharmony_ci			   o013_mix, ARRAY_SIZE(o013_mix)),
104062306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O014", SND_SOC_NOPM, 0, 0,
104162306a36Sopenharmony_ci			   o014_mix, ARRAY_SIZE(o014_mix)),
104262306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O015", SND_SOC_NOPM, 0, 0,
104362306a36Sopenharmony_ci			   o015_mix, ARRAY_SIZE(o015_mix)),
104462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O016", SND_SOC_NOPM, 0, 0,
104562306a36Sopenharmony_ci			   o016_mix, ARRAY_SIZE(o016_mix)),
104662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O017", SND_SOC_NOPM, 0, 0,
104762306a36Sopenharmony_ci			   o017_mix, ARRAY_SIZE(o017_mix)),
104862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O018", SND_SOC_NOPM, 0, 0,
104962306a36Sopenharmony_ci			   o018_mix, ARRAY_SIZE(o018_mix)),
105062306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O019", SND_SOC_NOPM, 0, 0,
105162306a36Sopenharmony_ci			   o019_mix, ARRAY_SIZE(o019_mix)),
105262306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O020", SND_SOC_NOPM, 0, 0,
105362306a36Sopenharmony_ci			   o020_mix, ARRAY_SIZE(o020_mix)),
105462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O021", SND_SOC_NOPM, 0, 0,
105562306a36Sopenharmony_ci			   o021_mix, ARRAY_SIZE(o021_mix)),
105662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O022", SND_SOC_NOPM, 0, 0,
105762306a36Sopenharmony_ci			   o022_mix, ARRAY_SIZE(o022_mix)),
105862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O023", SND_SOC_NOPM, 0, 0,
105962306a36Sopenharmony_ci			   o023_mix, ARRAY_SIZE(o023_mix)),
106062306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O024", SND_SOC_NOPM, 0, 0,
106162306a36Sopenharmony_ci			   o024_mix, ARRAY_SIZE(o024_mix)),
106262306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O025", SND_SOC_NOPM, 0, 0,
106362306a36Sopenharmony_ci			   o025_mix, ARRAY_SIZE(o025_mix)),
106462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O026", SND_SOC_NOPM, 0, 0,
106562306a36Sopenharmony_ci			   o026_mix, ARRAY_SIZE(o026_mix)),
106662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O027", SND_SOC_NOPM, 0, 0,
106762306a36Sopenharmony_ci			   o027_mix, ARRAY_SIZE(o027_mix)),
106862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O028", SND_SOC_NOPM, 0, 0,
106962306a36Sopenharmony_ci			   o028_mix, ARRAY_SIZE(o028_mix)),
107062306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O029", SND_SOC_NOPM, 0, 0,
107162306a36Sopenharmony_ci			   o029_mix, ARRAY_SIZE(o029_mix)),
107262306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O030", SND_SOC_NOPM, 0, 0,
107362306a36Sopenharmony_ci			   o030_mix, ARRAY_SIZE(o030_mix)),
107462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O031", SND_SOC_NOPM, 0, 0,
107562306a36Sopenharmony_ci			   o031_mix, ARRAY_SIZE(o031_mix)),
107662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O032", SND_SOC_NOPM, 0, 0,
107762306a36Sopenharmony_ci			   o032_mix, ARRAY_SIZE(o032_mix)),
107862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O033", SND_SOC_NOPM, 0, 0,
107962306a36Sopenharmony_ci			   o033_mix, ARRAY_SIZE(o033_mix)),
108062306a36Sopenharmony_ci
108162306a36Sopenharmony_ci	/* UL4 */
108262306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O034", SND_SOC_NOPM, 0, 0,
108362306a36Sopenharmony_ci			   o034_mix, ARRAY_SIZE(o034_mix)),
108462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O035", SND_SOC_NOPM, 0, 0,
108562306a36Sopenharmony_ci			   o035_mix, ARRAY_SIZE(o035_mix)),
108662306a36Sopenharmony_ci
108762306a36Sopenharmony_ci	/* UL5 */
108862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O036", SND_SOC_NOPM, 0, 0,
108962306a36Sopenharmony_ci			   o036_mix, ARRAY_SIZE(o036_mix)),
109062306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O037", SND_SOC_NOPM, 0, 0,
109162306a36Sopenharmony_ci			   o037_mix, ARRAY_SIZE(o037_mix)),
109262306a36Sopenharmony_ci
109362306a36Sopenharmony_ci	/* UL10 */
109462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O038", SND_SOC_NOPM, 0, 0,
109562306a36Sopenharmony_ci			   o038_mix, ARRAY_SIZE(o038_mix)),
109662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O039", SND_SOC_NOPM, 0, 0,
109762306a36Sopenharmony_ci			   o039_mix, ARRAY_SIZE(o039_mix)),
109862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O182", SND_SOC_NOPM, 0, 0,
109962306a36Sopenharmony_ci			   o182_mix, ARRAY_SIZE(o182_mix)),
110062306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O183", SND_SOC_NOPM, 0, 0,
110162306a36Sopenharmony_ci			   o183_mix, ARRAY_SIZE(o183_mix)),
110262306a36Sopenharmony_ci
110362306a36Sopenharmony_ci	/* UL2 */
110462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O040", SND_SOC_NOPM, 0, 0,
110562306a36Sopenharmony_ci			   o040_mix, ARRAY_SIZE(o040_mix)),
110662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O041", SND_SOC_NOPM, 0, 0,
110762306a36Sopenharmony_ci			   o041_mix, ARRAY_SIZE(o041_mix)),
110862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O042", SND_SOC_NOPM, 0, 0,
110962306a36Sopenharmony_ci			   o042_mix, ARRAY_SIZE(o042_mix)),
111062306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O043", SND_SOC_NOPM, 0, 0,
111162306a36Sopenharmony_ci			   o043_mix, ARRAY_SIZE(o043_mix)),
111262306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O044", SND_SOC_NOPM, 0, 0,
111362306a36Sopenharmony_ci			   o044_mix, ARRAY_SIZE(o044_mix)),
111462306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O045", SND_SOC_NOPM, 0, 0,
111562306a36Sopenharmony_ci			   o045_mix, ARRAY_SIZE(o045_mix)),
111662306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O046", SND_SOC_NOPM, 0, 0,
111762306a36Sopenharmony_ci			   o046_mix, ARRAY_SIZE(o046_mix)),
111862306a36Sopenharmony_ci	SND_SOC_DAPM_MIXER("O047", SND_SOC_NOPM, 0, 0,
111962306a36Sopenharmony_ci			   o047_mix, ARRAY_SIZE(o047_mix)),
112062306a36Sopenharmony_ci};
112162306a36Sopenharmony_ci
112262306a36Sopenharmony_cistatic const struct snd_soc_dapm_route mt8188_memif_routes[] = {
112362306a36Sopenharmony_ci	{"I000", NULL, "DL6"},
112462306a36Sopenharmony_ci	{"I001", NULL, "DL6"},
112562306a36Sopenharmony_ci
112662306a36Sopenharmony_ci	{"I020", NULL, "DL3"},
112762306a36Sopenharmony_ci	{"I021", NULL, "DL3"},
112862306a36Sopenharmony_ci
112962306a36Sopenharmony_ci	{"I022", NULL, "DL11"},
113062306a36Sopenharmony_ci	{"I023", NULL, "DL11"},
113162306a36Sopenharmony_ci	{"I024", NULL, "DL11"},
113262306a36Sopenharmony_ci	{"I025", NULL, "DL11"},
113362306a36Sopenharmony_ci	{"I026", NULL, "DL11"},
113462306a36Sopenharmony_ci	{"I027", NULL, "DL11"},
113562306a36Sopenharmony_ci	{"I028", NULL, "DL11"},
113662306a36Sopenharmony_ci	{"I029", NULL, "DL11"},
113762306a36Sopenharmony_ci	{"I030", NULL, "DL11"},
113862306a36Sopenharmony_ci	{"I031", NULL, "DL11"},
113962306a36Sopenharmony_ci	{"I032", NULL, "DL11"},
114062306a36Sopenharmony_ci	{"I033", NULL, "DL11"},
114162306a36Sopenharmony_ci	{"I034", NULL, "DL11"},
114262306a36Sopenharmony_ci	{"I035", NULL, "DL11"},
114362306a36Sopenharmony_ci	{"I036", NULL, "DL11"},
114462306a36Sopenharmony_ci	{"I037", NULL, "DL11"},
114562306a36Sopenharmony_ci
114662306a36Sopenharmony_ci	{"DL8_DL11 Mux", "dl8", "DL8"},
114762306a36Sopenharmony_ci	{"DL8_DL11 Mux", "dl11", "DL11"},
114862306a36Sopenharmony_ci
114962306a36Sopenharmony_ci	{"I046", NULL, "DL8_DL11 Mux"},
115062306a36Sopenharmony_ci	{"I047", NULL, "DL8_DL11 Mux"},
115162306a36Sopenharmony_ci	{"I048", NULL, "DL8_DL11 Mux"},
115262306a36Sopenharmony_ci	{"I049", NULL, "DL8_DL11 Mux"},
115362306a36Sopenharmony_ci	{"I050", NULL, "DL8_DL11 Mux"},
115462306a36Sopenharmony_ci	{"I051", NULL, "DL8_DL11 Mux"},
115562306a36Sopenharmony_ci	{"I052", NULL, "DL8_DL11 Mux"},
115662306a36Sopenharmony_ci	{"I053", NULL, "DL8_DL11 Mux"},
115762306a36Sopenharmony_ci	{"I054", NULL, "DL8_DL11 Mux"},
115862306a36Sopenharmony_ci	{"I055", NULL, "DL8_DL11 Mux"},
115962306a36Sopenharmony_ci	{"I056", NULL, "DL8_DL11 Mux"},
116062306a36Sopenharmony_ci	{"I057", NULL, "DL8_DL11 Mux"},
116162306a36Sopenharmony_ci	{"I058", NULL, "DL8_DL11 Mux"},
116262306a36Sopenharmony_ci	{"I059", NULL, "DL8_DL11 Mux"},
116362306a36Sopenharmony_ci	{"I060", NULL, "DL8_DL11 Mux"},
116462306a36Sopenharmony_ci	{"I061", NULL, "DL8_DL11 Mux"},
116562306a36Sopenharmony_ci
116662306a36Sopenharmony_ci	{"I070", NULL, "DL2"},
116762306a36Sopenharmony_ci	{"I071", NULL, "DL2"},
116862306a36Sopenharmony_ci
116962306a36Sopenharmony_ci	{"UL9", NULL, "O002"},
117062306a36Sopenharmony_ci	{"UL9", NULL, "O003"},
117162306a36Sopenharmony_ci	{"UL9", NULL, "O004"},
117262306a36Sopenharmony_ci	{"UL9", NULL, "O005"},
117362306a36Sopenharmony_ci	{"UL9", NULL, "O006"},
117462306a36Sopenharmony_ci	{"UL9", NULL, "O007"},
117562306a36Sopenharmony_ci	{"UL9", NULL, "O008"},
117662306a36Sopenharmony_ci	{"UL9", NULL, "O009"},
117762306a36Sopenharmony_ci	{"UL9", NULL, "O010"},
117862306a36Sopenharmony_ci	{"UL9", NULL, "O011"},
117962306a36Sopenharmony_ci	{"UL9", NULL, "O012"},
118062306a36Sopenharmony_ci	{"UL9", NULL, "O013"},
118162306a36Sopenharmony_ci	{"UL9", NULL, "O014"},
118262306a36Sopenharmony_ci	{"UL9", NULL, "O015"},
118362306a36Sopenharmony_ci	{"UL9", NULL, "O016"},
118462306a36Sopenharmony_ci	{"UL9", NULL, "O017"},
118562306a36Sopenharmony_ci	{"UL9", NULL, "O018"},
118662306a36Sopenharmony_ci	{"UL9", NULL, "O019"},
118762306a36Sopenharmony_ci	{"UL9", NULL, "O020"},
118862306a36Sopenharmony_ci	{"UL9", NULL, "O021"},
118962306a36Sopenharmony_ci	{"UL9", NULL, "O022"},
119062306a36Sopenharmony_ci	{"UL9", NULL, "O023"},
119162306a36Sopenharmony_ci	{"UL9", NULL, "O024"},
119262306a36Sopenharmony_ci	{"UL9", NULL, "O025"},
119362306a36Sopenharmony_ci	{"UL9", NULL, "O026"},
119462306a36Sopenharmony_ci	{"UL9", NULL, "O027"},
119562306a36Sopenharmony_ci	{"UL9", NULL, "O028"},
119662306a36Sopenharmony_ci	{"UL9", NULL, "O029"},
119762306a36Sopenharmony_ci	{"UL9", NULL, "O030"},
119862306a36Sopenharmony_ci	{"UL9", NULL, "O031"},
119962306a36Sopenharmony_ci	{"UL9", NULL, "O032"},
120062306a36Sopenharmony_ci	{"UL9", NULL, "O033"},
120162306a36Sopenharmony_ci
120262306a36Sopenharmony_ci	{"UL4", NULL, "O034"},
120362306a36Sopenharmony_ci	{"UL4", NULL, "O035"},
120462306a36Sopenharmony_ci
120562306a36Sopenharmony_ci	{"UL5", NULL, "O036"},
120662306a36Sopenharmony_ci	{"UL5", NULL, "O037"},
120762306a36Sopenharmony_ci
120862306a36Sopenharmony_ci	{"UL10", NULL, "O038"},
120962306a36Sopenharmony_ci	{"UL10", NULL, "O039"},
121062306a36Sopenharmony_ci	{"UL10", NULL, "O182"},
121162306a36Sopenharmony_ci	{"UL10", NULL, "O183"},
121262306a36Sopenharmony_ci
121362306a36Sopenharmony_ci	{"UL2", NULL, "O040"},
121462306a36Sopenharmony_ci	{"UL2", NULL, "O041"},
121562306a36Sopenharmony_ci	{"UL2", NULL, "O042"},
121662306a36Sopenharmony_ci	{"UL2", NULL, "O043"},
121762306a36Sopenharmony_ci	{"UL2", NULL, "O044"},
121862306a36Sopenharmony_ci	{"UL2", NULL, "O045"},
121962306a36Sopenharmony_ci	{"UL2", NULL, "O046"},
122062306a36Sopenharmony_ci	{"UL2", NULL, "O047"},
122162306a36Sopenharmony_ci
122262306a36Sopenharmony_ci	{"O004", "I000 Switch", "I000"},
122362306a36Sopenharmony_ci	{"O005", "I001 Switch", "I001"},
122462306a36Sopenharmony_ci
122562306a36Sopenharmony_ci	{"O006", "I000 Switch", "I000"},
122662306a36Sopenharmony_ci	{"O007", "I001 Switch", "I001"},
122762306a36Sopenharmony_ci
122862306a36Sopenharmony_ci	{"O010", "I022 Switch", "I022"},
122962306a36Sopenharmony_ci	{"O011", "I023 Switch", "I023"},
123062306a36Sopenharmony_ci	{"O012", "I024 Switch", "I024"},
123162306a36Sopenharmony_ci	{"O013", "I025 Switch", "I025"},
123262306a36Sopenharmony_ci	{"O014", "I026 Switch", "I026"},
123362306a36Sopenharmony_ci	{"O015", "I027 Switch", "I027"},
123462306a36Sopenharmony_ci	{"O016", "I028 Switch", "I028"},
123562306a36Sopenharmony_ci	{"O017", "I029 Switch", "I029"},
123662306a36Sopenharmony_ci
123762306a36Sopenharmony_ci	{"O010", "I046 Switch", "I046"},
123862306a36Sopenharmony_ci	{"O011", "I047 Switch", "I047"},
123962306a36Sopenharmony_ci	{"O012", "I048 Switch", "I048"},
124062306a36Sopenharmony_ci	{"O013", "I049 Switch", "I049"},
124162306a36Sopenharmony_ci	{"O014", "I050 Switch", "I050"},
124262306a36Sopenharmony_ci	{"O015", "I051 Switch", "I051"},
124362306a36Sopenharmony_ci	{"O016", "I052 Switch", "I052"},
124462306a36Sopenharmony_ci	{"O017", "I053 Switch", "I053"},
124562306a36Sopenharmony_ci
124662306a36Sopenharmony_ci	{"O002", "I022 Switch", "I022"},
124762306a36Sopenharmony_ci	{"O003", "I023 Switch", "I023"},
124862306a36Sopenharmony_ci	{"O004", "I024 Switch", "I024"},
124962306a36Sopenharmony_ci	{"O005", "I025 Switch", "I025"},
125062306a36Sopenharmony_ci	{"O006", "I026 Switch", "I026"},
125162306a36Sopenharmony_ci	{"O007", "I027 Switch", "I027"},
125262306a36Sopenharmony_ci	{"O008", "I028 Switch", "I028"},
125362306a36Sopenharmony_ci	{"O009", "I029 Switch", "I029"},
125462306a36Sopenharmony_ci	{"O010", "I030 Switch", "I030"},
125562306a36Sopenharmony_ci	{"O011", "I031 Switch", "I031"},
125662306a36Sopenharmony_ci	{"O012", "I032 Switch", "I032"},
125762306a36Sopenharmony_ci	{"O013", "I033 Switch", "I033"},
125862306a36Sopenharmony_ci	{"O014", "I034 Switch", "I034"},
125962306a36Sopenharmony_ci	{"O015", "I035 Switch", "I035"},
126062306a36Sopenharmony_ci	{"O016", "I036 Switch", "I036"},
126162306a36Sopenharmony_ci	{"O017", "I037 Switch", "I037"},
126262306a36Sopenharmony_ci	{"O026", "I046 Switch", "I046"},
126362306a36Sopenharmony_ci	{"O027", "I047 Switch", "I047"},
126462306a36Sopenharmony_ci	{"O028", "I048 Switch", "I048"},
126562306a36Sopenharmony_ci	{"O029", "I049 Switch", "I049"},
126662306a36Sopenharmony_ci	{"O030", "I050 Switch", "I050"},
126762306a36Sopenharmony_ci	{"O031", "I051 Switch", "I051"},
126862306a36Sopenharmony_ci	{"O032", "I052 Switch", "I052"},
126962306a36Sopenharmony_ci	{"O033", "I053 Switch", "I053"},
127062306a36Sopenharmony_ci
127162306a36Sopenharmony_ci	{"O002", "I000 Switch", "I000"},
127262306a36Sopenharmony_ci	{"O003", "I001 Switch", "I001"},
127362306a36Sopenharmony_ci	{"O002", "I020 Switch", "I020"},
127462306a36Sopenharmony_ci	{"O003", "I021 Switch", "I021"},
127562306a36Sopenharmony_ci	{"O002", "I070 Switch", "I070"},
127662306a36Sopenharmony_ci	{"O003", "I071 Switch", "I071"},
127762306a36Sopenharmony_ci
127862306a36Sopenharmony_ci	{"O034", "I000 Switch", "I000"},
127962306a36Sopenharmony_ci	{"O035", "I001 Switch", "I001"},
128062306a36Sopenharmony_ci	{"O034", "I002 Switch", "I002"},
128162306a36Sopenharmony_ci	{"O035", "I003 Switch", "I003"},
128262306a36Sopenharmony_ci	{"O034", "I012 Switch", "I012"},
128362306a36Sopenharmony_ci	{"O035", "I013 Switch", "I013"},
128462306a36Sopenharmony_ci	{"O034", "I020 Switch", "I020"},
128562306a36Sopenharmony_ci	{"O035", "I021 Switch", "I021"},
128662306a36Sopenharmony_ci	{"O034", "I070 Switch", "I070"},
128762306a36Sopenharmony_ci	{"O035", "I071 Switch", "I071"},
128862306a36Sopenharmony_ci	{"O034", "I072 Switch", "I072"},
128962306a36Sopenharmony_ci	{"O035", "I073 Switch", "I073"},
129062306a36Sopenharmony_ci
129162306a36Sopenharmony_ci	{"O036", "I000 Switch", "I000"},
129262306a36Sopenharmony_ci	{"O037", "I001 Switch", "I001"},
129362306a36Sopenharmony_ci	{"O036", "I012 Switch", "I012"},
129462306a36Sopenharmony_ci	{"O037", "I013 Switch", "I013"},
129562306a36Sopenharmony_ci	{"O036", "I020 Switch", "I020"},
129662306a36Sopenharmony_ci	{"O037", "I021 Switch", "I021"},
129762306a36Sopenharmony_ci	{"O036", "I070 Switch", "I070"},
129862306a36Sopenharmony_ci	{"O037", "I071 Switch", "I071"},
129962306a36Sopenharmony_ci	{"O036", "I168 Switch", "I168"},
130062306a36Sopenharmony_ci	{"O037", "I169 Switch", "I169"},
130162306a36Sopenharmony_ci
130262306a36Sopenharmony_ci	{"O038", "I022 Switch", "I022"},
130362306a36Sopenharmony_ci	{"O039", "I023 Switch", "I023"},
130462306a36Sopenharmony_ci	{"O182", "I024 Switch", "I024"},
130562306a36Sopenharmony_ci	{"O183", "I025 Switch", "I025"},
130662306a36Sopenharmony_ci
130762306a36Sopenharmony_ci	{"O038", "I168 Switch", "I168"},
130862306a36Sopenharmony_ci	{"O039", "I169 Switch", "I169"},
130962306a36Sopenharmony_ci
131062306a36Sopenharmony_ci	{"O182", "I020 Switch", "I020"},
131162306a36Sopenharmony_ci	{"O183", "I021 Switch", "I021"},
131262306a36Sopenharmony_ci
131362306a36Sopenharmony_ci	{"O182", "I022 Switch", "I022"},
131462306a36Sopenharmony_ci	{"O183", "I023 Switch", "I023"},
131562306a36Sopenharmony_ci
131662306a36Sopenharmony_ci	{"O040", "I022 Switch", "I022"},
131762306a36Sopenharmony_ci	{"O041", "I023 Switch", "I023"},
131862306a36Sopenharmony_ci	{"O042", "I024 Switch", "I024"},
131962306a36Sopenharmony_ci	{"O043", "I025 Switch", "I025"},
132062306a36Sopenharmony_ci	{"O044", "I026 Switch", "I026"},
132162306a36Sopenharmony_ci	{"O045", "I027 Switch", "I027"},
132262306a36Sopenharmony_ci	{"O046", "I028 Switch", "I028"},
132362306a36Sopenharmony_ci	{"O047", "I029 Switch", "I029"},
132462306a36Sopenharmony_ci
132562306a36Sopenharmony_ci	{"O040", "I002 Switch", "I002"},
132662306a36Sopenharmony_ci	{"O041", "I003 Switch", "I003"},
132762306a36Sopenharmony_ci
132862306a36Sopenharmony_ci	{"O002", "I012 Switch", "I012"},
132962306a36Sopenharmony_ci	{"O003", "I013 Switch", "I013"},
133062306a36Sopenharmony_ci	{"O004", "I014 Switch", "I014"},
133162306a36Sopenharmony_ci	{"O005", "I015 Switch", "I015"},
133262306a36Sopenharmony_ci	{"O006", "I016 Switch", "I016"},
133362306a36Sopenharmony_ci	{"O007", "I017 Switch", "I017"},
133462306a36Sopenharmony_ci	{"O008", "I018 Switch", "I018"},
133562306a36Sopenharmony_ci	{"O009", "I019 Switch", "I019"},
133662306a36Sopenharmony_ci	{"O010", "I188 Switch", "I188"},
133762306a36Sopenharmony_ci	{"O011", "I189 Switch", "I189"},
133862306a36Sopenharmony_ci	{"O012", "I190 Switch", "I190"},
133962306a36Sopenharmony_ci	{"O013", "I191 Switch", "I191"},
134062306a36Sopenharmony_ci	{"O014", "I192 Switch", "I192"},
134162306a36Sopenharmony_ci	{"O015", "I193 Switch", "I193"},
134262306a36Sopenharmony_ci	{"O016", "I194 Switch", "I194"},
134362306a36Sopenharmony_ci	{"O017", "I195 Switch", "I195"},
134462306a36Sopenharmony_ci
134562306a36Sopenharmony_ci	{"O040", "I012 Switch", "I012"},
134662306a36Sopenharmony_ci	{"O041", "I013 Switch", "I013"},
134762306a36Sopenharmony_ci	{"O042", "I014 Switch", "I014"},
134862306a36Sopenharmony_ci	{"O043", "I015 Switch", "I015"},
134962306a36Sopenharmony_ci	{"O044", "I016 Switch", "I016"},
135062306a36Sopenharmony_ci	{"O045", "I017 Switch", "I017"},
135162306a36Sopenharmony_ci	{"O046", "I018 Switch", "I018"},
135262306a36Sopenharmony_ci	{"O047", "I019 Switch", "I019"},
135362306a36Sopenharmony_ci
135462306a36Sopenharmony_ci	{"O002", "I072 Switch", "I072"},
135562306a36Sopenharmony_ci	{"O003", "I073 Switch", "I073"},
135662306a36Sopenharmony_ci	{"O004", "I074 Switch", "I074"},
135762306a36Sopenharmony_ci	{"O005", "I075 Switch", "I075"},
135862306a36Sopenharmony_ci	{"O006", "I076 Switch", "I076"},
135962306a36Sopenharmony_ci	{"O007", "I077 Switch", "I077"},
136062306a36Sopenharmony_ci	{"O008", "I078 Switch", "I078"},
136162306a36Sopenharmony_ci	{"O009", "I079 Switch", "I079"},
136262306a36Sopenharmony_ci	{"O010", "I080 Switch", "I080"},
136362306a36Sopenharmony_ci	{"O011", "I081 Switch", "I081"},
136462306a36Sopenharmony_ci	{"O012", "I082 Switch", "I082"},
136562306a36Sopenharmony_ci	{"O013", "I083 Switch", "I083"},
136662306a36Sopenharmony_ci	{"O014", "I084 Switch", "I084"},
136762306a36Sopenharmony_ci	{"O015", "I085 Switch", "I085"},
136862306a36Sopenharmony_ci	{"O016", "I086 Switch", "I086"},
136962306a36Sopenharmony_ci	{"O017", "I087 Switch", "I087"},
137062306a36Sopenharmony_ci
137162306a36Sopenharmony_ci	{"O010", "I072 Switch", "I072"},
137262306a36Sopenharmony_ci	{"O011", "I073 Switch", "I073"},
137362306a36Sopenharmony_ci	{"O012", "I074 Switch", "I074"},
137462306a36Sopenharmony_ci	{"O013", "I075 Switch", "I075"},
137562306a36Sopenharmony_ci	{"O014", "I076 Switch", "I076"},
137662306a36Sopenharmony_ci	{"O015", "I077 Switch", "I077"},
137762306a36Sopenharmony_ci	{"O016", "I078 Switch", "I078"},
137862306a36Sopenharmony_ci	{"O017", "I079 Switch", "I079"},
137962306a36Sopenharmony_ci	{"O018", "I080 Switch", "I080"},
138062306a36Sopenharmony_ci	{"O019", "I081 Switch", "I081"},
138162306a36Sopenharmony_ci	{"O020", "I082 Switch", "I082"},
138262306a36Sopenharmony_ci	{"O021", "I083 Switch", "I083"},
138362306a36Sopenharmony_ci	{"O022", "I084 Switch", "I084"},
138462306a36Sopenharmony_ci	{"O023", "I085 Switch", "I085"},
138562306a36Sopenharmony_ci	{"O024", "I086 Switch", "I086"},
138662306a36Sopenharmony_ci	{"O025", "I087 Switch", "I087"},
138762306a36Sopenharmony_ci
138862306a36Sopenharmony_ci	{"O002", "I168 Switch", "I168"},
138962306a36Sopenharmony_ci	{"O003", "I169 Switch", "I169"},
139062306a36Sopenharmony_ci
139162306a36Sopenharmony_ci	{"O034", "I168 Switch", "I168"},
139262306a36Sopenharmony_ci	{"O035", "I168 Switch", "I168"},
139362306a36Sopenharmony_ci	{"O035", "I169 Switch", "I169"},
139462306a36Sopenharmony_ci
139562306a36Sopenharmony_ci	{"O040", "I168 Switch", "I168"},
139662306a36Sopenharmony_ci	{"O041", "I169 Switch", "I169"},
139762306a36Sopenharmony_ci};
139862306a36Sopenharmony_ci
139962306a36Sopenharmony_cistatic const char * const mt8188_afe_1x_en_sel_text[] = {
140062306a36Sopenharmony_ci	"a1sys_a2sys", "a3sys", "a4sys",
140162306a36Sopenharmony_ci};
140262306a36Sopenharmony_ci
140362306a36Sopenharmony_cistatic const unsigned int mt8188_afe_1x_en_sel_values[] = {
140462306a36Sopenharmony_ci	0, 1, 2,
140562306a36Sopenharmony_ci};
140662306a36Sopenharmony_ci
140762306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(dl2_1x_en_sel_enum,
140862306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 18, 0x3,
140962306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
141062306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
141162306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(dl3_1x_en_sel_enum,
141262306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 20, 0x3,
141362306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
141462306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
141562306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(dl6_1x_en_sel_enum,
141662306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 22, 0x3,
141762306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
141862306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
141962306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(dl7_1x_en_sel_enum,
142062306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 24, 0x3,
142162306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
142262306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
142362306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(dl8_1x_en_sel_enum,
142462306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 26, 0x3,
142562306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
142662306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
142762306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(dl10_1x_en_sel_enum,
142862306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 28, 0x3,
142962306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
143062306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
143162306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(dl11_1x_en_sel_enum,
143262306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 30, 0x3,
143362306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
143462306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
143562306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul1_1x_en_sel_enum,
143662306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 0, 0x3,
143762306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
143862306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
143962306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul2_1x_en_sel_enum,
144062306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 2, 0x3,
144162306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
144262306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
144362306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul3_1x_en_sel_enum,
144462306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 4, 0x3,
144562306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
144662306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
144762306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul4_1x_en_sel_enum,
144862306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 6, 0x3,
144962306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
145062306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
145162306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul5_1x_en_sel_enum,
145262306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 8, 0x3,
145362306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
145462306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
145562306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul6_1x_en_sel_enum,
145662306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 10, 0x3,
145762306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
145862306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
145962306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul8_1x_en_sel_enum,
146062306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 12, 0x3,
146162306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
146262306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
146362306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul9_1x_en_sel_enum,
146462306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 14, 0x3,
146562306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
146662306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
146762306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul10_1x_en_sel_enum,
146862306a36Sopenharmony_ci				  A3_A4_TIMING_SEL1, 16, 0x3,
146962306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
147062306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
147162306a36Sopenharmony_ci
147262306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq1_1x_en_sel_enum,
147362306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 0, 0x3,
147462306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
147562306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
147662306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq2_1x_en_sel_enum,
147762306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 2, 0x3,
147862306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
147962306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
148062306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq3_1x_en_sel_enum,
148162306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 4, 0x3,
148262306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
148362306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
148462306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq4_1x_en_sel_enum,
148562306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 6, 0x3,
148662306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
148762306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
148862306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq5_1x_en_sel_enum,
148962306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 8, 0x3,
149062306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
149162306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
149262306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq6_1x_en_sel_enum,
149362306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 10, 0x3,
149462306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
149562306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
149662306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq7_1x_en_sel_enum,
149762306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 12, 0x3,
149862306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
149962306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
150062306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq8_1x_en_sel_enum,
150162306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 14, 0x3,
150262306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
150362306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
150462306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq9_1x_en_sel_enum,
150562306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 16, 0x3,
150662306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
150762306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
150862306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq10_1x_en_sel_enum,
150962306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 18, 0x3,
151062306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
151162306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
151262306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq11_1x_en_sel_enum,
151362306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 20, 0x3,
151462306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
151562306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
151662306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq12_1x_en_sel_enum,
151762306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 22, 0x3,
151862306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
151962306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
152062306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq13_1x_en_sel_enum,
152162306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 24, 0x3,
152262306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
152362306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
152462306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq14_1x_en_sel_enum,
152562306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 26, 0x3,
152662306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
152762306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
152862306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq15_1x_en_sel_enum,
152962306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 28, 0x3,
153062306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
153162306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
153262306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(asys_irq16_1x_en_sel_enum,
153362306a36Sopenharmony_ci				  A3_A4_TIMING_SEL6, 30, 0x3,
153462306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_text,
153562306a36Sopenharmony_ci				  mt8188_afe_1x_en_sel_values);
153662306a36Sopenharmony_ci
153762306a36Sopenharmony_cistatic const char * const mt8188_afe_fs_timing_sel_text[] = {
153862306a36Sopenharmony_ci	"asys",
153962306a36Sopenharmony_ci	"etdmout1_1x_en",
154062306a36Sopenharmony_ci	"etdmout2_1x_en",
154162306a36Sopenharmony_ci	"etdmout3_1x_en",
154262306a36Sopenharmony_ci	"etdmin1_1x_en",
154362306a36Sopenharmony_ci	"etdmin2_1x_en",
154462306a36Sopenharmony_ci	"etdmin1_nx_en",
154562306a36Sopenharmony_ci	"etdmin2_nx_en",
154662306a36Sopenharmony_ci};
154762306a36Sopenharmony_ci
154862306a36Sopenharmony_cistatic const unsigned int mt8188_afe_fs_timing_sel_values[] = {
154962306a36Sopenharmony_ci	0,
155062306a36Sopenharmony_ci	MT8188_ETDM_OUT1_1X_EN,
155162306a36Sopenharmony_ci	MT8188_ETDM_OUT2_1X_EN,
155262306a36Sopenharmony_ci	MT8188_ETDM_OUT3_1X_EN,
155362306a36Sopenharmony_ci	MT8188_ETDM_IN1_1X_EN,
155462306a36Sopenharmony_ci	MT8188_ETDM_IN2_1X_EN,
155562306a36Sopenharmony_ci	MT8188_ETDM_IN1_NX_EN,
155662306a36Sopenharmony_ci	MT8188_ETDM_IN2_NX_EN,
155762306a36Sopenharmony_ci};
155862306a36Sopenharmony_ci
155962306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(dl2_fs_timing_sel_enum,
156062306a36Sopenharmony_ci				  SND_SOC_NOPM, 0, 0,
156162306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_text,
156262306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_values);
156362306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(dl3_fs_timing_sel_enum,
156462306a36Sopenharmony_ci				  SND_SOC_NOPM, 0, 0,
156562306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_text,
156662306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_values);
156762306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(dl6_fs_timing_sel_enum,
156862306a36Sopenharmony_ci				  SND_SOC_NOPM, 0, 0,
156962306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_text,
157062306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_values);
157162306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(dl8_fs_timing_sel_enum,
157262306a36Sopenharmony_ci				  SND_SOC_NOPM, 0, 0,
157362306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_text,
157462306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_values);
157562306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(dl11_fs_timing_sel_enum,
157662306a36Sopenharmony_ci				  SND_SOC_NOPM, 0, 0,
157762306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_text,
157862306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_values);
157962306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul2_fs_timing_sel_enum,
158062306a36Sopenharmony_ci				  SND_SOC_NOPM, 0, 0,
158162306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_text,
158262306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_values);
158362306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul4_fs_timing_sel_enum,
158462306a36Sopenharmony_ci				  SND_SOC_NOPM, 0, 0,
158562306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_text,
158662306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_values);
158762306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul5_fs_timing_sel_enum,
158862306a36Sopenharmony_ci				  SND_SOC_NOPM, 0, 0,
158962306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_text,
159062306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_values);
159162306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul9_fs_timing_sel_enum,
159262306a36Sopenharmony_ci				  SND_SOC_NOPM, 0, 0,
159362306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_text,
159462306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_values);
159562306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul10_fs_timing_sel_enum,
159662306a36Sopenharmony_ci				  SND_SOC_NOPM, 0, 0,
159762306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_text,
159862306a36Sopenharmony_ci				  mt8188_afe_fs_timing_sel_values);
159962306a36Sopenharmony_ci
160062306a36Sopenharmony_cistatic int mt8188_memif_1x_en_sel_put(struct snd_kcontrol *kcontrol,
160162306a36Sopenharmony_ci				      struct snd_ctl_elem_value *ucontrol)
160262306a36Sopenharmony_ci{
160362306a36Sopenharmony_ci	struct snd_soc_component *component =
160462306a36Sopenharmony_ci		snd_soc_kcontrol_component(kcontrol);
160562306a36Sopenharmony_ci	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
160662306a36Sopenharmony_ci	struct mt8188_afe_private *afe_priv = afe->platform_priv;
160762306a36Sopenharmony_ci	struct mtk_dai_memif_priv *memif_priv;
160862306a36Sopenharmony_ci	unsigned int dai_id = kcontrol->id.device;
160962306a36Sopenharmony_ci	long val = ucontrol->value.integer.value[0];
161062306a36Sopenharmony_ci	int ret = 0;
161162306a36Sopenharmony_ci
161262306a36Sopenharmony_ci	memif_priv = afe_priv->dai_priv[dai_id];
161362306a36Sopenharmony_ci
161462306a36Sopenharmony_ci	if (val == memif_priv->asys_timing_sel)
161562306a36Sopenharmony_ci		return 0;
161662306a36Sopenharmony_ci
161762306a36Sopenharmony_ci	ret = snd_soc_put_enum_double(kcontrol, ucontrol);
161862306a36Sopenharmony_ci
161962306a36Sopenharmony_ci	memif_priv->asys_timing_sel = val;
162062306a36Sopenharmony_ci
162162306a36Sopenharmony_ci	return ret;
162262306a36Sopenharmony_ci}
162362306a36Sopenharmony_ci
162462306a36Sopenharmony_cistatic int mt8188_asys_irq_1x_en_sel_put(struct snd_kcontrol *kcontrol,
162562306a36Sopenharmony_ci					 struct snd_ctl_elem_value *ucontrol)
162662306a36Sopenharmony_ci{
162762306a36Sopenharmony_ci	struct snd_soc_component *component =
162862306a36Sopenharmony_ci		snd_soc_kcontrol_component(kcontrol);
162962306a36Sopenharmony_ci	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
163062306a36Sopenharmony_ci	struct mt8188_afe_private *afe_priv = afe->platform_priv;
163162306a36Sopenharmony_ci	unsigned int id = kcontrol->id.device;
163262306a36Sopenharmony_ci	long val = ucontrol->value.integer.value[0];
163362306a36Sopenharmony_ci	int ret = 0;
163462306a36Sopenharmony_ci
163562306a36Sopenharmony_ci	if (val == afe_priv->irq_priv[id].asys_timing_sel)
163662306a36Sopenharmony_ci		return 0;
163762306a36Sopenharmony_ci
163862306a36Sopenharmony_ci	ret = snd_soc_put_enum_double(kcontrol, ucontrol);
163962306a36Sopenharmony_ci
164062306a36Sopenharmony_ci	afe_priv->irq_priv[id].asys_timing_sel = val;
164162306a36Sopenharmony_ci
164262306a36Sopenharmony_ci	return ret;
164362306a36Sopenharmony_ci}
164462306a36Sopenharmony_ci
164562306a36Sopenharmony_cistatic int mt8188_memif_fs_timing_sel_get(struct snd_kcontrol *kcontrol,
164662306a36Sopenharmony_ci					  struct snd_ctl_elem_value *ucontrol)
164762306a36Sopenharmony_ci{
164862306a36Sopenharmony_ci	struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
164962306a36Sopenharmony_ci	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
165062306a36Sopenharmony_ci	struct mt8188_afe_private *afe_priv = afe->platform_priv;
165162306a36Sopenharmony_ci	struct mtk_dai_memif_priv *memif_priv;
165262306a36Sopenharmony_ci	unsigned int dai_id = kcontrol->id.device;
165362306a36Sopenharmony_ci	struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
165462306a36Sopenharmony_ci
165562306a36Sopenharmony_ci	memif_priv = afe_priv->dai_priv[dai_id];
165662306a36Sopenharmony_ci
165762306a36Sopenharmony_ci	ucontrol->value.enumerated.item[0] =
165862306a36Sopenharmony_ci		snd_soc_enum_val_to_item(e, memif_priv->fs_timing);
165962306a36Sopenharmony_ci
166062306a36Sopenharmony_ci	return 0;
166162306a36Sopenharmony_ci}
166262306a36Sopenharmony_ci
166362306a36Sopenharmony_cistatic int mt8188_memif_fs_timing_sel_put(struct snd_kcontrol *kcontrol,
166462306a36Sopenharmony_ci					  struct snd_ctl_elem_value *ucontrol)
166562306a36Sopenharmony_ci{
166662306a36Sopenharmony_ci	struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
166762306a36Sopenharmony_ci	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
166862306a36Sopenharmony_ci	struct mt8188_afe_private *afe_priv = afe->platform_priv;
166962306a36Sopenharmony_ci	struct mtk_dai_memif_priv *memif_priv;
167062306a36Sopenharmony_ci	unsigned int dai_id = kcontrol->id.device;
167162306a36Sopenharmony_ci	struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
167262306a36Sopenharmony_ci	unsigned int *item = ucontrol->value.enumerated.item;
167362306a36Sopenharmony_ci	unsigned int prev_item = 0;
167462306a36Sopenharmony_ci
167562306a36Sopenharmony_ci	if (item[0] >= e->items)
167662306a36Sopenharmony_ci		return -EINVAL;
167762306a36Sopenharmony_ci
167862306a36Sopenharmony_ci	memif_priv = afe_priv->dai_priv[dai_id];
167962306a36Sopenharmony_ci
168062306a36Sopenharmony_ci	prev_item = snd_soc_enum_val_to_item(e, memif_priv->fs_timing);
168162306a36Sopenharmony_ci
168262306a36Sopenharmony_ci	if (item[0] == prev_item)
168362306a36Sopenharmony_ci		return 0;
168462306a36Sopenharmony_ci
168562306a36Sopenharmony_ci	memif_priv->fs_timing = snd_soc_enum_item_to_val(e, item[0]);
168662306a36Sopenharmony_ci
168762306a36Sopenharmony_ci	return 1;
168862306a36Sopenharmony_ci}
168962306a36Sopenharmony_ci
169062306a36Sopenharmony_cistatic const struct snd_kcontrol_new mt8188_memif_controls[] = {
169162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("dl2_1x_en_sel",
169262306a36Sopenharmony_ci			    dl2_1x_en_sel_enum,
169362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
169462306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
169562306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_DL2),
169662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("dl3_1x_en_sel",
169762306a36Sopenharmony_ci			    dl3_1x_en_sel_enum,
169862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
169962306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
170062306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_DL3),
170162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("dl6_1x_en_sel",
170262306a36Sopenharmony_ci			    dl6_1x_en_sel_enum,
170362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
170462306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
170562306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_DL6),
170662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("dl7_1x_en_sel",
170762306a36Sopenharmony_ci			    dl7_1x_en_sel_enum,
170862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
170962306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
171062306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_DL7),
171162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("dl8_1x_en_sel",
171262306a36Sopenharmony_ci			    dl8_1x_en_sel_enum,
171362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
171462306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
171562306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_DL8),
171662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("dl10_1x_en_sel",
171762306a36Sopenharmony_ci			    dl10_1x_en_sel_enum,
171862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
171962306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
172062306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_DL10),
172162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("dl11_1x_en_sel",
172262306a36Sopenharmony_ci			    dl11_1x_en_sel_enum,
172362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
172462306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
172562306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_DL11),
172662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul1_1x_en_sel",
172762306a36Sopenharmony_ci			    ul1_1x_en_sel_enum,
172862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
172962306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
173062306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL1),
173162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul2_1x_en_sel",
173262306a36Sopenharmony_ci			    ul2_1x_en_sel_enum,
173362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
173462306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
173562306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL2),
173662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul3_1x_en_sel",
173762306a36Sopenharmony_ci			    ul3_1x_en_sel_enum,
173862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
173962306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
174062306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL3),
174162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul4_1x_en_sel",
174262306a36Sopenharmony_ci			    ul4_1x_en_sel_enum,
174362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
174462306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
174562306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL4),
174662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul5_1x_en_sel",
174762306a36Sopenharmony_ci			    ul5_1x_en_sel_enum,
174862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
174962306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
175062306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL5),
175162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul6_1x_en_sel",
175262306a36Sopenharmony_ci			    ul6_1x_en_sel_enum,
175362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
175462306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
175562306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL6),
175662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul8_1x_en_sel",
175762306a36Sopenharmony_ci			    ul8_1x_en_sel_enum,
175862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
175962306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
176062306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL8),
176162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul9_1x_en_sel",
176262306a36Sopenharmony_ci			    ul9_1x_en_sel_enum,
176362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
176462306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
176562306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL9),
176662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul10_1x_en_sel",
176762306a36Sopenharmony_ci			    ul10_1x_en_sel_enum,
176862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
176962306a36Sopenharmony_ci			    mt8188_memif_1x_en_sel_put,
177062306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL10),
177162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq1_1x_en_sel",
177262306a36Sopenharmony_ci			    asys_irq1_1x_en_sel_enum,
177362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
177462306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
177562306a36Sopenharmony_ci			    MT8188_AFE_IRQ_13),
177662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq2_1x_en_sel",
177762306a36Sopenharmony_ci			    asys_irq2_1x_en_sel_enum,
177862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
177962306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
178062306a36Sopenharmony_ci			    MT8188_AFE_IRQ_14),
178162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq3_1x_en_sel",
178262306a36Sopenharmony_ci			    asys_irq3_1x_en_sel_enum,
178362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
178462306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
178562306a36Sopenharmony_ci			    MT8188_AFE_IRQ_15),
178662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq4_1x_en_sel",
178762306a36Sopenharmony_ci			    asys_irq4_1x_en_sel_enum,
178862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
178962306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
179062306a36Sopenharmony_ci			    MT8188_AFE_IRQ_16),
179162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq5_1x_en_sel",
179262306a36Sopenharmony_ci			    asys_irq5_1x_en_sel_enum,
179362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
179462306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
179562306a36Sopenharmony_ci			    MT8188_AFE_IRQ_17),
179662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq6_1x_en_sel",
179762306a36Sopenharmony_ci			    asys_irq6_1x_en_sel_enum,
179862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
179962306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
180062306a36Sopenharmony_ci			    MT8188_AFE_IRQ_18),
180162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq7_1x_en_sel",
180262306a36Sopenharmony_ci			    asys_irq7_1x_en_sel_enum,
180362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
180462306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
180562306a36Sopenharmony_ci			    MT8188_AFE_IRQ_19),
180662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq8_1x_en_sel",
180762306a36Sopenharmony_ci			    asys_irq8_1x_en_sel_enum,
180862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
180962306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
181062306a36Sopenharmony_ci			    MT8188_AFE_IRQ_20),
181162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq9_1x_en_sel",
181262306a36Sopenharmony_ci			    asys_irq9_1x_en_sel_enum,
181362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
181462306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
181562306a36Sopenharmony_ci			    MT8188_AFE_IRQ_21),
181662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq10_1x_en_sel",
181762306a36Sopenharmony_ci			    asys_irq10_1x_en_sel_enum,
181862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
181962306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
182062306a36Sopenharmony_ci			    MT8188_AFE_IRQ_22),
182162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq11_1x_en_sel",
182262306a36Sopenharmony_ci			    asys_irq11_1x_en_sel_enum,
182362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
182462306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
182562306a36Sopenharmony_ci			    MT8188_AFE_IRQ_23),
182662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq12_1x_en_sel",
182762306a36Sopenharmony_ci			    asys_irq12_1x_en_sel_enum,
182862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
182962306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
183062306a36Sopenharmony_ci			    MT8188_AFE_IRQ_24),
183162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq13_1x_en_sel",
183262306a36Sopenharmony_ci			    asys_irq13_1x_en_sel_enum,
183362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
183462306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
183562306a36Sopenharmony_ci			    MT8188_AFE_IRQ_25),
183662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq14_1x_en_sel",
183762306a36Sopenharmony_ci			    asys_irq14_1x_en_sel_enum,
183862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
183962306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
184062306a36Sopenharmony_ci			    MT8188_AFE_IRQ_26),
184162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq15_1x_en_sel",
184262306a36Sopenharmony_ci			    asys_irq15_1x_en_sel_enum,
184362306a36Sopenharmony_ci			    snd_soc_get_enum_double,
184462306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
184562306a36Sopenharmony_ci			    MT8188_AFE_IRQ_27),
184662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("asys_irq16_1x_en_sel",
184762306a36Sopenharmony_ci			    asys_irq16_1x_en_sel_enum,
184862306a36Sopenharmony_ci			    snd_soc_get_enum_double,
184962306a36Sopenharmony_ci			    mt8188_asys_irq_1x_en_sel_put,
185062306a36Sopenharmony_ci			    MT8188_AFE_IRQ_28),
185162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("dl2_fs_timing_sel",
185262306a36Sopenharmony_ci			    dl2_fs_timing_sel_enum,
185362306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_get,
185462306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_put,
185562306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_DL2),
185662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("dl3_fs_timing_sel",
185762306a36Sopenharmony_ci			    dl3_fs_timing_sel_enum,
185862306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_get,
185962306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_put,
186062306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_DL3),
186162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("dl6_fs_timing_sel",
186262306a36Sopenharmony_ci			    dl6_fs_timing_sel_enum,
186362306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_get,
186462306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_put,
186562306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_DL6),
186662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("dl8_fs_timing_sel",
186762306a36Sopenharmony_ci			    dl8_fs_timing_sel_enum,
186862306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_get,
186962306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_put,
187062306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_DL8),
187162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("dl11_fs_timing_sel",
187262306a36Sopenharmony_ci			    dl11_fs_timing_sel_enum,
187362306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_get,
187462306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_put,
187562306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_DL11),
187662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul2_fs_timing_sel",
187762306a36Sopenharmony_ci			    ul2_fs_timing_sel_enum,
187862306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_get,
187962306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_put,
188062306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL2),
188162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul4_fs_timing_sel",
188262306a36Sopenharmony_ci			    ul4_fs_timing_sel_enum,
188362306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_get,
188462306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_put,
188562306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL4),
188662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul5_fs_timing_sel",
188762306a36Sopenharmony_ci			    ul5_fs_timing_sel_enum,
188862306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_get,
188962306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_put,
189062306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL5),
189162306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul9_fs_timing_sel",
189262306a36Sopenharmony_ci			    ul9_fs_timing_sel_enum,
189362306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_get,
189462306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_put,
189562306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL9),
189662306a36Sopenharmony_ci	MT8188_SOC_ENUM_EXT("ul10_fs_timing_sel",
189762306a36Sopenharmony_ci			    ul10_fs_timing_sel_enum,
189862306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_get,
189962306a36Sopenharmony_ci			    mt8188_memif_fs_timing_sel_put,
190062306a36Sopenharmony_ci			    MT8188_AFE_MEMIF_UL10),
190162306a36Sopenharmony_ci};
190262306a36Sopenharmony_ci
190362306a36Sopenharmony_cistatic const struct mtk_base_memif_data memif_data[MT8188_AFE_MEMIF_NUM] = {
190462306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL2] = {
190562306a36Sopenharmony_ci		.name = "DL2",
190662306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL2,
190762306a36Sopenharmony_ci		.reg_ofs_base = AFE_DL2_BASE,
190862306a36Sopenharmony_ci		.reg_ofs_cur = AFE_DL2_CUR,
190962306a36Sopenharmony_ci		.reg_ofs_end = AFE_DL2_END,
191062306a36Sopenharmony_ci		.fs_reg = AFE_MEMIF_AGENT_FS_CON0,
191162306a36Sopenharmony_ci		.fs_shift = 10,
191262306a36Sopenharmony_ci		.fs_maskbit = 0x1f,
191362306a36Sopenharmony_ci		.mono_reg = -1,
191462306a36Sopenharmony_ci		.mono_shift = 0,
191562306a36Sopenharmony_ci		.int_odd_flag_reg = -1,
191662306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
191762306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
191862306a36Sopenharmony_ci		.enable_shift = 18,
191962306a36Sopenharmony_ci		.hd_reg = AFE_DL2_CON0,
192062306a36Sopenharmony_ci		.hd_shift = 5,
192162306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
192262306a36Sopenharmony_ci		.agent_disable_shift = 18,
192362306a36Sopenharmony_ci		.ch_num_reg = AFE_DL2_CON0,
192462306a36Sopenharmony_ci		.ch_num_shift = 0,
192562306a36Sopenharmony_ci		.ch_num_maskbit = 0x1f,
192662306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
192762306a36Sopenharmony_ci		.msb_shift = 18,
192862306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
192962306a36Sopenharmony_ci		.msb_end_shift = 18,
193062306a36Sopenharmony_ci	},
193162306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL3] = {
193262306a36Sopenharmony_ci		.name = "DL3",
193362306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL3,
193462306a36Sopenharmony_ci		.reg_ofs_base = AFE_DL3_BASE,
193562306a36Sopenharmony_ci		.reg_ofs_cur = AFE_DL3_CUR,
193662306a36Sopenharmony_ci		.reg_ofs_end = AFE_DL3_END,
193762306a36Sopenharmony_ci		.fs_reg = AFE_MEMIF_AGENT_FS_CON0,
193862306a36Sopenharmony_ci		.fs_shift = 15,
193962306a36Sopenharmony_ci		.fs_maskbit = 0x1f,
194062306a36Sopenharmony_ci		.mono_reg = -1,
194162306a36Sopenharmony_ci		.mono_shift = 0,
194262306a36Sopenharmony_ci		.int_odd_flag_reg = -1,
194362306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
194462306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
194562306a36Sopenharmony_ci		.enable_shift = 19,
194662306a36Sopenharmony_ci		.hd_reg = AFE_DL3_CON0,
194762306a36Sopenharmony_ci		.hd_shift = 5,
194862306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
194962306a36Sopenharmony_ci		.agent_disable_shift = 19,
195062306a36Sopenharmony_ci		.ch_num_reg = AFE_DL3_CON0,
195162306a36Sopenharmony_ci		.ch_num_shift = 0,
195262306a36Sopenharmony_ci		.ch_num_maskbit = 0x1f,
195362306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
195462306a36Sopenharmony_ci		.msb_shift = 19,
195562306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
195662306a36Sopenharmony_ci		.msb_end_shift = 19,
195762306a36Sopenharmony_ci	},
195862306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL6] = {
195962306a36Sopenharmony_ci		.name = "DL6",
196062306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL6,
196162306a36Sopenharmony_ci		.reg_ofs_base = AFE_DL6_BASE,
196262306a36Sopenharmony_ci		.reg_ofs_cur = AFE_DL6_CUR,
196362306a36Sopenharmony_ci		.reg_ofs_end = AFE_DL6_END,
196462306a36Sopenharmony_ci		.fs_reg = AFE_MEMIF_AGENT_FS_CON1,
196562306a36Sopenharmony_ci		.fs_shift = 0,
196662306a36Sopenharmony_ci		.fs_maskbit = 0x1f,
196762306a36Sopenharmony_ci		.mono_reg = -1,
196862306a36Sopenharmony_ci		.mono_shift = 0,
196962306a36Sopenharmony_ci		.int_odd_flag_reg = -1,
197062306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
197162306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
197262306a36Sopenharmony_ci		.enable_shift = 22,
197362306a36Sopenharmony_ci		.hd_reg = AFE_DL6_CON0,
197462306a36Sopenharmony_ci		.hd_shift = 5,
197562306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
197662306a36Sopenharmony_ci		.agent_disable_shift = 22,
197762306a36Sopenharmony_ci		.ch_num_reg = AFE_DL6_CON0,
197862306a36Sopenharmony_ci		.ch_num_shift = 0,
197962306a36Sopenharmony_ci		.ch_num_maskbit = 0x1f,
198062306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
198162306a36Sopenharmony_ci		.msb_shift = 22,
198262306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
198362306a36Sopenharmony_ci		.msb_end_shift = 22,
198462306a36Sopenharmony_ci	},
198562306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL7] = {
198662306a36Sopenharmony_ci		.name = "DL7",
198762306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL7,
198862306a36Sopenharmony_ci		.reg_ofs_base = AFE_DL7_BASE,
198962306a36Sopenharmony_ci		.reg_ofs_cur = AFE_DL7_CUR,
199062306a36Sopenharmony_ci		.reg_ofs_end = AFE_DL7_END,
199162306a36Sopenharmony_ci		.fs_reg = -1,
199262306a36Sopenharmony_ci		.fs_shift = 0,
199362306a36Sopenharmony_ci		.fs_maskbit = 0,
199462306a36Sopenharmony_ci		.mono_reg = -1,
199562306a36Sopenharmony_ci		.mono_shift = 0,
199662306a36Sopenharmony_ci		.int_odd_flag_reg = -1,
199762306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
199862306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
199962306a36Sopenharmony_ci		.enable_shift = 23,
200062306a36Sopenharmony_ci		.hd_reg = AFE_DL7_CON0,
200162306a36Sopenharmony_ci		.hd_shift = 5,
200262306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
200362306a36Sopenharmony_ci		.agent_disable_shift = 23,
200462306a36Sopenharmony_ci		.ch_num_reg = AFE_DL7_CON0,
200562306a36Sopenharmony_ci		.ch_num_shift = 0,
200662306a36Sopenharmony_ci		.ch_num_maskbit = 0x1f,
200762306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
200862306a36Sopenharmony_ci		.msb_shift = 23,
200962306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
201062306a36Sopenharmony_ci		.msb_end_shift = 23,
201162306a36Sopenharmony_ci	},
201262306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL8] = {
201362306a36Sopenharmony_ci		.name = "DL8",
201462306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL8,
201562306a36Sopenharmony_ci		.reg_ofs_base = AFE_DL8_BASE,
201662306a36Sopenharmony_ci		.reg_ofs_cur = AFE_DL8_CUR,
201762306a36Sopenharmony_ci		.reg_ofs_end = AFE_DL8_END,
201862306a36Sopenharmony_ci		.fs_reg = AFE_MEMIF_AGENT_FS_CON1,
201962306a36Sopenharmony_ci		.fs_shift = 10,
202062306a36Sopenharmony_ci		.fs_maskbit = 0x1f,
202162306a36Sopenharmony_ci		.mono_reg = -1,
202262306a36Sopenharmony_ci		.mono_shift = 0,
202362306a36Sopenharmony_ci		.int_odd_flag_reg = -1,
202462306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
202562306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
202662306a36Sopenharmony_ci		.enable_shift = 24,
202762306a36Sopenharmony_ci		.hd_reg = AFE_DL8_CON0,
202862306a36Sopenharmony_ci		.hd_shift = 6,
202962306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
203062306a36Sopenharmony_ci		.agent_disable_shift = 24,
203162306a36Sopenharmony_ci		.ch_num_reg = AFE_DL8_CON0,
203262306a36Sopenharmony_ci		.ch_num_shift = 0,
203362306a36Sopenharmony_ci		.ch_num_maskbit = 0x3f,
203462306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
203562306a36Sopenharmony_ci		.msb_shift = 24,
203662306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
203762306a36Sopenharmony_ci		.msb_end_shift = 24,
203862306a36Sopenharmony_ci	},
203962306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL10] = {
204062306a36Sopenharmony_ci		.name = "DL10",
204162306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL10,
204262306a36Sopenharmony_ci		.reg_ofs_base = AFE_DL10_BASE,
204362306a36Sopenharmony_ci		.reg_ofs_cur = AFE_DL10_CUR,
204462306a36Sopenharmony_ci		.reg_ofs_end = AFE_DL10_END,
204562306a36Sopenharmony_ci		.fs_reg = AFE_MEMIF_AGENT_FS_CON1,
204662306a36Sopenharmony_ci		.fs_shift = 20,
204762306a36Sopenharmony_ci		.fs_maskbit = 0x1f,
204862306a36Sopenharmony_ci		.mono_reg = -1,
204962306a36Sopenharmony_ci		.mono_shift = 0,
205062306a36Sopenharmony_ci		.int_odd_flag_reg = -1,
205162306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
205262306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
205362306a36Sopenharmony_ci		.enable_shift = 26,
205462306a36Sopenharmony_ci		.hd_reg = AFE_DL10_CON0,
205562306a36Sopenharmony_ci		.hd_shift = 5,
205662306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
205762306a36Sopenharmony_ci		.agent_disable_shift = 26,
205862306a36Sopenharmony_ci		.ch_num_reg = AFE_DL10_CON0,
205962306a36Sopenharmony_ci		.ch_num_shift = 0,
206062306a36Sopenharmony_ci		.ch_num_maskbit = 0x1f,
206162306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
206262306a36Sopenharmony_ci		.msb_shift = 26,
206362306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
206462306a36Sopenharmony_ci		.msb_end_shift = 26,
206562306a36Sopenharmony_ci	},
206662306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL11] = {
206762306a36Sopenharmony_ci		.name = "DL11",
206862306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_DL11,
206962306a36Sopenharmony_ci		.reg_ofs_base = AFE_DL11_BASE,
207062306a36Sopenharmony_ci		.reg_ofs_cur = AFE_DL11_CUR,
207162306a36Sopenharmony_ci		.reg_ofs_end = AFE_DL11_END,
207262306a36Sopenharmony_ci		.fs_reg = AFE_MEMIF_AGENT_FS_CON1,
207362306a36Sopenharmony_ci		.fs_shift = 25,
207462306a36Sopenharmony_ci		.fs_maskbit = 0x1f,
207562306a36Sopenharmony_ci		.mono_reg = -1,
207662306a36Sopenharmony_ci		.mono_shift = 0,
207762306a36Sopenharmony_ci		.int_odd_flag_reg = -1,
207862306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
207962306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
208062306a36Sopenharmony_ci		.enable_shift = 27,
208162306a36Sopenharmony_ci		.hd_reg = AFE_DL11_CON0,
208262306a36Sopenharmony_ci		.hd_shift = 7,
208362306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
208462306a36Sopenharmony_ci		.agent_disable_shift = 27,
208562306a36Sopenharmony_ci		.ch_num_reg = AFE_DL11_CON0,
208662306a36Sopenharmony_ci		.ch_num_shift = 0,
208762306a36Sopenharmony_ci		.ch_num_maskbit = 0x7f,
208862306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
208962306a36Sopenharmony_ci		.msb_shift = 27,
209062306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
209162306a36Sopenharmony_ci		.msb_end_shift = 27,
209262306a36Sopenharmony_ci	},
209362306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL1] = {
209462306a36Sopenharmony_ci		.name = "UL1",
209562306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL1,
209662306a36Sopenharmony_ci		.reg_ofs_base = AFE_UL1_BASE,
209762306a36Sopenharmony_ci		.reg_ofs_cur = AFE_UL1_CUR,
209862306a36Sopenharmony_ci		.reg_ofs_end = AFE_UL1_END,
209962306a36Sopenharmony_ci		.fs_reg = -1,
210062306a36Sopenharmony_ci		.fs_shift = 0,
210162306a36Sopenharmony_ci		.fs_maskbit = 0,
210262306a36Sopenharmony_ci		.mono_reg = AFE_UL1_CON0,
210362306a36Sopenharmony_ci		.mono_shift = 1,
210462306a36Sopenharmony_ci		.int_odd_flag_reg = AFE_UL1_CON0,
210562306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
210662306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
210762306a36Sopenharmony_ci		.enable_shift = 1,
210862306a36Sopenharmony_ci		.hd_reg = AFE_UL1_CON0,
210962306a36Sopenharmony_ci		.hd_shift = 5,
211062306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
211162306a36Sopenharmony_ci		.agent_disable_shift = 0,
211262306a36Sopenharmony_ci		.ch_num_reg = -1,
211362306a36Sopenharmony_ci		.ch_num_shift = 0,
211462306a36Sopenharmony_ci		.ch_num_maskbit = 0,
211562306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
211662306a36Sopenharmony_ci		.msb_shift = 0,
211762306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
211862306a36Sopenharmony_ci		.msb_end_shift = 0,
211962306a36Sopenharmony_ci	},
212062306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL2] = {
212162306a36Sopenharmony_ci		.name = "UL2",
212262306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL2,
212362306a36Sopenharmony_ci		.reg_ofs_base = AFE_UL2_BASE,
212462306a36Sopenharmony_ci		.reg_ofs_cur = AFE_UL2_CUR,
212562306a36Sopenharmony_ci		.reg_ofs_end = AFE_UL2_END,
212662306a36Sopenharmony_ci		.fs_reg = AFE_MEMIF_AGENT_FS_CON2,
212762306a36Sopenharmony_ci		.fs_shift = 5,
212862306a36Sopenharmony_ci		.fs_maskbit = 0x1f,
212962306a36Sopenharmony_ci		.mono_reg = AFE_UL2_CON0,
213062306a36Sopenharmony_ci		.mono_shift = 1,
213162306a36Sopenharmony_ci		.int_odd_flag_reg = AFE_UL2_CON0,
213262306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
213362306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
213462306a36Sopenharmony_ci		.enable_shift = 2,
213562306a36Sopenharmony_ci		.hd_reg = AFE_UL2_CON0,
213662306a36Sopenharmony_ci		.hd_shift = 5,
213762306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
213862306a36Sopenharmony_ci		.agent_disable_shift = 1,
213962306a36Sopenharmony_ci		.ch_num_reg = -1,
214062306a36Sopenharmony_ci		.ch_num_shift = 0,
214162306a36Sopenharmony_ci		.ch_num_maskbit = 0,
214262306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
214362306a36Sopenharmony_ci		.msb_shift = 1,
214462306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
214562306a36Sopenharmony_ci		.msb_end_shift = 1,
214662306a36Sopenharmony_ci	},
214762306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL3] = {
214862306a36Sopenharmony_ci		.name = "UL3",
214962306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL3,
215062306a36Sopenharmony_ci		.reg_ofs_base = AFE_UL3_BASE,
215162306a36Sopenharmony_ci		.reg_ofs_cur = AFE_UL3_CUR,
215262306a36Sopenharmony_ci		.reg_ofs_end = AFE_UL3_END,
215362306a36Sopenharmony_ci		.fs_reg = AFE_MEMIF_AGENT_FS_CON2,
215462306a36Sopenharmony_ci		.fs_shift = 10,
215562306a36Sopenharmony_ci		.fs_maskbit = 0x1f,
215662306a36Sopenharmony_ci		.mono_reg = AFE_UL3_CON0,
215762306a36Sopenharmony_ci		.mono_shift = 1,
215862306a36Sopenharmony_ci		.int_odd_flag_reg = AFE_UL3_CON0,
215962306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
216062306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
216162306a36Sopenharmony_ci		.enable_shift = 3,
216262306a36Sopenharmony_ci		.hd_reg = AFE_UL3_CON0,
216362306a36Sopenharmony_ci		.hd_shift = 5,
216462306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
216562306a36Sopenharmony_ci		.agent_disable_shift = 2,
216662306a36Sopenharmony_ci		.ch_num_reg = -1,
216762306a36Sopenharmony_ci		.ch_num_shift = 0,
216862306a36Sopenharmony_ci		.ch_num_maskbit = 0,
216962306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
217062306a36Sopenharmony_ci		.msb_shift = 2,
217162306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
217262306a36Sopenharmony_ci		.msb_end_shift = 2,
217362306a36Sopenharmony_ci	},
217462306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL4] = {
217562306a36Sopenharmony_ci		.name = "UL4",
217662306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL4,
217762306a36Sopenharmony_ci		.reg_ofs_base = AFE_UL4_BASE,
217862306a36Sopenharmony_ci		.reg_ofs_cur = AFE_UL4_CUR,
217962306a36Sopenharmony_ci		.reg_ofs_end = AFE_UL4_END,
218062306a36Sopenharmony_ci		.fs_reg = AFE_MEMIF_AGENT_FS_CON2,
218162306a36Sopenharmony_ci		.fs_shift = 15,
218262306a36Sopenharmony_ci		.fs_maskbit = 0x1f,
218362306a36Sopenharmony_ci		.mono_reg = AFE_UL4_CON0,
218462306a36Sopenharmony_ci		.mono_shift = 1,
218562306a36Sopenharmony_ci		.int_odd_flag_reg = AFE_UL4_CON0,
218662306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
218762306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
218862306a36Sopenharmony_ci		.enable_shift = 4,
218962306a36Sopenharmony_ci		.hd_reg = AFE_UL4_CON0,
219062306a36Sopenharmony_ci		.hd_shift = 5,
219162306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
219262306a36Sopenharmony_ci		.agent_disable_shift = 3,
219362306a36Sopenharmony_ci		.ch_num_reg = -1,
219462306a36Sopenharmony_ci		.ch_num_shift = 0,
219562306a36Sopenharmony_ci		.ch_num_maskbit = 0,
219662306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
219762306a36Sopenharmony_ci		.msb_shift = 3,
219862306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
219962306a36Sopenharmony_ci		.msb_end_shift = 3,
220062306a36Sopenharmony_ci	},
220162306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL5] = {
220262306a36Sopenharmony_ci		.name = "UL5",
220362306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL5,
220462306a36Sopenharmony_ci		.reg_ofs_base = AFE_UL5_BASE,
220562306a36Sopenharmony_ci		.reg_ofs_cur = AFE_UL5_CUR,
220662306a36Sopenharmony_ci		.reg_ofs_end = AFE_UL5_END,
220762306a36Sopenharmony_ci		.fs_reg = AFE_MEMIF_AGENT_FS_CON2,
220862306a36Sopenharmony_ci		.fs_shift = 20,
220962306a36Sopenharmony_ci		.fs_maskbit = 0x1f,
221062306a36Sopenharmony_ci		.mono_reg = AFE_UL5_CON0,
221162306a36Sopenharmony_ci		.mono_shift = 1,
221262306a36Sopenharmony_ci		.int_odd_flag_reg = AFE_UL5_CON0,
221362306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
221462306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
221562306a36Sopenharmony_ci		.enable_shift = 5,
221662306a36Sopenharmony_ci		.hd_reg = AFE_UL5_CON0,
221762306a36Sopenharmony_ci		.hd_shift = 5,
221862306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
221962306a36Sopenharmony_ci		.agent_disable_shift = 4,
222062306a36Sopenharmony_ci		.ch_num_reg = -1,
222162306a36Sopenharmony_ci		.ch_num_shift = 0,
222262306a36Sopenharmony_ci		.ch_num_maskbit = 0,
222362306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
222462306a36Sopenharmony_ci		.msb_shift = 4,
222562306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
222662306a36Sopenharmony_ci		.msb_end_shift = 4,
222762306a36Sopenharmony_ci	},
222862306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL6] = {
222962306a36Sopenharmony_ci		.name = "UL6",
223062306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL6,
223162306a36Sopenharmony_ci		.reg_ofs_base = AFE_UL6_BASE,
223262306a36Sopenharmony_ci		.reg_ofs_cur = AFE_UL6_CUR,
223362306a36Sopenharmony_ci		.reg_ofs_end = AFE_UL6_END,
223462306a36Sopenharmony_ci		.fs_reg = -1,
223562306a36Sopenharmony_ci		.fs_shift = 0,
223662306a36Sopenharmony_ci		.fs_maskbit = 0,
223762306a36Sopenharmony_ci		.mono_reg = AFE_UL6_CON0,
223862306a36Sopenharmony_ci		.mono_shift = 1,
223962306a36Sopenharmony_ci		.int_odd_flag_reg = AFE_UL6_CON0,
224062306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
224162306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
224262306a36Sopenharmony_ci		.enable_shift = 6,
224362306a36Sopenharmony_ci		.hd_reg = AFE_UL6_CON0,
224462306a36Sopenharmony_ci		.hd_shift = 5,
224562306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
224662306a36Sopenharmony_ci		.agent_disable_shift = 5,
224762306a36Sopenharmony_ci		.ch_num_reg = -1,
224862306a36Sopenharmony_ci		.ch_num_shift = 0,
224962306a36Sopenharmony_ci		.ch_num_maskbit = 0,
225062306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
225162306a36Sopenharmony_ci		.msb_shift = 5,
225262306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
225362306a36Sopenharmony_ci		.msb_end_shift = 5,
225462306a36Sopenharmony_ci	},
225562306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL8] = {
225662306a36Sopenharmony_ci		.name = "UL8",
225762306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL8,
225862306a36Sopenharmony_ci		.reg_ofs_base = AFE_UL8_BASE,
225962306a36Sopenharmony_ci		.reg_ofs_cur = AFE_UL8_CUR,
226062306a36Sopenharmony_ci		.reg_ofs_end = AFE_UL8_END,
226162306a36Sopenharmony_ci		.fs_reg = AFE_MEMIF_AGENT_FS_CON3,
226262306a36Sopenharmony_ci		.fs_shift = 5,
226362306a36Sopenharmony_ci		.fs_maskbit = 0x1f,
226462306a36Sopenharmony_ci		.mono_reg = AFE_UL8_CON0,
226562306a36Sopenharmony_ci		.mono_shift = 1,
226662306a36Sopenharmony_ci		.int_odd_flag_reg = AFE_UL8_CON0,
226762306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
226862306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
226962306a36Sopenharmony_ci		.enable_shift = 8,
227062306a36Sopenharmony_ci		.hd_reg = AFE_UL8_CON0,
227162306a36Sopenharmony_ci		.hd_shift = 5,
227262306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
227362306a36Sopenharmony_ci		.agent_disable_shift = 7,
227462306a36Sopenharmony_ci		.ch_num_reg = -1,
227562306a36Sopenharmony_ci		.ch_num_shift = 0,
227662306a36Sopenharmony_ci		.ch_num_maskbit = 0,
227762306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
227862306a36Sopenharmony_ci		.msb_shift = 7,
227962306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
228062306a36Sopenharmony_ci		.msb_end_shift = 7,
228162306a36Sopenharmony_ci	},
228262306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL9] = {
228362306a36Sopenharmony_ci		.name = "UL9",
228462306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL9,
228562306a36Sopenharmony_ci		.reg_ofs_base = AFE_UL9_BASE,
228662306a36Sopenharmony_ci		.reg_ofs_cur = AFE_UL9_CUR,
228762306a36Sopenharmony_ci		.reg_ofs_end = AFE_UL9_END,
228862306a36Sopenharmony_ci		.fs_reg = AFE_MEMIF_AGENT_FS_CON3,
228962306a36Sopenharmony_ci		.fs_shift = 10,
229062306a36Sopenharmony_ci		.fs_maskbit = 0x1f,
229162306a36Sopenharmony_ci		.mono_reg = AFE_UL9_CON0,
229262306a36Sopenharmony_ci		.mono_shift = 1,
229362306a36Sopenharmony_ci		.int_odd_flag_reg = AFE_UL9_CON0,
229462306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
229562306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
229662306a36Sopenharmony_ci		.enable_shift = 9,
229762306a36Sopenharmony_ci		.hd_reg = AFE_UL9_CON0,
229862306a36Sopenharmony_ci		.hd_shift = 5,
229962306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
230062306a36Sopenharmony_ci		.agent_disable_shift = 8,
230162306a36Sopenharmony_ci		.ch_num_reg = -1,
230262306a36Sopenharmony_ci		.ch_num_shift = 0,
230362306a36Sopenharmony_ci		.ch_num_maskbit = 0,
230462306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
230562306a36Sopenharmony_ci		.msb_shift = 8,
230662306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
230762306a36Sopenharmony_ci		.msb_end_shift = 8,
230862306a36Sopenharmony_ci	},
230962306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL10] = {
231062306a36Sopenharmony_ci		.name = "UL10",
231162306a36Sopenharmony_ci		.id = MT8188_AFE_MEMIF_UL10,
231262306a36Sopenharmony_ci		.reg_ofs_base = AFE_UL10_BASE,
231362306a36Sopenharmony_ci		.reg_ofs_cur = AFE_UL10_CUR,
231462306a36Sopenharmony_ci		.reg_ofs_end = AFE_UL10_END,
231562306a36Sopenharmony_ci		.fs_reg = AFE_MEMIF_AGENT_FS_CON3,
231662306a36Sopenharmony_ci		.fs_shift = 15,
231762306a36Sopenharmony_ci		.fs_maskbit = 0x1f,
231862306a36Sopenharmony_ci		.mono_reg = AFE_UL10_CON0,
231962306a36Sopenharmony_ci		.mono_shift = 1,
232062306a36Sopenharmony_ci		.int_odd_flag_reg = AFE_UL10_CON0,
232162306a36Sopenharmony_ci		.int_odd_flag_shift = 0,
232262306a36Sopenharmony_ci		.enable_reg = AFE_DAC_CON0,
232362306a36Sopenharmony_ci		.enable_shift = 10,
232462306a36Sopenharmony_ci		.hd_reg = AFE_UL10_CON0,
232562306a36Sopenharmony_ci		.hd_shift = 5,
232662306a36Sopenharmony_ci		.agent_disable_reg = AUDIO_TOP_CON5,
232762306a36Sopenharmony_ci		.agent_disable_shift = 9,
232862306a36Sopenharmony_ci		.ch_num_reg = -1,
232962306a36Sopenharmony_ci		.ch_num_shift = 0,
233062306a36Sopenharmony_ci		.ch_num_maskbit = 0,
233162306a36Sopenharmony_ci		.msb_reg = AFE_NORMAL_BASE_ADR_MSB,
233262306a36Sopenharmony_ci		.msb_shift = 9,
233362306a36Sopenharmony_ci		.msb_end_reg = AFE_NORMAL_END_ADR_MSB,
233462306a36Sopenharmony_ci		.msb_end_shift = 9,
233562306a36Sopenharmony_ci	},
233662306a36Sopenharmony_ci};
233762306a36Sopenharmony_ci
233862306a36Sopenharmony_cistatic const struct mtk_base_irq_data irq_data[MT8188_AFE_IRQ_NUM] = {
233962306a36Sopenharmony_ci	[MT8188_AFE_IRQ_1] = {
234062306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_1,
234162306a36Sopenharmony_ci		.irq_cnt_reg = -1,
234262306a36Sopenharmony_ci		.irq_cnt_shift = 0,
234362306a36Sopenharmony_ci		.irq_cnt_maskbit = 0,
234462306a36Sopenharmony_ci		.irq_fs_reg = -1,
234562306a36Sopenharmony_ci		.irq_fs_shift = 0,
234662306a36Sopenharmony_ci		.irq_fs_maskbit = 0,
234762306a36Sopenharmony_ci		.irq_en_reg = AFE_IRQ1_CON,
234862306a36Sopenharmony_ci		.irq_en_shift = 31,
234962306a36Sopenharmony_ci		.irq_clr_reg = AFE_IRQ_MCU_CLR,
235062306a36Sopenharmony_ci		.irq_clr_shift = 0,
235162306a36Sopenharmony_ci		.irq_status_shift = 16,
235262306a36Sopenharmony_ci	},
235362306a36Sopenharmony_ci	[MT8188_AFE_IRQ_2] = {
235462306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_2,
235562306a36Sopenharmony_ci		.irq_cnt_reg = -1,
235662306a36Sopenharmony_ci		.irq_cnt_shift = 0,
235762306a36Sopenharmony_ci		.irq_cnt_maskbit = 0,
235862306a36Sopenharmony_ci		.irq_fs_reg = -1,
235962306a36Sopenharmony_ci		.irq_fs_shift = 0,
236062306a36Sopenharmony_ci		.irq_fs_maskbit = 0,
236162306a36Sopenharmony_ci		.irq_en_reg = AFE_IRQ2_CON,
236262306a36Sopenharmony_ci		.irq_en_shift = 31,
236362306a36Sopenharmony_ci		.irq_clr_reg = AFE_IRQ_MCU_CLR,
236462306a36Sopenharmony_ci		.irq_clr_shift = 1,
236562306a36Sopenharmony_ci		.irq_status_shift = 17,
236662306a36Sopenharmony_ci	},
236762306a36Sopenharmony_ci	[MT8188_AFE_IRQ_3] = {
236862306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_3,
236962306a36Sopenharmony_ci		.irq_cnt_reg = AFE_IRQ3_CON,
237062306a36Sopenharmony_ci		.irq_cnt_shift = 0,
237162306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
237262306a36Sopenharmony_ci		.irq_fs_reg = -1,
237362306a36Sopenharmony_ci		.irq_fs_shift = 0,
237462306a36Sopenharmony_ci		.irq_fs_maskbit = 0,
237562306a36Sopenharmony_ci		.irq_en_reg = AFE_IRQ3_CON,
237662306a36Sopenharmony_ci		.irq_en_shift = 31,
237762306a36Sopenharmony_ci		.irq_clr_reg = AFE_IRQ_MCU_CLR,
237862306a36Sopenharmony_ci		.irq_clr_shift = 2,
237962306a36Sopenharmony_ci		.irq_status_shift = 18,
238062306a36Sopenharmony_ci	},
238162306a36Sopenharmony_ci	[MT8188_AFE_IRQ_8] = {
238262306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_8,
238362306a36Sopenharmony_ci		.irq_cnt_reg = -1,
238462306a36Sopenharmony_ci		.irq_cnt_shift = 0,
238562306a36Sopenharmony_ci		.irq_cnt_maskbit = 0,
238662306a36Sopenharmony_ci		.irq_fs_reg = -1,
238762306a36Sopenharmony_ci		.irq_fs_shift = 0,
238862306a36Sopenharmony_ci		.irq_fs_maskbit = 0,
238962306a36Sopenharmony_ci		.irq_en_reg = AFE_IRQ8_CON,
239062306a36Sopenharmony_ci		.irq_en_shift = 31,
239162306a36Sopenharmony_ci		.irq_clr_reg = AFE_IRQ_MCU_CLR,
239262306a36Sopenharmony_ci		.irq_clr_shift = 7,
239362306a36Sopenharmony_ci		.irq_status_shift = 23,
239462306a36Sopenharmony_ci	},
239562306a36Sopenharmony_ci	[MT8188_AFE_IRQ_9] = {
239662306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_9,
239762306a36Sopenharmony_ci		.irq_cnt_reg = AFE_IRQ9_CON,
239862306a36Sopenharmony_ci		.irq_cnt_shift = 0,
239962306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
240062306a36Sopenharmony_ci		.irq_fs_reg = -1,
240162306a36Sopenharmony_ci		.irq_fs_shift = 0,
240262306a36Sopenharmony_ci		.irq_fs_maskbit = 0,
240362306a36Sopenharmony_ci		.irq_en_reg = AFE_IRQ9_CON,
240462306a36Sopenharmony_ci		.irq_en_shift = 31,
240562306a36Sopenharmony_ci		.irq_clr_reg = AFE_IRQ_MCU_CLR,
240662306a36Sopenharmony_ci		.irq_clr_shift = 8,
240762306a36Sopenharmony_ci		.irq_status_shift = 24,
240862306a36Sopenharmony_ci	},
240962306a36Sopenharmony_ci	[MT8188_AFE_IRQ_10] = {
241062306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_10,
241162306a36Sopenharmony_ci		.irq_cnt_reg = -1,
241262306a36Sopenharmony_ci		.irq_cnt_shift = 0,
241362306a36Sopenharmony_ci		.irq_cnt_maskbit = 0,
241462306a36Sopenharmony_ci		.irq_fs_reg = -1,
241562306a36Sopenharmony_ci		.irq_fs_shift = 0,
241662306a36Sopenharmony_ci		.irq_fs_maskbit = 0,
241762306a36Sopenharmony_ci		.irq_en_reg = AFE_IRQ10_CON,
241862306a36Sopenharmony_ci		.irq_en_shift = 31,
241962306a36Sopenharmony_ci		.irq_clr_reg = AFE_IRQ_MCU_CLR,
242062306a36Sopenharmony_ci		.irq_clr_shift = 9,
242162306a36Sopenharmony_ci		.irq_status_shift = 25,
242262306a36Sopenharmony_ci	},
242362306a36Sopenharmony_ci	[MT8188_AFE_IRQ_13] = {
242462306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_13,
242562306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ1_CON,
242662306a36Sopenharmony_ci		.irq_cnt_shift = 0,
242762306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
242862306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ1_CON,
242962306a36Sopenharmony_ci		.irq_fs_shift = 24,
243062306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
243162306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ1_CON,
243262306a36Sopenharmony_ci		.irq_en_shift = 31,
243362306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
243462306a36Sopenharmony_ci		.irq_clr_shift = 0,
243562306a36Sopenharmony_ci		.irq_status_shift = 0,
243662306a36Sopenharmony_ci	},
243762306a36Sopenharmony_ci	[MT8188_AFE_IRQ_14] = {
243862306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_14,
243962306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ2_CON,
244062306a36Sopenharmony_ci		.irq_cnt_shift = 0,
244162306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
244262306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ2_CON,
244362306a36Sopenharmony_ci		.irq_fs_shift = 24,
244462306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
244562306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ2_CON,
244662306a36Sopenharmony_ci		.irq_en_shift = 31,
244762306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
244862306a36Sopenharmony_ci		.irq_clr_shift = 1,
244962306a36Sopenharmony_ci		.irq_status_shift = 1,
245062306a36Sopenharmony_ci	},
245162306a36Sopenharmony_ci	[MT8188_AFE_IRQ_15] = {
245262306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_15,
245362306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ3_CON,
245462306a36Sopenharmony_ci		.irq_cnt_shift = 0,
245562306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
245662306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ3_CON,
245762306a36Sopenharmony_ci		.irq_fs_shift = 24,
245862306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
245962306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ3_CON,
246062306a36Sopenharmony_ci		.irq_en_shift = 31,
246162306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
246262306a36Sopenharmony_ci		.irq_clr_shift = 2,
246362306a36Sopenharmony_ci		.irq_status_shift = 2,
246462306a36Sopenharmony_ci	},
246562306a36Sopenharmony_ci	[MT8188_AFE_IRQ_16] = {
246662306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_16,
246762306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ4_CON,
246862306a36Sopenharmony_ci		.irq_cnt_shift = 0,
246962306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
247062306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ4_CON,
247162306a36Sopenharmony_ci		.irq_fs_shift = 24,
247262306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
247362306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ4_CON,
247462306a36Sopenharmony_ci		.irq_en_shift = 31,
247562306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
247662306a36Sopenharmony_ci		.irq_clr_shift = 3,
247762306a36Sopenharmony_ci		.irq_status_shift = 3,
247862306a36Sopenharmony_ci	},
247962306a36Sopenharmony_ci	[MT8188_AFE_IRQ_17] = {
248062306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_17,
248162306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ5_CON,
248262306a36Sopenharmony_ci		.irq_cnt_shift = 0,
248362306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
248462306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ5_CON,
248562306a36Sopenharmony_ci		.irq_fs_shift = 24,
248662306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
248762306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ5_CON,
248862306a36Sopenharmony_ci		.irq_en_shift = 31,
248962306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
249062306a36Sopenharmony_ci		.irq_clr_shift = 4,
249162306a36Sopenharmony_ci		.irq_status_shift = 4,
249262306a36Sopenharmony_ci	},
249362306a36Sopenharmony_ci	[MT8188_AFE_IRQ_18] = {
249462306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_18,
249562306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ6_CON,
249662306a36Sopenharmony_ci		.irq_cnt_shift = 0,
249762306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
249862306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ6_CON,
249962306a36Sopenharmony_ci		.irq_fs_shift = 24,
250062306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
250162306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ6_CON,
250262306a36Sopenharmony_ci		.irq_en_shift = 31,
250362306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
250462306a36Sopenharmony_ci		.irq_clr_shift = 5,
250562306a36Sopenharmony_ci		.irq_status_shift = 5,
250662306a36Sopenharmony_ci	},
250762306a36Sopenharmony_ci	[MT8188_AFE_IRQ_19] = {
250862306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_19,
250962306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ7_CON,
251062306a36Sopenharmony_ci		.irq_cnt_shift = 0,
251162306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
251262306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ7_CON,
251362306a36Sopenharmony_ci		.irq_fs_shift = 24,
251462306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
251562306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ7_CON,
251662306a36Sopenharmony_ci		.irq_en_shift = 31,
251762306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
251862306a36Sopenharmony_ci		.irq_clr_shift = 6,
251962306a36Sopenharmony_ci		.irq_status_shift = 6,
252062306a36Sopenharmony_ci	},
252162306a36Sopenharmony_ci	[MT8188_AFE_IRQ_20] = {
252262306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_20,
252362306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ8_CON,
252462306a36Sopenharmony_ci		.irq_cnt_shift = 0,
252562306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
252662306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ8_CON,
252762306a36Sopenharmony_ci		.irq_fs_shift = 24,
252862306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
252962306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ8_CON,
253062306a36Sopenharmony_ci		.irq_en_shift = 31,
253162306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
253262306a36Sopenharmony_ci		.irq_clr_shift = 7,
253362306a36Sopenharmony_ci		.irq_status_shift = 7,
253462306a36Sopenharmony_ci	},
253562306a36Sopenharmony_ci	[MT8188_AFE_IRQ_21] = {
253662306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_21,
253762306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ9_CON,
253862306a36Sopenharmony_ci		.irq_cnt_shift = 0,
253962306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
254062306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ9_CON,
254162306a36Sopenharmony_ci		.irq_fs_shift = 24,
254262306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
254362306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ9_CON,
254462306a36Sopenharmony_ci		.irq_en_shift = 31,
254562306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
254662306a36Sopenharmony_ci		.irq_clr_shift = 8,
254762306a36Sopenharmony_ci		.irq_status_shift = 8,
254862306a36Sopenharmony_ci	},
254962306a36Sopenharmony_ci	[MT8188_AFE_IRQ_22] = {
255062306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_22,
255162306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ10_CON,
255262306a36Sopenharmony_ci		.irq_cnt_shift = 0,
255362306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
255462306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ10_CON,
255562306a36Sopenharmony_ci		.irq_fs_shift = 24,
255662306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
255762306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ10_CON,
255862306a36Sopenharmony_ci		.irq_en_shift = 31,
255962306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
256062306a36Sopenharmony_ci		.irq_clr_shift = 9,
256162306a36Sopenharmony_ci		.irq_status_shift = 9,
256262306a36Sopenharmony_ci	},
256362306a36Sopenharmony_ci	[MT8188_AFE_IRQ_23] = {
256462306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_23,
256562306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ11_CON,
256662306a36Sopenharmony_ci		.irq_cnt_shift = 0,
256762306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
256862306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ11_CON,
256962306a36Sopenharmony_ci		.irq_fs_shift = 24,
257062306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
257162306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ11_CON,
257262306a36Sopenharmony_ci		.irq_en_shift = 31,
257362306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
257462306a36Sopenharmony_ci		.irq_clr_shift = 10,
257562306a36Sopenharmony_ci		.irq_status_shift = 10,
257662306a36Sopenharmony_ci	},
257762306a36Sopenharmony_ci	[MT8188_AFE_IRQ_24] = {
257862306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_24,
257962306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ12_CON,
258062306a36Sopenharmony_ci		.irq_cnt_shift = 0,
258162306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
258262306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ12_CON,
258362306a36Sopenharmony_ci		.irq_fs_shift = 24,
258462306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
258562306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ12_CON,
258662306a36Sopenharmony_ci		.irq_en_shift = 31,
258762306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
258862306a36Sopenharmony_ci		.irq_clr_shift = 11,
258962306a36Sopenharmony_ci		.irq_status_shift = 11,
259062306a36Sopenharmony_ci	},
259162306a36Sopenharmony_ci	[MT8188_AFE_IRQ_25] = {
259262306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_25,
259362306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ13_CON,
259462306a36Sopenharmony_ci		.irq_cnt_shift = 0,
259562306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
259662306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ13_CON,
259762306a36Sopenharmony_ci		.irq_fs_shift = 24,
259862306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
259962306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ13_CON,
260062306a36Sopenharmony_ci		.irq_en_shift = 31,
260162306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
260262306a36Sopenharmony_ci		.irq_clr_shift = 12,
260362306a36Sopenharmony_ci		.irq_status_shift = 12,
260462306a36Sopenharmony_ci	},
260562306a36Sopenharmony_ci	[MT8188_AFE_IRQ_26] = {
260662306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_26,
260762306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ14_CON,
260862306a36Sopenharmony_ci		.irq_cnt_shift = 0,
260962306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
261062306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ14_CON,
261162306a36Sopenharmony_ci		.irq_fs_shift = 24,
261262306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
261362306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ14_CON,
261462306a36Sopenharmony_ci		.irq_en_shift = 31,
261562306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
261662306a36Sopenharmony_ci		.irq_clr_shift = 13,
261762306a36Sopenharmony_ci		.irq_status_shift = 13,
261862306a36Sopenharmony_ci	},
261962306a36Sopenharmony_ci	[MT8188_AFE_IRQ_27] = {
262062306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_27,
262162306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ15_CON,
262262306a36Sopenharmony_ci		.irq_cnt_shift = 0,
262362306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
262462306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ15_CON,
262562306a36Sopenharmony_ci		.irq_fs_shift = 24,
262662306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
262762306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ15_CON,
262862306a36Sopenharmony_ci		.irq_en_shift = 31,
262962306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
263062306a36Sopenharmony_ci		.irq_clr_shift = 14,
263162306a36Sopenharmony_ci		.irq_status_shift = 14,
263262306a36Sopenharmony_ci	},
263362306a36Sopenharmony_ci	[MT8188_AFE_IRQ_28] = {
263462306a36Sopenharmony_ci		.id = MT8188_AFE_IRQ_28,
263562306a36Sopenharmony_ci		.irq_cnt_reg = ASYS_IRQ16_CON,
263662306a36Sopenharmony_ci		.irq_cnt_shift = 0,
263762306a36Sopenharmony_ci		.irq_cnt_maskbit = 0xffffff,
263862306a36Sopenharmony_ci		.irq_fs_reg = ASYS_IRQ16_CON,
263962306a36Sopenharmony_ci		.irq_fs_shift = 24,
264062306a36Sopenharmony_ci		.irq_fs_maskbit = 0x1ffff,
264162306a36Sopenharmony_ci		.irq_en_reg = ASYS_IRQ16_CON,
264262306a36Sopenharmony_ci		.irq_en_shift = 31,
264362306a36Sopenharmony_ci		.irq_clr_reg =  ASYS_IRQ_CLR,
264462306a36Sopenharmony_ci		.irq_clr_shift = 15,
264562306a36Sopenharmony_ci		.irq_status_shift = 15,
264662306a36Sopenharmony_ci	},
264762306a36Sopenharmony_ci};
264862306a36Sopenharmony_ci
264962306a36Sopenharmony_cistatic const int mt8188_afe_memif_const_irqs[MT8188_AFE_MEMIF_NUM] = {
265062306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL2] = MT8188_AFE_IRQ_13,
265162306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL3] = MT8188_AFE_IRQ_14,
265262306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL6] = MT8188_AFE_IRQ_15,
265362306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL7] = MT8188_AFE_IRQ_1,
265462306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL8] = MT8188_AFE_IRQ_16,
265562306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL10] = MT8188_AFE_IRQ_17,
265662306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_DL11] = MT8188_AFE_IRQ_18,
265762306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL1] = MT8188_AFE_IRQ_3,
265862306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL2] = MT8188_AFE_IRQ_19,
265962306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL3] = MT8188_AFE_IRQ_20,
266062306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL4] = MT8188_AFE_IRQ_21,
266162306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL5] = MT8188_AFE_IRQ_22,
266262306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL6] = MT8188_AFE_IRQ_9,
266362306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL8] = MT8188_AFE_IRQ_23,
266462306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL9] = MT8188_AFE_IRQ_24,
266562306a36Sopenharmony_ci	[MT8188_AFE_MEMIF_UL10] = MT8188_AFE_IRQ_25,
266662306a36Sopenharmony_ci};
266762306a36Sopenharmony_ci
266862306a36Sopenharmony_cistatic bool mt8188_is_volatile_reg(struct device *dev, unsigned int reg)
266962306a36Sopenharmony_ci{
267062306a36Sopenharmony_ci	/* these auto-gen reg has read-only bit, so put it as volatile */
267162306a36Sopenharmony_ci	/* volatile reg cannot be cached, so cannot be set when power off */
267262306a36Sopenharmony_ci	switch (reg) {
267362306a36Sopenharmony_ci	case AUDIO_TOP_CON0:
267462306a36Sopenharmony_ci	case AUDIO_TOP_CON1:
267562306a36Sopenharmony_ci	case AUDIO_TOP_CON3:
267662306a36Sopenharmony_ci	case AUDIO_TOP_CON4:
267762306a36Sopenharmony_ci	case AUDIO_TOP_CON5:
267862306a36Sopenharmony_ci	case AUDIO_TOP_CON6:
267962306a36Sopenharmony_ci	case ASYS_IRQ_CLR:
268062306a36Sopenharmony_ci	case ASYS_IRQ_STATUS:
268162306a36Sopenharmony_ci	case ASYS_IRQ_MON1:
268262306a36Sopenharmony_ci	case ASYS_IRQ_MON2:
268362306a36Sopenharmony_ci	case AFE_IRQ_MCU_CLR:
268462306a36Sopenharmony_ci	case AFE_IRQ_STATUS:
268562306a36Sopenharmony_ci	case AFE_IRQ3_CON_MON:
268662306a36Sopenharmony_ci	case AFE_IRQ_MCU_MON2:
268762306a36Sopenharmony_ci	case ADSP_IRQ_STATUS:
268862306a36Sopenharmony_ci	case AUDIO_TOP_STA0:
268962306a36Sopenharmony_ci	case AUDIO_TOP_STA1:
269062306a36Sopenharmony_ci	case AFE_GAIN1_CUR:
269162306a36Sopenharmony_ci	case AFE_GAIN2_CUR:
269262306a36Sopenharmony_ci	case AFE_IEC_BURST_INFO:
269362306a36Sopenharmony_ci	case AFE_IEC_CHL_STAT0:
269462306a36Sopenharmony_ci	case AFE_IEC_CHL_STAT1:
269562306a36Sopenharmony_ci	case AFE_IEC_CHR_STAT0:
269662306a36Sopenharmony_ci	case AFE_IEC_CHR_STAT1:
269762306a36Sopenharmony_ci	case AFE_SPDIFIN_CHSTS1:
269862306a36Sopenharmony_ci	case AFE_SPDIFIN_CHSTS2:
269962306a36Sopenharmony_ci	case AFE_SPDIFIN_CHSTS3:
270062306a36Sopenharmony_ci	case AFE_SPDIFIN_CHSTS4:
270162306a36Sopenharmony_ci	case AFE_SPDIFIN_CHSTS5:
270262306a36Sopenharmony_ci	case AFE_SPDIFIN_CHSTS6:
270362306a36Sopenharmony_ci	case AFE_SPDIFIN_DEBUG1:
270462306a36Sopenharmony_ci	case AFE_SPDIFIN_DEBUG2:
270562306a36Sopenharmony_ci	case AFE_SPDIFIN_DEBUG3:
270662306a36Sopenharmony_ci	case AFE_SPDIFIN_DEBUG4:
270762306a36Sopenharmony_ci	case AFE_SPDIFIN_EC:
270862306a36Sopenharmony_ci	case AFE_SPDIFIN_CKLOCK_CFG:
270962306a36Sopenharmony_ci	case AFE_SPDIFIN_BR_DBG1:
271062306a36Sopenharmony_ci	case AFE_SPDIFIN_CKFBDIV:
271162306a36Sopenharmony_ci	case AFE_SPDIFIN_INT_EXT:
271262306a36Sopenharmony_ci	case AFE_SPDIFIN_INT_EXT2:
271362306a36Sopenharmony_ci	case SPDIFIN_FREQ_STATUS:
271462306a36Sopenharmony_ci	case SPDIFIN_USERCODE1:
271562306a36Sopenharmony_ci	case SPDIFIN_USERCODE2:
271662306a36Sopenharmony_ci	case SPDIFIN_USERCODE3:
271762306a36Sopenharmony_ci	case SPDIFIN_USERCODE4:
271862306a36Sopenharmony_ci	case SPDIFIN_USERCODE5:
271962306a36Sopenharmony_ci	case SPDIFIN_USERCODE6:
272062306a36Sopenharmony_ci	case SPDIFIN_USERCODE7:
272162306a36Sopenharmony_ci	case SPDIFIN_USERCODE8:
272262306a36Sopenharmony_ci	case SPDIFIN_USERCODE9:
272362306a36Sopenharmony_ci	case SPDIFIN_USERCODE10:
272462306a36Sopenharmony_ci	case SPDIFIN_USERCODE11:
272562306a36Sopenharmony_ci	case SPDIFIN_USERCODE12:
272662306a36Sopenharmony_ci	case AFE_LINEIN_APLL_TUNER_MON:
272762306a36Sopenharmony_ci	case AFE_EARC_APLL_TUNER_MON:
272862306a36Sopenharmony_ci	case AFE_CM0_MON:
272962306a36Sopenharmony_ci	case AFE_CM1_MON:
273062306a36Sopenharmony_ci	case AFE_CM2_MON:
273162306a36Sopenharmony_ci	case AFE_MPHONE_MULTI_DET_MON0:
273262306a36Sopenharmony_ci	case AFE_MPHONE_MULTI_DET_MON1:
273362306a36Sopenharmony_ci	case AFE_MPHONE_MULTI_DET_MON2:
273462306a36Sopenharmony_ci	case AFE_MPHONE_MULTI2_DET_MON0:
273562306a36Sopenharmony_ci	case AFE_MPHONE_MULTI2_DET_MON1:
273662306a36Sopenharmony_ci	case AFE_MPHONE_MULTI2_DET_MON2:
273762306a36Sopenharmony_ci	case AFE_ADDA_MTKAIF_MON0:
273862306a36Sopenharmony_ci	case AFE_ADDA_MTKAIF_MON1:
273962306a36Sopenharmony_ci	case AFE_AUD_PAD_TOP:
274062306a36Sopenharmony_ci	case AFE_ADDA6_MTKAIF_MON0:
274162306a36Sopenharmony_ci	case AFE_ADDA6_MTKAIF_MON1:
274262306a36Sopenharmony_ci	case AFE_ADDA6_SRC_DEBUG_MON0:
274362306a36Sopenharmony_ci	case AFE_ADDA6_UL_SRC_MON0:
274462306a36Sopenharmony_ci	case AFE_ADDA6_UL_SRC_MON1:
274562306a36Sopenharmony_ci	case AFE_ASRC11_NEW_CON8:
274662306a36Sopenharmony_ci	case AFE_ASRC11_NEW_CON9:
274762306a36Sopenharmony_ci	case AFE_ASRC12_NEW_CON8:
274862306a36Sopenharmony_ci	case AFE_ASRC12_NEW_CON9:
274962306a36Sopenharmony_ci	case AFE_LRCK_CNT:
275062306a36Sopenharmony_ci	case AFE_DAC_MON0:
275162306a36Sopenharmony_ci	case AFE_DL2_CUR:
275262306a36Sopenharmony_ci	case AFE_DL3_CUR:
275362306a36Sopenharmony_ci	case AFE_DL6_CUR:
275462306a36Sopenharmony_ci	case AFE_DL7_CUR:
275562306a36Sopenharmony_ci	case AFE_DL8_CUR:
275662306a36Sopenharmony_ci	case AFE_DL10_CUR:
275762306a36Sopenharmony_ci	case AFE_DL11_CUR:
275862306a36Sopenharmony_ci	case AFE_UL1_CUR:
275962306a36Sopenharmony_ci	case AFE_UL2_CUR:
276062306a36Sopenharmony_ci	case AFE_UL3_CUR:
276162306a36Sopenharmony_ci	case AFE_UL4_CUR:
276262306a36Sopenharmony_ci	case AFE_UL5_CUR:
276362306a36Sopenharmony_ci	case AFE_UL6_CUR:
276462306a36Sopenharmony_ci	case AFE_UL8_CUR:
276562306a36Sopenharmony_ci	case AFE_UL9_CUR:
276662306a36Sopenharmony_ci	case AFE_UL10_CUR:
276762306a36Sopenharmony_ci	case AFE_DL8_CHK_SUM1:
276862306a36Sopenharmony_ci	case AFE_DL8_CHK_SUM2:
276962306a36Sopenharmony_ci	case AFE_DL8_CHK_SUM3:
277062306a36Sopenharmony_ci	case AFE_DL8_CHK_SUM4:
277162306a36Sopenharmony_ci	case AFE_DL8_CHK_SUM5:
277262306a36Sopenharmony_ci	case AFE_DL8_CHK_SUM6:
277362306a36Sopenharmony_ci	case AFE_DL10_CHK_SUM1:
277462306a36Sopenharmony_ci	case AFE_DL10_CHK_SUM2:
277562306a36Sopenharmony_ci	case AFE_DL10_CHK_SUM3:
277662306a36Sopenharmony_ci	case AFE_DL10_CHK_SUM4:
277762306a36Sopenharmony_ci	case AFE_DL10_CHK_SUM5:
277862306a36Sopenharmony_ci	case AFE_DL10_CHK_SUM6:
277962306a36Sopenharmony_ci	case AFE_DL11_CHK_SUM1:
278062306a36Sopenharmony_ci	case AFE_DL11_CHK_SUM2:
278162306a36Sopenharmony_ci	case AFE_DL11_CHK_SUM3:
278262306a36Sopenharmony_ci	case AFE_DL11_CHK_SUM4:
278362306a36Sopenharmony_ci	case AFE_DL11_CHK_SUM5:
278462306a36Sopenharmony_ci	case AFE_DL11_CHK_SUM6:
278562306a36Sopenharmony_ci	case AFE_UL1_CHK_SUM1:
278662306a36Sopenharmony_ci	case AFE_UL1_CHK_SUM2:
278762306a36Sopenharmony_ci	case AFE_UL2_CHK_SUM1:
278862306a36Sopenharmony_ci	case AFE_UL2_CHK_SUM2:
278962306a36Sopenharmony_ci	case AFE_UL3_CHK_SUM1:
279062306a36Sopenharmony_ci	case AFE_UL3_CHK_SUM2:
279162306a36Sopenharmony_ci	case AFE_UL4_CHK_SUM1:
279262306a36Sopenharmony_ci	case AFE_UL4_CHK_SUM2:
279362306a36Sopenharmony_ci	case AFE_UL5_CHK_SUM1:
279462306a36Sopenharmony_ci	case AFE_UL5_CHK_SUM2:
279562306a36Sopenharmony_ci	case AFE_UL6_CHK_SUM1:
279662306a36Sopenharmony_ci	case AFE_UL6_CHK_SUM2:
279762306a36Sopenharmony_ci	case AFE_UL8_CHK_SUM1:
279862306a36Sopenharmony_ci	case AFE_UL8_CHK_SUM2:
279962306a36Sopenharmony_ci	case AFE_DL2_CHK_SUM1:
280062306a36Sopenharmony_ci	case AFE_DL2_CHK_SUM2:
280162306a36Sopenharmony_ci	case AFE_DL3_CHK_SUM1:
280262306a36Sopenharmony_ci	case AFE_DL3_CHK_SUM2:
280362306a36Sopenharmony_ci	case AFE_DL6_CHK_SUM1:
280462306a36Sopenharmony_ci	case AFE_DL6_CHK_SUM2:
280562306a36Sopenharmony_ci	case AFE_DL7_CHK_SUM1:
280662306a36Sopenharmony_ci	case AFE_DL7_CHK_SUM2:
280762306a36Sopenharmony_ci	case AFE_UL9_CHK_SUM1:
280862306a36Sopenharmony_ci	case AFE_UL9_CHK_SUM2:
280962306a36Sopenharmony_ci	case AFE_BUS_MON1:
281062306a36Sopenharmony_ci	case UL1_MOD2AGT_CNT_LAT:
281162306a36Sopenharmony_ci	case UL2_MOD2AGT_CNT_LAT:
281262306a36Sopenharmony_ci	case UL3_MOD2AGT_CNT_LAT:
281362306a36Sopenharmony_ci	case UL4_MOD2AGT_CNT_LAT:
281462306a36Sopenharmony_ci	case UL5_MOD2AGT_CNT_LAT:
281562306a36Sopenharmony_ci	case UL6_MOD2AGT_CNT_LAT:
281662306a36Sopenharmony_ci	case UL8_MOD2AGT_CNT_LAT:
281762306a36Sopenharmony_ci	case UL9_MOD2AGT_CNT_LAT:
281862306a36Sopenharmony_ci	case UL10_MOD2AGT_CNT_LAT:
281962306a36Sopenharmony_ci	case AFE_MEMIF_BUF_FULL_MON:
282062306a36Sopenharmony_ci	case AFE_MEMIF_BUF_MON1:
282162306a36Sopenharmony_ci	case AFE_MEMIF_BUF_MON3:
282262306a36Sopenharmony_ci	case AFE_MEMIF_BUF_MON4:
282362306a36Sopenharmony_ci	case AFE_MEMIF_BUF_MON5:
282462306a36Sopenharmony_ci	case AFE_MEMIF_BUF_MON6:
282562306a36Sopenharmony_ci	case AFE_MEMIF_BUF_MON7:
282662306a36Sopenharmony_ci	case AFE_MEMIF_BUF_MON8:
282762306a36Sopenharmony_ci	case AFE_MEMIF_BUF_MON9:
282862306a36Sopenharmony_ci	case AFE_MEMIF_BUF_MON10:
282962306a36Sopenharmony_ci	case DL2_AGENT2MODULE_CNT:
283062306a36Sopenharmony_ci	case DL3_AGENT2MODULE_CNT:
283162306a36Sopenharmony_ci	case DL6_AGENT2MODULE_CNT:
283262306a36Sopenharmony_ci	case DL7_AGENT2MODULE_CNT:
283362306a36Sopenharmony_ci	case DL8_AGENT2MODULE_CNT:
283462306a36Sopenharmony_ci	case DL10_AGENT2MODULE_CNT:
283562306a36Sopenharmony_ci	case DL11_AGENT2MODULE_CNT:
283662306a36Sopenharmony_ci	case UL1_MODULE2AGENT_CNT:
283762306a36Sopenharmony_ci	case UL2_MODULE2AGENT_CNT:
283862306a36Sopenharmony_ci	case UL3_MODULE2AGENT_CNT:
283962306a36Sopenharmony_ci	case UL4_MODULE2AGENT_CNT:
284062306a36Sopenharmony_ci	case UL5_MODULE2AGENT_CNT:
284162306a36Sopenharmony_ci	case UL6_MODULE2AGENT_CNT:
284262306a36Sopenharmony_ci	case UL8_MODULE2AGENT_CNT:
284362306a36Sopenharmony_ci	case UL9_MODULE2AGENT_CNT:
284462306a36Sopenharmony_ci	case UL10_MODULE2AGENT_CNT:
284562306a36Sopenharmony_ci	case AFE_DMIC0_SRC_DEBUG_MON0:
284662306a36Sopenharmony_ci	case AFE_DMIC0_UL_SRC_MON0:
284762306a36Sopenharmony_ci	case AFE_DMIC0_UL_SRC_MON1:
284862306a36Sopenharmony_ci	case AFE_DMIC1_SRC_DEBUG_MON0:
284962306a36Sopenharmony_ci	case AFE_DMIC1_UL_SRC_MON0:
285062306a36Sopenharmony_ci	case AFE_DMIC1_UL_SRC_MON1:
285162306a36Sopenharmony_ci	case AFE_DMIC2_SRC_DEBUG_MON0:
285262306a36Sopenharmony_ci	case AFE_DMIC2_UL_SRC_MON0:
285362306a36Sopenharmony_ci	case AFE_DMIC2_UL_SRC_MON1:
285462306a36Sopenharmony_ci	case AFE_DMIC3_SRC_DEBUG_MON0:
285562306a36Sopenharmony_ci	case AFE_DMIC3_UL_SRC_MON0:
285662306a36Sopenharmony_ci	case AFE_DMIC3_UL_SRC_MON1:
285762306a36Sopenharmony_ci	case DMIC_GAIN1_CUR:
285862306a36Sopenharmony_ci	case DMIC_GAIN2_CUR:
285962306a36Sopenharmony_ci	case DMIC_GAIN3_CUR:
286062306a36Sopenharmony_ci	case DMIC_GAIN4_CUR:
286162306a36Sopenharmony_ci	case ETDM_IN1_MONITOR:
286262306a36Sopenharmony_ci	case ETDM_IN2_MONITOR:
286362306a36Sopenharmony_ci	case ETDM_OUT1_MONITOR:
286462306a36Sopenharmony_ci	case ETDM_OUT2_MONITOR:
286562306a36Sopenharmony_ci	case ETDM_OUT3_MONITOR:
286662306a36Sopenharmony_ci	case AFE_ADDA_SRC_DEBUG_MON0:
286762306a36Sopenharmony_ci	case AFE_ADDA_SRC_DEBUG_MON1:
286862306a36Sopenharmony_ci	case AFE_ADDA_DL_SDM_FIFO_MON:
286962306a36Sopenharmony_ci	case AFE_ADDA_DL_SRC_LCH_MON:
287062306a36Sopenharmony_ci	case AFE_ADDA_DL_SRC_RCH_MON:
287162306a36Sopenharmony_ci	case AFE_ADDA_DL_SDM_OUT_MON:
287262306a36Sopenharmony_ci	case AFE_GASRC0_NEW_CON8:
287362306a36Sopenharmony_ci	case AFE_GASRC0_NEW_CON9:
287462306a36Sopenharmony_ci	case AFE_GASRC0_NEW_CON12:
287562306a36Sopenharmony_ci	case AFE_GASRC1_NEW_CON8:
287662306a36Sopenharmony_ci	case AFE_GASRC1_NEW_CON9:
287762306a36Sopenharmony_ci	case AFE_GASRC1_NEW_CON12:
287862306a36Sopenharmony_ci	case AFE_GASRC2_NEW_CON8:
287962306a36Sopenharmony_ci	case AFE_GASRC2_NEW_CON9:
288062306a36Sopenharmony_ci	case AFE_GASRC2_NEW_CON12:
288162306a36Sopenharmony_ci	case AFE_GASRC3_NEW_CON8:
288262306a36Sopenharmony_ci	case AFE_GASRC3_NEW_CON9:
288362306a36Sopenharmony_ci	case AFE_GASRC3_NEW_CON12:
288462306a36Sopenharmony_ci	case AFE_GASRC4_NEW_CON8:
288562306a36Sopenharmony_ci	case AFE_GASRC4_NEW_CON9:
288662306a36Sopenharmony_ci	case AFE_GASRC4_NEW_CON12:
288762306a36Sopenharmony_ci	case AFE_GASRC5_NEW_CON8:
288862306a36Sopenharmony_ci	case AFE_GASRC5_NEW_CON9:
288962306a36Sopenharmony_ci	case AFE_GASRC5_NEW_CON12:
289062306a36Sopenharmony_ci	case AFE_GASRC6_NEW_CON8:
289162306a36Sopenharmony_ci	case AFE_GASRC6_NEW_CON9:
289262306a36Sopenharmony_ci	case AFE_GASRC6_NEW_CON12:
289362306a36Sopenharmony_ci	case AFE_GASRC7_NEW_CON8:
289462306a36Sopenharmony_ci	case AFE_GASRC7_NEW_CON9:
289562306a36Sopenharmony_ci	case AFE_GASRC7_NEW_CON12:
289662306a36Sopenharmony_ci	case AFE_GASRC8_NEW_CON8:
289762306a36Sopenharmony_ci	case AFE_GASRC8_NEW_CON9:
289862306a36Sopenharmony_ci	case AFE_GASRC8_NEW_CON12:
289962306a36Sopenharmony_ci	case AFE_GASRC9_NEW_CON8:
290062306a36Sopenharmony_ci	case AFE_GASRC9_NEW_CON9:
290162306a36Sopenharmony_ci	case AFE_GASRC9_NEW_CON12:
290262306a36Sopenharmony_ci	case AFE_GASRC10_NEW_CON8:
290362306a36Sopenharmony_ci	case AFE_GASRC10_NEW_CON9:
290462306a36Sopenharmony_ci	case AFE_GASRC10_NEW_CON12:
290562306a36Sopenharmony_ci	case AFE_GASRC11_NEW_CON8:
290662306a36Sopenharmony_ci	case AFE_GASRC11_NEW_CON9:
290762306a36Sopenharmony_ci	case AFE_GASRC11_NEW_CON12:
290862306a36Sopenharmony_ci		return true;
290962306a36Sopenharmony_ci	default:
291062306a36Sopenharmony_ci		return false;
291162306a36Sopenharmony_ci	};
291262306a36Sopenharmony_ci}
291362306a36Sopenharmony_ci
291462306a36Sopenharmony_cistatic const struct regmap_config mt8188_afe_regmap_config = {
291562306a36Sopenharmony_ci	.reg_bits = 32,
291662306a36Sopenharmony_ci	.reg_stride = 4,
291762306a36Sopenharmony_ci	.val_bits = 32,
291862306a36Sopenharmony_ci	.volatile_reg = mt8188_is_volatile_reg,
291962306a36Sopenharmony_ci	.max_register = AFE_MAX_REGISTER,
292062306a36Sopenharmony_ci	.num_reg_defaults_raw = ((AFE_MAX_REGISTER / 4) + 1),
292162306a36Sopenharmony_ci	.cache_type = REGCACHE_FLAT,
292262306a36Sopenharmony_ci};
292362306a36Sopenharmony_ci
292462306a36Sopenharmony_ci#define AFE_IRQ_CLR_BITS (0x387)
292562306a36Sopenharmony_ci#define ASYS_IRQ_CLR_BITS (0xffff)
292662306a36Sopenharmony_ci
292762306a36Sopenharmony_cistatic irqreturn_t mt8188_afe_irq_handler(int irq_id, void *dev_id)
292862306a36Sopenharmony_ci{
292962306a36Sopenharmony_ci	struct mtk_base_afe *afe = dev_id;
293062306a36Sopenharmony_ci	unsigned int val = 0;
293162306a36Sopenharmony_ci	unsigned int asys_irq_clr_bits = 0;
293262306a36Sopenharmony_ci	unsigned int afe_irq_clr_bits = 0;
293362306a36Sopenharmony_ci	unsigned int irq_status_bits = 0;
293462306a36Sopenharmony_ci	unsigned int irq_clr_bits = 0;
293562306a36Sopenharmony_ci	unsigned int mcu_irq_mask = 0;
293662306a36Sopenharmony_ci	int i = 0;
293762306a36Sopenharmony_ci	int ret = 0;
293862306a36Sopenharmony_ci
293962306a36Sopenharmony_ci	ret = regmap_read(afe->regmap, AFE_IRQ_STATUS, &val);
294062306a36Sopenharmony_ci	if (ret) {
294162306a36Sopenharmony_ci		dev_err(afe->dev, "%s irq status err\n", __func__);
294262306a36Sopenharmony_ci		afe_irq_clr_bits = AFE_IRQ_CLR_BITS;
294362306a36Sopenharmony_ci		asys_irq_clr_bits = ASYS_IRQ_CLR_BITS;
294462306a36Sopenharmony_ci		goto err_irq;
294562306a36Sopenharmony_ci	}
294662306a36Sopenharmony_ci
294762306a36Sopenharmony_ci	ret = regmap_read(afe->regmap, AFE_IRQ_MASK, &mcu_irq_mask);
294862306a36Sopenharmony_ci	if (ret) {
294962306a36Sopenharmony_ci		dev_err(afe->dev, "%s read irq mask err\n", __func__);
295062306a36Sopenharmony_ci		afe_irq_clr_bits = AFE_IRQ_CLR_BITS;
295162306a36Sopenharmony_ci		asys_irq_clr_bits = ASYS_IRQ_CLR_BITS;
295262306a36Sopenharmony_ci		goto err_irq;
295362306a36Sopenharmony_ci	}
295462306a36Sopenharmony_ci
295562306a36Sopenharmony_ci	/* only clr cpu irq */
295662306a36Sopenharmony_ci	val &= mcu_irq_mask;
295762306a36Sopenharmony_ci
295862306a36Sopenharmony_ci	for (i = 0; i < MT8188_AFE_MEMIF_NUM; i++) {
295962306a36Sopenharmony_ci		struct mtk_base_afe_memif *memif = &afe->memif[i];
296062306a36Sopenharmony_ci		struct mtk_base_irq_data const *irq_data;
296162306a36Sopenharmony_ci
296262306a36Sopenharmony_ci		if (memif->irq_usage < 0)
296362306a36Sopenharmony_ci			continue;
296462306a36Sopenharmony_ci
296562306a36Sopenharmony_ci		irq_data = afe->irqs[memif->irq_usage].irq_data;
296662306a36Sopenharmony_ci
296762306a36Sopenharmony_ci		irq_status_bits = BIT(irq_data->irq_status_shift);
296862306a36Sopenharmony_ci		irq_clr_bits = BIT(irq_data->irq_clr_shift);
296962306a36Sopenharmony_ci
297062306a36Sopenharmony_ci		if (!(val & irq_status_bits))
297162306a36Sopenharmony_ci			continue;
297262306a36Sopenharmony_ci
297362306a36Sopenharmony_ci		if (irq_data->irq_clr_reg == ASYS_IRQ_CLR)
297462306a36Sopenharmony_ci			asys_irq_clr_bits |= irq_clr_bits;
297562306a36Sopenharmony_ci		else
297662306a36Sopenharmony_ci			afe_irq_clr_bits |= irq_clr_bits;
297762306a36Sopenharmony_ci
297862306a36Sopenharmony_ci		snd_pcm_period_elapsed(memif->substream);
297962306a36Sopenharmony_ci	}
298062306a36Sopenharmony_ci
298162306a36Sopenharmony_cierr_irq:
298262306a36Sopenharmony_ci	/* clear irq */
298362306a36Sopenharmony_ci	if (asys_irq_clr_bits)
298462306a36Sopenharmony_ci		regmap_write(afe->regmap, ASYS_IRQ_CLR, asys_irq_clr_bits);
298562306a36Sopenharmony_ci	if (afe_irq_clr_bits)
298662306a36Sopenharmony_ci		regmap_write(afe->regmap, AFE_IRQ_MCU_CLR, afe_irq_clr_bits);
298762306a36Sopenharmony_ci
298862306a36Sopenharmony_ci	return IRQ_HANDLED;
298962306a36Sopenharmony_ci}
299062306a36Sopenharmony_ci
299162306a36Sopenharmony_cistatic int mt8188_afe_runtime_suspend(struct device *dev)
299262306a36Sopenharmony_ci{
299362306a36Sopenharmony_ci	struct mtk_base_afe *afe = dev_get_drvdata(dev);
299462306a36Sopenharmony_ci	struct mt8188_afe_private *afe_priv = afe->platform_priv;
299562306a36Sopenharmony_ci
299662306a36Sopenharmony_ci	if (!afe->regmap || afe_priv->pm_runtime_bypass_reg_ctl)
299762306a36Sopenharmony_ci		goto skip_regmap;
299862306a36Sopenharmony_ci
299962306a36Sopenharmony_ci	mt8188_afe_disable_main_clock(afe);
300062306a36Sopenharmony_ci
300162306a36Sopenharmony_ci	regcache_cache_only(afe->regmap, true);
300262306a36Sopenharmony_ci	regcache_mark_dirty(afe->regmap);
300362306a36Sopenharmony_ci
300462306a36Sopenharmony_ciskip_regmap:
300562306a36Sopenharmony_ci	mt8188_afe_disable_reg_rw_clk(afe);
300662306a36Sopenharmony_ci
300762306a36Sopenharmony_ci	return 0;
300862306a36Sopenharmony_ci}
300962306a36Sopenharmony_ci
301062306a36Sopenharmony_cistatic int mt8188_afe_runtime_resume(struct device *dev)
301162306a36Sopenharmony_ci{
301262306a36Sopenharmony_ci	struct mtk_base_afe *afe = dev_get_drvdata(dev);
301362306a36Sopenharmony_ci	struct mt8188_afe_private *afe_priv = afe->platform_priv;
301462306a36Sopenharmony_ci	struct arm_smccc_res res;
301562306a36Sopenharmony_ci
301662306a36Sopenharmony_ci	arm_smccc_smc(MTK_SIP_AUDIO_CONTROL,
301762306a36Sopenharmony_ci		      MTK_AUDIO_SMC_OP_DOMAIN_SIDEBANDS,
301862306a36Sopenharmony_ci		      0, 0, 0, 0, 0, 0, &res);
301962306a36Sopenharmony_ci
302062306a36Sopenharmony_ci	mt8188_afe_enable_reg_rw_clk(afe);
302162306a36Sopenharmony_ci
302262306a36Sopenharmony_ci	if (!afe->regmap || afe_priv->pm_runtime_bypass_reg_ctl)
302362306a36Sopenharmony_ci		goto skip_regmap;
302462306a36Sopenharmony_ci
302562306a36Sopenharmony_ci	regcache_cache_only(afe->regmap, false);
302662306a36Sopenharmony_ci	regcache_sync(afe->regmap);
302762306a36Sopenharmony_ci
302862306a36Sopenharmony_ci	mt8188_afe_enable_main_clock(afe);
302962306a36Sopenharmony_ciskip_regmap:
303062306a36Sopenharmony_ci	return 0;
303162306a36Sopenharmony_ci}
303262306a36Sopenharmony_ci
303362306a36Sopenharmony_cistatic int mt8188_afe_component_probe(struct snd_soc_component *component)
303462306a36Sopenharmony_ci{
303562306a36Sopenharmony_ci	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component);
303662306a36Sopenharmony_ci	int ret;
303762306a36Sopenharmony_ci
303862306a36Sopenharmony_ci	snd_soc_component_init_regmap(component, afe->regmap);
303962306a36Sopenharmony_ci
304062306a36Sopenharmony_ci	ret = mtk_afe_add_sub_dai_control(component);
304162306a36Sopenharmony_ci
304262306a36Sopenharmony_ci	return ret;
304362306a36Sopenharmony_ci}
304462306a36Sopenharmony_ci
304562306a36Sopenharmony_cistatic const struct snd_soc_component_driver mt8188_afe_component = {
304662306a36Sopenharmony_ci	.name = AFE_PCM_NAME,
304762306a36Sopenharmony_ci	.pointer       = mtk_afe_pcm_pointer,
304862306a36Sopenharmony_ci	.pcm_construct = mtk_afe_pcm_new,
304962306a36Sopenharmony_ci	.probe         = mt8188_afe_component_probe,
305062306a36Sopenharmony_ci};
305162306a36Sopenharmony_ci
305262306a36Sopenharmony_cistatic int init_memif_priv_data(struct mtk_base_afe *afe)
305362306a36Sopenharmony_ci{
305462306a36Sopenharmony_ci	struct mt8188_afe_private *afe_priv = afe->platform_priv;
305562306a36Sopenharmony_ci	struct mtk_dai_memif_priv *memif_priv;
305662306a36Sopenharmony_ci	int i;
305762306a36Sopenharmony_ci
305862306a36Sopenharmony_ci	for (i = MT8188_AFE_MEMIF_START; i < MT8188_AFE_MEMIF_END; i++) {
305962306a36Sopenharmony_ci		memif_priv = devm_kzalloc(afe->dev,
306062306a36Sopenharmony_ci					  sizeof(struct mtk_dai_memif_priv),
306162306a36Sopenharmony_ci					  GFP_KERNEL);
306262306a36Sopenharmony_ci		if (!memif_priv)
306362306a36Sopenharmony_ci			return -ENOMEM;
306462306a36Sopenharmony_ci
306562306a36Sopenharmony_ci		afe_priv->dai_priv[i] = memif_priv;
306662306a36Sopenharmony_ci	}
306762306a36Sopenharmony_ci
306862306a36Sopenharmony_ci	return 0;
306962306a36Sopenharmony_ci}
307062306a36Sopenharmony_ci
307162306a36Sopenharmony_cistatic int mt8188_dai_memif_register(struct mtk_base_afe *afe)
307262306a36Sopenharmony_ci{
307362306a36Sopenharmony_ci	struct mtk_base_afe_dai *dai;
307462306a36Sopenharmony_ci
307562306a36Sopenharmony_ci	dai = devm_kzalloc(afe->dev, sizeof(*dai), GFP_KERNEL);
307662306a36Sopenharmony_ci	if (!dai)
307762306a36Sopenharmony_ci		return -ENOMEM;
307862306a36Sopenharmony_ci
307962306a36Sopenharmony_ci	list_add(&dai->list, &afe->sub_dais);
308062306a36Sopenharmony_ci
308162306a36Sopenharmony_ci	dai->dai_drivers = mt8188_memif_dai_driver;
308262306a36Sopenharmony_ci	dai->num_dai_drivers = ARRAY_SIZE(mt8188_memif_dai_driver);
308362306a36Sopenharmony_ci
308462306a36Sopenharmony_ci	dai->dapm_widgets = mt8188_memif_widgets;
308562306a36Sopenharmony_ci	dai->num_dapm_widgets = ARRAY_SIZE(mt8188_memif_widgets);
308662306a36Sopenharmony_ci	dai->dapm_routes = mt8188_memif_routes;
308762306a36Sopenharmony_ci	dai->num_dapm_routes = ARRAY_SIZE(mt8188_memif_routes);
308862306a36Sopenharmony_ci	dai->controls = mt8188_memif_controls;
308962306a36Sopenharmony_ci	dai->num_controls = ARRAY_SIZE(mt8188_memif_controls);
309062306a36Sopenharmony_ci
309162306a36Sopenharmony_ci	return init_memif_priv_data(afe);
309262306a36Sopenharmony_ci}
309362306a36Sopenharmony_ci
309462306a36Sopenharmony_citypedef int (*dai_register_cb)(struct mtk_base_afe *);
309562306a36Sopenharmony_cistatic const dai_register_cb dai_register_cbs[] = {
309662306a36Sopenharmony_ci	mt8188_dai_adda_register,
309762306a36Sopenharmony_ci	mt8188_dai_etdm_register,
309862306a36Sopenharmony_ci	mt8188_dai_pcm_register,
309962306a36Sopenharmony_ci	mt8188_dai_memif_register,
310062306a36Sopenharmony_ci};
310162306a36Sopenharmony_ci
310262306a36Sopenharmony_cistatic const struct reg_sequence mt8188_afe_reg_defaults[] = {
310362306a36Sopenharmony_ci	{ AFE_IRQ_MASK, 0x387ffff },
310462306a36Sopenharmony_ci	{ AFE_IRQ3_CON, BIT(30) },
310562306a36Sopenharmony_ci	{ AFE_IRQ9_CON, BIT(30) },
310662306a36Sopenharmony_ci	{ ETDM_IN1_CON4, 0x12000100 },
310762306a36Sopenharmony_ci	{ ETDM_IN2_CON4, 0x12000100 },
310862306a36Sopenharmony_ci};
310962306a36Sopenharmony_ci
311062306a36Sopenharmony_cistatic const struct reg_sequence mt8188_cg_patch[] = {
311162306a36Sopenharmony_ci	{ AUDIO_TOP_CON0, 0xfffffffb },
311262306a36Sopenharmony_ci	{ AUDIO_TOP_CON1, 0xfffffff8 },
311362306a36Sopenharmony_ci};
311462306a36Sopenharmony_ci
311562306a36Sopenharmony_cistatic int mt8188_afe_init_registers(struct mtk_base_afe *afe)
311662306a36Sopenharmony_ci{
311762306a36Sopenharmony_ci	return regmap_multi_reg_write(afe->regmap,
311862306a36Sopenharmony_ci				      mt8188_afe_reg_defaults,
311962306a36Sopenharmony_ci				      ARRAY_SIZE(mt8188_afe_reg_defaults));
312062306a36Sopenharmony_ci}
312162306a36Sopenharmony_ci
312262306a36Sopenharmony_cistatic int mt8188_afe_parse_of(struct mtk_base_afe *afe,
312362306a36Sopenharmony_ci			       struct device_node *np)
312462306a36Sopenharmony_ci{
312562306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_SND_SOC_MT6359)
312662306a36Sopenharmony_ci	struct mt8188_afe_private *afe_priv = afe->platform_priv;
312762306a36Sopenharmony_ci
312862306a36Sopenharmony_ci	afe_priv->topckgen = syscon_regmap_lookup_by_phandle(afe->dev->of_node,
312962306a36Sopenharmony_ci							     "mediatek,topckgen");
313062306a36Sopenharmony_ci	if (IS_ERR(afe_priv->topckgen))
313162306a36Sopenharmony_ci		return dev_err_probe(afe->dev,  PTR_ERR(afe_priv->topckgen),
313262306a36Sopenharmony_ci				     "%s() Cannot find topckgen controller\n",
313362306a36Sopenharmony_ci				     __func__);
313462306a36Sopenharmony_ci#endif
313562306a36Sopenharmony_ci	return 0;
313662306a36Sopenharmony_ci}
313762306a36Sopenharmony_ci
313862306a36Sopenharmony_ci#define MT8188_DELAY_US 10
313962306a36Sopenharmony_ci#define MT8188_TIMEOUT_US USEC_PER_SEC
314062306a36Sopenharmony_ci
314162306a36Sopenharmony_cistatic int bus_protect_enable(struct regmap *regmap)
314262306a36Sopenharmony_ci{
314362306a36Sopenharmony_ci	int ret;
314462306a36Sopenharmony_ci	u32 val;
314562306a36Sopenharmony_ci	u32 mask;
314662306a36Sopenharmony_ci
314762306a36Sopenharmony_ci	val = 0;
314862306a36Sopenharmony_ci	mask = MT8188_TOP_AXI_PROT_EN_2_AUDIO_STEP1;
314962306a36Sopenharmony_ci	regmap_write(regmap, MT8188_TOP_AXI_PROT_EN_2_SET, mask);
315062306a36Sopenharmony_ci
315162306a36Sopenharmony_ci	ret = regmap_read_poll_timeout(regmap, MT8188_TOP_AXI_PROT_EN_2_STA,
315262306a36Sopenharmony_ci				       val, (val & mask) == mask,
315362306a36Sopenharmony_ci				       MT8188_DELAY_US, MT8188_TIMEOUT_US);
315462306a36Sopenharmony_ci	if (ret)
315562306a36Sopenharmony_ci		return ret;
315662306a36Sopenharmony_ci
315762306a36Sopenharmony_ci	val = 0;
315862306a36Sopenharmony_ci	mask = MT8188_TOP_AXI_PROT_EN_2_AUDIO_STEP2;
315962306a36Sopenharmony_ci	regmap_write(regmap, MT8188_TOP_AXI_PROT_EN_2_SET, mask);
316062306a36Sopenharmony_ci
316162306a36Sopenharmony_ci	ret = regmap_read_poll_timeout(regmap, MT8188_TOP_AXI_PROT_EN_2_STA,
316262306a36Sopenharmony_ci				       val, (val & mask) == mask,
316362306a36Sopenharmony_ci				       MT8188_DELAY_US, MT8188_TIMEOUT_US);
316462306a36Sopenharmony_ci	return ret;
316562306a36Sopenharmony_ci}
316662306a36Sopenharmony_ci
316762306a36Sopenharmony_cistatic int bus_protect_disable(struct regmap *regmap)
316862306a36Sopenharmony_ci{
316962306a36Sopenharmony_ci	int ret;
317062306a36Sopenharmony_ci	u32 val;
317162306a36Sopenharmony_ci	u32 mask;
317262306a36Sopenharmony_ci
317362306a36Sopenharmony_ci	val = 0;
317462306a36Sopenharmony_ci	mask = MT8188_TOP_AXI_PROT_EN_2_AUDIO_STEP2;
317562306a36Sopenharmony_ci	regmap_write(regmap, MT8188_TOP_AXI_PROT_EN_2_CLR, mask);
317662306a36Sopenharmony_ci
317762306a36Sopenharmony_ci	ret = regmap_read_poll_timeout(regmap, MT8188_TOP_AXI_PROT_EN_2_STA,
317862306a36Sopenharmony_ci				       val, !(val & mask),
317962306a36Sopenharmony_ci				       MT8188_DELAY_US, MT8188_TIMEOUT_US);
318062306a36Sopenharmony_ci	if (ret)
318162306a36Sopenharmony_ci		return ret;
318262306a36Sopenharmony_ci
318362306a36Sopenharmony_ci	val = 0;
318462306a36Sopenharmony_ci	mask = MT8188_TOP_AXI_PROT_EN_2_AUDIO_STEP1;
318562306a36Sopenharmony_ci	regmap_write(regmap, MT8188_TOP_AXI_PROT_EN_2_CLR, mask);
318662306a36Sopenharmony_ci
318762306a36Sopenharmony_ci	ret = regmap_read_poll_timeout(regmap, MT8188_TOP_AXI_PROT_EN_2_STA,
318862306a36Sopenharmony_ci				       val, !(val & mask),
318962306a36Sopenharmony_ci				       MT8188_DELAY_US, MT8188_TIMEOUT_US);
319062306a36Sopenharmony_ci	return ret;
319162306a36Sopenharmony_ci}
319262306a36Sopenharmony_ci
319362306a36Sopenharmony_cistatic int mt8188_afe_pcm_dev_probe(struct platform_device *pdev)
319462306a36Sopenharmony_ci{
319562306a36Sopenharmony_ci	struct mtk_base_afe *afe;
319662306a36Sopenharmony_ci	struct mt8188_afe_private *afe_priv;
319762306a36Sopenharmony_ci	struct device *dev = &pdev->dev;
319862306a36Sopenharmony_ci	struct reset_control *rstc;
319962306a36Sopenharmony_ci	struct regmap *infra_ao;
320062306a36Sopenharmony_ci	int i, irq_id, ret;
320162306a36Sopenharmony_ci
320262306a36Sopenharmony_ci	ret = of_reserved_mem_device_init(dev);
320362306a36Sopenharmony_ci	if (ret)
320462306a36Sopenharmony_ci		dev_dbg(dev, "failed to assign memory region: %d\n", ret);
320562306a36Sopenharmony_ci
320662306a36Sopenharmony_ci	ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(33));
320762306a36Sopenharmony_ci	if (ret)
320862306a36Sopenharmony_ci		return ret;
320962306a36Sopenharmony_ci
321062306a36Sopenharmony_ci	afe = devm_kzalloc(&pdev->dev, sizeof(*afe), GFP_KERNEL);
321162306a36Sopenharmony_ci	if (!afe)
321262306a36Sopenharmony_ci		return -ENOMEM;
321362306a36Sopenharmony_ci
321462306a36Sopenharmony_ci	afe->platform_priv = devm_kzalloc(&pdev->dev, sizeof(*afe_priv),
321562306a36Sopenharmony_ci					  GFP_KERNEL);
321662306a36Sopenharmony_ci	if (!afe->platform_priv)
321762306a36Sopenharmony_ci		return -ENOMEM;
321862306a36Sopenharmony_ci
321962306a36Sopenharmony_ci	afe_priv = afe->platform_priv;
322062306a36Sopenharmony_ci	afe->dev = &pdev->dev;
322162306a36Sopenharmony_ci
322262306a36Sopenharmony_ci	afe->base_addr = devm_platform_ioremap_resource(pdev, 0);
322362306a36Sopenharmony_ci	if (IS_ERR(afe->base_addr))
322462306a36Sopenharmony_ci		return dev_err_probe(dev, PTR_ERR(afe->base_addr),
322562306a36Sopenharmony_ci				     "AFE base_addr not found\n");
322662306a36Sopenharmony_ci
322762306a36Sopenharmony_ci	infra_ao = syscon_regmap_lookup_by_phandle(dev->of_node,
322862306a36Sopenharmony_ci						   "mediatek,infracfg");
322962306a36Sopenharmony_ci	if (IS_ERR(infra_ao))
323062306a36Sopenharmony_ci		return dev_err_probe(dev, PTR_ERR(infra_ao),
323162306a36Sopenharmony_ci				     "%s() Cannot find infra_ao controller\n",
323262306a36Sopenharmony_ci				     __func__);
323362306a36Sopenharmony_ci
323462306a36Sopenharmony_ci	/* reset controller to reset audio regs before regmap cache */
323562306a36Sopenharmony_ci	rstc = devm_reset_control_get_exclusive(dev, "audiosys");
323662306a36Sopenharmony_ci	if (IS_ERR(rstc))
323762306a36Sopenharmony_ci		return dev_err_probe(dev, PTR_ERR(rstc),
323862306a36Sopenharmony_ci				     "could not get audiosys reset\n");
323962306a36Sopenharmony_ci
324062306a36Sopenharmony_ci	ret = bus_protect_enable(infra_ao);
324162306a36Sopenharmony_ci	if (ret) {
324262306a36Sopenharmony_ci		dev_err(dev, "bus_protect_enable failed\n");
324362306a36Sopenharmony_ci		return ret;
324462306a36Sopenharmony_ci	}
324562306a36Sopenharmony_ci
324662306a36Sopenharmony_ci	ret = reset_control_reset(rstc);
324762306a36Sopenharmony_ci	if (ret) {
324862306a36Sopenharmony_ci		dev_err(dev, "failed to trigger audio reset:%d\n", ret);
324962306a36Sopenharmony_ci		return ret;
325062306a36Sopenharmony_ci	}
325162306a36Sopenharmony_ci
325262306a36Sopenharmony_ci	ret = bus_protect_disable(infra_ao);
325362306a36Sopenharmony_ci	if (ret) {
325462306a36Sopenharmony_ci		dev_err(dev, "bus_protect_disable failed\n");
325562306a36Sopenharmony_ci		return ret;
325662306a36Sopenharmony_ci	}
325762306a36Sopenharmony_ci
325862306a36Sopenharmony_ci	/* initial audio related clock */
325962306a36Sopenharmony_ci	ret = mt8188_afe_init_clock(afe);
326062306a36Sopenharmony_ci	if (ret)
326162306a36Sopenharmony_ci		return dev_err_probe(dev, ret, "init clock error");
326262306a36Sopenharmony_ci
326362306a36Sopenharmony_ci	spin_lock_init(&afe_priv->afe_ctrl_lock);
326462306a36Sopenharmony_ci
326562306a36Sopenharmony_ci	mutex_init(&afe->irq_alloc_lock);
326662306a36Sopenharmony_ci
326762306a36Sopenharmony_ci	/* irq initialize */
326862306a36Sopenharmony_ci	afe->irqs_size = MT8188_AFE_IRQ_NUM;
326962306a36Sopenharmony_ci	afe->irqs = devm_kcalloc(dev, afe->irqs_size, sizeof(*afe->irqs),
327062306a36Sopenharmony_ci				 GFP_KERNEL);
327162306a36Sopenharmony_ci	if (!afe->irqs)
327262306a36Sopenharmony_ci		return -ENOMEM;
327362306a36Sopenharmony_ci
327462306a36Sopenharmony_ci	for (i = 0; i < afe->irqs_size; i++)
327562306a36Sopenharmony_ci		afe->irqs[i].irq_data = &irq_data[i];
327662306a36Sopenharmony_ci
327762306a36Sopenharmony_ci	/* init memif */
327862306a36Sopenharmony_ci	afe->memif_size = MT8188_AFE_MEMIF_NUM;
327962306a36Sopenharmony_ci	afe->memif = devm_kcalloc(dev, afe->memif_size, sizeof(*afe->memif),
328062306a36Sopenharmony_ci				  GFP_KERNEL);
328162306a36Sopenharmony_ci	if (!afe->memif)
328262306a36Sopenharmony_ci		return -ENOMEM;
328362306a36Sopenharmony_ci
328462306a36Sopenharmony_ci	for (i = 0; i < afe->memif_size; i++) {
328562306a36Sopenharmony_ci		afe->memif[i].data = &memif_data[i];
328662306a36Sopenharmony_ci		afe->memif[i].irq_usage = mt8188_afe_memif_const_irqs[i];
328762306a36Sopenharmony_ci		afe->memif[i].const_irq = 1;
328862306a36Sopenharmony_ci		afe->irqs[afe->memif[i].irq_usage].irq_occupyed = true;
328962306a36Sopenharmony_ci	}
329062306a36Sopenharmony_ci
329162306a36Sopenharmony_ci	/* request irq */
329262306a36Sopenharmony_ci	irq_id = platform_get_irq(pdev, 0);
329362306a36Sopenharmony_ci	if (irq_id < 0)
329462306a36Sopenharmony_ci		return dev_err_probe(dev, irq_id, "no irq found");
329562306a36Sopenharmony_ci
329662306a36Sopenharmony_ci	ret = devm_request_irq(dev, irq_id, mt8188_afe_irq_handler,
329762306a36Sopenharmony_ci			       IRQF_TRIGGER_NONE, "asys-isr", (void *)afe);
329862306a36Sopenharmony_ci	if (ret)
329962306a36Sopenharmony_ci		return dev_err_probe(dev, ret, "could not request_irq for asys-isr\n");
330062306a36Sopenharmony_ci
330162306a36Sopenharmony_ci	/* init sub_dais */
330262306a36Sopenharmony_ci	INIT_LIST_HEAD(&afe->sub_dais);
330362306a36Sopenharmony_ci
330462306a36Sopenharmony_ci	for (i = 0; i < ARRAY_SIZE(dai_register_cbs); i++) {
330562306a36Sopenharmony_ci		ret = dai_register_cbs[i](afe);
330662306a36Sopenharmony_ci		if (ret)
330762306a36Sopenharmony_ci			return dev_err_probe(dev, ret, "dai register i %d fail\n", i);
330862306a36Sopenharmony_ci	}
330962306a36Sopenharmony_ci
331062306a36Sopenharmony_ci	/* init dai_driver and component_driver */
331162306a36Sopenharmony_ci	ret = mtk_afe_combine_sub_dai(afe);
331262306a36Sopenharmony_ci	if (ret)
331362306a36Sopenharmony_ci		return dev_err_probe(dev, ret, "mtk_afe_combine_sub_dai fail\n");
331462306a36Sopenharmony_ci
331562306a36Sopenharmony_ci	afe->mtk_afe_hardware = &mt8188_afe_hardware;
331662306a36Sopenharmony_ci	afe->memif_fs = mt8188_memif_fs;
331762306a36Sopenharmony_ci	afe->irq_fs = mt8188_irq_fs;
331862306a36Sopenharmony_ci
331962306a36Sopenharmony_ci	afe->runtime_resume = mt8188_afe_runtime_resume;
332062306a36Sopenharmony_ci	afe->runtime_suspend = mt8188_afe_runtime_suspend;
332162306a36Sopenharmony_ci
332262306a36Sopenharmony_ci	platform_set_drvdata(pdev, afe);
332362306a36Sopenharmony_ci
332462306a36Sopenharmony_ci	ret = mt8188_afe_parse_of(afe, pdev->dev.of_node);
332562306a36Sopenharmony_ci	if (ret)
332662306a36Sopenharmony_ci		return ret;
332762306a36Sopenharmony_ci
332862306a36Sopenharmony_ci	ret = devm_pm_runtime_enable(dev);
332962306a36Sopenharmony_ci	if (ret)
333062306a36Sopenharmony_ci		return ret;
333162306a36Sopenharmony_ci
333262306a36Sopenharmony_ci	/* enable clock for regcache get default value from hw */
333362306a36Sopenharmony_ci	afe_priv->pm_runtime_bypass_reg_ctl = true;
333462306a36Sopenharmony_ci	ret = pm_runtime_resume_and_get(dev);
333562306a36Sopenharmony_ci	if (ret)
333662306a36Sopenharmony_ci		return dev_err_probe(dev, ret, "failed to resume device\n");
333762306a36Sopenharmony_ci
333862306a36Sopenharmony_ci	afe->regmap = devm_regmap_init_mmio(&pdev->dev, afe->base_addr,
333962306a36Sopenharmony_ci					    &mt8188_afe_regmap_config);
334062306a36Sopenharmony_ci	if (IS_ERR(afe->regmap)) {
334162306a36Sopenharmony_ci		ret = PTR_ERR(afe->regmap);
334262306a36Sopenharmony_ci		goto err_pm_put;
334362306a36Sopenharmony_ci	}
334462306a36Sopenharmony_ci
334562306a36Sopenharmony_ci	ret = regmap_register_patch(afe->regmap, mt8188_cg_patch,
334662306a36Sopenharmony_ci				    ARRAY_SIZE(mt8188_cg_patch));
334762306a36Sopenharmony_ci	if (ret < 0) {
334862306a36Sopenharmony_ci		dev_info(dev, "Failed to apply cg patch\n");
334962306a36Sopenharmony_ci		goto err_pm_put;
335062306a36Sopenharmony_ci	}
335162306a36Sopenharmony_ci
335262306a36Sopenharmony_ci	/* register component */
335362306a36Sopenharmony_ci	ret = devm_snd_soc_register_component(dev, &mt8188_afe_component,
335462306a36Sopenharmony_ci					      afe->dai_drivers, afe->num_dai_drivers);
335562306a36Sopenharmony_ci	if (ret) {
335662306a36Sopenharmony_ci		dev_warn(dev, "err_platform\n");
335762306a36Sopenharmony_ci		goto err_pm_put;
335862306a36Sopenharmony_ci	}
335962306a36Sopenharmony_ci
336062306a36Sopenharmony_ci	mt8188_afe_init_registers(afe);
336162306a36Sopenharmony_ci
336262306a36Sopenharmony_ci	pm_runtime_put_sync(&pdev->dev);
336362306a36Sopenharmony_ci	afe_priv->pm_runtime_bypass_reg_ctl = false;
336462306a36Sopenharmony_ci
336562306a36Sopenharmony_ci	regcache_cache_only(afe->regmap, true);
336662306a36Sopenharmony_ci	regcache_mark_dirty(afe->regmap);
336762306a36Sopenharmony_ci
336862306a36Sopenharmony_ci	return 0;
336962306a36Sopenharmony_cierr_pm_put:
337062306a36Sopenharmony_ci	pm_runtime_put_sync(dev);
337162306a36Sopenharmony_ci
337262306a36Sopenharmony_ci	return ret;
337362306a36Sopenharmony_ci}
337462306a36Sopenharmony_ci
337562306a36Sopenharmony_cistatic const struct of_device_id mt8188_afe_pcm_dt_match[] = {
337662306a36Sopenharmony_ci	{ .compatible = "mediatek,mt8188-afe", },
337762306a36Sopenharmony_ci	{},
337862306a36Sopenharmony_ci};
337962306a36Sopenharmony_ciMODULE_DEVICE_TABLE(of, mt8188_afe_pcm_dt_match);
338062306a36Sopenharmony_ci
338162306a36Sopenharmony_cistatic const struct dev_pm_ops mt8188_afe_pm_ops = {
338262306a36Sopenharmony_ci	SET_RUNTIME_PM_OPS(mt8188_afe_runtime_suspend,
338362306a36Sopenharmony_ci			   mt8188_afe_runtime_resume, NULL)
338462306a36Sopenharmony_ci};
338562306a36Sopenharmony_ci
338662306a36Sopenharmony_cistatic struct platform_driver mt8188_afe_pcm_driver = {
338762306a36Sopenharmony_ci	.driver = {
338862306a36Sopenharmony_ci		   .name = "mt8188-audio",
338962306a36Sopenharmony_ci		   .of_match_table = mt8188_afe_pcm_dt_match,
339062306a36Sopenharmony_ci		   .pm = &mt8188_afe_pm_ops,
339162306a36Sopenharmony_ci	},
339262306a36Sopenharmony_ci	.probe = mt8188_afe_pcm_dev_probe,
339362306a36Sopenharmony_ci};
339462306a36Sopenharmony_ci
339562306a36Sopenharmony_cimodule_platform_driver(mt8188_afe_pcm_driver);
339662306a36Sopenharmony_ci
339762306a36Sopenharmony_ciMODULE_DESCRIPTION("MediaTek SoC AFE platform driver for ALSA 8188");
339862306a36Sopenharmony_ciMODULE_AUTHOR("Chun-Chia.Chiu <chun-chia.chiu@mediatek.com>");
339962306a36Sopenharmony_ciMODULE_LICENSE("GPL");
3400