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

TOMOYO Linux Cross Reference
Linux/sound/soc/codecs/wm8994.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-only */
  2 /*
  3  * wm8994.h  --  WM8994 Soc Audio driver
  4  */
  5 
  6 #ifndef _WM8994_H
  7 #define _WM8994_H
  8 
  9 #include <linux/clk.h>
 10 #include <sound/soc.h>
 11 #include <linux/firmware.h>
 12 #include <linux/completion.h>
 13 #include <linux/workqueue.h>
 14 #include <linux/mutex.h>
 15 
 16 #include "wm_hubs.h"
 17 
 18 enum {
 19         WM8994_MCLK1,
 20         WM8994_MCLK2,
 21         WM8994_NUM_MCLK
 22 };
 23 
 24 /* Sources for AIF1/2 SYSCLK - use with set_dai_sysclk() */
 25 #define WM8994_SYSCLK_MCLK1 1
 26 #define WM8994_SYSCLK_MCLK2 2
 27 #define WM8994_SYSCLK_FLL1  3
 28 #define WM8994_SYSCLK_FLL2  4
 29 
 30 /* OPCLK is also configured with set_dai_sysclk, specify division*10 as rate. */
 31 #define WM8994_SYSCLK_OPCLK 5
 32 
 33 #define WM8994_FLL1 1
 34 #define WM8994_FLL2 2
 35 
 36 #define WM8994_FLL_SRC_MCLK1    1
 37 #define WM8994_FLL_SRC_MCLK2    2
 38 #define WM8994_FLL_SRC_LRCLK    3
 39 #define WM8994_FLL_SRC_BCLK     4
 40 #define WM8994_FLL_SRC_INTERNAL 5
 41 
 42 enum wm8994_vmid_mode {
 43         WM8994_VMID_NORMAL,
 44         WM8994_VMID_FORCE,
 45 };
 46 
 47 typedef void (*wm1811_micdet_cb)(void *data);
 48 typedef void (*wm1811_mic_id_cb)(void *data, u16 status);
 49 
 50 int wm8994_mic_detect(struct snd_soc_component *component, struct snd_soc_jack *jack,
 51                       int micbias);
 52 int wm8958_mic_detect(struct snd_soc_component *component, struct snd_soc_jack *jack,
 53                       wm1811_micdet_cb det_cb, void *det_cb_data,
 54                       wm1811_mic_id_cb id_cb, void *id_cb_data);
 55 
 56 int wm8994_vmid_mode(struct snd_soc_component *component, enum wm8994_vmid_mode mode);
 57 
 58 int wm8958_aif_ev(struct snd_soc_dapm_widget *w,
 59                   struct snd_kcontrol *kcontrol, int event);
 60 
 61 void wm8958_dsp2_init(struct snd_soc_component *component);
 62 
 63 struct wm8994_micdet {
 64         struct snd_soc_jack *jack;
 65         bool detecting;
 66 };
 67 
 68 /* codec private data */
 69 struct wm8994_fll_config {
 70         int src;
 71         int in;
 72         int out;
 73 };
 74 
 75 #define WM8994_NUM_DRC 3
 76 #define WM8994_NUM_EQ  3
 77 
 78 struct wm8994;
 79 
 80 struct wm8994_priv {
 81         struct wm_hubs_data hubs;
 82         struct wm8994 *wm8994;
 83         struct clk_bulk_data mclk[WM8994_NUM_MCLK];
 84         int sysclk[2];
 85         int sysclk_rate[2];
 86         int mclk_rate[2];
 87         int aifclk[2];
 88         int aifdiv[2];
 89         int channels[2];
 90         struct wm8994_fll_config fll[2], fll_suspend[2];
 91         struct completion fll_locked[2];
 92         bool fll_locked_irq;
 93         bool fll_byp;
 94         bool clk_has_run;
 95 
 96         int vmid_refcount;
 97         int active_refcount;
 98         enum wm8994_vmid_mode vmid_mode;
 99 
100         int dac_rates[2];
101         int lrclk_shared[2];
102 
103         int mbc_ena[3];
104         int hpf1_ena[3];
105         int hpf2_ena[3];
106         int vss_ena[3];
107         int enh_eq_ena[3];
108 
109         /* Platform dependant DRC configuration */
110         const char **drc_texts;
111         int drc_cfg[WM8994_NUM_DRC];
112         struct soc_enum drc_enum;
113 
114         /* Platform dependant ReTune mobile configuration */
115         int num_retune_mobile_texts;
116         const char **retune_mobile_texts;
117         int retune_mobile_cfg[WM8994_NUM_EQ];
118         struct soc_enum retune_mobile_enum;
119 
120         /* Platform dependant MBC configuration */
121         int mbc_cfg;
122         const char **mbc_texts;
123         struct soc_enum mbc_enum;
124 
125         /* Platform dependant VSS configuration */
126         int vss_cfg;
127         const char **vss_texts;
128         struct soc_enum vss_enum;
129 
130         /* Platform dependant VSS HPF configuration */
131         int vss_hpf_cfg;
132         const char **vss_hpf_texts;
133         struct soc_enum vss_hpf_enum;
134 
135         /* Platform dependant enhanced EQ configuration */
136         int enh_eq_cfg;
137         const char **enh_eq_texts;
138         struct soc_enum enh_eq_enum;
139 
140         struct mutex accdet_lock;
141         struct wm8994_micdet micdet[2];
142         struct delayed_work mic_work;
143         struct delayed_work open_circuit_work;
144         struct delayed_work mic_complete_work;
145         u16 mic_status;
146         bool mic_detecting;
147         bool jack_mic;
148         int btn_mask;
149         bool jackdet;
150         int jackdet_mode;
151         struct delayed_work jackdet_bootstrap;
152 
153         int micdet_irq;
154         wm1811_micdet_cb micd_cb;
155         void *micd_cb_data;
156         wm1811_mic_id_cb mic_id_cb;
157         void *mic_id_cb_data;
158 
159         unsigned int aif1clk_enable:1;
160         unsigned int aif2clk_enable:1;
161 
162         unsigned int aif1clk_disable:1;
163         unsigned int aif2clk_disable:1;
164 
165         struct mutex fw_lock;
166         int dsp_active;
167         const struct firmware *cur_fw;
168         const struct firmware *mbc;
169         const struct firmware *mbc_vss;
170         const struct firmware *enh_eq;
171 };
172 
173 #endif
174 

~ [ 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