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

TOMOYO Linux Cross Reference
Linux/sound/soc/codecs/wm8994.h

Version: ~ [ linux-5.1-rc2 ] ~ [ linux-5.0.3 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.30 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.107 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.164 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.176 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.136 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.63 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.39.4 ] ~ [ linux-2.6.38.8 ] ~ [ linux-2.6.37.6 ] ~ [ linux-2.6.36.4 ] ~ [ linux-2.6.35.14 ] ~ [ linux-2.6.34.15 ] ~ [ linux-2.6.33.20 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

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

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | 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.

osdn.jp