Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
wm8994.h
Go to the documentation of this file.
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 
17 #include "wm_hubs.h"
18 
19 /* Sources for AIF1/2 SYSCLK - use with set_dai_sysclk() */
20 #define WM8994_SYSCLK_MCLK1 1
21 #define WM8994_SYSCLK_MCLK2 2
22 #define WM8994_SYSCLK_FLL1 3
23 #define WM8994_SYSCLK_FLL2 4
24 
25 /* OPCLK is also configured with set_dai_sysclk, specify division*10 as rate. */
26 #define WM8994_SYSCLK_OPCLK 5
27 
28 #define WM8994_FLL1 1
29 #define WM8994_FLL2 2
30 
31 #define WM8994_FLL_SRC_MCLK1 1
32 #define WM8994_FLL_SRC_MCLK2 2
33 #define WM8994_FLL_SRC_LRCLK 3
34 #define WM8994_FLL_SRC_BCLK 4
35 #define WM8994_FLL_SRC_INTERNAL 5
36 
40 };
41 
42 typedef void (*wm8958_micdet_cb)(u16 status, void *data);
43 
44 int wm8994_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,
45  int micbias);
46 int wm8958_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,
47  wm8958_micdet_cb cb, void *cb_data);
48 
50 
52  struct snd_kcontrol *kcontrol, int event);
53 
55 
56 struct wm8994_micdet {
57  struct snd_soc_jack *jack;
58  bool detecting;
59 };
60 
61 /* codec private data */
63  int src;
64  int in;
65  int out;
66 };
67 
68 #define WM8994_NUM_DRC 3
69 #define WM8994_NUM_EQ 3
70 
71 struct wm8994;
72 
73 struct wm8994_priv {
75  struct wm8994 *wm8994;
76  int sysclk[2];
77  int sysclk_rate[2];
78  int mclk[2];
79  int aifclk[2];
80  int channels[2];
84  bool fll_byp;
86 
90 
91  int dac_rates[2];
92  int lrclk_shared[2];
93 
94  int mbc_ena[3];
95  int hpf1_ena[3];
96  int hpf2_ena[3];
97  int vss_ena[3];
98  int enh_eq_ena[3];
99 
100  /* Platform dependant DRC configuration */
101  const char **drc_texts;
104 
105  /* Platform dependant ReTune mobile configuration */
107  const char **retune_mobile_texts;
110 
111  /* Platform dependant MBC configuration */
112  int mbc_cfg;
113  const char **mbc_texts;
115 
116  /* Platform dependant VSS configuration */
117  int vss_cfg;
118  const char **vss_texts;
120 
121  /* Platform dependant VSS HPF configuration */
123  const char **vss_hpf_texts;
125 
126  /* Platform dependant enhanced EQ configuration */
128  const char **enh_eq_texts;
130 
135  bool jack_mic;
136  int btn_mask;
137  bool jackdet;
140 
144 
145  int revision;
147 
148  unsigned int aif1clk_enable:1;
149  unsigned int aif2clk_enable:1;
150 
151  unsigned int aif1clk_disable:1;
152  unsigned int aif2clk_disable:1;
153 
155  const struct firmware *cur_fw;
156  const struct firmware *mbc;
157  const struct firmware *mbc_vss;
158  const struct firmware *enh_eq;
159 };
160 
161 #endif