Path: blob/master/sound/soc/mediatek/mt8192/mt8192-afe-common.h
26488 views
/* SPDX-License-Identifier: GPL-2.0 */1/*2* mt8192-afe-common.h -- Mediatek 8192 audio driver definitions3*4* Copyright (c) 2020 MediaTek Inc.5* Author: Shane Chien <[email protected]>6*/78#ifndef _MT_8192_AFE_COMMON_H_9#define _MT_8192_AFE_COMMON_H_1011#include <linux/list.h>12#include <linux/regmap.h>13#include <sound/soc.h>1415#include "../common/mtk-base-afe.h"16#include "mt8192-reg.h"1718enum {19MT8192_MEMIF_DL1,20MT8192_MEMIF_DL12,21MT8192_MEMIF_DL2,22MT8192_MEMIF_DL3,23MT8192_MEMIF_DL4,24MT8192_MEMIF_DL5,25MT8192_MEMIF_DL6,26MT8192_MEMIF_DL7,27MT8192_MEMIF_DL8,28MT8192_MEMIF_DL9,29MT8192_MEMIF_DAI,30MT8192_MEMIF_DAI2,31MT8192_MEMIF_MOD_DAI,32MT8192_MEMIF_VUL12,33MT8192_MEMIF_VUL2,34MT8192_MEMIF_VUL3,35MT8192_MEMIF_VUL4,36MT8192_MEMIF_VUL5,37MT8192_MEMIF_VUL6,38MT8192_MEMIF_AWB,39MT8192_MEMIF_AWB2,40MT8192_MEMIF_HDMI,41MT8192_MEMIF_NUM,42MT8192_DAI_ADDA = MT8192_MEMIF_NUM,43MT8192_DAI_ADDA_CH34,44MT8192_DAI_AP_DMIC,45MT8192_DAI_AP_DMIC_CH34,46MT8192_DAI_VOW,47MT8192_DAI_CONNSYS_I2S,48MT8192_DAI_I2S_0,49MT8192_DAI_I2S_1,50MT8192_DAI_I2S_2,51MT8192_DAI_I2S_3,52MT8192_DAI_I2S_5,53MT8192_DAI_I2S_6,54MT8192_DAI_I2S_7,55MT8192_DAI_I2S_8,56MT8192_DAI_I2S_9,57MT8192_DAI_HW_GAIN_1,58MT8192_DAI_HW_GAIN_2,59MT8192_DAI_SRC_1,60MT8192_DAI_SRC_2,61MT8192_DAI_PCM_1,62MT8192_DAI_PCM_2,63MT8192_DAI_TDM,64MT8192_DAI_NUM,65};6667enum {68MT8192_IRQ_0,69MT8192_IRQ_1,70MT8192_IRQ_2,71MT8192_IRQ_3,72MT8192_IRQ_4,73MT8192_IRQ_5,74MT8192_IRQ_6,75MT8192_IRQ_7,76MT8192_IRQ_8,77MT8192_IRQ_9,78MT8192_IRQ_10,79MT8192_IRQ_11,80MT8192_IRQ_12,81MT8192_IRQ_13,82MT8192_IRQ_14,83MT8192_IRQ_15,84MT8192_IRQ_16,85MT8192_IRQ_17,86MT8192_IRQ_18,87MT8192_IRQ_19,88MT8192_IRQ_20,89MT8192_IRQ_21,90MT8192_IRQ_22,91MT8192_IRQ_23,92MT8192_IRQ_24,93MT8192_IRQ_25,94MT8192_IRQ_26,95MT8192_IRQ_31, /* used only for TDM */96MT8192_IRQ_NUM,97};9899enum {100MTKAIF_PROTOCOL_1 = 0,101MTKAIF_PROTOCOL_2,102MTKAIF_PROTOCOL_2_CLK_P2,103};104105enum {106MTK_AFE_ADDA_DL_GAIN_MUTE = 0,107MTK_AFE_ADDA_DL_GAIN_NORMAL = 0xf74f,108/* SA suggest apply -0.3db to audio/speech path */109};110111/* MCLK */112enum {113MT8192_I2S0_MCK = 0,114MT8192_I2S1_MCK,115MT8192_I2S2_MCK,116MT8192_I2S3_MCK,117MT8192_I2S4_MCK,118MT8192_I2S4_BCK,119MT8192_I2S5_MCK,120MT8192_I2S6_MCK,121MT8192_I2S7_MCK,122MT8192_I2S8_MCK,123MT8192_I2S9_MCK,124MT8192_MCK_NUM,125};126127struct clk;128129struct mt8192_afe_private {130struct clk **clk;131struct regmap *topckgen;132struct regmap *apmixedsys;133struct regmap *infracfg;134int stf_positive_gain_db;135int pm_runtime_bypass_reg_ctl;136137/* dai */138bool dai_on[MT8192_DAI_NUM];139void *dai_priv[MT8192_DAI_NUM];140141/* adda */142int mtkaif_protocol;143int mtkaif_chosen_phase[4];144int mtkaif_phase_cycle[4];145int mtkaif_calibration_num_phase;146int mtkaif_dmic;147int mtkaif_dmic_ch34;148int mtkaif_adda6_only;149150/* mck */151int mck_rate[MT8192_MCK_NUM];152};153154int mt8192_dai_adda_register(struct mtk_base_afe *afe);155int mt8192_dai_i2s_register(struct mtk_base_afe *afe);156int mt8192_dai_hw_gain_register(struct mtk_base_afe *afe);157int mt8192_dai_src_register(struct mtk_base_afe *afe);158int mt8192_dai_pcm_register(struct mtk_base_afe *afe);159int mt8192_dai_tdm_register(struct mtk_base_afe *afe);160161int mt8192_dai_i2s_set_share(struct mtk_base_afe *afe, const char *main_i2s_name,162const char *secondary_i2s_name);163164unsigned int mt8192_general_rate_transform(struct device *dev,165unsigned int rate);166unsigned int mt8192_rate_transform(struct device *dev,167unsigned int rate, int aud_blk);168169int mt8192_dai_set_priv(struct mtk_base_afe *afe, int id,170int priv_size, const void *priv_data);171172#endif173174175