1 /* 2 * mtk_afe_common.h -- Mediatek audio driver common definitions 3 * 4 * Copyright (c) 2015 MediaTek Inc. 5 * Author: Koro Chen <koro.chen@mediatek.com> 6 * Sascha Hauer <s.hauer@pengutronix.de> 7 * Hidalgo Huang <hidalgo.huang@mediatek.com> 8 * Ir Lian <ir.lian@mediatek.com> 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License version 2 and 12 * only version 2 as published by the Free Software Foundation. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 */ 19 20 #ifndef _MTK_AFE_COMMON_H_ 21 #define _MTK_AFE_COMMON_H_ 22 23 #include <linux/clk.h> 24 #include <linux/regmap.h> 25 26 enum { 27 MTK_AFE_MEMIF_DL1, 28 MTK_AFE_MEMIF_DL2, 29 MTK_AFE_MEMIF_VUL, 30 MTK_AFE_MEMIF_DAI, 31 MTK_AFE_MEMIF_AWB, 32 MTK_AFE_MEMIF_MOD_DAI, 33 MTK_AFE_MEMIF_HDMI, 34 MTK_AFE_MEMIF_NUM, 35 MTK_AFE_IO_MOD_PCM1 = MTK_AFE_MEMIF_NUM, 36 MTK_AFE_IO_MOD_PCM2, 37 MTK_AFE_IO_PMIC, 38 MTK_AFE_IO_I2S, 39 MTK_AFE_IO_2ND_I2S, 40 MTK_AFE_IO_HW_GAIN1, 41 MTK_AFE_IO_HW_GAIN2, 42 MTK_AFE_IO_MRG_O, 43 MTK_AFE_IO_MRG_I, 44 MTK_AFE_IO_DAIBT, 45 MTK_AFE_IO_HDMI, 46 }; 47 48 enum { 49 MTK_AFE_IRQ_1, 50 MTK_AFE_IRQ_2, 51 MTK_AFE_IRQ_3, 52 MTK_AFE_IRQ_4, 53 MTK_AFE_IRQ_5, 54 MTK_AFE_IRQ_6, 55 MTK_AFE_IRQ_7, 56 MTK_AFE_IRQ_8, 57 MTK_AFE_IRQ_NUM, 58 }; 59 60 enum { 61 MTK_CLK_INFRASYS_AUD, 62 MTK_CLK_TOP_PDN_AUD, 63 MTK_CLK_TOP_PDN_AUD_BUS, 64 MTK_CLK_I2S0_M, 65 MTK_CLK_I2S1_M, 66 MTK_CLK_I2S2_M, 67 MTK_CLK_I2S3_M, 68 MTK_CLK_I2S3_B, 69 MTK_CLK_BCK0, 70 MTK_CLK_BCK1, 71 MTK_CLK_NUM 72 }; 73 74 struct mtk_afe; 75 struct snd_pcm_substream; 76 77 struct mtk_afe_memif_data { 78 int id; 79 const char *name; 80 int reg_ofs_base; 81 int reg_ofs_cur; 82 int fs_shift; 83 int mono_shift; 84 int enable_shift; 85 int irq_reg_cnt; 86 int irq_cnt_shift; 87 int irq_en_shift; 88 int irq_fs_shift; 89 int irq_clr_shift; 90 }; 91 92 struct mtk_afe_memif { 93 unsigned int phys_buf_addr; 94 int buffer_size; 95 unsigned int hw_ptr; /* Previous IRQ's HW ptr */ 96 struct snd_pcm_substream *substream; 97 const struct mtk_afe_memif_data *data; 98 const struct mtk_afe_irq_data *irqdata; 99 }; 100 101 #endif 102