Path: blob/master/sound/soc/mediatek/mt8183/mt8183-afe-common.h
26488 views
/* SPDX-License-Identifier: GPL-2.0 */1/*2* mt8183-afe-common.h -- Mediatek 8183 audio driver definitions3*4* Copyright (c) 2018 MediaTek Inc.5* Author: KaiChieh Chuang <[email protected]>6*/78#ifndef _MT_8183_AFE_COMMON_H_9#define _MT_8183_AFE_COMMON_H_1011#include <sound/soc.h>12#include <linux/list.h>13#include <linux/regmap.h>14#include "../common/mtk-base-afe.h"1516enum {17MT8183_MEMIF_DL1,18MT8183_MEMIF_DL2,19MT8183_MEMIF_DL3,20MT8183_MEMIF_VUL12,21MT8183_MEMIF_VUL2,22MT8183_MEMIF_AWB,23MT8183_MEMIF_AWB2,24MT8183_MEMIF_MOD_DAI,25MT8183_MEMIF_HDMI,26MT8183_MEMIF_NUM,27MT8183_DAI_ADDA = MT8183_MEMIF_NUM,28MT8183_DAI_PCM_1,29MT8183_DAI_PCM_2,30MT8183_DAI_I2S_0,31MT8183_DAI_I2S_1,32MT8183_DAI_I2S_2,33MT8183_DAI_I2S_3,34MT8183_DAI_I2S_5,35MT8183_DAI_TDM,36MT8183_DAI_HOSTLESS_LPBK,37MT8183_DAI_HOSTLESS_SPEECH,38MT8183_DAI_NUM,39};4041enum {42MT8183_IRQ_0,43MT8183_IRQ_1,44MT8183_IRQ_2,45MT8183_IRQ_3,46MT8183_IRQ_4,47MT8183_IRQ_5,48MT8183_IRQ_6,49MT8183_IRQ_7,50MT8183_IRQ_8, /* hw bundle to TDM */51MT8183_IRQ_11,52MT8183_IRQ_12,53MT8183_IRQ_NUM,54};5556enum {57MT8183_MTKAIF_PROTOCOL_1 = 0,58MT8183_MTKAIF_PROTOCOL_2,59MT8183_MTKAIF_PROTOCOL_2_CLK_P2,60};6162/* MCLK */63enum {64MT8183_I2S0_MCK = 0,65MT8183_I2S1_MCK,66MT8183_I2S2_MCK,67MT8183_I2S3_MCK,68MT8183_I2S4_MCK,69MT8183_I2S4_BCK,70MT8183_I2S5_MCK,71MT8183_MCK_NUM,72};7374struct clk;7576struct mt8183_afe_private {77struct clk **clk;7879int pm_runtime_bypass_reg_ctl;8081/* dai */82void *dai_priv[MT8183_DAI_NUM];8384/* adda */85int mtkaif_protocol;86int mtkaif_calibration_ok;87int mtkaif_chosen_phase[4];88int mtkaif_phase_cycle[4];89int mtkaif_calibration_num_phase;90int mtkaif_dmic;9192/* mck */93int mck_rate[MT8183_MCK_NUM];94};9596unsigned int mt8183_general_rate_transform(struct device *dev,97unsigned int rate);98unsigned int mt8183_rate_transform(struct device *dev,99unsigned int rate, int aud_blk);100101int mt8183_dai_i2s_set_share(struct mtk_base_afe *afe, const char *main_i2s_name,102const char *secondary_i2s_name);103104/* dai register */105int mt8183_dai_adda_register(struct mtk_base_afe *afe);106int mt8183_dai_pcm_register(struct mtk_base_afe *afe);107int mt8183_dai_i2s_register(struct mtk_base_afe *afe);108int mt8183_dai_tdm_register(struct mtk_base_afe *afe);109int mt8183_dai_hostless_register(struct mtk_base_afe *afe);110#endif111112113