brintos

brintos / linux-shallow public Read only

0
0
Text · 2.0 KiB · 32bef5e Raw
99 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * mt2701-afe-common.h  --  Mediatek 2701 audio driver definitions4 *5 * Copyright (c) 2016 MediaTek Inc.6 * Author: Garlic Tseng <garlic.tseng@mediatek.com>7 */8 9#ifndef _MT_2701_AFE_COMMON_H_10#define _MT_2701_AFE_COMMON_H_11 12#include <sound/soc.h>13#include <linux/clk.h>14#include <linux/regmap.h>15#include "mt2701-reg.h"16#include "../common/mtk-base-afe.h"17 18#define MT2701_PLL_DOMAIN_0_RATE	9830400019#define MT2701_PLL_DOMAIN_1_RATE	9031680020 21enum {22	MT2701_MEMIF_DL1,23	MT2701_MEMIF_DL2,24	MT2701_MEMIF_DL3,25	MT2701_MEMIF_DL4,26	MT2701_MEMIF_DL5,27	MT2701_MEMIF_DL_SINGLE_NUM,28	MT2701_MEMIF_DLM = MT2701_MEMIF_DL_SINGLE_NUM,29	MT2701_MEMIF_UL1,30	MT2701_MEMIF_UL2,31	MT2701_MEMIF_UL3,32	MT2701_MEMIF_UL4,33	MT2701_MEMIF_UL5,34	MT2701_MEMIF_DLBT,35	MT2701_MEMIF_ULBT,36	MT2701_MEMIF_NUM,37	MT2701_IO_I2S = MT2701_MEMIF_NUM,38	MT2701_IO_2ND_I2S,39	MT2701_IO_3RD_I2S,40	MT2701_IO_4TH_I2S,41	MT2701_IO_5TH_I2S,42	MT2701_IO_6TH_I2S,43	MT2701_IO_MRG,44};45 46enum {47	MT2701_IRQ_ASYS_IRQ1,48	MT2701_IRQ_ASYS_IRQ2,49	MT2701_IRQ_ASYS_IRQ3,50	MT2701_IRQ_ASYS_END,51};52 53enum audio_base_clock {54	MT2701_INFRA_SYS_AUDIO,55	MT2701_TOP_AUD_MCLK_SRC0,56	MT2701_TOP_AUD_MCLK_SRC1,57	MT2701_TOP_AUD_A1SYS,58	MT2701_TOP_AUD_A2SYS,59	MT2701_AUDSYS_AFE,60	MT2701_AUDSYS_AFE_CONN,61	MT2701_AUDSYS_A1SYS,62	MT2701_AUDSYS_A2SYS,63	MT2701_BASE_CLK_NUM,64};65 66struct mt2701_i2s_data {67	int i2s_ctrl_reg;68	int i2s_asrc_fs_shift;69	int i2s_asrc_fs_mask;70};71 72struct mt2701_i2s_path {73	int mclk_rate;74	int on[MTK_STREAM_NUM];75	int occupied[MTK_STREAM_NUM];76	const struct mt2701_i2s_data *i2s_data[MTK_STREAM_NUM];77	struct clk *hop_ck[MTK_STREAM_NUM];78	struct clk *sel_ck;79	struct clk *div_ck;80	struct clk *mclk_ck;81	struct clk *asrco_ck;82};83 84struct mt2701_soc_variants {85	bool has_one_heart_mode;86	int i2s_num;87};88 89struct mt2701_afe_private {90	struct mt2701_i2s_path *i2s_path;91	struct clk *base_ck[MT2701_BASE_CLK_NUM];92	struct clk *mrgif_ck;93	bool mrg_enable[MTK_STREAM_NUM];94 95	const struct mt2701_soc_variants *soc;96};97 98#endif99