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