Path: blob/master/sound/soc/mediatek/mt8186/mt8186-afe-common.h
26488 views
/* SPDX-License-Identifier: GPL-2.01*2* mt8186-afe-common.h -- Mediatek 8186 audio driver definitions3*4* Copyright (c) 2022 MediaTek Inc.5* Author: Jiaxin Yu <[email protected]>6*/78#ifndef _MT_8186_AFE_COMMON_H_9#define _MT_8186_AFE_COMMON_H_10#include <sound/soc.h>11#include <linux/list.h>12#include <linux/regmap.h>13#include "mt8186-reg.h"14#include "../common/mtk-base-afe.h"1516enum {17MT8186_MEMIF_DL1,18MT8186_MEMIF_DL12,19MT8186_MEMIF_DL2,20MT8186_MEMIF_DL3,21MT8186_MEMIF_DL4,22MT8186_MEMIF_DL5,23MT8186_MEMIF_DL6,24MT8186_MEMIF_DL7,25MT8186_MEMIF_DL8,26MT8186_MEMIF_VUL12,27MT8186_MEMIF_VUL2,28MT8186_MEMIF_VUL3,29MT8186_MEMIF_VUL4,30MT8186_MEMIF_VUL5,31MT8186_MEMIF_VUL6,32MT8186_MEMIF_AWB,33MT8186_MEMIF_AWB2,34MT8186_MEMIF_NUM,35MT8186_DAI_ADDA = MT8186_MEMIF_NUM,36MT8186_DAI_AP_DMIC,37MT8186_DAI_CONNSYS_I2S,38MT8186_DAI_I2S_0,39MT8186_DAI_I2S_1,40MT8186_DAI_I2S_2,41MT8186_DAI_I2S_3,42MT8186_DAI_HW_GAIN_1,43MT8186_DAI_HW_GAIN_2,44MT8186_DAI_SRC_1,45MT8186_DAI_SRC_2,46MT8186_DAI_PCM,47MT8186_DAI_TDM_IN,48MT8186_DAI_HOSTLESS_LPBK,49MT8186_DAI_HOSTLESS_FM,50MT8186_DAI_HOSTLESS_HW_GAIN_AAUDIO,51MT8186_DAI_HOSTLESS_SRC_AAUDIO,52MT8186_DAI_HOSTLESS_SRC_1,53MT8186_DAI_HOSTLESS_SRC_BARGEIN,54MT8186_DAI_HOSTLESS_UL1,55MT8186_DAI_HOSTLESS_UL2,56MT8186_DAI_HOSTLESS_UL3,57MT8186_DAI_HOSTLESS_UL5,58MT8186_DAI_HOSTLESS_UL6,59MT8186_DAI_NUM,60};6162#define MT8186_RECORD_MEMIF MT8186_MEMIF_VUL1263#define MT8186_ECHO_REF_MEMIF MT8186_MEMIF_AWB64#define MT8186_PRIMARY_MEMIF MT8186_MEMIF_DL165#define MT8186_FAST_MEMIF MT8186_MEMIF_DL266#define MT8186_DEEP_MEMIF MT8186_MEMIF_DL367#define MT8186_VOIP_MEMIF MT8186_MEMIF_DL1268#define MT8186_MMAP_DL_MEMIF MT8186_MEMIF_DL569#define MT8186_MMAP_UL_MEMIF MT8186_MEMIF_VUL570#define MT8186_BARGEIN_MEMIF MT8186_MEMIF_AWB7172enum {73MT8186_IRQ_0,74MT8186_IRQ_1,75MT8186_IRQ_2,76MT8186_IRQ_3,77MT8186_IRQ_4,78MT8186_IRQ_5,79MT8186_IRQ_6,80MT8186_IRQ_7,81MT8186_IRQ_8,82MT8186_IRQ_9,83MT8186_IRQ_10,84MT8186_IRQ_11,85MT8186_IRQ_12,86MT8186_IRQ_13,87MT8186_IRQ_14,88MT8186_IRQ_15,89MT8186_IRQ_16,90MT8186_IRQ_17,91MT8186_IRQ_18,92MT8186_IRQ_19,93MT8186_IRQ_20,94MT8186_IRQ_21,95MT8186_IRQ_22,96MT8186_IRQ_23,97MT8186_IRQ_24,98MT8186_IRQ_25,99MT8186_IRQ_26,100MT8186_IRQ_NUM,101};102103enum {104MT8186_AFE_IRQ_DIR_MCU = 0,105MT8186_AFE_IRQ_DIR_DSP,106MT8186_AFE_IRQ_DIR_BOTH,107};108109enum {110MTKAIF_PROTOCOL_1 = 0,111MTKAIF_PROTOCOL_2,112MTKAIF_PROTOCOL_2_CLK_P2,113};114115enum {116MTK_AFE_ADDA_DL_GAIN_MUTE = 0,117MTK_AFE_ADDA_DL_GAIN_NORMAL = 0xf74f,118/* SA suggest apply -0.3db to audio/speech path */119};120121#define MTK_SPK_I2S_0_STR "MTK_SPK_I2S_0"122#define MTK_SPK_I2S_1_STR "MTK_SPK_I2S_1"123#define MTK_SPK_I2S_2_STR "MTK_SPK_I2S_2"124#define MTK_SPK_I2S_3_STR "MTK_SPK_I2S_3"125126/* MCLK */127enum {128MT8186_I2S0_MCK = 0,129MT8186_I2S1_MCK,130MT8186_I2S2_MCK,131MT8186_I2S4_MCK,132MT8186_TDM_MCK,133MT8186_MCK_NUM,134};135136struct snd_pcm_substream;137struct mtk_base_irq_data;138struct clk;139140struct mt8186_afe_private {141struct clk **clk;142struct clk_lookup **lookup;143struct regmap *topckgen;144struct regmap *apmixedsys;145struct regmap *infracfg;146int irq_cnt[MT8186_MEMIF_NUM];147int stf_positive_gain_db;148int pm_runtime_bypass_reg_ctl;149int sgen_mode;150int sgen_rate;151int sgen_amplitude;152153/* xrun assert */154int xrun_assert[MT8186_MEMIF_NUM];155156/* dai */157bool dai_on[MT8186_DAI_NUM];158void *dai_priv[MT8186_DAI_NUM];159160/* adda */161bool mtkaif_calibration_ok;162int mtkaif_protocol;163int mtkaif_chosen_phase[4];164int mtkaif_phase_cycle[4];165int mtkaif_calibration_num_phase;166int mtkaif_dmic;167int mtkaif_looback0;168int mtkaif_looback1;169170/* mck */171int mck_rate[MT8186_MCK_NUM];172};173174int mt8186_dai_adda_register(struct mtk_base_afe *afe);175int mt8186_dai_i2s_register(struct mtk_base_afe *afe);176int mt8186_dai_tdm_register(struct mtk_base_afe *afe);177int mt8186_dai_hw_gain_register(struct mtk_base_afe *afe);178int mt8186_dai_src_register(struct mtk_base_afe *afe);179int mt8186_dai_pcm_register(struct mtk_base_afe *afe);180int mt8186_dai_hostless_register(struct mtk_base_afe *afe);181182int mt8186_add_misc_control(struct snd_soc_component *component);183184unsigned int mt8186_general_rate_transform(struct device *dev,185unsigned int rate);186unsigned int mt8186_rate_transform(struct device *dev,187unsigned int rate, int aud_blk);188unsigned int mt8186_tdm_relatch_rate_transform(struct device *dev,189unsigned int rate);190191int mt8186_dai_i2s_set_share(struct mtk_base_afe *afe, const char *main_i2s_name,192const char *secondary_i2s_name);193194int mt8186_dai_set_priv(struct mtk_base_afe *afe, int id,195int priv_size, const void *priv_data);196197#endif198199200