~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/sound/soc/mediatek/mt8195/mt8195-afe-common.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /*
  3  * mt8195-afe-common.h  --  Mediatek 8195 audio driver definitions
  4  *
  5  * Copyright (c) 2021 MediaTek Inc.
  6  * Author: Bicycle Tsai <bicycle.tsai@mediatek.com>
  7  *         Trevor Wu <trevor.wu@mediatek.com>
  8  */
  9 
 10 #ifndef _MT_8195_AFE_COMMON_H_
 11 #define _MT_8195_AFE_COMMON_H_
 12 
 13 #include <sound/soc.h>
 14 #include <linux/list.h>
 15 #include <linux/regmap.h>
 16 #include "../common/mtk-base-afe.h"
 17 
 18 enum {
 19         MT8195_DAI_START,
 20         MT8195_AFE_MEMIF_START = MT8195_DAI_START,
 21         MT8195_AFE_MEMIF_DL2 = MT8195_AFE_MEMIF_START,
 22         MT8195_AFE_MEMIF_DL3,
 23         MT8195_AFE_MEMIF_DL6,
 24         MT8195_AFE_MEMIF_DL7,
 25         MT8195_AFE_MEMIF_DL8,
 26         MT8195_AFE_MEMIF_DL10,
 27         MT8195_AFE_MEMIF_DL11,
 28         MT8195_AFE_MEMIF_UL_START,
 29         MT8195_AFE_MEMIF_UL1 = MT8195_AFE_MEMIF_UL_START,
 30         MT8195_AFE_MEMIF_UL2,
 31         MT8195_AFE_MEMIF_UL3,
 32         MT8195_AFE_MEMIF_UL4,
 33         MT8195_AFE_MEMIF_UL5,
 34         MT8195_AFE_MEMIF_UL6,
 35         MT8195_AFE_MEMIF_UL8,
 36         MT8195_AFE_MEMIF_UL9,
 37         MT8195_AFE_MEMIF_UL10,
 38         MT8195_AFE_MEMIF_END,
 39         MT8195_AFE_MEMIF_NUM = (MT8195_AFE_MEMIF_END - MT8195_AFE_MEMIF_START),
 40         MT8195_AFE_IO_START = MT8195_AFE_MEMIF_END,
 41         MT8195_AFE_IO_DL_SRC = MT8195_AFE_IO_START,
 42         MT8195_AFE_IO_DPTX,
 43         MT8195_AFE_IO_ETDM_START,
 44         MT8195_AFE_IO_ETDM1_IN = MT8195_AFE_IO_ETDM_START,
 45         MT8195_AFE_IO_ETDM2_IN,
 46         MT8195_AFE_IO_ETDM1_OUT,
 47         MT8195_AFE_IO_ETDM2_OUT,
 48         MT8195_AFE_IO_ETDM3_OUT,
 49         MT8195_AFE_IO_ETDM_END,
 50         MT8195_AFE_IO_ETDM_NUM =
 51                 (MT8195_AFE_IO_ETDM_END - MT8195_AFE_IO_ETDM_START),
 52         MT8195_AFE_IO_PCM = MT8195_AFE_IO_ETDM_END,
 53         MT8195_AFE_IO_UL_SRC1,
 54         MT8195_AFE_IO_UL_SRC2,
 55         MT8195_AFE_IO_END,
 56         MT8195_AFE_IO_NUM = (MT8195_AFE_IO_END - MT8195_AFE_IO_START),
 57         MT8195_DAI_END = MT8195_AFE_IO_END,
 58         MT8195_DAI_NUM = (MT8195_DAI_END - MT8195_DAI_START),
 59 };
 60 
 61 enum {
 62         MT8195_TOP_CG_A1SYS_TIMING,
 63         MT8195_TOP_CG_A2SYS_TIMING,
 64         MT8195_TOP_CG_26M_TIMING,
 65         MT8195_TOP_CG_NUM,
 66 };
 67 
 68 enum {
 69         MT8195_AFE_IRQ_1,
 70         MT8195_AFE_IRQ_2,
 71         MT8195_AFE_IRQ_3,
 72         MT8195_AFE_IRQ_8,
 73         MT8195_AFE_IRQ_9,
 74         MT8195_AFE_IRQ_10,
 75         MT8195_AFE_IRQ_13,
 76         MT8195_AFE_IRQ_14,
 77         MT8195_AFE_IRQ_15,
 78         MT8195_AFE_IRQ_16,
 79         MT8195_AFE_IRQ_17,
 80         MT8195_AFE_IRQ_18,
 81         MT8195_AFE_IRQ_19,
 82         MT8195_AFE_IRQ_20,
 83         MT8195_AFE_IRQ_21,
 84         MT8195_AFE_IRQ_22,
 85         MT8195_AFE_IRQ_23,
 86         MT8195_AFE_IRQ_24,
 87         MT8195_AFE_IRQ_25,
 88         MT8195_AFE_IRQ_26,
 89         MT8195_AFE_IRQ_27,
 90         MT8195_AFE_IRQ_28,
 91         MT8195_AFE_IRQ_NUM,
 92 };
 93 
 94 enum {
 95         MT8195_ETDM_OUT1_1X_EN = 9,
 96         MT8195_ETDM_OUT2_1X_EN = 10,
 97         MT8195_ETDM_OUT3_1X_EN = 11,
 98         MT8195_ETDM_IN1_1X_EN = 12,
 99         MT8195_ETDM_IN2_1X_EN = 13,
100         MT8195_ETDM_IN1_NX_EN = 25,
101         MT8195_ETDM_IN2_NX_EN = 26,
102 };
103 
104 enum {
105         MT8195_MTKAIF_MISO_0,
106         MT8195_MTKAIF_MISO_1,
107         MT8195_MTKAIF_MISO_2,
108         MT8195_MTKAIF_MISO_NUM,
109 };
110 
111 struct mtk_dai_memif_irq_priv {
112         unsigned int asys_timing_sel;
113 };
114 
115 struct mtkaif_param {
116         bool mtkaif_calibration_ok;
117         int mtkaif_chosen_phase[MT8195_MTKAIF_MISO_NUM];
118         int mtkaif_phase_cycle[MT8195_MTKAIF_MISO_NUM];
119         int mtkaif_dmic_on;
120         int mtkaif_adda6_only;
121 };
122 
123 struct clk;
124 
125 struct mt8195_afe_private {
126         struct clk **clk;
127         struct clk_lookup **lookup;
128         struct regmap *topckgen;
129         int pm_runtime_bypass_reg_ctl;
130 #ifdef CONFIG_DEBUG_FS
131         struct dentry **debugfs_dentry;
132 #endif
133         int afe_on_ref_cnt;
134         int top_cg_ref_cnt[MT8195_TOP_CG_NUM];
135         spinlock_t afe_ctrl_lock;       /* Lock for afe control */
136         struct mtk_dai_memif_irq_priv irq_priv[MT8195_AFE_IRQ_NUM];
137         struct mtkaif_param mtkaif_params;
138 
139         /* dai */
140         void *dai_priv[MT8195_DAI_NUM];
141 };
142 
143 int mt8195_afe_fs_timing(unsigned int rate);
144 /* dai register */
145 int mt8195_dai_adda_register(struct mtk_base_afe *afe);
146 int mt8195_dai_etdm_register(struct mtk_base_afe *afe);
147 int mt8195_dai_pcm_register(struct mtk_base_afe *afe);
148 
149 #define MT8195_SOC_ENUM_EXT(xname, xenum, xhandler_get, xhandler_put, id) \
150 { \
151         .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
152         .info = snd_soc_info_enum_double, \
153         .get = xhandler_get, .put = xhandler_put, \
154         .device = id, \
155         .private_value = (unsigned long)&xenum, \
156 }
157 
158 #endif
159 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php