162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci// 362306a36Sopenharmony_ci// Mediatek ALSA SoC AFE platform driver for 8192 462306a36Sopenharmony_ci// 562306a36Sopenharmony_ci// Copyright (c) 2020 MediaTek Inc. 662306a36Sopenharmony_ci// Author: Shane Chien <shane.chien@mediatek.com> 762306a36Sopenharmony_ci// 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/delay.h> 1062306a36Sopenharmony_ci#include <linux/dma-mapping.h> 1162306a36Sopenharmony_ci#include <linux/module.h> 1262306a36Sopenharmony_ci#include <linux/mfd/syscon.h> 1362306a36Sopenharmony_ci#include <linux/of.h> 1462306a36Sopenharmony_ci#include <linux/of_address.h> 1562306a36Sopenharmony_ci#include <linux/pm_runtime.h> 1662306a36Sopenharmony_ci#include <linux/reset.h> 1762306a36Sopenharmony_ci#include <sound/soc.h> 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#include "../common/mtk-afe-fe-dai.h" 2062306a36Sopenharmony_ci#include "../common/mtk-afe-platform-driver.h" 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci#include "mt8192-afe-common.h" 2362306a36Sopenharmony_ci#include "mt8192-afe-clk.h" 2462306a36Sopenharmony_ci#include "mt8192-afe-gpio.h" 2562306a36Sopenharmony_ci#include "mt8192-interconnection.h" 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_cistatic const struct snd_pcm_hardware mt8192_afe_hardware = { 2862306a36Sopenharmony_ci .info = (SNDRV_PCM_INFO_MMAP | 2962306a36Sopenharmony_ci SNDRV_PCM_INFO_INTERLEAVED | 3062306a36Sopenharmony_ci SNDRV_PCM_INFO_MMAP_VALID), 3162306a36Sopenharmony_ci .formats = (SNDRV_PCM_FMTBIT_S16_LE | 3262306a36Sopenharmony_ci SNDRV_PCM_FMTBIT_S24_LE | 3362306a36Sopenharmony_ci SNDRV_PCM_FMTBIT_S32_LE), 3462306a36Sopenharmony_ci .period_bytes_min = 96, 3562306a36Sopenharmony_ci .period_bytes_max = 4 * 48 * 1024, 3662306a36Sopenharmony_ci .periods_min = 2, 3762306a36Sopenharmony_ci .periods_max = 256, 3862306a36Sopenharmony_ci .buffer_bytes_max = 4 * 48 * 1024, 3962306a36Sopenharmony_ci .fifo_size = 0, 4062306a36Sopenharmony_ci}; 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_cistatic int mt8192_memif_fs(struct snd_pcm_substream *substream, 4362306a36Sopenharmony_ci unsigned int rate) 4462306a36Sopenharmony_ci{ 4562306a36Sopenharmony_ci struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream); 4662306a36Sopenharmony_ci struct snd_soc_component *component = 4762306a36Sopenharmony_ci snd_soc_rtdcom_lookup(rtd, AFE_PCM_NAME); 4862306a36Sopenharmony_ci struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component); 4962306a36Sopenharmony_ci int id = asoc_rtd_to_cpu(rtd, 0)->id; 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci return mt8192_rate_transform(afe->dev, rate, id); 5262306a36Sopenharmony_ci} 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_cistatic int mt8192_get_dai_fs(struct mtk_base_afe *afe, 5562306a36Sopenharmony_ci int dai_id, unsigned int rate) 5662306a36Sopenharmony_ci{ 5762306a36Sopenharmony_ci return mt8192_rate_transform(afe->dev, rate, dai_id); 5862306a36Sopenharmony_ci} 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_cistatic int mt8192_irq_fs(struct snd_pcm_substream *substream, unsigned int rate) 6162306a36Sopenharmony_ci{ 6262306a36Sopenharmony_ci struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream); 6362306a36Sopenharmony_ci struct snd_soc_component *component = 6462306a36Sopenharmony_ci snd_soc_rtdcom_lookup(rtd, AFE_PCM_NAME); 6562306a36Sopenharmony_ci struct mtk_base_afe *afe = snd_soc_component_get_drvdata(component); 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci return mt8192_general_rate_transform(afe->dev, rate); 6862306a36Sopenharmony_ci} 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_cistatic int mt8192_get_memif_pbuf_size(struct snd_pcm_substream *substream) 7162306a36Sopenharmony_ci{ 7262306a36Sopenharmony_ci struct snd_pcm_runtime *runtime = substream->runtime; 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci if ((runtime->period_size * 1000) / runtime->rate > 10) 7562306a36Sopenharmony_ci return MT8192_MEMIF_PBUF_SIZE_256_BYTES; 7662306a36Sopenharmony_ci else 7762306a36Sopenharmony_ci return MT8192_MEMIF_PBUF_SIZE_32_BYTES; 7862306a36Sopenharmony_ci} 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci#define MTK_PCM_RATES (SNDRV_PCM_RATE_8000_48000 |\ 8162306a36Sopenharmony_ci SNDRV_PCM_RATE_88200 |\ 8262306a36Sopenharmony_ci SNDRV_PCM_RATE_96000 |\ 8362306a36Sopenharmony_ci SNDRV_PCM_RATE_176400 |\ 8462306a36Sopenharmony_ci SNDRV_PCM_RATE_192000) 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci#define MTK_PCM_DAI_RATES (SNDRV_PCM_RATE_8000 |\ 8762306a36Sopenharmony_ci SNDRV_PCM_RATE_16000 |\ 8862306a36Sopenharmony_ci SNDRV_PCM_RATE_32000 |\ 8962306a36Sopenharmony_ci SNDRV_PCM_RATE_48000) 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci#define MTK_PCM_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\ 9262306a36Sopenharmony_ci SNDRV_PCM_FMTBIT_S24_LE |\ 9362306a36Sopenharmony_ci SNDRV_PCM_FMTBIT_S32_LE) 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_cistatic struct snd_soc_dai_driver mt8192_memif_dai_driver[] = { 9662306a36Sopenharmony_ci /* FE DAIs: memory intefaces to CPU */ 9762306a36Sopenharmony_ci { 9862306a36Sopenharmony_ci .name = "DL1", 9962306a36Sopenharmony_ci .id = MT8192_MEMIF_DL1, 10062306a36Sopenharmony_ci .playback = { 10162306a36Sopenharmony_ci .stream_name = "DL1", 10262306a36Sopenharmony_ci .channels_min = 1, 10362306a36Sopenharmony_ci .channels_max = 2, 10462306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 10562306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 10662306a36Sopenharmony_ci }, 10762306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 10862306a36Sopenharmony_ci }, 10962306a36Sopenharmony_ci { 11062306a36Sopenharmony_ci .name = "DL12", 11162306a36Sopenharmony_ci .id = MT8192_MEMIF_DL12, 11262306a36Sopenharmony_ci .playback = { 11362306a36Sopenharmony_ci .stream_name = "DL12", 11462306a36Sopenharmony_ci .channels_min = 1, 11562306a36Sopenharmony_ci .channels_max = 2, 11662306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 11762306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 11862306a36Sopenharmony_ci }, 11962306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 12062306a36Sopenharmony_ci }, 12162306a36Sopenharmony_ci { 12262306a36Sopenharmony_ci .name = "DL2", 12362306a36Sopenharmony_ci .id = MT8192_MEMIF_DL2, 12462306a36Sopenharmony_ci .playback = { 12562306a36Sopenharmony_ci .stream_name = "DL2", 12662306a36Sopenharmony_ci .channels_min = 1, 12762306a36Sopenharmony_ci .channels_max = 2, 12862306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 12962306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 13062306a36Sopenharmony_ci }, 13162306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 13262306a36Sopenharmony_ci }, 13362306a36Sopenharmony_ci { 13462306a36Sopenharmony_ci .name = "DL3", 13562306a36Sopenharmony_ci .id = MT8192_MEMIF_DL3, 13662306a36Sopenharmony_ci .playback = { 13762306a36Sopenharmony_ci .stream_name = "DL3", 13862306a36Sopenharmony_ci .channels_min = 1, 13962306a36Sopenharmony_ci .channels_max = 2, 14062306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 14162306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 14262306a36Sopenharmony_ci }, 14362306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 14462306a36Sopenharmony_ci }, 14562306a36Sopenharmony_ci { 14662306a36Sopenharmony_ci .name = "DL4", 14762306a36Sopenharmony_ci .id = MT8192_MEMIF_DL4, 14862306a36Sopenharmony_ci .playback = { 14962306a36Sopenharmony_ci .stream_name = "DL4", 15062306a36Sopenharmony_ci .channels_min = 1, 15162306a36Sopenharmony_ci .channels_max = 2, 15262306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 15362306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 15462306a36Sopenharmony_ci }, 15562306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 15662306a36Sopenharmony_ci }, 15762306a36Sopenharmony_ci { 15862306a36Sopenharmony_ci .name = "DL5", 15962306a36Sopenharmony_ci .id = MT8192_MEMIF_DL5, 16062306a36Sopenharmony_ci .playback = { 16162306a36Sopenharmony_ci .stream_name = "DL5", 16262306a36Sopenharmony_ci .channels_min = 1, 16362306a36Sopenharmony_ci .channels_max = 2, 16462306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 16562306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 16662306a36Sopenharmony_ci }, 16762306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 16862306a36Sopenharmony_ci }, 16962306a36Sopenharmony_ci { 17062306a36Sopenharmony_ci .name = "DL6", 17162306a36Sopenharmony_ci .id = MT8192_MEMIF_DL6, 17262306a36Sopenharmony_ci .playback = { 17362306a36Sopenharmony_ci .stream_name = "DL6", 17462306a36Sopenharmony_ci .channels_min = 1, 17562306a36Sopenharmony_ci .channels_max = 2, 17662306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 17762306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 17862306a36Sopenharmony_ci }, 17962306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 18062306a36Sopenharmony_ci }, 18162306a36Sopenharmony_ci { 18262306a36Sopenharmony_ci .name = "DL7", 18362306a36Sopenharmony_ci .id = MT8192_MEMIF_DL7, 18462306a36Sopenharmony_ci .playback = { 18562306a36Sopenharmony_ci .stream_name = "DL7", 18662306a36Sopenharmony_ci .channels_min = 1, 18762306a36Sopenharmony_ci .channels_max = 2, 18862306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 18962306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 19062306a36Sopenharmony_ci }, 19162306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 19262306a36Sopenharmony_ci }, 19362306a36Sopenharmony_ci { 19462306a36Sopenharmony_ci .name = "DL8", 19562306a36Sopenharmony_ci .id = MT8192_MEMIF_DL8, 19662306a36Sopenharmony_ci .playback = { 19762306a36Sopenharmony_ci .stream_name = "DL8", 19862306a36Sopenharmony_ci .channels_min = 1, 19962306a36Sopenharmony_ci .channels_max = 2, 20062306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 20162306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 20262306a36Sopenharmony_ci }, 20362306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 20462306a36Sopenharmony_ci }, 20562306a36Sopenharmony_ci { 20662306a36Sopenharmony_ci .name = "DL9", 20762306a36Sopenharmony_ci .id = MT8192_MEMIF_DL9, 20862306a36Sopenharmony_ci .playback = { 20962306a36Sopenharmony_ci .stream_name = "DL9", 21062306a36Sopenharmony_ci .channels_min = 1, 21162306a36Sopenharmony_ci .channels_max = 2, 21262306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 21362306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 21462306a36Sopenharmony_ci }, 21562306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 21662306a36Sopenharmony_ci }, 21762306a36Sopenharmony_ci { 21862306a36Sopenharmony_ci .name = "UL1", 21962306a36Sopenharmony_ci .id = MT8192_MEMIF_VUL12, 22062306a36Sopenharmony_ci .capture = { 22162306a36Sopenharmony_ci .stream_name = "UL1", 22262306a36Sopenharmony_ci .channels_min = 1, 22362306a36Sopenharmony_ci .channels_max = 4, 22462306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 22562306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 22662306a36Sopenharmony_ci }, 22762306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 22862306a36Sopenharmony_ci }, 22962306a36Sopenharmony_ci { 23062306a36Sopenharmony_ci .name = "UL2", 23162306a36Sopenharmony_ci .id = MT8192_MEMIF_AWB, 23262306a36Sopenharmony_ci .capture = { 23362306a36Sopenharmony_ci .stream_name = "UL2", 23462306a36Sopenharmony_ci .channels_min = 1, 23562306a36Sopenharmony_ci .channels_max = 2, 23662306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 23762306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 23862306a36Sopenharmony_ci }, 23962306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 24062306a36Sopenharmony_ci }, 24162306a36Sopenharmony_ci { 24262306a36Sopenharmony_ci .name = "UL3", 24362306a36Sopenharmony_ci .id = MT8192_MEMIF_VUL2, 24462306a36Sopenharmony_ci .capture = { 24562306a36Sopenharmony_ci .stream_name = "UL3", 24662306a36Sopenharmony_ci .channels_min = 1, 24762306a36Sopenharmony_ci .channels_max = 2, 24862306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 24962306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 25062306a36Sopenharmony_ci }, 25162306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 25262306a36Sopenharmony_ci }, 25362306a36Sopenharmony_ci { 25462306a36Sopenharmony_ci .name = "UL4", 25562306a36Sopenharmony_ci .id = MT8192_MEMIF_AWB2, 25662306a36Sopenharmony_ci .capture = { 25762306a36Sopenharmony_ci .stream_name = "UL4", 25862306a36Sopenharmony_ci .channels_min = 1, 25962306a36Sopenharmony_ci .channels_max = 2, 26062306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 26162306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 26262306a36Sopenharmony_ci }, 26362306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 26462306a36Sopenharmony_ci }, 26562306a36Sopenharmony_ci { 26662306a36Sopenharmony_ci .name = "UL5", 26762306a36Sopenharmony_ci .id = MT8192_MEMIF_VUL3, 26862306a36Sopenharmony_ci .capture = { 26962306a36Sopenharmony_ci .stream_name = "UL5", 27062306a36Sopenharmony_ci .channels_min = 1, 27162306a36Sopenharmony_ci .channels_max = 2, 27262306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 27362306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 27462306a36Sopenharmony_ci }, 27562306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 27662306a36Sopenharmony_ci }, 27762306a36Sopenharmony_ci { 27862306a36Sopenharmony_ci .name = "UL6", 27962306a36Sopenharmony_ci .id = MT8192_MEMIF_VUL4, 28062306a36Sopenharmony_ci .capture = { 28162306a36Sopenharmony_ci .stream_name = "UL6", 28262306a36Sopenharmony_ci .channels_min = 1, 28362306a36Sopenharmony_ci .channels_max = 2, 28462306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 28562306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 28662306a36Sopenharmony_ci }, 28762306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 28862306a36Sopenharmony_ci }, 28962306a36Sopenharmony_ci { 29062306a36Sopenharmony_ci .name = "UL7", 29162306a36Sopenharmony_ci .id = MT8192_MEMIF_VUL5, 29262306a36Sopenharmony_ci .capture = { 29362306a36Sopenharmony_ci .stream_name = "UL7", 29462306a36Sopenharmony_ci .channels_min = 1, 29562306a36Sopenharmony_ci .channels_max = 2, 29662306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 29762306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 29862306a36Sopenharmony_ci }, 29962306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 30062306a36Sopenharmony_ci }, 30162306a36Sopenharmony_ci { 30262306a36Sopenharmony_ci .name = "UL8", 30362306a36Sopenharmony_ci .id = MT8192_MEMIF_VUL6, 30462306a36Sopenharmony_ci .capture = { 30562306a36Sopenharmony_ci .stream_name = "UL8", 30662306a36Sopenharmony_ci .channels_min = 1, 30762306a36Sopenharmony_ci .channels_max = 2, 30862306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 30962306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 31062306a36Sopenharmony_ci }, 31162306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 31262306a36Sopenharmony_ci }, 31362306a36Sopenharmony_ci { 31462306a36Sopenharmony_ci .name = "UL_MONO_1", 31562306a36Sopenharmony_ci .id = MT8192_MEMIF_MOD_DAI, 31662306a36Sopenharmony_ci .capture = { 31762306a36Sopenharmony_ci .stream_name = "UL_MONO_1", 31862306a36Sopenharmony_ci .channels_min = 1, 31962306a36Sopenharmony_ci .channels_max = 2, 32062306a36Sopenharmony_ci .rates = MTK_PCM_DAI_RATES, 32162306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 32262306a36Sopenharmony_ci }, 32362306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 32462306a36Sopenharmony_ci }, 32562306a36Sopenharmony_ci { 32662306a36Sopenharmony_ci .name = "UL_MONO_2", 32762306a36Sopenharmony_ci .id = MT8192_MEMIF_DAI, 32862306a36Sopenharmony_ci .capture = { 32962306a36Sopenharmony_ci .stream_name = "UL_MONO_2", 33062306a36Sopenharmony_ci .channels_min = 1, 33162306a36Sopenharmony_ci .channels_max = 2, 33262306a36Sopenharmony_ci .rates = MTK_PCM_DAI_RATES, 33362306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 33462306a36Sopenharmony_ci }, 33562306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 33662306a36Sopenharmony_ci }, 33762306a36Sopenharmony_ci { 33862306a36Sopenharmony_ci .name = "UL_MONO_3", 33962306a36Sopenharmony_ci .id = MT8192_MEMIF_DAI2, 34062306a36Sopenharmony_ci .capture = { 34162306a36Sopenharmony_ci .stream_name = "UL_MONO_3", 34262306a36Sopenharmony_ci .channels_min = 1, 34362306a36Sopenharmony_ci .channels_max = 2, 34462306a36Sopenharmony_ci .rates = MTK_PCM_DAI_RATES, 34562306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 34662306a36Sopenharmony_ci }, 34762306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 34862306a36Sopenharmony_ci }, 34962306a36Sopenharmony_ci { 35062306a36Sopenharmony_ci .name = "HDMI", 35162306a36Sopenharmony_ci .id = MT8192_MEMIF_HDMI, 35262306a36Sopenharmony_ci .playback = { 35362306a36Sopenharmony_ci .stream_name = "HDMI", 35462306a36Sopenharmony_ci .channels_min = 2, 35562306a36Sopenharmony_ci .channels_max = 8, 35662306a36Sopenharmony_ci .rates = MTK_PCM_RATES, 35762306a36Sopenharmony_ci .formats = MTK_PCM_FORMATS, 35862306a36Sopenharmony_ci }, 35962306a36Sopenharmony_ci .ops = &mtk_afe_fe_ops, 36062306a36Sopenharmony_ci }, 36162306a36Sopenharmony_ci}; 36262306a36Sopenharmony_ci 36362306a36Sopenharmony_cistatic int ul_tinyconn_event(struct snd_soc_dapm_widget *w, 36462306a36Sopenharmony_ci struct snd_kcontrol *kcontrol, 36562306a36Sopenharmony_ci int event) 36662306a36Sopenharmony_ci{ 36762306a36Sopenharmony_ci struct snd_soc_component *cmpnt = snd_soc_dapm_to_component(w->dapm); 36862306a36Sopenharmony_ci struct mtk_base_afe *afe = snd_soc_component_get_drvdata(cmpnt); 36962306a36Sopenharmony_ci unsigned int reg_shift; 37062306a36Sopenharmony_ci unsigned int reg_mask_shift; 37162306a36Sopenharmony_ci 37262306a36Sopenharmony_ci dev_dbg(afe->dev, "%s(), event 0x%x\n", __func__, event); 37362306a36Sopenharmony_ci 37462306a36Sopenharmony_ci if (strstr(w->name, "UL1")) { 37562306a36Sopenharmony_ci reg_shift = VUL1_USE_TINY_SFT; 37662306a36Sopenharmony_ci reg_mask_shift = VUL1_USE_TINY_MASK_SFT; 37762306a36Sopenharmony_ci } else if (strstr(w->name, "UL2")) { 37862306a36Sopenharmony_ci reg_shift = VUL2_USE_TINY_SFT; 37962306a36Sopenharmony_ci reg_mask_shift = VUL2_USE_TINY_MASK_SFT; 38062306a36Sopenharmony_ci } else if (strstr(w->name, "UL3")) { 38162306a36Sopenharmony_ci reg_shift = VUL12_USE_TINY_SFT; 38262306a36Sopenharmony_ci reg_mask_shift = VUL12_USE_TINY_MASK_SFT; 38362306a36Sopenharmony_ci } else if (strstr(w->name, "UL4")) { 38462306a36Sopenharmony_ci reg_shift = AWB2_USE_TINY_SFT; 38562306a36Sopenharmony_ci reg_mask_shift = AWB2_USE_TINY_MASK_SFT; 38662306a36Sopenharmony_ci } else { 38762306a36Sopenharmony_ci reg_shift = AWB2_USE_TINY_SFT; 38862306a36Sopenharmony_ci reg_mask_shift = AWB2_USE_TINY_MASK_SFT; 38962306a36Sopenharmony_ci dev_warn(afe->dev, "%s(), err widget name %s, default use UL4", 39062306a36Sopenharmony_ci __func__, w->name); 39162306a36Sopenharmony_ci } 39262306a36Sopenharmony_ci 39362306a36Sopenharmony_ci switch (event) { 39462306a36Sopenharmony_ci case SND_SOC_DAPM_PRE_PMU: 39562306a36Sopenharmony_ci regmap_update_bits(afe->regmap, AFE_MEMIF_CONN, reg_mask_shift, 39662306a36Sopenharmony_ci 0x1 << reg_shift); 39762306a36Sopenharmony_ci break; 39862306a36Sopenharmony_ci case SND_SOC_DAPM_PRE_PMD: 39962306a36Sopenharmony_ci regmap_update_bits(afe->regmap, AFE_MEMIF_CONN, reg_mask_shift, 40062306a36Sopenharmony_ci 0x0 << reg_shift); 40162306a36Sopenharmony_ci break; 40262306a36Sopenharmony_ci default: 40362306a36Sopenharmony_ci break; 40462306a36Sopenharmony_ci } 40562306a36Sopenharmony_ci 40662306a36Sopenharmony_ci return 0; 40762306a36Sopenharmony_ci} 40862306a36Sopenharmony_ci 40962306a36Sopenharmony_ci/* dma widget & routes*/ 41062306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul1_ch1_mix[] = { 41162306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN21, 41262306a36Sopenharmony_ci I_ADDA_UL_CH1, 1, 0), 41362306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH2", AFE_CONN21, 41462306a36Sopenharmony_ci I_ADDA_UL_CH2, 1, 0), 41562306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH3", AFE_CONN21, 41662306a36Sopenharmony_ci I_ADDA_UL_CH3, 1, 0), 41762306a36Sopenharmony_ci}; 41862306a36Sopenharmony_ci 41962306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul1_ch2_mix[] = { 42062306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN22, 42162306a36Sopenharmony_ci I_ADDA_UL_CH1, 1, 0), 42262306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH2", AFE_CONN22, 42362306a36Sopenharmony_ci I_ADDA_UL_CH2, 1, 0), 42462306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH3", AFE_CONN22, 42562306a36Sopenharmony_ci I_ADDA_UL_CH3, 1, 0), 42662306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH4", AFE_CONN22, 42762306a36Sopenharmony_ci I_ADDA_UL_CH4, 1, 0), 42862306a36Sopenharmony_ci}; 42962306a36Sopenharmony_ci 43062306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul1_ch3_mix[] = { 43162306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN9, 43262306a36Sopenharmony_ci I_ADDA_UL_CH1, 1, 0), 43362306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH2", AFE_CONN9, 43462306a36Sopenharmony_ci I_ADDA_UL_CH2, 1, 0), 43562306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH3", AFE_CONN9, 43662306a36Sopenharmony_ci I_ADDA_UL_CH3, 1, 0), 43762306a36Sopenharmony_ci}; 43862306a36Sopenharmony_ci 43962306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul1_ch4_mix[] = { 44062306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN10, 44162306a36Sopenharmony_ci I_ADDA_UL_CH1, 1, 0), 44262306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH2", AFE_CONN10, 44362306a36Sopenharmony_ci I_ADDA_UL_CH2, 1, 0), 44462306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH3", AFE_CONN10, 44562306a36Sopenharmony_ci I_ADDA_UL_CH3, 1, 0), 44662306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH4", AFE_CONN10, 44762306a36Sopenharmony_ci I_ADDA_UL_CH4, 1, 0), 44862306a36Sopenharmony_ci}; 44962306a36Sopenharmony_ci 45062306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul2_ch1_mix[] = { 45162306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("I2S0_CH1", AFE_CONN5, 45262306a36Sopenharmony_ci I_I2S0_CH1, 1, 0), 45362306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL1_CH1", AFE_CONN5, 45462306a36Sopenharmony_ci I_DL1_CH1, 1, 0), 45562306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL12_CH1", AFE_CONN5, 45662306a36Sopenharmony_ci I_DL12_CH1, 1, 0), 45762306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL2_CH1", AFE_CONN5, 45862306a36Sopenharmony_ci I_DL2_CH1, 1, 0), 45962306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL3_CH1", AFE_CONN5, 46062306a36Sopenharmony_ci I_DL3_CH1, 1, 0), 46162306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL4_CH1", AFE_CONN5_1, 46262306a36Sopenharmony_ci I_DL4_CH1, 1, 0), 46362306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL5_CH1", AFE_CONN5_1, 46462306a36Sopenharmony_ci I_DL5_CH1, 1, 0), 46562306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL6_CH1", AFE_CONN5_1, 46662306a36Sopenharmony_ci I_DL6_CH1, 1, 0), 46762306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("PCM_1_CAP_CH1", AFE_CONN5, 46862306a36Sopenharmony_ci I_PCM_1_CAP_CH1, 1, 0), 46962306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("PCM_2_CAP_CH1", AFE_CONN5, 47062306a36Sopenharmony_ci I_PCM_2_CAP_CH1, 1, 0), 47162306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("I2S2_CH1", AFE_CONN5, 47262306a36Sopenharmony_ci I_I2S2_CH1, 1, 0), 47362306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("I2S6_CH1", AFE_CONN5_1, 47462306a36Sopenharmony_ci I_I2S6_CH1, 1, 0), 47562306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("I2S8_CH1", AFE_CONN5_1, 47662306a36Sopenharmony_ci I_I2S8_CH1, 1, 0), 47762306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("CONNSYS_I2S_CH1", AFE_CONN5_1, 47862306a36Sopenharmony_ci I_CONNSYS_I2S_CH1, 1, 0), 47962306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("SRC_1_OUT_CH1", AFE_CONN5_1, 48062306a36Sopenharmony_ci I_SRC_1_OUT_CH1, 1, 0), 48162306a36Sopenharmony_ci}; 48262306a36Sopenharmony_ci 48362306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul2_ch2_mix[] = { 48462306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("I2S0_CH2", AFE_CONN6, 48562306a36Sopenharmony_ci I_I2S0_CH2, 1, 0), 48662306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL1_CH2", AFE_CONN6, 48762306a36Sopenharmony_ci I_DL1_CH2, 1, 0), 48862306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL12_CH2", AFE_CONN6, 48962306a36Sopenharmony_ci I_DL12_CH2, 1, 0), 49062306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL2_CH2", AFE_CONN6, 49162306a36Sopenharmony_ci I_DL2_CH2, 1, 0), 49262306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL3_CH2", AFE_CONN6, 49362306a36Sopenharmony_ci I_DL3_CH2, 1, 0), 49462306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL4_CH2", AFE_CONN6_1, 49562306a36Sopenharmony_ci I_DL4_CH2, 1, 0), 49662306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL5_CH2", AFE_CONN6_1, 49762306a36Sopenharmony_ci I_DL5_CH2, 1, 0), 49862306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL6_CH2", AFE_CONN6_1, 49962306a36Sopenharmony_ci I_DL6_CH2, 1, 0), 50062306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("PCM_1_CAP_CH1", AFE_CONN6, 50162306a36Sopenharmony_ci I_PCM_1_CAP_CH1, 1, 0), 50262306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("PCM_2_CAP_CH1", AFE_CONN6, 50362306a36Sopenharmony_ci I_PCM_2_CAP_CH1, 1, 0), 50462306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("I2S2_CH2", AFE_CONN6, 50562306a36Sopenharmony_ci I_I2S2_CH2, 1, 0), 50662306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("I2S6_CH2", AFE_CONN6_1, 50762306a36Sopenharmony_ci I_I2S6_CH2, 1, 0), 50862306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("I2S8_CH2", AFE_CONN6_1, 50962306a36Sopenharmony_ci I_I2S8_CH2, 1, 0), 51062306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("CONNSYS_I2S_CH2", AFE_CONN6_1, 51162306a36Sopenharmony_ci I_CONNSYS_I2S_CH2, 1, 0), 51262306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("SRC_1_OUT_CH2", AFE_CONN6_1, 51362306a36Sopenharmony_ci I_SRC_1_OUT_CH2, 1, 0), 51462306a36Sopenharmony_ci}; 51562306a36Sopenharmony_ci 51662306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul3_ch1_mix[] = { 51762306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("CONNSYS_I2S_CH1", AFE_CONN32_1, 51862306a36Sopenharmony_ci I_CONNSYS_I2S_CH1, 1, 0), 51962306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL1_CH1", AFE_CONN32, 52062306a36Sopenharmony_ci I_DL1_CH1, 1, 0), 52162306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL2_CH1", AFE_CONN32, 52262306a36Sopenharmony_ci I_DL2_CH1, 1, 0), 52362306a36Sopenharmony_ci}; 52462306a36Sopenharmony_ci 52562306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul3_ch2_mix[] = { 52662306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("CONNSYS_I2S_CH2", AFE_CONN33_1, 52762306a36Sopenharmony_ci I_CONNSYS_I2S_CH2, 1, 0), 52862306a36Sopenharmony_ci}; 52962306a36Sopenharmony_ci 53062306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul4_ch1_mix[] = { 53162306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN38, 53262306a36Sopenharmony_ci I_ADDA_UL_CH1, 1, 0), 53362306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("I2S0_CH1", AFE_CONN38, 53462306a36Sopenharmony_ci I_I2S0_CH1, 1, 0), 53562306a36Sopenharmony_ci}; 53662306a36Sopenharmony_ci 53762306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul4_ch2_mix[] = { 53862306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH2", AFE_CONN39, 53962306a36Sopenharmony_ci I_ADDA_UL_CH2, 1, 0), 54062306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("I2S0_CH2", AFE_CONN39, 54162306a36Sopenharmony_ci I_I2S0_CH2, 1, 0), 54262306a36Sopenharmony_ci}; 54362306a36Sopenharmony_ci 54462306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul5_ch1_mix[] = { 54562306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN44, 54662306a36Sopenharmony_ci I_ADDA_UL_CH1, 1, 0), 54762306a36Sopenharmony_ci}; 54862306a36Sopenharmony_ci 54962306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul5_ch2_mix[] = { 55062306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH2", AFE_CONN45, 55162306a36Sopenharmony_ci I_ADDA_UL_CH2, 1, 0), 55262306a36Sopenharmony_ci}; 55362306a36Sopenharmony_ci 55462306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul6_ch1_mix[] = { 55562306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN46, 55662306a36Sopenharmony_ci I_ADDA_UL_CH1, 1, 0), 55762306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL1_CH1", AFE_CONN46, 55862306a36Sopenharmony_ci I_DL1_CH1, 1, 0), 55962306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL12_CH1", AFE_CONN46, 56062306a36Sopenharmony_ci I_DL12_CH1, 1, 0), 56162306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL6_CH1", AFE_CONN46_1, 56262306a36Sopenharmony_ci I_DL6_CH1, 1, 0), 56362306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL2_CH1", AFE_CONN46, 56462306a36Sopenharmony_ci I_DL2_CH1, 1, 0), 56562306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL3_CH1", AFE_CONN46, 56662306a36Sopenharmony_ci I_DL3_CH1, 1, 0), 56762306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL4_CH1", AFE_CONN46_1, 56862306a36Sopenharmony_ci I_DL4_CH1, 1, 0), 56962306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("PCM_1_CAP_CH1", AFE_CONN46, 57062306a36Sopenharmony_ci I_PCM_1_CAP_CH1, 1, 0), 57162306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("PCM_2_CAP_CH1", AFE_CONN46, 57262306a36Sopenharmony_ci I_PCM_2_CAP_CH1, 1, 0), 57362306a36Sopenharmony_ci}; 57462306a36Sopenharmony_ci 57562306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul6_ch2_mix[] = { 57662306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH2", AFE_CONN47, 57762306a36Sopenharmony_ci I_ADDA_UL_CH2, 1, 0), 57862306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL1_CH2", AFE_CONN47, 57962306a36Sopenharmony_ci I_DL1_CH2, 1, 0), 58062306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL12_CH2", AFE_CONN47, 58162306a36Sopenharmony_ci I_DL12_CH2, 1, 0), 58262306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL6_CH2", AFE_CONN47_1, 58362306a36Sopenharmony_ci I_DL6_CH2, 1, 0), 58462306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL2_CH2", AFE_CONN47, 58562306a36Sopenharmony_ci I_DL2_CH2, 1, 0), 58662306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL3_CH2", AFE_CONN47, 58762306a36Sopenharmony_ci I_DL3_CH2, 1, 0), 58862306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("DL4_CH2", AFE_CONN47_1, 58962306a36Sopenharmony_ci I_DL4_CH2, 1, 0), 59062306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("PCM_1_CAP_CH1", AFE_CONN47, 59162306a36Sopenharmony_ci I_PCM_1_CAP_CH1, 1, 0), 59262306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("PCM_2_CAP_CH1", AFE_CONN47, 59362306a36Sopenharmony_ci I_PCM_2_CAP_CH1, 1, 0), 59462306a36Sopenharmony_ci}; 59562306a36Sopenharmony_ci 59662306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul7_ch1_mix[] = { 59762306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN48, 59862306a36Sopenharmony_ci I_ADDA_UL_CH1, 1, 0), 59962306a36Sopenharmony_ci}; 60062306a36Sopenharmony_ci 60162306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul7_ch2_mix[] = { 60262306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH2", AFE_CONN49, 60362306a36Sopenharmony_ci I_ADDA_UL_CH2, 1, 0), 60462306a36Sopenharmony_ci}; 60562306a36Sopenharmony_ci 60662306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul8_ch1_mix[] = { 60762306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN50, 60862306a36Sopenharmony_ci I_ADDA_UL_CH1, 1, 0), 60962306a36Sopenharmony_ci}; 61062306a36Sopenharmony_ci 61162306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul8_ch2_mix[] = { 61262306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH2", AFE_CONN51, 61362306a36Sopenharmony_ci I_ADDA_UL_CH2, 1, 0), 61462306a36Sopenharmony_ci}; 61562306a36Sopenharmony_ci 61662306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul_mono_1_mix[] = { 61762306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("PCM_1_CAP_CH1", AFE_CONN12, 61862306a36Sopenharmony_ci I_PCM_1_CAP_CH1, 1, 0), 61962306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("PCM_2_CAP_CH1", AFE_CONN12, 62062306a36Sopenharmony_ci I_PCM_2_CAP_CH1, 1, 0), 62162306a36Sopenharmony_ci}; 62262306a36Sopenharmony_ci 62362306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul_mono_2_mix[] = { 62462306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN11, 62562306a36Sopenharmony_ci I_ADDA_UL_CH1, 1, 0), 62662306a36Sopenharmony_ci}; 62762306a36Sopenharmony_ci 62862306a36Sopenharmony_cistatic const struct snd_kcontrol_new memif_ul_mono_3_mix[] = { 62962306a36Sopenharmony_ci SOC_DAPM_SINGLE_AUTODISABLE("ADDA_UL_CH1", AFE_CONN35, 63062306a36Sopenharmony_ci I_ADDA_UL_CH1, 1, 0), 63162306a36Sopenharmony_ci}; 63262306a36Sopenharmony_ci 63362306a36Sopenharmony_ci/* TINYCONN MUX */ 63462306a36Sopenharmony_cienum { 63562306a36Sopenharmony_ci TINYCONN_CH1_MUX_I2S0 = 0x14, 63662306a36Sopenharmony_ci TINYCONN_CH2_MUX_I2S0 = 0x15, 63762306a36Sopenharmony_ci TINYCONN_CH1_MUX_I2S6 = 0x1a, 63862306a36Sopenharmony_ci TINYCONN_CH2_MUX_I2S6 = 0x1b, 63962306a36Sopenharmony_ci TINYCONN_CH1_MUX_I2S8 = 0x1c, 64062306a36Sopenharmony_ci TINYCONN_CH2_MUX_I2S8 = 0x1d, 64162306a36Sopenharmony_ci TINYCONN_MUX_NONE = 0x1f, 64262306a36Sopenharmony_ci}; 64362306a36Sopenharmony_ci 64462306a36Sopenharmony_cistatic const char * const tinyconn_mux_map[] = { 64562306a36Sopenharmony_ci "NONE", 64662306a36Sopenharmony_ci "I2S0_CH1", 64762306a36Sopenharmony_ci "I2S0_CH2", 64862306a36Sopenharmony_ci "I2S6_CH1", 64962306a36Sopenharmony_ci "I2S6_CH2", 65062306a36Sopenharmony_ci "I2S8_CH1", 65162306a36Sopenharmony_ci "I2S8_CH2", 65262306a36Sopenharmony_ci}; 65362306a36Sopenharmony_ci 65462306a36Sopenharmony_cistatic int tinyconn_mux_map_value[] = { 65562306a36Sopenharmony_ci TINYCONN_MUX_NONE, 65662306a36Sopenharmony_ci TINYCONN_CH1_MUX_I2S0, 65762306a36Sopenharmony_ci TINYCONN_CH2_MUX_I2S0, 65862306a36Sopenharmony_ci TINYCONN_CH1_MUX_I2S6, 65962306a36Sopenharmony_ci TINYCONN_CH2_MUX_I2S6, 66062306a36Sopenharmony_ci TINYCONN_CH1_MUX_I2S8, 66162306a36Sopenharmony_ci TINYCONN_CH2_MUX_I2S8, 66262306a36Sopenharmony_ci}; 66362306a36Sopenharmony_ci 66462306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul4_tinyconn_ch1_mux_map_enum, 66562306a36Sopenharmony_ci AFE_TINY_CONN0, 66662306a36Sopenharmony_ci O_2_CFG_SFT, 66762306a36Sopenharmony_ci O_2_CFG_MASK, 66862306a36Sopenharmony_ci tinyconn_mux_map, 66962306a36Sopenharmony_ci tinyconn_mux_map_value); 67062306a36Sopenharmony_cistatic SOC_VALUE_ENUM_SINGLE_DECL(ul4_tinyconn_ch2_mux_map_enum, 67162306a36Sopenharmony_ci AFE_TINY_CONN0, 67262306a36Sopenharmony_ci O_3_CFG_SFT, 67362306a36Sopenharmony_ci O_3_CFG_MASK, 67462306a36Sopenharmony_ci tinyconn_mux_map, 67562306a36Sopenharmony_ci tinyconn_mux_map_value); 67662306a36Sopenharmony_ci 67762306a36Sopenharmony_cistatic const struct snd_kcontrol_new ul4_tinyconn_ch1_mux_control = 67862306a36Sopenharmony_ci SOC_DAPM_ENUM("UL4_TINYCONN_CH1_MUX", ul4_tinyconn_ch1_mux_map_enum); 67962306a36Sopenharmony_cistatic const struct snd_kcontrol_new ul4_tinyconn_ch2_mux_control = 68062306a36Sopenharmony_ci SOC_DAPM_ENUM("UL4_TINYCONN_CH2_MUX", ul4_tinyconn_ch2_mux_map_enum); 68162306a36Sopenharmony_ci 68262306a36Sopenharmony_cistatic const struct snd_soc_dapm_widget mt8192_memif_widgets[] = { 68362306a36Sopenharmony_ci /* inter-connections */ 68462306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL1_CH1", SND_SOC_NOPM, 0, 0, 68562306a36Sopenharmony_ci memif_ul1_ch1_mix, ARRAY_SIZE(memif_ul1_ch1_mix)), 68662306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL1_CH2", SND_SOC_NOPM, 0, 0, 68762306a36Sopenharmony_ci memif_ul1_ch2_mix, ARRAY_SIZE(memif_ul1_ch2_mix)), 68862306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL1_CH3", SND_SOC_NOPM, 0, 0, 68962306a36Sopenharmony_ci memif_ul1_ch3_mix, ARRAY_SIZE(memif_ul1_ch3_mix)), 69062306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL1_CH4", SND_SOC_NOPM, 0, 0, 69162306a36Sopenharmony_ci memif_ul1_ch4_mix, ARRAY_SIZE(memif_ul1_ch4_mix)), 69262306a36Sopenharmony_ci 69362306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL2_CH1", SND_SOC_NOPM, 0, 0, 69462306a36Sopenharmony_ci memif_ul2_ch1_mix, ARRAY_SIZE(memif_ul2_ch1_mix)), 69562306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL2_CH2", SND_SOC_NOPM, 0, 0, 69662306a36Sopenharmony_ci memif_ul2_ch2_mix, ARRAY_SIZE(memif_ul2_ch2_mix)), 69762306a36Sopenharmony_ci 69862306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL3_CH1", SND_SOC_NOPM, 0, 0, 69962306a36Sopenharmony_ci memif_ul3_ch1_mix, ARRAY_SIZE(memif_ul3_ch1_mix)), 70062306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL3_CH2", SND_SOC_NOPM, 0, 0, 70162306a36Sopenharmony_ci memif_ul3_ch2_mix, ARRAY_SIZE(memif_ul3_ch2_mix)), 70262306a36Sopenharmony_ci 70362306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL4_CH1", SND_SOC_NOPM, 0, 0, 70462306a36Sopenharmony_ci memif_ul4_ch1_mix, ARRAY_SIZE(memif_ul4_ch1_mix)), 70562306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL4_CH2", SND_SOC_NOPM, 0, 0, 70662306a36Sopenharmony_ci memif_ul4_ch2_mix, ARRAY_SIZE(memif_ul4_ch2_mix)), 70762306a36Sopenharmony_ci SND_SOC_DAPM_MUX_E("UL4_TINYCONN_CH1_MUX", SND_SOC_NOPM, 0, 0, 70862306a36Sopenharmony_ci &ul4_tinyconn_ch1_mux_control, 70962306a36Sopenharmony_ci ul_tinyconn_event, 71062306a36Sopenharmony_ci SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD), 71162306a36Sopenharmony_ci SND_SOC_DAPM_MUX_E("UL4_TINYCONN_CH2_MUX", SND_SOC_NOPM, 0, 0, 71262306a36Sopenharmony_ci &ul4_tinyconn_ch2_mux_control, 71362306a36Sopenharmony_ci ul_tinyconn_event, 71462306a36Sopenharmony_ci SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD), 71562306a36Sopenharmony_ci 71662306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL5_CH1", SND_SOC_NOPM, 0, 0, 71762306a36Sopenharmony_ci memif_ul5_ch1_mix, ARRAY_SIZE(memif_ul5_ch1_mix)), 71862306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL5_CH2", SND_SOC_NOPM, 0, 0, 71962306a36Sopenharmony_ci memif_ul5_ch2_mix, ARRAY_SIZE(memif_ul5_ch2_mix)), 72062306a36Sopenharmony_ci 72162306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL6_CH1", SND_SOC_NOPM, 0, 0, 72262306a36Sopenharmony_ci memif_ul6_ch1_mix, ARRAY_SIZE(memif_ul6_ch1_mix)), 72362306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL6_CH2", SND_SOC_NOPM, 0, 0, 72462306a36Sopenharmony_ci memif_ul6_ch2_mix, ARRAY_SIZE(memif_ul6_ch2_mix)), 72562306a36Sopenharmony_ci 72662306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL7_CH1", SND_SOC_NOPM, 0, 0, 72762306a36Sopenharmony_ci memif_ul7_ch1_mix, ARRAY_SIZE(memif_ul7_ch1_mix)), 72862306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL7_CH2", SND_SOC_NOPM, 0, 0, 72962306a36Sopenharmony_ci memif_ul7_ch2_mix, ARRAY_SIZE(memif_ul7_ch2_mix)), 73062306a36Sopenharmony_ci 73162306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL8_CH1", SND_SOC_NOPM, 0, 0, 73262306a36Sopenharmony_ci memif_ul8_ch1_mix, ARRAY_SIZE(memif_ul8_ch1_mix)), 73362306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL8_CH2", SND_SOC_NOPM, 0, 0, 73462306a36Sopenharmony_ci memif_ul8_ch2_mix, ARRAY_SIZE(memif_ul8_ch2_mix)), 73562306a36Sopenharmony_ci 73662306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL_MONO_1_CH1", SND_SOC_NOPM, 0, 0, 73762306a36Sopenharmony_ci memif_ul_mono_1_mix, 73862306a36Sopenharmony_ci ARRAY_SIZE(memif_ul_mono_1_mix)), 73962306a36Sopenharmony_ci 74062306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL_MONO_2_CH1", SND_SOC_NOPM, 0, 0, 74162306a36Sopenharmony_ci memif_ul_mono_2_mix, 74262306a36Sopenharmony_ci ARRAY_SIZE(memif_ul_mono_2_mix)), 74362306a36Sopenharmony_ci 74462306a36Sopenharmony_ci SND_SOC_DAPM_MIXER("UL_MONO_3_CH1", SND_SOC_NOPM, 0, 0, 74562306a36Sopenharmony_ci memif_ul_mono_3_mix, 74662306a36Sopenharmony_ci ARRAY_SIZE(memif_ul_mono_3_mix)), 74762306a36Sopenharmony_ci 74862306a36Sopenharmony_ci SND_SOC_DAPM_INPUT("UL1_VIRTUAL_INPUT"), 74962306a36Sopenharmony_ci SND_SOC_DAPM_INPUT("UL2_VIRTUAL_INPUT"), 75062306a36Sopenharmony_ci SND_SOC_DAPM_INPUT("UL6_VIRTUAL_INPUT"), 75162306a36Sopenharmony_ci}; 75262306a36Sopenharmony_ci 75362306a36Sopenharmony_cistatic const struct snd_soc_dapm_route mt8192_memif_routes[] = { 75462306a36Sopenharmony_ci {"UL1", NULL, "UL1_CH1"}, 75562306a36Sopenharmony_ci {"UL1", NULL, "UL1_CH2"}, 75662306a36Sopenharmony_ci {"UL1", NULL, "UL1_CH3"}, 75762306a36Sopenharmony_ci {"UL1", NULL, "UL1_CH4"}, 75862306a36Sopenharmony_ci {"UL1_CH1", "ADDA_UL_CH1", "ADDA_UL_Mux"}, 75962306a36Sopenharmony_ci {"UL1_CH1", "ADDA_UL_CH2", "ADDA_UL_Mux"}, 76062306a36Sopenharmony_ci {"UL1_CH1", "ADDA_UL_CH3", "ADDA_CH34_UL_Mux"}, 76162306a36Sopenharmony_ci {"UL1_CH2", "ADDA_UL_CH1", "ADDA_UL_Mux"}, 76262306a36Sopenharmony_ci {"UL1_CH2", "ADDA_UL_CH2", "ADDA_UL_Mux"}, 76362306a36Sopenharmony_ci {"UL1_CH2", "ADDA_UL_CH3", "ADDA_CH34_UL_Mux"}, 76462306a36Sopenharmony_ci {"UL1_CH2", "ADDA_UL_CH4", "ADDA_CH34_UL_Mux"}, 76562306a36Sopenharmony_ci {"UL1_CH3", "ADDA_UL_CH1", "ADDA_UL_Mux"}, 76662306a36Sopenharmony_ci {"UL1_CH3", "ADDA_UL_CH2", "ADDA_UL_Mux"}, 76762306a36Sopenharmony_ci {"UL1_CH3", "ADDA_UL_CH3", "ADDA_CH34_UL_Mux"}, 76862306a36Sopenharmony_ci {"UL1_CH4", "ADDA_UL_CH1", "ADDA_UL_Mux"}, 76962306a36Sopenharmony_ci {"UL1_CH4", "ADDA_UL_CH2", "ADDA_UL_Mux"}, 77062306a36Sopenharmony_ci {"UL1_CH4", "ADDA_UL_CH3", "ADDA_CH34_UL_Mux"}, 77162306a36Sopenharmony_ci {"UL1_CH4", "ADDA_UL_CH4", "ADDA_CH34_UL_Mux"}, 77262306a36Sopenharmony_ci 77362306a36Sopenharmony_ci {"UL2", NULL, "UL2_CH1"}, 77462306a36Sopenharmony_ci {"UL2", NULL, "UL2_CH2"}, 77562306a36Sopenharmony_ci {"UL2_CH1", "I2S0_CH1", "I2S0"}, 77662306a36Sopenharmony_ci {"UL2_CH2", "I2S0_CH2", "I2S0"}, 77762306a36Sopenharmony_ci {"UL2_CH1", "I2S2_CH1", "I2S2"}, 77862306a36Sopenharmony_ci {"UL2_CH2", "I2S2_CH2", "I2S2"}, 77962306a36Sopenharmony_ci {"UL2_CH1", "I2S6_CH1", "I2S6"}, 78062306a36Sopenharmony_ci {"UL2_CH2", "I2S6_CH2", "I2S6"}, 78162306a36Sopenharmony_ci {"UL2_CH1", "I2S8_CH1", "I2S8"}, 78262306a36Sopenharmony_ci {"UL2_CH2", "I2S8_CH2", "I2S8"}, 78362306a36Sopenharmony_ci 78462306a36Sopenharmony_ci {"UL2_CH1", "PCM_1_CAP_CH1", "PCM 1 Capture"}, 78562306a36Sopenharmony_ci {"UL2_CH2", "PCM_1_CAP_CH1", "PCM 1 Capture"}, 78662306a36Sopenharmony_ci {"UL2_CH1", "PCM_2_CAP_CH1", "PCM 2 Capture"}, 78762306a36Sopenharmony_ci {"UL2_CH2", "PCM_2_CAP_CH1", "PCM 2 Capture"}, 78862306a36Sopenharmony_ci 78962306a36Sopenharmony_ci {"UL_MONO_1", NULL, "UL_MONO_1_CH1"}, 79062306a36Sopenharmony_ci {"UL_MONO_1_CH1", "PCM_1_CAP_CH1", "PCM 1 Capture"}, 79162306a36Sopenharmony_ci {"UL_MONO_1_CH1", "PCM_2_CAP_CH1", "PCM 2 Capture"}, 79262306a36Sopenharmony_ci 79362306a36Sopenharmony_ci {"UL_MONO_2", NULL, "UL_MONO_2_CH1"}, 79462306a36Sopenharmony_ci {"UL_MONO_2_CH1", "ADDA_UL_CH1", "ADDA_UL_Mux"}, 79562306a36Sopenharmony_ci 79662306a36Sopenharmony_ci {"UL_MONO_3", NULL, "UL_MONO_3_CH1"}, 79762306a36Sopenharmony_ci {"UL_MONO_3_CH1", "ADDA_UL_CH1", "ADDA_UL_Mux"}, 79862306a36Sopenharmony_ci 79962306a36Sopenharmony_ci {"UL2_CH1", "CONNSYS_I2S_CH1", "Connsys I2S"}, 80062306a36Sopenharmony_ci {"UL2_CH2", "CONNSYS_I2S_CH2", "Connsys I2S"}, 80162306a36Sopenharmony_ci 80262306a36Sopenharmony_ci {"UL3", NULL, "UL3_CH1"}, 80362306a36Sopenharmony_ci {"UL3", NULL, "UL3_CH2"}, 80462306a36Sopenharmony_ci {"UL3_CH1", "CONNSYS_I2S_CH1", "Connsys I2S"}, 80562306a36Sopenharmony_ci {"UL3_CH2", "CONNSYS_I2S_CH2", "Connsys I2S"}, 80662306a36Sopenharmony_ci 80762306a36Sopenharmony_ci {"UL4", NULL, "UL4_CH1"}, 80862306a36Sopenharmony_ci {"UL4", NULL, "UL4_CH2"}, 80962306a36Sopenharmony_ci {"UL4", NULL, "UL4_TINYCONN_CH1_MUX"}, 81062306a36Sopenharmony_ci {"UL4", NULL, "UL4_TINYCONN_CH2_MUX"}, 81162306a36Sopenharmony_ci {"UL4_CH1", "ADDA_UL_CH1", "ADDA_UL_Mux"}, 81262306a36Sopenharmony_ci {"UL4_CH2", "ADDA_UL_CH2", "ADDA_UL_Mux"}, 81362306a36Sopenharmony_ci {"UL4_CH1", "I2S0_CH1", "I2S0"}, 81462306a36Sopenharmony_ci {"UL4_CH2", "I2S0_CH2", "I2S0"}, 81562306a36Sopenharmony_ci {"UL4_TINYCONN_CH1_MUX", "I2S0_CH1", "I2S0"}, 81662306a36Sopenharmony_ci {"UL4_TINYCONN_CH2_MUX", "I2S0_CH2", "I2S0"}, 81762306a36Sopenharmony_ci 81862306a36Sopenharmony_ci {"UL5", NULL, "UL5_CH1"}, 81962306a36Sopenharmony_ci {"UL5", NULL, "UL5_CH2"}, 82062306a36Sopenharmony_ci {"UL5_CH1", "ADDA_UL_CH1", "ADDA_UL_Mux"}, 82162306a36Sopenharmony_ci {"UL5_CH2", "ADDA_UL_CH2", "ADDA_UL_Mux"}, 82262306a36Sopenharmony_ci 82362306a36Sopenharmony_ci {"UL6", NULL, "UL6_CH1"}, 82462306a36Sopenharmony_ci {"UL6", NULL, "UL6_CH2"}, 82562306a36Sopenharmony_ci 82662306a36Sopenharmony_ci {"UL6_CH1", "ADDA_UL_CH1", "ADDA_UL_Mux"}, 82762306a36Sopenharmony_ci {"UL6_CH2", "ADDA_UL_CH2", "ADDA_UL_Mux"}, 82862306a36Sopenharmony_ci {"UL6_CH1", "PCM_1_CAP_CH1", "PCM 1 Capture"}, 82962306a36Sopenharmony_ci {"UL6_CH2", "PCM_1_CAP_CH1", "PCM 1 Capture"}, 83062306a36Sopenharmony_ci {"UL6_CH1", "PCM_2_CAP_CH1", "PCM 2 Capture"}, 83162306a36Sopenharmony_ci {"UL6_CH2", "PCM_2_CAP_CH1", "PCM 2 Capture"}, 83262306a36Sopenharmony_ci 83362306a36Sopenharmony_ci {"UL7", NULL, "UL7_CH1"}, 83462306a36Sopenharmony_ci {"UL7", NULL, "UL7_CH2"}, 83562306a36Sopenharmony_ci {"UL7_CH1", "ADDA_UL_CH1", "ADDA_UL_Mux"}, 83662306a36Sopenharmony_ci {"UL7_CH2", "ADDA_UL_CH2", "ADDA_UL_Mux"}, 83762306a36Sopenharmony_ci 83862306a36Sopenharmony_ci {"UL8", NULL, "UL8_CH1"}, 83962306a36Sopenharmony_ci {"UL8", NULL, "UL8_CH2"}, 84062306a36Sopenharmony_ci {"UL8_CH1", "ADDA_UL_CH1", "ADDA_UL_Mux"}, 84162306a36Sopenharmony_ci {"UL8_CH2", "ADDA_UL_CH2", "ADDA_UL_Mux"}, 84262306a36Sopenharmony_ci}; 84362306a36Sopenharmony_ci 84462306a36Sopenharmony_cistatic const struct mtk_base_memif_data memif_data[MT8192_MEMIF_NUM] = { 84562306a36Sopenharmony_ci [MT8192_MEMIF_DL1] = { 84662306a36Sopenharmony_ci .name = "DL1", 84762306a36Sopenharmony_ci .id = MT8192_MEMIF_DL1, 84862306a36Sopenharmony_ci .reg_ofs_base = AFE_DL1_BASE, 84962306a36Sopenharmony_ci .reg_ofs_cur = AFE_DL1_CUR, 85062306a36Sopenharmony_ci .reg_ofs_end = AFE_DL1_END, 85162306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_DL1_BASE_MSB, 85262306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_DL1_CUR_MSB, 85362306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_DL1_END_MSB, 85462306a36Sopenharmony_ci .fs_reg = AFE_DL1_CON0, 85562306a36Sopenharmony_ci .fs_shift = DL1_MODE_SFT, 85662306a36Sopenharmony_ci .fs_maskbit = DL1_MODE_MASK, 85762306a36Sopenharmony_ci .mono_reg = AFE_DL1_CON0, 85862306a36Sopenharmony_ci .mono_shift = DL1_MONO_SFT, 85962306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 86062306a36Sopenharmony_ci .enable_shift = DL1_ON_SFT, 86162306a36Sopenharmony_ci .hd_reg = AFE_DL1_CON0, 86262306a36Sopenharmony_ci .hd_shift = DL1_HD_MODE_SFT, 86362306a36Sopenharmony_ci .hd_align_reg = AFE_DL1_CON0, 86462306a36Sopenharmony_ci .hd_align_mshift = DL1_HALIGN_SFT, 86562306a36Sopenharmony_ci .pbuf_reg = AFE_DL1_CON0, 86662306a36Sopenharmony_ci .pbuf_shift = DL1_PBUF_SIZE_SFT, 86762306a36Sopenharmony_ci .minlen_reg = AFE_DL1_CON0, 86862306a36Sopenharmony_ci .minlen_shift = DL1_MINLEN_SFT, 86962306a36Sopenharmony_ci }, 87062306a36Sopenharmony_ci [MT8192_MEMIF_DL12] = { 87162306a36Sopenharmony_ci .name = "DL12", 87262306a36Sopenharmony_ci .id = MT8192_MEMIF_DL12, 87362306a36Sopenharmony_ci .reg_ofs_base = AFE_DL12_BASE, 87462306a36Sopenharmony_ci .reg_ofs_cur = AFE_DL12_CUR, 87562306a36Sopenharmony_ci .reg_ofs_end = AFE_DL12_END, 87662306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_DL12_BASE_MSB, 87762306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_DL12_CUR_MSB, 87862306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_DL12_END_MSB, 87962306a36Sopenharmony_ci .fs_reg = AFE_DL12_CON0, 88062306a36Sopenharmony_ci .fs_shift = DL12_MODE_SFT, 88162306a36Sopenharmony_ci .fs_maskbit = DL12_MODE_MASK, 88262306a36Sopenharmony_ci .mono_reg = AFE_DL12_CON0, 88362306a36Sopenharmony_ci .mono_shift = DL12_MONO_SFT, 88462306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 88562306a36Sopenharmony_ci .enable_shift = DL12_ON_SFT, 88662306a36Sopenharmony_ci .hd_reg = AFE_DL12_CON0, 88762306a36Sopenharmony_ci .hd_shift = DL12_HD_MODE_SFT, 88862306a36Sopenharmony_ci .hd_align_reg = AFE_DL12_CON0, 88962306a36Sopenharmony_ci .hd_align_mshift = DL12_HALIGN_SFT, 89062306a36Sopenharmony_ci .pbuf_reg = AFE_DL12_CON0, 89162306a36Sopenharmony_ci .pbuf_shift = DL12_PBUF_SIZE_SFT, 89262306a36Sopenharmony_ci .minlen_reg = AFE_DL12_CON0, 89362306a36Sopenharmony_ci .minlen_shift = DL12_MINLEN_SFT, 89462306a36Sopenharmony_ci }, 89562306a36Sopenharmony_ci [MT8192_MEMIF_DL2] = { 89662306a36Sopenharmony_ci .name = "DL2", 89762306a36Sopenharmony_ci .id = MT8192_MEMIF_DL2, 89862306a36Sopenharmony_ci .reg_ofs_base = AFE_DL2_BASE, 89962306a36Sopenharmony_ci .reg_ofs_cur = AFE_DL2_CUR, 90062306a36Sopenharmony_ci .reg_ofs_end = AFE_DL2_END, 90162306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_DL2_BASE_MSB, 90262306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_DL2_CUR_MSB, 90362306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_DL2_END_MSB, 90462306a36Sopenharmony_ci .fs_reg = AFE_DL2_CON0, 90562306a36Sopenharmony_ci .fs_shift = DL2_MODE_SFT, 90662306a36Sopenharmony_ci .fs_maskbit = DL2_MODE_MASK, 90762306a36Sopenharmony_ci .mono_reg = AFE_DL2_CON0, 90862306a36Sopenharmony_ci .mono_shift = DL2_MONO_SFT, 90962306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 91062306a36Sopenharmony_ci .enable_shift = DL2_ON_SFT, 91162306a36Sopenharmony_ci .hd_reg = AFE_DL2_CON0, 91262306a36Sopenharmony_ci .hd_shift = DL2_HD_MODE_SFT, 91362306a36Sopenharmony_ci .hd_align_reg = AFE_DL2_CON0, 91462306a36Sopenharmony_ci .hd_align_mshift = DL2_HALIGN_SFT, 91562306a36Sopenharmony_ci .pbuf_reg = AFE_DL2_CON0, 91662306a36Sopenharmony_ci .pbuf_shift = DL2_PBUF_SIZE_SFT, 91762306a36Sopenharmony_ci .minlen_reg = AFE_DL2_CON0, 91862306a36Sopenharmony_ci .minlen_shift = DL2_MINLEN_SFT, 91962306a36Sopenharmony_ci }, 92062306a36Sopenharmony_ci [MT8192_MEMIF_DL3] = { 92162306a36Sopenharmony_ci .name = "DL3", 92262306a36Sopenharmony_ci .id = MT8192_MEMIF_DL3, 92362306a36Sopenharmony_ci .reg_ofs_base = AFE_DL3_BASE, 92462306a36Sopenharmony_ci .reg_ofs_cur = AFE_DL3_CUR, 92562306a36Sopenharmony_ci .reg_ofs_end = AFE_DL3_END, 92662306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_DL3_BASE_MSB, 92762306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_DL3_CUR_MSB, 92862306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_DL3_END_MSB, 92962306a36Sopenharmony_ci .fs_reg = AFE_DL3_CON0, 93062306a36Sopenharmony_ci .fs_shift = DL3_MODE_SFT, 93162306a36Sopenharmony_ci .fs_maskbit = DL3_MODE_MASK, 93262306a36Sopenharmony_ci .mono_reg = AFE_DL3_CON0, 93362306a36Sopenharmony_ci .mono_shift = DL3_MONO_SFT, 93462306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 93562306a36Sopenharmony_ci .enable_shift = DL3_ON_SFT, 93662306a36Sopenharmony_ci .hd_reg = AFE_DL3_CON0, 93762306a36Sopenharmony_ci .hd_shift = DL3_HD_MODE_SFT, 93862306a36Sopenharmony_ci .hd_align_reg = AFE_DL3_CON0, 93962306a36Sopenharmony_ci .hd_align_mshift = DL3_HALIGN_SFT, 94062306a36Sopenharmony_ci .pbuf_reg = AFE_DL3_CON0, 94162306a36Sopenharmony_ci .pbuf_shift = DL3_PBUF_SIZE_SFT, 94262306a36Sopenharmony_ci .minlen_reg = AFE_DL3_CON0, 94362306a36Sopenharmony_ci .minlen_shift = DL3_MINLEN_SFT, 94462306a36Sopenharmony_ci }, 94562306a36Sopenharmony_ci [MT8192_MEMIF_DL4] = { 94662306a36Sopenharmony_ci .name = "DL4", 94762306a36Sopenharmony_ci .id = MT8192_MEMIF_DL4, 94862306a36Sopenharmony_ci .reg_ofs_base = AFE_DL4_BASE, 94962306a36Sopenharmony_ci .reg_ofs_cur = AFE_DL4_CUR, 95062306a36Sopenharmony_ci .reg_ofs_end = AFE_DL4_END, 95162306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_DL4_BASE_MSB, 95262306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_DL4_CUR_MSB, 95362306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_DL4_END_MSB, 95462306a36Sopenharmony_ci .fs_reg = AFE_DL4_CON0, 95562306a36Sopenharmony_ci .fs_shift = DL4_MODE_SFT, 95662306a36Sopenharmony_ci .fs_maskbit = DL4_MODE_MASK, 95762306a36Sopenharmony_ci .mono_reg = AFE_DL4_CON0, 95862306a36Sopenharmony_ci .mono_shift = DL4_MONO_SFT, 95962306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 96062306a36Sopenharmony_ci .enable_shift = DL4_ON_SFT, 96162306a36Sopenharmony_ci .hd_reg = AFE_DL4_CON0, 96262306a36Sopenharmony_ci .hd_shift = DL4_HD_MODE_SFT, 96362306a36Sopenharmony_ci .hd_align_reg = AFE_DL4_CON0, 96462306a36Sopenharmony_ci .hd_align_mshift = DL4_HALIGN_SFT, 96562306a36Sopenharmony_ci .pbuf_reg = AFE_DL4_CON0, 96662306a36Sopenharmony_ci .pbuf_shift = DL4_PBUF_SIZE_SFT, 96762306a36Sopenharmony_ci .minlen_reg = AFE_DL4_CON0, 96862306a36Sopenharmony_ci .minlen_shift = DL4_MINLEN_SFT, 96962306a36Sopenharmony_ci }, 97062306a36Sopenharmony_ci [MT8192_MEMIF_DL5] = { 97162306a36Sopenharmony_ci .name = "DL5", 97262306a36Sopenharmony_ci .id = MT8192_MEMIF_DL5, 97362306a36Sopenharmony_ci .reg_ofs_base = AFE_DL5_BASE, 97462306a36Sopenharmony_ci .reg_ofs_cur = AFE_DL5_CUR, 97562306a36Sopenharmony_ci .reg_ofs_end = AFE_DL5_END, 97662306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_DL5_BASE_MSB, 97762306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_DL5_CUR_MSB, 97862306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_DL5_END_MSB, 97962306a36Sopenharmony_ci .fs_reg = AFE_DL5_CON0, 98062306a36Sopenharmony_ci .fs_shift = DL5_MODE_SFT, 98162306a36Sopenharmony_ci .fs_maskbit = DL5_MODE_MASK, 98262306a36Sopenharmony_ci .mono_reg = AFE_DL5_CON0, 98362306a36Sopenharmony_ci .mono_shift = DL5_MONO_SFT, 98462306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 98562306a36Sopenharmony_ci .enable_shift = DL5_ON_SFT, 98662306a36Sopenharmony_ci .hd_reg = AFE_DL5_CON0, 98762306a36Sopenharmony_ci .hd_shift = DL5_HD_MODE_SFT, 98862306a36Sopenharmony_ci .hd_align_reg = AFE_DL5_CON0, 98962306a36Sopenharmony_ci .hd_align_mshift = DL5_HALIGN_SFT, 99062306a36Sopenharmony_ci .pbuf_reg = AFE_DL5_CON0, 99162306a36Sopenharmony_ci .pbuf_shift = DL5_PBUF_SIZE_SFT, 99262306a36Sopenharmony_ci .minlen_reg = AFE_DL5_CON0, 99362306a36Sopenharmony_ci .minlen_shift = DL5_MINLEN_SFT, 99462306a36Sopenharmony_ci }, 99562306a36Sopenharmony_ci [MT8192_MEMIF_DL6] = { 99662306a36Sopenharmony_ci .name = "DL6", 99762306a36Sopenharmony_ci .id = MT8192_MEMIF_DL6, 99862306a36Sopenharmony_ci .reg_ofs_base = AFE_DL6_BASE, 99962306a36Sopenharmony_ci .reg_ofs_cur = AFE_DL6_CUR, 100062306a36Sopenharmony_ci .reg_ofs_end = AFE_DL6_END, 100162306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_DL6_BASE_MSB, 100262306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_DL6_CUR_MSB, 100362306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_DL6_END_MSB, 100462306a36Sopenharmony_ci .fs_reg = AFE_DL6_CON0, 100562306a36Sopenharmony_ci .fs_shift = DL6_MODE_SFT, 100662306a36Sopenharmony_ci .fs_maskbit = DL6_MODE_MASK, 100762306a36Sopenharmony_ci .mono_reg = AFE_DL6_CON0, 100862306a36Sopenharmony_ci .mono_shift = DL6_MONO_SFT, 100962306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 101062306a36Sopenharmony_ci .enable_shift = DL6_ON_SFT, 101162306a36Sopenharmony_ci .hd_reg = AFE_DL6_CON0, 101262306a36Sopenharmony_ci .hd_shift = DL6_HD_MODE_SFT, 101362306a36Sopenharmony_ci .hd_align_reg = AFE_DL6_CON0, 101462306a36Sopenharmony_ci .hd_align_mshift = DL6_HALIGN_SFT, 101562306a36Sopenharmony_ci .pbuf_reg = AFE_DL6_CON0, 101662306a36Sopenharmony_ci .pbuf_shift = DL6_PBUF_SIZE_SFT, 101762306a36Sopenharmony_ci .minlen_reg = AFE_DL6_CON0, 101862306a36Sopenharmony_ci .minlen_shift = DL6_MINLEN_SFT, 101962306a36Sopenharmony_ci }, 102062306a36Sopenharmony_ci [MT8192_MEMIF_DL7] = { 102162306a36Sopenharmony_ci .name = "DL7", 102262306a36Sopenharmony_ci .id = MT8192_MEMIF_DL7, 102362306a36Sopenharmony_ci .reg_ofs_base = AFE_DL7_BASE, 102462306a36Sopenharmony_ci .reg_ofs_cur = AFE_DL7_CUR, 102562306a36Sopenharmony_ci .reg_ofs_end = AFE_DL7_END, 102662306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_DL7_BASE_MSB, 102762306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_DL7_CUR_MSB, 102862306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_DL7_END_MSB, 102962306a36Sopenharmony_ci .fs_reg = AFE_DL7_CON0, 103062306a36Sopenharmony_ci .fs_shift = DL7_MODE_SFT, 103162306a36Sopenharmony_ci .fs_maskbit = DL7_MODE_MASK, 103262306a36Sopenharmony_ci .mono_reg = AFE_DL7_CON0, 103362306a36Sopenharmony_ci .mono_shift = DL7_MONO_SFT, 103462306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 103562306a36Sopenharmony_ci .enable_shift = DL7_ON_SFT, 103662306a36Sopenharmony_ci .hd_reg = AFE_DL7_CON0, 103762306a36Sopenharmony_ci .hd_shift = DL7_HD_MODE_SFT, 103862306a36Sopenharmony_ci .hd_align_reg = AFE_DL7_CON0, 103962306a36Sopenharmony_ci .hd_align_mshift = DL7_HALIGN_SFT, 104062306a36Sopenharmony_ci .pbuf_reg = AFE_DL7_CON0, 104162306a36Sopenharmony_ci .pbuf_shift = DL7_PBUF_SIZE_SFT, 104262306a36Sopenharmony_ci .minlen_reg = AFE_DL7_CON0, 104362306a36Sopenharmony_ci .minlen_shift = DL7_MINLEN_SFT, 104462306a36Sopenharmony_ci }, 104562306a36Sopenharmony_ci [MT8192_MEMIF_DL8] = { 104662306a36Sopenharmony_ci .name = "DL8", 104762306a36Sopenharmony_ci .id = MT8192_MEMIF_DL8, 104862306a36Sopenharmony_ci .reg_ofs_base = AFE_DL8_BASE, 104962306a36Sopenharmony_ci .reg_ofs_cur = AFE_DL8_CUR, 105062306a36Sopenharmony_ci .reg_ofs_end = AFE_DL8_END, 105162306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_DL8_BASE_MSB, 105262306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_DL8_CUR_MSB, 105362306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_DL8_END_MSB, 105462306a36Sopenharmony_ci .fs_reg = AFE_DL8_CON0, 105562306a36Sopenharmony_ci .fs_shift = DL8_MODE_SFT, 105662306a36Sopenharmony_ci .fs_maskbit = DL8_MODE_MASK, 105762306a36Sopenharmony_ci .mono_reg = AFE_DL8_CON0, 105862306a36Sopenharmony_ci .mono_shift = DL8_MONO_SFT, 105962306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 106062306a36Sopenharmony_ci .enable_shift = DL8_ON_SFT, 106162306a36Sopenharmony_ci .hd_reg = AFE_DL8_CON0, 106262306a36Sopenharmony_ci .hd_shift = DL8_HD_MODE_SFT, 106362306a36Sopenharmony_ci .hd_align_reg = AFE_DL8_CON0, 106462306a36Sopenharmony_ci .hd_align_mshift = DL8_HALIGN_SFT, 106562306a36Sopenharmony_ci .pbuf_reg = AFE_DL8_CON0, 106662306a36Sopenharmony_ci .pbuf_shift = DL8_PBUF_SIZE_SFT, 106762306a36Sopenharmony_ci .minlen_reg = AFE_DL8_CON0, 106862306a36Sopenharmony_ci .minlen_shift = DL8_MINLEN_SFT, 106962306a36Sopenharmony_ci }, 107062306a36Sopenharmony_ci [MT8192_MEMIF_DL9] = { 107162306a36Sopenharmony_ci .name = "DL9", 107262306a36Sopenharmony_ci .id = MT8192_MEMIF_DL9, 107362306a36Sopenharmony_ci .reg_ofs_base = AFE_DL9_BASE, 107462306a36Sopenharmony_ci .reg_ofs_cur = AFE_DL9_CUR, 107562306a36Sopenharmony_ci .reg_ofs_end = AFE_DL9_END, 107662306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_DL9_BASE_MSB, 107762306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_DL9_CUR_MSB, 107862306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_DL9_END_MSB, 107962306a36Sopenharmony_ci .fs_reg = AFE_DL9_CON0, 108062306a36Sopenharmony_ci .fs_shift = DL9_MODE_SFT, 108162306a36Sopenharmony_ci .fs_maskbit = DL9_MODE_MASK, 108262306a36Sopenharmony_ci .mono_reg = AFE_DL9_CON0, 108362306a36Sopenharmony_ci .mono_shift = DL9_MONO_SFT, 108462306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 108562306a36Sopenharmony_ci .enable_shift = DL9_ON_SFT, 108662306a36Sopenharmony_ci .hd_reg = AFE_DL9_CON0, 108762306a36Sopenharmony_ci .hd_shift = DL9_HD_MODE_SFT, 108862306a36Sopenharmony_ci .hd_align_reg = AFE_DL9_CON0, 108962306a36Sopenharmony_ci .hd_align_mshift = DL9_HALIGN_SFT, 109062306a36Sopenharmony_ci .pbuf_reg = AFE_DL9_CON0, 109162306a36Sopenharmony_ci .pbuf_shift = DL9_PBUF_SIZE_SFT, 109262306a36Sopenharmony_ci .minlen_reg = AFE_DL9_CON0, 109362306a36Sopenharmony_ci .minlen_shift = DL9_MINLEN_SFT, 109462306a36Sopenharmony_ci }, 109562306a36Sopenharmony_ci [MT8192_MEMIF_DAI] = { 109662306a36Sopenharmony_ci .name = "DAI", 109762306a36Sopenharmony_ci .id = MT8192_MEMIF_DAI, 109862306a36Sopenharmony_ci .reg_ofs_base = AFE_DAI_BASE, 109962306a36Sopenharmony_ci .reg_ofs_cur = AFE_DAI_CUR, 110062306a36Sopenharmony_ci .reg_ofs_end = AFE_DAI_END, 110162306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_DAI_BASE_MSB, 110262306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_DAI_CUR_MSB, 110362306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_DAI_END_MSB, 110462306a36Sopenharmony_ci .fs_reg = AFE_DAI_CON0, 110562306a36Sopenharmony_ci .fs_shift = DAI_MODE_SFT, 110662306a36Sopenharmony_ci .fs_maskbit = DAI_MODE_MASK, 110762306a36Sopenharmony_ci .mono_reg = AFE_DAI_CON0, 110862306a36Sopenharmony_ci .mono_shift = DAI_DUPLICATE_WR_SFT, 110962306a36Sopenharmony_ci .mono_invert = 1, 111062306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 111162306a36Sopenharmony_ci .enable_shift = DAI_ON_SFT, 111262306a36Sopenharmony_ci .hd_reg = AFE_DAI_CON0, 111362306a36Sopenharmony_ci .hd_shift = DAI_HD_MODE_SFT, 111462306a36Sopenharmony_ci .hd_align_reg = AFE_DAI_CON0, 111562306a36Sopenharmony_ci .hd_align_mshift = DAI_HALIGN_SFT, 111662306a36Sopenharmony_ci }, 111762306a36Sopenharmony_ci [MT8192_MEMIF_MOD_DAI] = { 111862306a36Sopenharmony_ci .name = "MOD_DAI", 111962306a36Sopenharmony_ci .id = MT8192_MEMIF_MOD_DAI, 112062306a36Sopenharmony_ci .reg_ofs_base = AFE_MOD_DAI_BASE, 112162306a36Sopenharmony_ci .reg_ofs_cur = AFE_MOD_DAI_CUR, 112262306a36Sopenharmony_ci .reg_ofs_end = AFE_MOD_DAI_END, 112362306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_MOD_DAI_BASE_MSB, 112462306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_MOD_DAI_CUR_MSB, 112562306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_MOD_DAI_END_MSB, 112662306a36Sopenharmony_ci .fs_reg = AFE_MOD_DAI_CON0, 112762306a36Sopenharmony_ci .fs_shift = MOD_DAI_MODE_SFT, 112862306a36Sopenharmony_ci .fs_maskbit = MOD_DAI_MODE_MASK, 112962306a36Sopenharmony_ci .mono_reg = AFE_MOD_DAI_CON0, 113062306a36Sopenharmony_ci .mono_shift = MOD_DAI_DUPLICATE_WR_SFT, 113162306a36Sopenharmony_ci .mono_invert = 1, 113262306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 113362306a36Sopenharmony_ci .enable_shift = MOD_DAI_ON_SFT, 113462306a36Sopenharmony_ci .hd_reg = AFE_MOD_DAI_CON0, 113562306a36Sopenharmony_ci .hd_shift = MOD_DAI_HD_MODE_SFT, 113662306a36Sopenharmony_ci .hd_align_reg = AFE_MOD_DAI_CON0, 113762306a36Sopenharmony_ci .hd_align_mshift = MOD_DAI_HALIGN_SFT, 113862306a36Sopenharmony_ci }, 113962306a36Sopenharmony_ci [MT8192_MEMIF_DAI2] = { 114062306a36Sopenharmony_ci .name = "DAI2", 114162306a36Sopenharmony_ci .id = MT8192_MEMIF_DAI2, 114262306a36Sopenharmony_ci .reg_ofs_base = AFE_DAI2_BASE, 114362306a36Sopenharmony_ci .reg_ofs_cur = AFE_DAI2_CUR, 114462306a36Sopenharmony_ci .reg_ofs_end = AFE_DAI2_END, 114562306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_DAI2_BASE_MSB, 114662306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_DAI2_CUR_MSB, 114762306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_DAI2_END_MSB, 114862306a36Sopenharmony_ci .fs_reg = AFE_DAI2_CON0, 114962306a36Sopenharmony_ci .fs_shift = DAI2_MODE_SFT, 115062306a36Sopenharmony_ci .fs_maskbit = DAI2_MODE_MASK, 115162306a36Sopenharmony_ci .mono_reg = AFE_DAI2_CON0, 115262306a36Sopenharmony_ci .mono_shift = DAI2_DUPLICATE_WR_SFT, 115362306a36Sopenharmony_ci .mono_invert = 1, 115462306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 115562306a36Sopenharmony_ci .enable_shift = DAI2_ON_SFT, 115662306a36Sopenharmony_ci .hd_reg = AFE_DAI2_CON0, 115762306a36Sopenharmony_ci .hd_shift = DAI2_HD_MODE_SFT, 115862306a36Sopenharmony_ci .hd_align_reg = AFE_DAI2_CON0, 115962306a36Sopenharmony_ci .hd_align_mshift = DAI2_HALIGN_SFT, 116062306a36Sopenharmony_ci }, 116162306a36Sopenharmony_ci [MT8192_MEMIF_VUL12] = { 116262306a36Sopenharmony_ci .name = "VUL12", 116362306a36Sopenharmony_ci .id = MT8192_MEMIF_VUL12, 116462306a36Sopenharmony_ci .reg_ofs_base = AFE_VUL12_BASE, 116562306a36Sopenharmony_ci .reg_ofs_cur = AFE_VUL12_CUR, 116662306a36Sopenharmony_ci .reg_ofs_end = AFE_VUL12_END, 116762306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_VUL12_BASE_MSB, 116862306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_VUL12_CUR_MSB, 116962306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_VUL12_END_MSB, 117062306a36Sopenharmony_ci .fs_reg = AFE_VUL12_CON0, 117162306a36Sopenharmony_ci .fs_shift = VUL12_MODE_SFT, 117262306a36Sopenharmony_ci .fs_maskbit = VUL12_MODE_MASK, 117362306a36Sopenharmony_ci .mono_reg = AFE_VUL12_CON0, 117462306a36Sopenharmony_ci .mono_shift = VUL12_MONO_SFT, 117562306a36Sopenharmony_ci .quad_ch_reg = AFE_VUL12_CON0, 117662306a36Sopenharmony_ci .quad_ch_shift = VUL12_4CH_EN_SFT, 117762306a36Sopenharmony_ci .quad_ch_mask = VUL12_4CH_EN_MASK, 117862306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 117962306a36Sopenharmony_ci .enable_shift = VUL12_ON_SFT, 118062306a36Sopenharmony_ci .hd_reg = AFE_VUL12_CON0, 118162306a36Sopenharmony_ci .hd_shift = VUL12_HD_MODE_SFT, 118262306a36Sopenharmony_ci .hd_align_reg = AFE_VUL12_CON0, 118362306a36Sopenharmony_ci .hd_align_mshift = VUL12_HALIGN_SFT, 118462306a36Sopenharmony_ci }, 118562306a36Sopenharmony_ci [MT8192_MEMIF_VUL2] = { 118662306a36Sopenharmony_ci .name = "VUL2", 118762306a36Sopenharmony_ci .id = MT8192_MEMIF_VUL2, 118862306a36Sopenharmony_ci .reg_ofs_base = AFE_VUL2_BASE, 118962306a36Sopenharmony_ci .reg_ofs_cur = AFE_VUL2_CUR, 119062306a36Sopenharmony_ci .reg_ofs_end = AFE_VUL2_END, 119162306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_VUL2_BASE_MSB, 119262306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_VUL2_CUR_MSB, 119362306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_VUL2_END_MSB, 119462306a36Sopenharmony_ci .fs_reg = AFE_VUL2_CON0, 119562306a36Sopenharmony_ci .fs_shift = VUL2_MODE_SFT, 119662306a36Sopenharmony_ci .fs_maskbit = VUL2_MODE_MASK, 119762306a36Sopenharmony_ci .mono_reg = AFE_VUL2_CON0, 119862306a36Sopenharmony_ci .mono_shift = VUL2_MONO_SFT, 119962306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 120062306a36Sopenharmony_ci .enable_shift = VUL2_ON_SFT, 120162306a36Sopenharmony_ci .hd_reg = AFE_VUL2_CON0, 120262306a36Sopenharmony_ci .hd_shift = VUL2_HD_MODE_SFT, 120362306a36Sopenharmony_ci .hd_align_reg = AFE_VUL2_CON0, 120462306a36Sopenharmony_ci .hd_align_mshift = VUL2_HALIGN_SFT, 120562306a36Sopenharmony_ci }, 120662306a36Sopenharmony_ci [MT8192_MEMIF_AWB] = { 120762306a36Sopenharmony_ci .name = "AWB", 120862306a36Sopenharmony_ci .id = MT8192_MEMIF_AWB, 120962306a36Sopenharmony_ci .reg_ofs_base = AFE_AWB_BASE, 121062306a36Sopenharmony_ci .reg_ofs_cur = AFE_AWB_CUR, 121162306a36Sopenharmony_ci .reg_ofs_end = AFE_AWB_END, 121262306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_AWB_BASE_MSB, 121362306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_AWB_CUR_MSB, 121462306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_AWB_END_MSB, 121562306a36Sopenharmony_ci .fs_reg = AFE_AWB_CON0, 121662306a36Sopenharmony_ci .fs_shift = AWB_MODE_SFT, 121762306a36Sopenharmony_ci .fs_maskbit = AWB_MODE_MASK, 121862306a36Sopenharmony_ci .mono_reg = AFE_AWB_CON0, 121962306a36Sopenharmony_ci .mono_shift = AWB_MONO_SFT, 122062306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 122162306a36Sopenharmony_ci .enable_shift = AWB_ON_SFT, 122262306a36Sopenharmony_ci .hd_reg = AFE_AWB_CON0, 122362306a36Sopenharmony_ci .hd_shift = AWB_HD_MODE_SFT, 122462306a36Sopenharmony_ci .hd_align_reg = AFE_AWB_CON0, 122562306a36Sopenharmony_ci .hd_align_mshift = AWB_HALIGN_SFT, 122662306a36Sopenharmony_ci }, 122762306a36Sopenharmony_ci [MT8192_MEMIF_AWB2] = { 122862306a36Sopenharmony_ci .name = "AWB2", 122962306a36Sopenharmony_ci .id = MT8192_MEMIF_AWB2, 123062306a36Sopenharmony_ci .reg_ofs_base = AFE_AWB2_BASE, 123162306a36Sopenharmony_ci .reg_ofs_cur = AFE_AWB2_CUR, 123262306a36Sopenharmony_ci .reg_ofs_end = AFE_AWB2_END, 123362306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_AWB2_BASE_MSB, 123462306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_AWB2_CUR_MSB, 123562306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_AWB2_END_MSB, 123662306a36Sopenharmony_ci .fs_reg = AFE_AWB2_CON0, 123762306a36Sopenharmony_ci .fs_shift = AWB2_MODE_SFT, 123862306a36Sopenharmony_ci .fs_maskbit = AWB2_MODE_MASK, 123962306a36Sopenharmony_ci .mono_reg = AFE_AWB2_CON0, 124062306a36Sopenharmony_ci .mono_shift = AWB2_MONO_SFT, 124162306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 124262306a36Sopenharmony_ci .enable_shift = AWB2_ON_SFT, 124362306a36Sopenharmony_ci .hd_reg = AFE_AWB2_CON0, 124462306a36Sopenharmony_ci .hd_shift = AWB2_HD_MODE_SFT, 124562306a36Sopenharmony_ci .hd_align_reg = AFE_AWB2_CON0, 124662306a36Sopenharmony_ci .hd_align_mshift = AWB2_HALIGN_SFT, 124762306a36Sopenharmony_ci }, 124862306a36Sopenharmony_ci [MT8192_MEMIF_VUL3] = { 124962306a36Sopenharmony_ci .name = "VUL3", 125062306a36Sopenharmony_ci .id = MT8192_MEMIF_VUL3, 125162306a36Sopenharmony_ci .reg_ofs_base = AFE_VUL3_BASE, 125262306a36Sopenharmony_ci .reg_ofs_cur = AFE_VUL3_CUR, 125362306a36Sopenharmony_ci .reg_ofs_end = AFE_VUL3_END, 125462306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_VUL3_BASE_MSB, 125562306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_VUL3_CUR_MSB, 125662306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_VUL3_END_MSB, 125762306a36Sopenharmony_ci .fs_reg = AFE_VUL3_CON0, 125862306a36Sopenharmony_ci .fs_shift = VUL3_MODE_SFT, 125962306a36Sopenharmony_ci .fs_maskbit = VUL3_MODE_MASK, 126062306a36Sopenharmony_ci .mono_reg = AFE_VUL3_CON0, 126162306a36Sopenharmony_ci .mono_shift = VUL3_MONO_SFT, 126262306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 126362306a36Sopenharmony_ci .enable_shift = VUL3_ON_SFT, 126462306a36Sopenharmony_ci .hd_reg = AFE_VUL3_CON0, 126562306a36Sopenharmony_ci .hd_shift = VUL3_HD_MODE_SFT, 126662306a36Sopenharmony_ci .hd_align_reg = AFE_VUL3_CON0, 126762306a36Sopenharmony_ci .hd_align_mshift = VUL3_HALIGN_SFT, 126862306a36Sopenharmony_ci }, 126962306a36Sopenharmony_ci [MT8192_MEMIF_VUL4] = { 127062306a36Sopenharmony_ci .name = "VUL4", 127162306a36Sopenharmony_ci .id = MT8192_MEMIF_VUL4, 127262306a36Sopenharmony_ci .reg_ofs_base = AFE_VUL4_BASE, 127362306a36Sopenharmony_ci .reg_ofs_cur = AFE_VUL4_CUR, 127462306a36Sopenharmony_ci .reg_ofs_end = AFE_VUL4_END, 127562306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_VUL4_BASE_MSB, 127662306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_VUL4_CUR_MSB, 127762306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_VUL4_END_MSB, 127862306a36Sopenharmony_ci .fs_reg = AFE_VUL4_CON0, 127962306a36Sopenharmony_ci .fs_shift = VUL4_MODE_SFT, 128062306a36Sopenharmony_ci .fs_maskbit = VUL4_MODE_MASK, 128162306a36Sopenharmony_ci .mono_reg = AFE_VUL4_CON0, 128262306a36Sopenharmony_ci .mono_shift = VUL4_MONO_SFT, 128362306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 128462306a36Sopenharmony_ci .enable_shift = VUL4_ON_SFT, 128562306a36Sopenharmony_ci .hd_reg = AFE_VUL4_CON0, 128662306a36Sopenharmony_ci .hd_shift = VUL4_HD_MODE_SFT, 128762306a36Sopenharmony_ci .hd_align_reg = AFE_VUL4_CON0, 128862306a36Sopenharmony_ci .hd_align_mshift = VUL4_HALIGN_SFT, 128962306a36Sopenharmony_ci }, 129062306a36Sopenharmony_ci [MT8192_MEMIF_VUL5] = { 129162306a36Sopenharmony_ci .name = "VUL5", 129262306a36Sopenharmony_ci .id = MT8192_MEMIF_VUL5, 129362306a36Sopenharmony_ci .reg_ofs_base = AFE_VUL5_BASE, 129462306a36Sopenharmony_ci .reg_ofs_cur = AFE_VUL5_CUR, 129562306a36Sopenharmony_ci .reg_ofs_end = AFE_VUL5_END, 129662306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_VUL5_BASE_MSB, 129762306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_VUL5_CUR_MSB, 129862306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_VUL5_END_MSB, 129962306a36Sopenharmony_ci .fs_reg = AFE_VUL5_CON0, 130062306a36Sopenharmony_ci .fs_shift = VUL5_MODE_SFT, 130162306a36Sopenharmony_ci .fs_maskbit = VUL5_MODE_MASK, 130262306a36Sopenharmony_ci .mono_reg = AFE_VUL5_CON0, 130362306a36Sopenharmony_ci .mono_shift = VUL5_MONO_SFT, 130462306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 130562306a36Sopenharmony_ci .enable_shift = VUL5_ON_SFT, 130662306a36Sopenharmony_ci .hd_reg = AFE_VUL5_CON0, 130762306a36Sopenharmony_ci .hd_shift = VUL5_HD_MODE_SFT, 130862306a36Sopenharmony_ci .hd_align_reg = AFE_VUL5_CON0, 130962306a36Sopenharmony_ci .hd_align_mshift = VUL5_HALIGN_SFT, 131062306a36Sopenharmony_ci }, 131162306a36Sopenharmony_ci [MT8192_MEMIF_VUL6] = { 131262306a36Sopenharmony_ci .name = "VUL6", 131362306a36Sopenharmony_ci .id = MT8192_MEMIF_VUL6, 131462306a36Sopenharmony_ci .reg_ofs_base = AFE_VUL6_BASE, 131562306a36Sopenharmony_ci .reg_ofs_cur = AFE_VUL6_CUR, 131662306a36Sopenharmony_ci .reg_ofs_end = AFE_VUL6_END, 131762306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_VUL6_BASE_MSB, 131862306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_VUL6_CUR_MSB, 131962306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_VUL6_END_MSB, 132062306a36Sopenharmony_ci .fs_reg = AFE_VUL6_CON0, 132162306a36Sopenharmony_ci .fs_shift = VUL6_MODE_SFT, 132262306a36Sopenharmony_ci .fs_maskbit = VUL6_MODE_MASK, 132362306a36Sopenharmony_ci .mono_reg = AFE_VUL6_CON0, 132462306a36Sopenharmony_ci .mono_shift = VUL6_MONO_SFT, 132562306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 132662306a36Sopenharmony_ci .enable_shift = VUL6_ON_SFT, 132762306a36Sopenharmony_ci .hd_reg = AFE_VUL6_CON0, 132862306a36Sopenharmony_ci .hd_shift = VUL6_HD_MODE_SFT, 132962306a36Sopenharmony_ci .hd_align_reg = AFE_VUL6_CON0, 133062306a36Sopenharmony_ci .hd_align_mshift = VUL6_HALIGN_SFT, 133162306a36Sopenharmony_ci }, 133262306a36Sopenharmony_ci [MT8192_MEMIF_HDMI] = { 133362306a36Sopenharmony_ci .name = "HDMI", 133462306a36Sopenharmony_ci .id = MT8192_MEMIF_HDMI, 133562306a36Sopenharmony_ci .reg_ofs_base = AFE_HDMI_OUT_BASE, 133662306a36Sopenharmony_ci .reg_ofs_cur = AFE_HDMI_OUT_CUR, 133762306a36Sopenharmony_ci .reg_ofs_end = AFE_HDMI_OUT_END, 133862306a36Sopenharmony_ci .reg_ofs_base_msb = AFE_HDMI_OUT_BASE_MSB, 133962306a36Sopenharmony_ci .reg_ofs_cur_msb = AFE_HDMI_OUT_CUR_MSB, 134062306a36Sopenharmony_ci .reg_ofs_end_msb = AFE_HDMI_OUT_END_MSB, 134162306a36Sopenharmony_ci .fs_reg = -1, 134262306a36Sopenharmony_ci .fs_shift = -1, 134362306a36Sopenharmony_ci .fs_maskbit = -1, 134462306a36Sopenharmony_ci .mono_reg = -1, 134562306a36Sopenharmony_ci .mono_shift = -1, 134662306a36Sopenharmony_ci .enable_reg = AFE_DAC_CON0, 134762306a36Sopenharmony_ci .enable_shift = HDMI_OUT_ON_SFT, 134862306a36Sopenharmony_ci .hd_reg = AFE_HDMI_OUT_CON0, 134962306a36Sopenharmony_ci .hd_shift = HDMI_OUT_HD_MODE_SFT, 135062306a36Sopenharmony_ci .hd_align_reg = AFE_HDMI_OUT_CON0, 135162306a36Sopenharmony_ci .hd_align_mshift = HDMI_OUT_HALIGN_SFT, 135262306a36Sopenharmony_ci .pbuf_reg = AFE_HDMI_OUT_CON0, 135362306a36Sopenharmony_ci .minlen_reg = AFE_HDMI_OUT_CON0, 135462306a36Sopenharmony_ci .minlen_shift = HDMI_OUT_MINLEN_SFT, 135562306a36Sopenharmony_ci }, 135662306a36Sopenharmony_ci}; 135762306a36Sopenharmony_ci 135862306a36Sopenharmony_cistatic const struct mtk_base_irq_data irq_data[MT8192_IRQ_NUM] = { 135962306a36Sopenharmony_ci [MT8192_IRQ_0] = { 136062306a36Sopenharmony_ci .id = MT8192_IRQ_0, 136162306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT0, 136262306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 136362306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 136462306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON1, 136562306a36Sopenharmony_ci .irq_fs_shift = IRQ0_MCU_MODE_SFT, 136662306a36Sopenharmony_ci .irq_fs_maskbit = IRQ0_MCU_MODE_MASK, 136762306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 136862306a36Sopenharmony_ci .irq_en_shift = IRQ0_MCU_ON_SFT, 136962306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 137062306a36Sopenharmony_ci .irq_clr_shift = IRQ0_MCU_CLR_SFT, 137162306a36Sopenharmony_ci }, 137262306a36Sopenharmony_ci [MT8192_IRQ_1] = { 137362306a36Sopenharmony_ci .id = MT8192_IRQ_1, 137462306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT1, 137562306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 137662306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 137762306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON1, 137862306a36Sopenharmony_ci .irq_fs_shift = IRQ1_MCU_MODE_SFT, 137962306a36Sopenharmony_ci .irq_fs_maskbit = IRQ1_MCU_MODE_MASK, 138062306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 138162306a36Sopenharmony_ci .irq_en_shift = IRQ1_MCU_ON_SFT, 138262306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 138362306a36Sopenharmony_ci .irq_clr_shift = IRQ1_MCU_CLR_SFT, 138462306a36Sopenharmony_ci }, 138562306a36Sopenharmony_ci [MT8192_IRQ_2] = { 138662306a36Sopenharmony_ci .id = MT8192_IRQ_2, 138762306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT2, 138862306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 138962306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 139062306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON1, 139162306a36Sopenharmony_ci .irq_fs_shift = IRQ2_MCU_MODE_SFT, 139262306a36Sopenharmony_ci .irq_fs_maskbit = IRQ2_MCU_MODE_MASK, 139362306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 139462306a36Sopenharmony_ci .irq_en_shift = IRQ2_MCU_ON_SFT, 139562306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 139662306a36Sopenharmony_ci .irq_clr_shift = IRQ2_MCU_CLR_SFT, 139762306a36Sopenharmony_ci }, 139862306a36Sopenharmony_ci [MT8192_IRQ_3] = { 139962306a36Sopenharmony_ci .id = MT8192_IRQ_3, 140062306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT3, 140162306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 140262306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 140362306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON1, 140462306a36Sopenharmony_ci .irq_fs_shift = IRQ3_MCU_MODE_SFT, 140562306a36Sopenharmony_ci .irq_fs_maskbit = IRQ3_MCU_MODE_MASK, 140662306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 140762306a36Sopenharmony_ci .irq_en_shift = IRQ3_MCU_ON_SFT, 140862306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 140962306a36Sopenharmony_ci .irq_clr_shift = IRQ3_MCU_CLR_SFT, 141062306a36Sopenharmony_ci }, 141162306a36Sopenharmony_ci [MT8192_IRQ_4] = { 141262306a36Sopenharmony_ci .id = MT8192_IRQ_4, 141362306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT4, 141462306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 141562306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 141662306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON1, 141762306a36Sopenharmony_ci .irq_fs_shift = IRQ4_MCU_MODE_SFT, 141862306a36Sopenharmony_ci .irq_fs_maskbit = IRQ4_MCU_MODE_MASK, 141962306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 142062306a36Sopenharmony_ci .irq_en_shift = IRQ4_MCU_ON_SFT, 142162306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 142262306a36Sopenharmony_ci .irq_clr_shift = IRQ4_MCU_CLR_SFT, 142362306a36Sopenharmony_ci }, 142462306a36Sopenharmony_ci [MT8192_IRQ_5] = { 142562306a36Sopenharmony_ci .id = MT8192_IRQ_5, 142662306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT5, 142762306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 142862306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 142962306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON1, 143062306a36Sopenharmony_ci .irq_fs_shift = IRQ5_MCU_MODE_SFT, 143162306a36Sopenharmony_ci .irq_fs_maskbit = IRQ5_MCU_MODE_MASK, 143262306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 143362306a36Sopenharmony_ci .irq_en_shift = IRQ5_MCU_ON_SFT, 143462306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 143562306a36Sopenharmony_ci .irq_clr_shift = IRQ5_MCU_CLR_SFT, 143662306a36Sopenharmony_ci }, 143762306a36Sopenharmony_ci [MT8192_IRQ_6] = { 143862306a36Sopenharmony_ci .id = MT8192_IRQ_6, 143962306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT6, 144062306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 144162306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 144262306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON1, 144362306a36Sopenharmony_ci .irq_fs_shift = IRQ6_MCU_MODE_SFT, 144462306a36Sopenharmony_ci .irq_fs_maskbit = IRQ6_MCU_MODE_MASK, 144562306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 144662306a36Sopenharmony_ci .irq_en_shift = IRQ6_MCU_ON_SFT, 144762306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 144862306a36Sopenharmony_ci .irq_clr_shift = IRQ6_MCU_CLR_SFT, 144962306a36Sopenharmony_ci }, 145062306a36Sopenharmony_ci [MT8192_IRQ_7] = { 145162306a36Sopenharmony_ci .id = MT8192_IRQ_7, 145262306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT7, 145362306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 145462306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 145562306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON1, 145662306a36Sopenharmony_ci .irq_fs_shift = IRQ7_MCU_MODE_SFT, 145762306a36Sopenharmony_ci .irq_fs_maskbit = IRQ7_MCU_MODE_MASK, 145862306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 145962306a36Sopenharmony_ci .irq_en_shift = IRQ7_MCU_ON_SFT, 146062306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 146162306a36Sopenharmony_ci .irq_clr_shift = IRQ7_MCU_CLR_SFT, 146262306a36Sopenharmony_ci }, 146362306a36Sopenharmony_ci [MT8192_IRQ_8] = { 146462306a36Sopenharmony_ci .id = MT8192_IRQ_8, 146562306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT8, 146662306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 146762306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 146862306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON2, 146962306a36Sopenharmony_ci .irq_fs_shift = IRQ8_MCU_MODE_SFT, 147062306a36Sopenharmony_ci .irq_fs_maskbit = IRQ8_MCU_MODE_MASK, 147162306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 147262306a36Sopenharmony_ci .irq_en_shift = IRQ8_MCU_ON_SFT, 147362306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 147462306a36Sopenharmony_ci .irq_clr_shift = IRQ8_MCU_CLR_SFT, 147562306a36Sopenharmony_ci }, 147662306a36Sopenharmony_ci [MT8192_IRQ_9] = { 147762306a36Sopenharmony_ci .id = MT8192_IRQ_9, 147862306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT9, 147962306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 148062306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 148162306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON2, 148262306a36Sopenharmony_ci .irq_fs_shift = IRQ9_MCU_MODE_SFT, 148362306a36Sopenharmony_ci .irq_fs_maskbit = IRQ9_MCU_MODE_MASK, 148462306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 148562306a36Sopenharmony_ci .irq_en_shift = IRQ9_MCU_ON_SFT, 148662306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 148762306a36Sopenharmony_ci .irq_clr_shift = IRQ9_MCU_CLR_SFT, 148862306a36Sopenharmony_ci }, 148962306a36Sopenharmony_ci [MT8192_IRQ_10] = { 149062306a36Sopenharmony_ci .id = MT8192_IRQ_10, 149162306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT10, 149262306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 149362306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 149462306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON2, 149562306a36Sopenharmony_ci .irq_fs_shift = IRQ10_MCU_MODE_SFT, 149662306a36Sopenharmony_ci .irq_fs_maskbit = IRQ10_MCU_MODE_MASK, 149762306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 149862306a36Sopenharmony_ci .irq_en_shift = IRQ10_MCU_ON_SFT, 149962306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 150062306a36Sopenharmony_ci .irq_clr_shift = IRQ10_MCU_CLR_SFT, 150162306a36Sopenharmony_ci }, 150262306a36Sopenharmony_ci [MT8192_IRQ_11] = { 150362306a36Sopenharmony_ci .id = MT8192_IRQ_11, 150462306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT11, 150562306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 150662306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 150762306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON2, 150862306a36Sopenharmony_ci .irq_fs_shift = IRQ11_MCU_MODE_SFT, 150962306a36Sopenharmony_ci .irq_fs_maskbit = IRQ11_MCU_MODE_MASK, 151062306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 151162306a36Sopenharmony_ci .irq_en_shift = IRQ11_MCU_ON_SFT, 151262306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 151362306a36Sopenharmony_ci .irq_clr_shift = IRQ11_MCU_CLR_SFT, 151462306a36Sopenharmony_ci }, 151562306a36Sopenharmony_ci [MT8192_IRQ_12] = { 151662306a36Sopenharmony_ci .id = MT8192_IRQ_12, 151762306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT12, 151862306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 151962306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 152062306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON2, 152162306a36Sopenharmony_ci .irq_fs_shift = IRQ12_MCU_MODE_SFT, 152262306a36Sopenharmony_ci .irq_fs_maskbit = IRQ12_MCU_MODE_MASK, 152362306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 152462306a36Sopenharmony_ci .irq_en_shift = IRQ12_MCU_ON_SFT, 152562306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 152662306a36Sopenharmony_ci .irq_clr_shift = IRQ12_MCU_CLR_SFT, 152762306a36Sopenharmony_ci }, 152862306a36Sopenharmony_ci [MT8192_IRQ_13] = { 152962306a36Sopenharmony_ci .id = MT8192_IRQ_13, 153062306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT13, 153162306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 153262306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 153362306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON2, 153462306a36Sopenharmony_ci .irq_fs_shift = IRQ13_MCU_MODE_SFT, 153562306a36Sopenharmony_ci .irq_fs_maskbit = IRQ13_MCU_MODE_MASK, 153662306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 153762306a36Sopenharmony_ci .irq_en_shift = IRQ13_MCU_ON_SFT, 153862306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 153962306a36Sopenharmony_ci .irq_clr_shift = IRQ13_MCU_CLR_SFT, 154062306a36Sopenharmony_ci }, 154162306a36Sopenharmony_ci [MT8192_IRQ_14] = { 154262306a36Sopenharmony_ci .id = MT8192_IRQ_14, 154362306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT14, 154462306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 154562306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 154662306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON2, 154762306a36Sopenharmony_ci .irq_fs_shift = IRQ14_MCU_MODE_SFT, 154862306a36Sopenharmony_ci .irq_fs_maskbit = IRQ14_MCU_MODE_MASK, 154962306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 155062306a36Sopenharmony_ci .irq_en_shift = IRQ14_MCU_ON_SFT, 155162306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 155262306a36Sopenharmony_ci .irq_clr_shift = IRQ14_MCU_CLR_SFT, 155362306a36Sopenharmony_ci }, 155462306a36Sopenharmony_ci [MT8192_IRQ_15] = { 155562306a36Sopenharmony_ci .id = MT8192_IRQ_15, 155662306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT15, 155762306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 155862306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 155962306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON2, 156062306a36Sopenharmony_ci .irq_fs_shift = IRQ15_MCU_MODE_SFT, 156162306a36Sopenharmony_ci .irq_fs_maskbit = IRQ15_MCU_MODE_MASK, 156262306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 156362306a36Sopenharmony_ci .irq_en_shift = IRQ15_MCU_ON_SFT, 156462306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 156562306a36Sopenharmony_ci .irq_clr_shift = IRQ15_MCU_CLR_SFT, 156662306a36Sopenharmony_ci }, 156762306a36Sopenharmony_ci [MT8192_IRQ_16] = { 156862306a36Sopenharmony_ci .id = MT8192_IRQ_16, 156962306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT16, 157062306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 157162306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 157262306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON3, 157362306a36Sopenharmony_ci .irq_fs_shift = IRQ16_MCU_MODE_SFT, 157462306a36Sopenharmony_ci .irq_fs_maskbit = IRQ16_MCU_MODE_MASK, 157562306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 157662306a36Sopenharmony_ci .irq_en_shift = IRQ16_MCU_ON_SFT, 157762306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 157862306a36Sopenharmony_ci .irq_clr_shift = IRQ16_MCU_CLR_SFT, 157962306a36Sopenharmony_ci }, 158062306a36Sopenharmony_ci [MT8192_IRQ_17] = { 158162306a36Sopenharmony_ci .id = MT8192_IRQ_17, 158262306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT17, 158362306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 158462306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 158562306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON3, 158662306a36Sopenharmony_ci .irq_fs_shift = IRQ17_MCU_MODE_SFT, 158762306a36Sopenharmony_ci .irq_fs_maskbit = IRQ17_MCU_MODE_MASK, 158862306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 158962306a36Sopenharmony_ci .irq_en_shift = IRQ17_MCU_ON_SFT, 159062306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 159162306a36Sopenharmony_ci .irq_clr_shift = IRQ17_MCU_CLR_SFT, 159262306a36Sopenharmony_ci }, 159362306a36Sopenharmony_ci [MT8192_IRQ_18] = { 159462306a36Sopenharmony_ci .id = MT8192_IRQ_18, 159562306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT18, 159662306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 159762306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 159862306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON3, 159962306a36Sopenharmony_ci .irq_fs_shift = IRQ18_MCU_MODE_SFT, 160062306a36Sopenharmony_ci .irq_fs_maskbit = IRQ18_MCU_MODE_MASK, 160162306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 160262306a36Sopenharmony_ci .irq_en_shift = IRQ18_MCU_ON_SFT, 160362306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 160462306a36Sopenharmony_ci .irq_clr_shift = IRQ18_MCU_CLR_SFT, 160562306a36Sopenharmony_ci }, 160662306a36Sopenharmony_ci [MT8192_IRQ_19] = { 160762306a36Sopenharmony_ci .id = MT8192_IRQ_19, 160862306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT19, 160962306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 161062306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 161162306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON3, 161262306a36Sopenharmony_ci .irq_fs_shift = IRQ19_MCU_MODE_SFT, 161362306a36Sopenharmony_ci .irq_fs_maskbit = IRQ19_MCU_MODE_MASK, 161462306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 161562306a36Sopenharmony_ci .irq_en_shift = IRQ19_MCU_ON_SFT, 161662306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 161762306a36Sopenharmony_ci .irq_clr_shift = IRQ19_MCU_CLR_SFT, 161862306a36Sopenharmony_ci }, 161962306a36Sopenharmony_ci [MT8192_IRQ_20] = { 162062306a36Sopenharmony_ci .id = MT8192_IRQ_20, 162162306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT20, 162262306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 162362306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 162462306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON3, 162562306a36Sopenharmony_ci .irq_fs_shift = IRQ20_MCU_MODE_SFT, 162662306a36Sopenharmony_ci .irq_fs_maskbit = IRQ20_MCU_MODE_MASK, 162762306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 162862306a36Sopenharmony_ci .irq_en_shift = IRQ20_MCU_ON_SFT, 162962306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 163062306a36Sopenharmony_ci .irq_clr_shift = IRQ20_MCU_CLR_SFT, 163162306a36Sopenharmony_ci }, 163262306a36Sopenharmony_ci [MT8192_IRQ_21] = { 163362306a36Sopenharmony_ci .id = MT8192_IRQ_21, 163462306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT21, 163562306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 163662306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 163762306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON3, 163862306a36Sopenharmony_ci .irq_fs_shift = IRQ21_MCU_MODE_SFT, 163962306a36Sopenharmony_ci .irq_fs_maskbit = IRQ21_MCU_MODE_MASK, 164062306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 164162306a36Sopenharmony_ci .irq_en_shift = IRQ21_MCU_ON_SFT, 164262306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 164362306a36Sopenharmony_ci .irq_clr_shift = IRQ21_MCU_CLR_SFT, 164462306a36Sopenharmony_ci }, 164562306a36Sopenharmony_ci [MT8192_IRQ_22] = { 164662306a36Sopenharmony_ci .id = MT8192_IRQ_22, 164762306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT22, 164862306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 164962306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 165062306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON3, 165162306a36Sopenharmony_ci .irq_fs_shift = IRQ22_MCU_MODE_SFT, 165262306a36Sopenharmony_ci .irq_fs_maskbit = IRQ22_MCU_MODE_MASK, 165362306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 165462306a36Sopenharmony_ci .irq_en_shift = IRQ22_MCU_ON_SFT, 165562306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 165662306a36Sopenharmony_ci .irq_clr_shift = IRQ22_MCU_CLR_SFT, 165762306a36Sopenharmony_ci }, 165862306a36Sopenharmony_ci [MT8192_IRQ_23] = { 165962306a36Sopenharmony_ci .id = MT8192_IRQ_23, 166062306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT23, 166162306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 166262306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 166362306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON3, 166462306a36Sopenharmony_ci .irq_fs_shift = IRQ23_MCU_MODE_SFT, 166562306a36Sopenharmony_ci .irq_fs_maskbit = IRQ23_MCU_MODE_MASK, 166662306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 166762306a36Sopenharmony_ci .irq_en_shift = IRQ23_MCU_ON_SFT, 166862306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 166962306a36Sopenharmony_ci .irq_clr_shift = IRQ23_MCU_CLR_SFT, 167062306a36Sopenharmony_ci }, 167162306a36Sopenharmony_ci [MT8192_IRQ_24] = { 167262306a36Sopenharmony_ci .id = MT8192_IRQ_24, 167362306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT24, 167462306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 167562306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 167662306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON4, 167762306a36Sopenharmony_ci .irq_fs_shift = IRQ24_MCU_MODE_SFT, 167862306a36Sopenharmony_ci .irq_fs_maskbit = IRQ24_MCU_MODE_MASK, 167962306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 168062306a36Sopenharmony_ci .irq_en_shift = IRQ24_MCU_ON_SFT, 168162306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 168262306a36Sopenharmony_ci .irq_clr_shift = IRQ24_MCU_CLR_SFT, 168362306a36Sopenharmony_ci }, 168462306a36Sopenharmony_ci [MT8192_IRQ_25] = { 168562306a36Sopenharmony_ci .id = MT8192_IRQ_25, 168662306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT25, 168762306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 168862306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 168962306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON4, 169062306a36Sopenharmony_ci .irq_fs_shift = IRQ25_MCU_MODE_SFT, 169162306a36Sopenharmony_ci .irq_fs_maskbit = IRQ25_MCU_MODE_MASK, 169262306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 169362306a36Sopenharmony_ci .irq_en_shift = IRQ25_MCU_ON_SFT, 169462306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 169562306a36Sopenharmony_ci .irq_clr_shift = IRQ25_MCU_CLR_SFT, 169662306a36Sopenharmony_ci }, 169762306a36Sopenharmony_ci [MT8192_IRQ_26] = { 169862306a36Sopenharmony_ci .id = MT8192_IRQ_26, 169962306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT26, 170062306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 170162306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 170262306a36Sopenharmony_ci .irq_fs_reg = AFE_IRQ_MCU_CON4, 170362306a36Sopenharmony_ci .irq_fs_shift = IRQ26_MCU_MODE_SFT, 170462306a36Sopenharmony_ci .irq_fs_maskbit = IRQ26_MCU_MODE_MASK, 170562306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 170662306a36Sopenharmony_ci .irq_en_shift = IRQ26_MCU_ON_SFT, 170762306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 170862306a36Sopenharmony_ci .irq_clr_shift = IRQ26_MCU_CLR_SFT, 170962306a36Sopenharmony_ci }, 171062306a36Sopenharmony_ci [MT8192_IRQ_31] = { 171162306a36Sopenharmony_ci .id = MT8192_IRQ_31, 171262306a36Sopenharmony_ci .irq_cnt_reg = AFE_IRQ_MCU_CNT31, 171362306a36Sopenharmony_ci .irq_cnt_shift = AFE_IRQ_CNT_SHIFT, 171462306a36Sopenharmony_ci .irq_cnt_maskbit = AFE_IRQ_CNT_MASK, 171562306a36Sopenharmony_ci .irq_fs_reg = -1, 171662306a36Sopenharmony_ci .irq_fs_shift = -1, 171762306a36Sopenharmony_ci .irq_fs_maskbit = -1, 171862306a36Sopenharmony_ci .irq_en_reg = AFE_IRQ_MCU_CON0, 171962306a36Sopenharmony_ci .irq_en_shift = IRQ31_MCU_ON_SFT, 172062306a36Sopenharmony_ci .irq_clr_reg = AFE_IRQ_MCU_CLR, 172162306a36Sopenharmony_ci .irq_clr_shift = IRQ31_MCU_CLR_SFT, 172262306a36Sopenharmony_ci }, 172362306a36Sopenharmony_ci}; 172462306a36Sopenharmony_ci 172562306a36Sopenharmony_cistatic const int memif_irq_usage[MT8192_MEMIF_NUM] = { 172662306a36Sopenharmony_ci [MT8192_MEMIF_DL1] = MT8192_IRQ_0, 172762306a36Sopenharmony_ci [MT8192_MEMIF_DL2] = MT8192_IRQ_1, 172862306a36Sopenharmony_ci [MT8192_MEMIF_DL3] = MT8192_IRQ_2, 172962306a36Sopenharmony_ci [MT8192_MEMIF_DL4] = MT8192_IRQ_3, 173062306a36Sopenharmony_ci [MT8192_MEMIF_DL5] = MT8192_IRQ_4, 173162306a36Sopenharmony_ci [MT8192_MEMIF_DL6] = MT8192_IRQ_5, 173262306a36Sopenharmony_ci [MT8192_MEMIF_DL7] = MT8192_IRQ_6, 173362306a36Sopenharmony_ci [MT8192_MEMIF_DL8] = MT8192_IRQ_7, 173462306a36Sopenharmony_ci [MT8192_MEMIF_DL9] = MT8192_IRQ_8, 173562306a36Sopenharmony_ci [MT8192_MEMIF_DL12] = MT8192_IRQ_9, 173662306a36Sopenharmony_ci [MT8192_MEMIF_DAI] = MT8192_IRQ_10, 173762306a36Sopenharmony_ci [MT8192_MEMIF_MOD_DAI] = MT8192_IRQ_11, 173862306a36Sopenharmony_ci [MT8192_MEMIF_DAI2] = MT8192_IRQ_12, 173962306a36Sopenharmony_ci [MT8192_MEMIF_VUL12] = MT8192_IRQ_13, 174062306a36Sopenharmony_ci [MT8192_MEMIF_VUL2] = MT8192_IRQ_14, 174162306a36Sopenharmony_ci [MT8192_MEMIF_AWB] = MT8192_IRQ_15, 174262306a36Sopenharmony_ci [MT8192_MEMIF_AWB2] = MT8192_IRQ_16, 174362306a36Sopenharmony_ci [MT8192_MEMIF_VUL3] = MT8192_IRQ_17, 174462306a36Sopenharmony_ci [MT8192_MEMIF_VUL4] = MT8192_IRQ_18, 174562306a36Sopenharmony_ci [MT8192_MEMIF_VUL5] = MT8192_IRQ_19, 174662306a36Sopenharmony_ci [MT8192_MEMIF_VUL6] = MT8192_IRQ_20, 174762306a36Sopenharmony_ci [MT8192_MEMIF_HDMI] = MT8192_IRQ_31, 174862306a36Sopenharmony_ci}; 174962306a36Sopenharmony_ci 175062306a36Sopenharmony_cistatic bool mt8192_is_volatile_reg(struct device *dev, unsigned int reg) 175162306a36Sopenharmony_ci{ 175262306a36Sopenharmony_ci /* these auto-gen reg has read-only bit, so put it as volatile */ 175362306a36Sopenharmony_ci /* volatile reg cannot be cached, so cannot be set when power off */ 175462306a36Sopenharmony_ci switch (reg) { 175562306a36Sopenharmony_ci case AUDIO_TOP_CON0: /* reg bit controlled by CCF */ 175662306a36Sopenharmony_ci case AUDIO_TOP_CON1: /* reg bit controlled by CCF */ 175762306a36Sopenharmony_ci case AUDIO_TOP_CON2: 175862306a36Sopenharmony_ci case AUDIO_TOP_CON3: 175962306a36Sopenharmony_ci case AFE_DL1_CUR_MSB: 176062306a36Sopenharmony_ci case AFE_DL1_CUR: 176162306a36Sopenharmony_ci case AFE_DL1_END: 176262306a36Sopenharmony_ci case AFE_DL2_CUR_MSB: 176362306a36Sopenharmony_ci case AFE_DL2_CUR: 176462306a36Sopenharmony_ci case AFE_DL2_END: 176562306a36Sopenharmony_ci case AFE_DL3_CUR_MSB: 176662306a36Sopenharmony_ci case AFE_DL3_CUR: 176762306a36Sopenharmony_ci case AFE_DL3_END: 176862306a36Sopenharmony_ci case AFE_DL4_CUR_MSB: 176962306a36Sopenharmony_ci case AFE_DL4_CUR: 177062306a36Sopenharmony_ci case AFE_DL4_END: 177162306a36Sopenharmony_ci case AFE_DL12_CUR_MSB: 177262306a36Sopenharmony_ci case AFE_DL12_CUR: 177362306a36Sopenharmony_ci case AFE_DL12_END: 177462306a36Sopenharmony_ci case AFE_ADDA_SRC_DEBUG_MON0: 177562306a36Sopenharmony_ci case AFE_ADDA_SRC_DEBUG_MON1: 177662306a36Sopenharmony_ci case AFE_ADDA_UL_SRC_MON0: 177762306a36Sopenharmony_ci case AFE_ADDA_UL_SRC_MON1: 177862306a36Sopenharmony_ci case AFE_SECURE_CON0: 177962306a36Sopenharmony_ci case AFE_SRAM_BOUND: 178062306a36Sopenharmony_ci case AFE_SECURE_CON1: 178162306a36Sopenharmony_ci case AFE_VUL_CUR_MSB: 178262306a36Sopenharmony_ci case AFE_VUL_CUR: 178362306a36Sopenharmony_ci case AFE_VUL_END: 178462306a36Sopenharmony_ci case AFE_ADDA_3RD_DAC_DL_SDM_FIFO_MON: 178562306a36Sopenharmony_ci case AFE_ADDA_3RD_DAC_DL_SRC_LCH_MON: 178662306a36Sopenharmony_ci case AFE_ADDA_3RD_DAC_DL_SRC_RCH_MON: 178762306a36Sopenharmony_ci case AFE_ADDA_3RD_DAC_DL_SDM_OUT_MON: 178862306a36Sopenharmony_ci case AFE_SIDETONE_MON: 178962306a36Sopenharmony_ci case AFE_SIDETONE_CON0: 179062306a36Sopenharmony_ci case AFE_SIDETONE_COEFF: 179162306a36Sopenharmony_ci case AFE_VUL2_CUR_MSB: 179262306a36Sopenharmony_ci case AFE_VUL2_CUR: 179362306a36Sopenharmony_ci case AFE_VUL2_END: 179462306a36Sopenharmony_ci case AFE_VUL3_CUR_MSB: 179562306a36Sopenharmony_ci case AFE_VUL3_CUR: 179662306a36Sopenharmony_ci case AFE_VUL3_END: 179762306a36Sopenharmony_ci case AFE_I2S_MON: 179862306a36Sopenharmony_ci case AFE_DAC_MON: 179962306a36Sopenharmony_ci case AFE_IRQ0_MCU_CNT_MON: 180062306a36Sopenharmony_ci case AFE_IRQ6_MCU_CNT_MON: 180162306a36Sopenharmony_ci case AFE_VUL4_CUR_MSB: 180262306a36Sopenharmony_ci case AFE_VUL4_CUR: 180362306a36Sopenharmony_ci case AFE_VUL4_END: 180462306a36Sopenharmony_ci case AFE_VUL12_CUR_MSB: 180562306a36Sopenharmony_ci case AFE_VUL12_CUR: 180662306a36Sopenharmony_ci case AFE_VUL12_END: 180762306a36Sopenharmony_ci case AFE_IRQ3_MCU_CNT_MON: 180862306a36Sopenharmony_ci case AFE_IRQ4_MCU_CNT_MON: 180962306a36Sopenharmony_ci case AFE_IRQ_MCU_STATUS: 181062306a36Sopenharmony_ci case AFE_IRQ_MCU_CLR: 181162306a36Sopenharmony_ci case AFE_IRQ_MCU_MON2: 181262306a36Sopenharmony_ci case AFE_IRQ1_MCU_CNT_MON: 181362306a36Sopenharmony_ci case AFE_IRQ2_MCU_CNT_MON: 181462306a36Sopenharmony_ci case AFE_IRQ5_MCU_CNT_MON: 181562306a36Sopenharmony_ci case AFE_IRQ7_MCU_CNT_MON: 181662306a36Sopenharmony_ci case AFE_IRQ_MCU_MISS_CLR: 181762306a36Sopenharmony_ci case AFE_GAIN1_CUR: 181862306a36Sopenharmony_ci case AFE_GAIN2_CUR: 181962306a36Sopenharmony_ci case AFE_SRAM_DELSEL_CON1: 182062306a36Sopenharmony_ci case PCM_INTF_CON2: 182162306a36Sopenharmony_ci case FPGA_CFG0: 182262306a36Sopenharmony_ci case FPGA_CFG1: 182362306a36Sopenharmony_ci case FPGA_CFG2: 182462306a36Sopenharmony_ci case FPGA_CFG3: 182562306a36Sopenharmony_ci case AUDIO_TOP_DBG_MON0: 182662306a36Sopenharmony_ci case AUDIO_TOP_DBG_MON1: 182762306a36Sopenharmony_ci case AFE_IRQ8_MCU_CNT_MON: 182862306a36Sopenharmony_ci case AFE_IRQ11_MCU_CNT_MON: 182962306a36Sopenharmony_ci case AFE_IRQ12_MCU_CNT_MON: 183062306a36Sopenharmony_ci case AFE_IRQ9_MCU_CNT_MON: 183162306a36Sopenharmony_ci case AFE_IRQ10_MCU_CNT_MON: 183262306a36Sopenharmony_ci case AFE_IRQ13_MCU_CNT_MON: 183362306a36Sopenharmony_ci case AFE_IRQ14_MCU_CNT_MON: 183462306a36Sopenharmony_ci case AFE_IRQ15_MCU_CNT_MON: 183562306a36Sopenharmony_ci case AFE_IRQ16_MCU_CNT_MON: 183662306a36Sopenharmony_ci case AFE_IRQ17_MCU_CNT_MON: 183762306a36Sopenharmony_ci case AFE_IRQ18_MCU_CNT_MON: 183862306a36Sopenharmony_ci case AFE_IRQ19_MCU_CNT_MON: 183962306a36Sopenharmony_ci case AFE_IRQ20_MCU_CNT_MON: 184062306a36Sopenharmony_ci case AFE_IRQ21_MCU_CNT_MON: 184162306a36Sopenharmony_ci case AFE_IRQ22_MCU_CNT_MON: 184262306a36Sopenharmony_ci case AFE_IRQ23_MCU_CNT_MON: 184362306a36Sopenharmony_ci case AFE_IRQ24_MCU_CNT_MON: 184462306a36Sopenharmony_ci case AFE_IRQ25_MCU_CNT_MON: 184562306a36Sopenharmony_ci case AFE_IRQ26_MCU_CNT_MON: 184662306a36Sopenharmony_ci case AFE_IRQ31_MCU_CNT_MON: 184762306a36Sopenharmony_ci case AFE_CBIP_MON0: 184862306a36Sopenharmony_ci case AFE_CBIP_SLV_MUX_MON0: 184962306a36Sopenharmony_ci case AFE_CBIP_SLV_DECODER_MON0: 185062306a36Sopenharmony_ci case AFE_ADDA6_MTKAIF_MON0: 185162306a36Sopenharmony_ci case AFE_ADDA6_MTKAIF_MON1: 185262306a36Sopenharmony_ci case AFE_AWB_CUR_MSB: 185362306a36Sopenharmony_ci case AFE_AWB_CUR: 185462306a36Sopenharmony_ci case AFE_AWB_END: 185562306a36Sopenharmony_ci case AFE_AWB2_CUR_MSB: 185662306a36Sopenharmony_ci case AFE_AWB2_CUR: 185762306a36Sopenharmony_ci case AFE_AWB2_END: 185862306a36Sopenharmony_ci case AFE_DAI_CUR_MSB: 185962306a36Sopenharmony_ci case AFE_DAI_CUR: 186062306a36Sopenharmony_ci case AFE_DAI_END: 186162306a36Sopenharmony_ci case AFE_DAI2_CUR_MSB: 186262306a36Sopenharmony_ci case AFE_DAI2_CUR: 186362306a36Sopenharmony_ci case AFE_DAI2_END: 186462306a36Sopenharmony_ci case AFE_ADDA6_SRC_DEBUG_MON0: 186562306a36Sopenharmony_ci case AFE_ADD6A_UL_SRC_MON0: 186662306a36Sopenharmony_ci case AFE_ADDA6_UL_SRC_MON1: 186762306a36Sopenharmony_ci case AFE_MOD_DAI_CUR_MSB: 186862306a36Sopenharmony_ci case AFE_MOD_DAI_CUR: 186962306a36Sopenharmony_ci case AFE_MOD_DAI_END: 187062306a36Sopenharmony_ci case AFE_HDMI_OUT_CUR_MSB: 187162306a36Sopenharmony_ci case AFE_HDMI_OUT_CUR: 187262306a36Sopenharmony_ci case AFE_HDMI_OUT_END: 187362306a36Sopenharmony_ci case AFE_AWB_RCH_MON: 187462306a36Sopenharmony_ci case AFE_AWB_LCH_MON: 187562306a36Sopenharmony_ci case AFE_VUL_RCH_MON: 187662306a36Sopenharmony_ci case AFE_VUL_LCH_MON: 187762306a36Sopenharmony_ci case AFE_VUL12_RCH_MON: 187862306a36Sopenharmony_ci case AFE_VUL12_LCH_MON: 187962306a36Sopenharmony_ci case AFE_VUL2_RCH_MON: 188062306a36Sopenharmony_ci case AFE_VUL2_LCH_MON: 188162306a36Sopenharmony_ci case AFE_DAI_DATA_MON: 188262306a36Sopenharmony_ci case AFE_MOD_DAI_DATA_MON: 188362306a36Sopenharmony_ci case AFE_DAI2_DATA_MON: 188462306a36Sopenharmony_ci case AFE_AWB2_RCH_MON: 188562306a36Sopenharmony_ci case AFE_AWB2_LCH_MON: 188662306a36Sopenharmony_ci case AFE_VUL3_RCH_MON: 188762306a36Sopenharmony_ci case AFE_VUL3_LCH_MON: 188862306a36Sopenharmony_ci case AFE_VUL4_RCH_MON: 188962306a36Sopenharmony_ci case AFE_VUL4_LCH_MON: 189062306a36Sopenharmony_ci case AFE_VUL5_RCH_MON: 189162306a36Sopenharmony_ci case AFE_VUL5_LCH_MON: 189262306a36Sopenharmony_ci case AFE_VUL6_RCH_MON: 189362306a36Sopenharmony_ci case AFE_VUL6_LCH_MON: 189462306a36Sopenharmony_ci case AFE_DL1_RCH_MON: 189562306a36Sopenharmony_ci case AFE_DL1_LCH_MON: 189662306a36Sopenharmony_ci case AFE_DL2_RCH_MON: 189762306a36Sopenharmony_ci case AFE_DL2_LCH_MON: 189862306a36Sopenharmony_ci case AFE_DL12_RCH1_MON: 189962306a36Sopenharmony_ci case AFE_DL12_LCH1_MON: 190062306a36Sopenharmony_ci case AFE_DL12_RCH2_MON: 190162306a36Sopenharmony_ci case AFE_DL12_LCH2_MON: 190262306a36Sopenharmony_ci case AFE_DL3_RCH_MON: 190362306a36Sopenharmony_ci case AFE_DL3_LCH_MON: 190462306a36Sopenharmony_ci case AFE_DL4_RCH_MON: 190562306a36Sopenharmony_ci case AFE_DL4_LCH_MON: 190662306a36Sopenharmony_ci case AFE_DL5_RCH_MON: 190762306a36Sopenharmony_ci case AFE_DL5_LCH_MON: 190862306a36Sopenharmony_ci case AFE_DL6_RCH_MON: 190962306a36Sopenharmony_ci case AFE_DL6_LCH_MON: 191062306a36Sopenharmony_ci case AFE_DL7_RCH_MON: 191162306a36Sopenharmony_ci case AFE_DL7_LCH_MON: 191262306a36Sopenharmony_ci case AFE_DL8_RCH_MON: 191362306a36Sopenharmony_ci case AFE_DL8_LCH_MON: 191462306a36Sopenharmony_ci case AFE_VUL5_CUR_MSB: 191562306a36Sopenharmony_ci case AFE_VUL5_CUR: 191662306a36Sopenharmony_ci case AFE_VUL5_END: 191762306a36Sopenharmony_ci case AFE_VUL6_CUR_MSB: 191862306a36Sopenharmony_ci case AFE_VUL6_CUR: 191962306a36Sopenharmony_ci case AFE_VUL6_END: 192062306a36Sopenharmony_ci case AFE_ADDA_DL_SDM_FIFO_MON: 192162306a36Sopenharmony_ci case AFE_ADDA_DL_SRC_LCH_MON: 192262306a36Sopenharmony_ci case AFE_ADDA_DL_SRC_RCH_MON: 192362306a36Sopenharmony_ci case AFE_ADDA_DL_SDM_OUT_MON: 192462306a36Sopenharmony_ci case AFE_CONNSYS_I2S_MON: 192562306a36Sopenharmony_ci case AFE_ASRC_2CH_CON0: 192662306a36Sopenharmony_ci case AFE_ASRC_2CH_CON2: 192762306a36Sopenharmony_ci case AFE_ASRC_2CH_CON3: 192862306a36Sopenharmony_ci case AFE_ASRC_2CH_CON4: 192962306a36Sopenharmony_ci case AFE_ASRC_2CH_CON5: 193062306a36Sopenharmony_ci case AFE_ASRC_2CH_CON7: 193162306a36Sopenharmony_ci case AFE_ASRC_2CH_CON8: 193262306a36Sopenharmony_ci case AFE_ASRC_2CH_CON12: 193362306a36Sopenharmony_ci case AFE_ASRC_2CH_CON13: 193462306a36Sopenharmony_ci case AFE_DL9_CUR_MSB: 193562306a36Sopenharmony_ci case AFE_DL9_CUR: 193662306a36Sopenharmony_ci case AFE_DL9_END: 193762306a36Sopenharmony_ci case AFE_ADDA_MTKAIF_MON0: 193862306a36Sopenharmony_ci case AFE_ADDA_MTKAIF_MON1: 193962306a36Sopenharmony_ci case AFE_DL_NLE_R_MON0: 194062306a36Sopenharmony_ci case AFE_DL_NLE_R_MON1: 194162306a36Sopenharmony_ci case AFE_DL_NLE_R_MON2: 194262306a36Sopenharmony_ci case AFE_DL_NLE_L_MON0: 194362306a36Sopenharmony_ci case AFE_DL_NLE_L_MON1: 194462306a36Sopenharmony_ci case AFE_DL_NLE_L_MON2: 194562306a36Sopenharmony_ci case AFE_GENERAL1_ASRC_2CH_CON0: 194662306a36Sopenharmony_ci case AFE_GENERAL1_ASRC_2CH_CON2: 194762306a36Sopenharmony_ci case AFE_GENERAL1_ASRC_2CH_CON3: 194862306a36Sopenharmony_ci case AFE_GENERAL1_ASRC_2CH_CON4: 194962306a36Sopenharmony_ci case AFE_GENERAL1_ASRC_2CH_CON5: 195062306a36Sopenharmony_ci case AFE_GENERAL1_ASRC_2CH_CON7: 195162306a36Sopenharmony_ci case AFE_GENERAL1_ASRC_2CH_CON8: 195262306a36Sopenharmony_ci case AFE_GENERAL1_ASRC_2CH_CON12: 195362306a36Sopenharmony_ci case AFE_GENERAL1_ASRC_2CH_CON13: 195462306a36Sopenharmony_ci case AFE_GENERAL2_ASRC_2CH_CON0: 195562306a36Sopenharmony_ci case AFE_GENERAL2_ASRC_2CH_CON2: 195662306a36Sopenharmony_ci case AFE_GENERAL2_ASRC_2CH_CON3: 195762306a36Sopenharmony_ci case AFE_GENERAL2_ASRC_2CH_CON4: 195862306a36Sopenharmony_ci case AFE_GENERAL2_ASRC_2CH_CON5: 195962306a36Sopenharmony_ci case AFE_GENERAL2_ASRC_2CH_CON7: 196062306a36Sopenharmony_ci case AFE_GENERAL2_ASRC_2CH_CON8: 196162306a36Sopenharmony_ci case AFE_GENERAL2_ASRC_2CH_CON12: 196262306a36Sopenharmony_ci case AFE_GENERAL2_ASRC_2CH_CON13: 196362306a36Sopenharmony_ci case AFE_DL9_RCH_MON: 196462306a36Sopenharmony_ci case AFE_DL9_LCH_MON: 196562306a36Sopenharmony_ci case AFE_DL5_CUR_MSB: 196662306a36Sopenharmony_ci case AFE_DL5_CUR: 196762306a36Sopenharmony_ci case AFE_DL5_END: 196862306a36Sopenharmony_ci case AFE_DL6_CUR_MSB: 196962306a36Sopenharmony_ci case AFE_DL6_CUR: 197062306a36Sopenharmony_ci case AFE_DL6_END: 197162306a36Sopenharmony_ci case AFE_DL7_CUR_MSB: 197262306a36Sopenharmony_ci case AFE_DL7_CUR: 197362306a36Sopenharmony_ci case AFE_DL7_END: 197462306a36Sopenharmony_ci case AFE_DL8_CUR_MSB: 197562306a36Sopenharmony_ci case AFE_DL8_CUR: 197662306a36Sopenharmony_ci case AFE_DL8_END: 197762306a36Sopenharmony_ci case AFE_PROT_SIDEBAND_MON: 197862306a36Sopenharmony_ci case AFE_DOMAIN_SIDEBAND0_MON: 197962306a36Sopenharmony_ci case AFE_DOMAIN_SIDEBAND1_MON: 198062306a36Sopenharmony_ci case AFE_DOMAIN_SIDEBAND2_MON: 198162306a36Sopenharmony_ci case AFE_DOMAIN_SIDEBAND3_MON: 198262306a36Sopenharmony_ci case AFE_APLL1_TUNER_CFG: /* [20:31] is monitor */ 198362306a36Sopenharmony_ci case AFE_APLL2_TUNER_CFG: /* [20:31] is monitor */ 198462306a36Sopenharmony_ci case AFE_DAC_CON0: 198562306a36Sopenharmony_ci case AFE_IRQ_MCU_CON0: 198662306a36Sopenharmony_ci case AFE_IRQ_MCU_EN: 198762306a36Sopenharmony_ci return true; 198862306a36Sopenharmony_ci default: 198962306a36Sopenharmony_ci return false; 199062306a36Sopenharmony_ci }; 199162306a36Sopenharmony_ci} 199262306a36Sopenharmony_ci 199362306a36Sopenharmony_cistatic const struct regmap_config mt8192_afe_regmap_config = { 199462306a36Sopenharmony_ci .reg_bits = 32, 199562306a36Sopenharmony_ci .reg_stride = 4, 199662306a36Sopenharmony_ci .val_bits = 32, 199762306a36Sopenharmony_ci .volatile_reg = mt8192_is_volatile_reg, 199862306a36Sopenharmony_ci .max_register = AFE_MAX_REGISTER, 199962306a36Sopenharmony_ci .num_reg_defaults_raw = AFE_MAX_REGISTER, 200062306a36Sopenharmony_ci .cache_type = REGCACHE_FLAT, 200162306a36Sopenharmony_ci}; 200262306a36Sopenharmony_ci 200362306a36Sopenharmony_cistatic irqreturn_t mt8192_afe_irq_handler(int irq_id, void *dev) 200462306a36Sopenharmony_ci{ 200562306a36Sopenharmony_ci struct mtk_base_afe *afe = dev; 200662306a36Sopenharmony_ci struct mtk_base_afe_irq *irq; 200762306a36Sopenharmony_ci unsigned int status; 200862306a36Sopenharmony_ci unsigned int status_mcu; 200962306a36Sopenharmony_ci unsigned int mcu_en; 201062306a36Sopenharmony_ci int ret; 201162306a36Sopenharmony_ci int i; 201262306a36Sopenharmony_ci 201362306a36Sopenharmony_ci /* get irq that is sent to MCU */ 201462306a36Sopenharmony_ci regmap_read(afe->regmap, AFE_IRQ_MCU_EN, &mcu_en); 201562306a36Sopenharmony_ci 201662306a36Sopenharmony_ci ret = regmap_read(afe->regmap, AFE_IRQ_MCU_STATUS, &status); 201762306a36Sopenharmony_ci /* only care IRQ which is sent to MCU */ 201862306a36Sopenharmony_ci status_mcu = status & mcu_en & AFE_IRQ_STATUS_BITS; 201962306a36Sopenharmony_ci 202062306a36Sopenharmony_ci if (ret || status_mcu == 0) { 202162306a36Sopenharmony_ci dev_err(afe->dev, "%s(), irq status err, ret %d, status 0x%x, mcu_en 0x%x\n", 202262306a36Sopenharmony_ci __func__, ret, status, mcu_en); 202362306a36Sopenharmony_ci 202462306a36Sopenharmony_ci goto err_irq; 202562306a36Sopenharmony_ci } 202662306a36Sopenharmony_ci 202762306a36Sopenharmony_ci for (i = 0; i < MT8192_MEMIF_NUM; i++) { 202862306a36Sopenharmony_ci struct mtk_base_afe_memif *memif = &afe->memif[i]; 202962306a36Sopenharmony_ci 203062306a36Sopenharmony_ci if (!memif->substream) 203162306a36Sopenharmony_ci continue; 203262306a36Sopenharmony_ci 203362306a36Sopenharmony_ci if (memif->irq_usage < 0) 203462306a36Sopenharmony_ci continue; 203562306a36Sopenharmony_ci 203662306a36Sopenharmony_ci irq = &afe->irqs[memif->irq_usage]; 203762306a36Sopenharmony_ci 203862306a36Sopenharmony_ci if (status_mcu & (1 << irq->irq_data->irq_en_shift)) 203962306a36Sopenharmony_ci snd_pcm_period_elapsed(memif->substream); 204062306a36Sopenharmony_ci } 204162306a36Sopenharmony_ci 204262306a36Sopenharmony_cierr_irq: 204362306a36Sopenharmony_ci /* clear irq */ 204462306a36Sopenharmony_ci regmap_write(afe->regmap, 204562306a36Sopenharmony_ci AFE_IRQ_MCU_CLR, 204662306a36Sopenharmony_ci status_mcu); 204762306a36Sopenharmony_ci 204862306a36Sopenharmony_ci return IRQ_HANDLED; 204962306a36Sopenharmony_ci} 205062306a36Sopenharmony_ci 205162306a36Sopenharmony_cistatic int mt8192_afe_runtime_suspend(struct device *dev) 205262306a36Sopenharmony_ci{ 205362306a36Sopenharmony_ci struct mtk_base_afe *afe = dev_get_drvdata(dev); 205462306a36Sopenharmony_ci struct mt8192_afe_private *afe_priv = afe->platform_priv; 205562306a36Sopenharmony_ci unsigned int value; 205662306a36Sopenharmony_ci int ret; 205762306a36Sopenharmony_ci 205862306a36Sopenharmony_ci if (!afe->regmap || afe_priv->pm_runtime_bypass_reg_ctl) 205962306a36Sopenharmony_ci goto skip_regmap; 206062306a36Sopenharmony_ci 206162306a36Sopenharmony_ci /* disable AFE */ 206262306a36Sopenharmony_ci regmap_update_bits(afe->regmap, AFE_DAC_CON0, AFE_ON_MASK_SFT, 0x0); 206362306a36Sopenharmony_ci 206462306a36Sopenharmony_ci ret = regmap_read_poll_timeout(afe->regmap, 206562306a36Sopenharmony_ci AFE_DAC_MON, 206662306a36Sopenharmony_ci value, 206762306a36Sopenharmony_ci (value & AFE_ON_RETM_MASK_SFT) == 0, 206862306a36Sopenharmony_ci 20, 206962306a36Sopenharmony_ci 1 * 1000 * 1000); 207062306a36Sopenharmony_ci if (ret) 207162306a36Sopenharmony_ci dev_warn(afe->dev, "%s(), ret %d\n", __func__, ret); 207262306a36Sopenharmony_ci 207362306a36Sopenharmony_ci /* make sure all irq status are cleared */ 207462306a36Sopenharmony_ci regmap_write(afe->regmap, AFE_IRQ_MCU_CLR, 0xffffffff); 207562306a36Sopenharmony_ci regmap_write(afe->regmap, AFE_IRQ_MCU_CLR, 0xffffffff); 207662306a36Sopenharmony_ci 207762306a36Sopenharmony_ci /* reset sgen */ 207862306a36Sopenharmony_ci regmap_write(afe->regmap, AFE_SINEGEN_CON0, 0x0); 207962306a36Sopenharmony_ci regmap_update_bits(afe->regmap, AFE_SINEGEN_CON2, 208062306a36Sopenharmony_ci INNER_LOOP_BACK_MODE_MASK_SFT, 208162306a36Sopenharmony_ci 0x3f << INNER_LOOP_BACK_MODE_SFT); 208262306a36Sopenharmony_ci 208362306a36Sopenharmony_ci /* cache only */ 208462306a36Sopenharmony_ci regcache_cache_only(afe->regmap, true); 208562306a36Sopenharmony_ci regcache_mark_dirty(afe->regmap); 208662306a36Sopenharmony_ci 208762306a36Sopenharmony_ciskip_regmap: 208862306a36Sopenharmony_ci mt8192_afe_disable_clock(afe); 208962306a36Sopenharmony_ci return 0; 209062306a36Sopenharmony_ci} 209162306a36Sopenharmony_ci 209262306a36Sopenharmony_cistatic int mt8192_afe_runtime_resume(struct device *dev) 209362306a36Sopenharmony_ci{ 209462306a36Sopenharmony_ci struct mtk_base_afe *afe = dev_get_drvdata(dev); 209562306a36Sopenharmony_ci struct mt8192_afe_private *afe_priv = afe->platform_priv; 209662306a36Sopenharmony_ci int ret; 209762306a36Sopenharmony_ci 209862306a36Sopenharmony_ci ret = mt8192_afe_enable_clock(afe); 209962306a36Sopenharmony_ci if (ret) 210062306a36Sopenharmony_ci return ret; 210162306a36Sopenharmony_ci 210262306a36Sopenharmony_ci if (!afe->regmap || afe_priv->pm_runtime_bypass_reg_ctl) 210362306a36Sopenharmony_ci goto skip_regmap; 210462306a36Sopenharmony_ci 210562306a36Sopenharmony_ci regcache_cache_only(afe->regmap, false); 210662306a36Sopenharmony_ci regcache_sync(afe->regmap); 210762306a36Sopenharmony_ci 210862306a36Sopenharmony_ci /* enable audio sys DCM for power saving */ 210962306a36Sopenharmony_ci regmap_update_bits(afe_priv->infracfg, 211062306a36Sopenharmony_ci PERI_BUS_DCM_CTRL, 0x1 << 29, 0x1 << 29); 211162306a36Sopenharmony_ci regmap_update_bits(afe->regmap, AUDIO_TOP_CON0, 0x1 << 29, 0x1 << 29); 211262306a36Sopenharmony_ci 211362306a36Sopenharmony_ci /* force cpu use 8_24 format when writing 32bit data */ 211462306a36Sopenharmony_ci regmap_update_bits(afe->regmap, AFE_MEMIF_CON0, 211562306a36Sopenharmony_ci CPU_HD_ALIGN_MASK_SFT, 0 << CPU_HD_ALIGN_SFT); 211662306a36Sopenharmony_ci 211762306a36Sopenharmony_ci /* set all output port to 24bit */ 211862306a36Sopenharmony_ci regmap_write(afe->regmap, AFE_CONN_24BIT, 0xffffffff); 211962306a36Sopenharmony_ci regmap_write(afe->regmap, AFE_CONN_24BIT_1, 0xffffffff); 212062306a36Sopenharmony_ci 212162306a36Sopenharmony_ci /* enable AFE */ 212262306a36Sopenharmony_ci regmap_update_bits(afe->regmap, AFE_DAC_CON0, AFE_ON_MASK_SFT, 0x1); 212362306a36Sopenharmony_ci 212462306a36Sopenharmony_ciskip_regmap: 212562306a36Sopenharmony_ci return 0; 212662306a36Sopenharmony_ci} 212762306a36Sopenharmony_ci 212862306a36Sopenharmony_cistatic int mt8192_afe_component_probe(struct snd_soc_component *component) 212962306a36Sopenharmony_ci{ 213062306a36Sopenharmony_ci return mtk_afe_add_sub_dai_control(component); 213162306a36Sopenharmony_ci} 213262306a36Sopenharmony_ci 213362306a36Sopenharmony_cistatic const struct snd_soc_component_driver mt8192_afe_component = { 213462306a36Sopenharmony_ci .name = AFE_PCM_NAME, 213562306a36Sopenharmony_ci .probe = mt8192_afe_component_probe, 213662306a36Sopenharmony_ci .pointer = mtk_afe_pcm_pointer, 213762306a36Sopenharmony_ci .pcm_construct = mtk_afe_pcm_new, 213862306a36Sopenharmony_ci}; 213962306a36Sopenharmony_ci 214062306a36Sopenharmony_cistatic const struct snd_soc_component_driver mt8192_afe_pcm_component = { 214162306a36Sopenharmony_ci .name = "mt8192-afe-pcm-dai", 214262306a36Sopenharmony_ci}; 214362306a36Sopenharmony_ci 214462306a36Sopenharmony_cistatic int mt8192_dai_memif_register(struct mtk_base_afe *afe) 214562306a36Sopenharmony_ci{ 214662306a36Sopenharmony_ci struct mtk_base_afe_dai *dai; 214762306a36Sopenharmony_ci 214862306a36Sopenharmony_ci dai = devm_kzalloc(afe->dev, sizeof(*dai), GFP_KERNEL); 214962306a36Sopenharmony_ci if (!dai) 215062306a36Sopenharmony_ci return -ENOMEM; 215162306a36Sopenharmony_ci 215262306a36Sopenharmony_ci list_add(&dai->list, &afe->sub_dais); 215362306a36Sopenharmony_ci 215462306a36Sopenharmony_ci dai->dai_drivers = mt8192_memif_dai_driver; 215562306a36Sopenharmony_ci dai->num_dai_drivers = ARRAY_SIZE(mt8192_memif_dai_driver); 215662306a36Sopenharmony_ci 215762306a36Sopenharmony_ci dai->dapm_widgets = mt8192_memif_widgets; 215862306a36Sopenharmony_ci dai->num_dapm_widgets = ARRAY_SIZE(mt8192_memif_widgets); 215962306a36Sopenharmony_ci dai->dapm_routes = mt8192_memif_routes; 216062306a36Sopenharmony_ci dai->num_dapm_routes = ARRAY_SIZE(mt8192_memif_routes); 216162306a36Sopenharmony_ci return 0; 216262306a36Sopenharmony_ci} 216362306a36Sopenharmony_ci 216462306a36Sopenharmony_citypedef int (*dai_register_cb)(struct mtk_base_afe *); 216562306a36Sopenharmony_cistatic const dai_register_cb dai_register_cbs[] = { 216662306a36Sopenharmony_ci mt8192_dai_adda_register, 216762306a36Sopenharmony_ci mt8192_dai_i2s_register, 216862306a36Sopenharmony_ci mt8192_dai_pcm_register, 216962306a36Sopenharmony_ci mt8192_dai_tdm_register, 217062306a36Sopenharmony_ci mt8192_dai_memif_register, 217162306a36Sopenharmony_ci}; 217262306a36Sopenharmony_ci 217362306a36Sopenharmony_cistatic int mt8192_afe_pcm_dev_probe(struct platform_device *pdev) 217462306a36Sopenharmony_ci{ 217562306a36Sopenharmony_ci struct mtk_base_afe *afe; 217662306a36Sopenharmony_ci struct mt8192_afe_private *afe_priv; 217762306a36Sopenharmony_ci struct device *dev; 217862306a36Sopenharmony_ci struct reset_control *rstc; 217962306a36Sopenharmony_ci int i, ret, irq_id; 218062306a36Sopenharmony_ci 218162306a36Sopenharmony_ci ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(34)); 218262306a36Sopenharmony_ci if (ret) 218362306a36Sopenharmony_ci return ret; 218462306a36Sopenharmony_ci 218562306a36Sopenharmony_ci afe = devm_kzalloc(&pdev->dev, sizeof(*afe), GFP_KERNEL); 218662306a36Sopenharmony_ci if (!afe) 218762306a36Sopenharmony_ci return -ENOMEM; 218862306a36Sopenharmony_ci platform_set_drvdata(pdev, afe); 218962306a36Sopenharmony_ci 219062306a36Sopenharmony_ci afe->platform_priv = devm_kzalloc(&pdev->dev, sizeof(*afe_priv), 219162306a36Sopenharmony_ci GFP_KERNEL); 219262306a36Sopenharmony_ci if (!afe->platform_priv) 219362306a36Sopenharmony_ci return -ENOMEM; 219462306a36Sopenharmony_ci afe_priv = afe->platform_priv; 219562306a36Sopenharmony_ci 219662306a36Sopenharmony_ci afe->dev = &pdev->dev; 219762306a36Sopenharmony_ci dev = afe->dev; 219862306a36Sopenharmony_ci 219962306a36Sopenharmony_ci /* init audio related clock */ 220062306a36Sopenharmony_ci ret = mt8192_init_clock(afe); 220162306a36Sopenharmony_ci if (ret) { 220262306a36Sopenharmony_ci dev_err(dev, "init clock error\n"); 220362306a36Sopenharmony_ci return ret; 220462306a36Sopenharmony_ci } 220562306a36Sopenharmony_ci 220662306a36Sopenharmony_ci /* reset controller to reset audio regs before regmap cache */ 220762306a36Sopenharmony_ci rstc = devm_reset_control_get_exclusive(dev, "audiosys"); 220862306a36Sopenharmony_ci if (IS_ERR(rstc)) { 220962306a36Sopenharmony_ci ret = PTR_ERR(rstc); 221062306a36Sopenharmony_ci dev_err(dev, "could not get audiosys reset:%d\n", ret); 221162306a36Sopenharmony_ci return ret; 221262306a36Sopenharmony_ci } 221362306a36Sopenharmony_ci 221462306a36Sopenharmony_ci ret = reset_control_reset(rstc); 221562306a36Sopenharmony_ci if (ret) { 221662306a36Sopenharmony_ci dev_err(dev, "failed to trigger audio reset:%d\n", ret); 221762306a36Sopenharmony_ci return ret; 221862306a36Sopenharmony_ci } 221962306a36Sopenharmony_ci 222062306a36Sopenharmony_ci pm_runtime_enable(&pdev->dev); 222162306a36Sopenharmony_ci if (!pm_runtime_enabled(&pdev->dev)) 222262306a36Sopenharmony_ci goto err_pm_disable; 222362306a36Sopenharmony_ci 222462306a36Sopenharmony_ci /* regmap init */ 222562306a36Sopenharmony_ci afe->regmap = syscon_node_to_regmap(dev->parent->of_node); 222662306a36Sopenharmony_ci if (IS_ERR(afe->regmap)) { 222762306a36Sopenharmony_ci dev_err(dev, "could not get regmap from parent\n"); 222862306a36Sopenharmony_ci ret = PTR_ERR(afe->regmap); 222962306a36Sopenharmony_ci goto err_pm_disable; 223062306a36Sopenharmony_ci } 223162306a36Sopenharmony_ci ret = regmap_attach_dev(dev, afe->regmap, &mt8192_afe_regmap_config); 223262306a36Sopenharmony_ci if (ret) { 223362306a36Sopenharmony_ci dev_warn(dev, "regmap_attach_dev fail, ret %d\n", ret); 223462306a36Sopenharmony_ci goto err_pm_disable; 223562306a36Sopenharmony_ci } 223662306a36Sopenharmony_ci 223762306a36Sopenharmony_ci /* enable clock for regcache get default value from hw */ 223862306a36Sopenharmony_ci afe_priv->pm_runtime_bypass_reg_ctl = true; 223962306a36Sopenharmony_ci pm_runtime_get_sync(&pdev->dev); 224062306a36Sopenharmony_ci 224162306a36Sopenharmony_ci ret = regmap_reinit_cache(afe->regmap, &mt8192_afe_regmap_config); 224262306a36Sopenharmony_ci if (ret) { 224362306a36Sopenharmony_ci dev_err(dev, "regmap_reinit_cache fail, ret %d\n", ret); 224462306a36Sopenharmony_ci goto err_pm_disable; 224562306a36Sopenharmony_ci } 224662306a36Sopenharmony_ci 224762306a36Sopenharmony_ci pm_runtime_put_sync(&pdev->dev); 224862306a36Sopenharmony_ci afe_priv->pm_runtime_bypass_reg_ctl = false; 224962306a36Sopenharmony_ci 225062306a36Sopenharmony_ci regcache_cache_only(afe->regmap, true); 225162306a36Sopenharmony_ci regcache_mark_dirty(afe->regmap); 225262306a36Sopenharmony_ci 225362306a36Sopenharmony_ci /* init memif */ 225462306a36Sopenharmony_ci afe->memif_size = MT8192_MEMIF_NUM; 225562306a36Sopenharmony_ci afe->memif = devm_kcalloc(dev, afe->memif_size, sizeof(*afe->memif), 225662306a36Sopenharmony_ci GFP_KERNEL); 225762306a36Sopenharmony_ci if (!afe->memif) { 225862306a36Sopenharmony_ci ret = -ENOMEM; 225962306a36Sopenharmony_ci goto err_pm_disable; 226062306a36Sopenharmony_ci } 226162306a36Sopenharmony_ci 226262306a36Sopenharmony_ci for (i = 0; i < afe->memif_size; i++) { 226362306a36Sopenharmony_ci afe->memif[i].data = &memif_data[i]; 226462306a36Sopenharmony_ci afe->memif[i].irq_usage = memif_irq_usage[i]; 226562306a36Sopenharmony_ci afe->memif[i].const_irq = 1; 226662306a36Sopenharmony_ci } 226762306a36Sopenharmony_ci 226862306a36Sopenharmony_ci mutex_init(&afe->irq_alloc_lock); /* needed when dynamic irq */ 226962306a36Sopenharmony_ci 227062306a36Sopenharmony_ci /* init irq */ 227162306a36Sopenharmony_ci afe->irqs_size = MT8192_IRQ_NUM; 227262306a36Sopenharmony_ci afe->irqs = devm_kcalloc(dev, afe->irqs_size, sizeof(*afe->irqs), 227362306a36Sopenharmony_ci GFP_KERNEL); 227462306a36Sopenharmony_ci if (!afe->irqs) { 227562306a36Sopenharmony_ci ret = -ENOMEM; 227662306a36Sopenharmony_ci goto err_pm_disable; 227762306a36Sopenharmony_ci } 227862306a36Sopenharmony_ci 227962306a36Sopenharmony_ci for (i = 0; i < afe->irqs_size; i++) 228062306a36Sopenharmony_ci afe->irqs[i].irq_data = &irq_data[i]; 228162306a36Sopenharmony_ci 228262306a36Sopenharmony_ci /* request irq */ 228362306a36Sopenharmony_ci irq_id = platform_get_irq(pdev, 0); 228462306a36Sopenharmony_ci if (irq_id < 0) { 228562306a36Sopenharmony_ci ret = irq_id; 228662306a36Sopenharmony_ci goto err_pm_disable; 228762306a36Sopenharmony_ci } 228862306a36Sopenharmony_ci 228962306a36Sopenharmony_ci ret = devm_request_irq(dev, irq_id, mt8192_afe_irq_handler, 229062306a36Sopenharmony_ci IRQF_TRIGGER_NONE, "asys-isr", (void *)afe); 229162306a36Sopenharmony_ci if (ret) { 229262306a36Sopenharmony_ci dev_err(dev, "could not request_irq for Afe_ISR_Handle\n"); 229362306a36Sopenharmony_ci goto err_pm_disable; 229462306a36Sopenharmony_ci } 229562306a36Sopenharmony_ci 229662306a36Sopenharmony_ci /* init sub_dais */ 229762306a36Sopenharmony_ci INIT_LIST_HEAD(&afe->sub_dais); 229862306a36Sopenharmony_ci 229962306a36Sopenharmony_ci for (i = 0; i < ARRAY_SIZE(dai_register_cbs); i++) { 230062306a36Sopenharmony_ci ret = dai_register_cbs[i](afe); 230162306a36Sopenharmony_ci if (ret) { 230262306a36Sopenharmony_ci dev_warn(afe->dev, "dai register i %d fail, ret %d\n", 230362306a36Sopenharmony_ci i, ret); 230462306a36Sopenharmony_ci goto err_pm_disable; 230562306a36Sopenharmony_ci } 230662306a36Sopenharmony_ci } 230762306a36Sopenharmony_ci 230862306a36Sopenharmony_ci /* init dai_driver and component_driver */ 230962306a36Sopenharmony_ci ret = mtk_afe_combine_sub_dai(afe); 231062306a36Sopenharmony_ci if (ret) { 231162306a36Sopenharmony_ci dev_warn(afe->dev, "mtk_afe_combine_sub_dai fail, ret %d\n", 231262306a36Sopenharmony_ci ret); 231362306a36Sopenharmony_ci goto err_pm_disable; 231462306a36Sopenharmony_ci } 231562306a36Sopenharmony_ci 231662306a36Sopenharmony_ci /* others */ 231762306a36Sopenharmony_ci afe->mtk_afe_hardware = &mt8192_afe_hardware; 231862306a36Sopenharmony_ci afe->memif_fs = mt8192_memif_fs; 231962306a36Sopenharmony_ci afe->irq_fs = mt8192_irq_fs; 232062306a36Sopenharmony_ci afe->get_dai_fs = mt8192_get_dai_fs; 232162306a36Sopenharmony_ci afe->get_memif_pbuf_size = mt8192_get_memif_pbuf_size; 232262306a36Sopenharmony_ci afe->memif_32bit_supported = 1; 232362306a36Sopenharmony_ci 232462306a36Sopenharmony_ci afe->runtime_resume = mt8192_afe_runtime_resume; 232562306a36Sopenharmony_ci afe->runtime_suspend = mt8192_afe_runtime_suspend; 232662306a36Sopenharmony_ci 232762306a36Sopenharmony_ci /* register platform */ 232862306a36Sopenharmony_ci ret = devm_snd_soc_register_component(&pdev->dev, 232962306a36Sopenharmony_ci &mt8192_afe_component, NULL, 0); 233062306a36Sopenharmony_ci if (ret) { 233162306a36Sopenharmony_ci dev_warn(dev, "err_platform\n"); 233262306a36Sopenharmony_ci goto err_pm_disable; 233362306a36Sopenharmony_ci } 233462306a36Sopenharmony_ci 233562306a36Sopenharmony_ci ret = devm_snd_soc_register_component(&pdev->dev, 233662306a36Sopenharmony_ci &mt8192_afe_pcm_component, 233762306a36Sopenharmony_ci afe->dai_drivers, 233862306a36Sopenharmony_ci afe->num_dai_drivers); 233962306a36Sopenharmony_ci if (ret) { 234062306a36Sopenharmony_ci dev_warn(dev, "err_dai_component\n"); 234162306a36Sopenharmony_ci goto err_pm_disable; 234262306a36Sopenharmony_ci } 234362306a36Sopenharmony_ci 234462306a36Sopenharmony_ci return 0; 234562306a36Sopenharmony_ci 234662306a36Sopenharmony_cierr_pm_disable: 234762306a36Sopenharmony_ci pm_runtime_disable(&pdev->dev); 234862306a36Sopenharmony_ci 234962306a36Sopenharmony_ci return ret; 235062306a36Sopenharmony_ci} 235162306a36Sopenharmony_ci 235262306a36Sopenharmony_cistatic void mt8192_afe_pcm_dev_remove(struct platform_device *pdev) 235362306a36Sopenharmony_ci{ 235462306a36Sopenharmony_ci struct mtk_base_afe *afe = platform_get_drvdata(pdev); 235562306a36Sopenharmony_ci 235662306a36Sopenharmony_ci pm_runtime_disable(&pdev->dev); 235762306a36Sopenharmony_ci if (!pm_runtime_status_suspended(&pdev->dev)) 235862306a36Sopenharmony_ci mt8192_afe_runtime_suspend(&pdev->dev); 235962306a36Sopenharmony_ci 236062306a36Sopenharmony_ci /* disable afe clock */ 236162306a36Sopenharmony_ci mt8192_afe_disable_clock(afe); 236262306a36Sopenharmony_ci} 236362306a36Sopenharmony_ci 236462306a36Sopenharmony_cistatic const struct of_device_id mt8192_afe_pcm_dt_match[] = { 236562306a36Sopenharmony_ci { .compatible = "mediatek,mt8192-audio", }, 236662306a36Sopenharmony_ci {}, 236762306a36Sopenharmony_ci}; 236862306a36Sopenharmony_ciMODULE_DEVICE_TABLE(of, mt8192_afe_pcm_dt_match); 236962306a36Sopenharmony_ci 237062306a36Sopenharmony_cistatic const struct dev_pm_ops mt8192_afe_pm_ops = { 237162306a36Sopenharmony_ci SET_RUNTIME_PM_OPS(mt8192_afe_runtime_suspend, 237262306a36Sopenharmony_ci mt8192_afe_runtime_resume, NULL) 237362306a36Sopenharmony_ci}; 237462306a36Sopenharmony_ci 237562306a36Sopenharmony_cistatic struct platform_driver mt8192_afe_pcm_driver = { 237662306a36Sopenharmony_ci .driver = { 237762306a36Sopenharmony_ci .name = "mt8192-audio", 237862306a36Sopenharmony_ci .of_match_table = mt8192_afe_pcm_dt_match, 237962306a36Sopenharmony_ci .pm = &mt8192_afe_pm_ops, 238062306a36Sopenharmony_ci }, 238162306a36Sopenharmony_ci .probe = mt8192_afe_pcm_dev_probe, 238262306a36Sopenharmony_ci .remove_new = mt8192_afe_pcm_dev_remove, 238362306a36Sopenharmony_ci}; 238462306a36Sopenharmony_ci 238562306a36Sopenharmony_cimodule_platform_driver(mt8192_afe_pcm_driver); 238662306a36Sopenharmony_ci 238762306a36Sopenharmony_ciMODULE_DESCRIPTION("Mediatek ALSA SoC AFE platform driver for 8192"); 238862306a36Sopenharmony_ciMODULE_AUTHOR("Shane Chien <shane.chien@mediatek.com>"); 238962306a36Sopenharmony_ciMODULE_LICENSE("GPL v2"); 2390