summaryrefslogtreecommitdiff
path: root/firmware/export/wm8751.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/export/wm8751.h')
-rw-r--r--firmware/export/wm8751.h114
1 files changed, 113 insertions, 1 deletions
diff --git a/firmware/export/wm8751.h b/firmware/export/wm8751.h
index c171642853..fb7532bfd8 100644
--- a/firmware/export/wm8751.h
+++ b/firmware/export/wm8751.h
@@ -31,11 +31,28 @@ extern int tenthdb2master(int db);
31 31
32extern void audiohw_set_master_vol(int vol_l, int vol_r); 32extern void audiohw_set_master_vol(int vol_l, int vol_r);
33extern void audiohw_set_lineout_vol(int vol_l, int vol_r); 33extern void audiohw_set_lineout_vol(int vol_l, int vol_r);
34#if defined(HAVE_WM8750)
35void audiohw_set_recsrc(int source, bool recording);
36#endif
34 37
35/* Register addresses and bits */ 38/* Register addresses and bits */
36#define OUTPUT_MUTED 0x2f 39#define OUTPUT_MUTED 0x2f
37#define OUTPUT_0DB 0x79 40#define OUTPUT_0DB 0x79
38 41
42#if defined(HAVE_WM8750)
43#define LINVOL 0x00
44#define LINVOL_LINVOL(x) ((x) & 0x3f)
45#define LINVOL_LIZC (1 << 6)
46#define LINVOL_LINMUTE (1 << 7)
47#define LINVOL_LIVU (1 << 8)
48
49#define RINVOL 0x01
50#define RINVOL_RINVOL(x) ((x) & 0x3f)
51#define RINVOL_RIZC (1 << 6)
52#define RINVOL_RINMUTE (1 << 7)
53#define RINVOL_RIVU (1 << 8)
54#endif
55
39#define LOUT1 0x02 56#define LOUT1 0x02
40#define LOUT1_LOUT1VOL_MASK (0x07f << 0) 57#define LOUT1_LOUT1VOL_MASK (0x07f << 0)
41#define LOUT1_LOUT1VOL(x) ((x) & 0x7f) 58#define LOUT1_LOUT1VOL(x) ((x) & 0x7f)
@@ -98,7 +115,7 @@ extern void audiohw_set_lineout_vol(int vol_l, int vol_r);
98#define RESET 0x0f 115#define RESET 0x0f
99#define RESET_RESET 0x000 116#define RESET_RESET 0x000
100 117
101/* WM8750 only */ 118#if defined(HAVE_WM8750)
102#define ENHANCE_3D 0x10 119#define ENHANCE_3D 0x10
103#define ENHANCE_3D_3DEN (1 << 0) 120#define ENHANCE_3D_3DEN (1 << 0)
104#define ENHANCE_3D_DEPTH(x) (((x) & 0xf) << 1) 121#define ENHANCE_3D_DEPTH(x) (((x) & 0xf) << 1)
@@ -107,6 +124,30 @@ extern void audiohw_set_lineout_vol(int vol_l, int vol_r);
107#define ENHANCE_3D_MODE3D_PLAYBACK (1 << 7) 124#define ENHANCE_3D_MODE3D_PLAYBACK (1 << 7)
108#define ENHANCE_3D_MODE3D_RECORD (0 << 7) 125#define ENHANCE_3D_MODE3D_RECORD (0 << 7)
109 126
127#define ALC1 0x11
128#define ALC1_ALCL(x) ((x) & (0x0f))
129#define ALC1_MAXGAIN(x) ((x) & (0x07 << 4))
130#define ALC1_ALCSEL_DISABLED (0 << 7)
131#define ALC1_ALCSEL_RIGHT (1 << 7)
132#define ALC1_ALCSEL_LEFT (2 << 7)
133#define ALC1_ALCSEL_STEREO (3 << 7)
134
135#define ALC2 0x12
136#define ALC2_HLD(x) ((x) & 0x0f)
137#define ALC2_ALCZC (1 << 7)
138
139#define ALC3 0x13
140#define ALC3_ATK(x) ((x) & 0x0f)
141#define ALC3_DCY(x) ((x) & (0x0f << 4))
142
143#define NGAT 0x14
144#define NGAT_NGAT (1 << 0)
145#define NGAT_NGG_CONST (0 << 1)
146#define NGAT_NGG_MUTEADC (1 << 1)
147#define NGAT_NGG(x) ((x) & (0x3 << 1))
148#define NGAT_NGTH(x) ((x) & (0x1f << 3))
149#endif
150
110#define ADDITIONAL1 0x17 151#define ADDITIONAL1 0x17
111#define ADDITIONAL1_TOEN (1 << 0) 152#define ADDITIONAL1_TOEN (1 << 0)
112#define ADDITIONAL1_DACINV (1 << 1) 153#define ADDITIONAL1_DACINV (1 << 1)
@@ -136,6 +177,13 @@ extern void audiohw_set_lineout_vol(int vol_l, int vol_r);
136 177
137#define PWRMGMT1 0x19 178#define PWRMGMT1 0x19
138#define PWRMGMT1_DIGENB (1 << 0) 179#define PWRMGMT1_DIGENB (1 << 0)
180#if defined(HAVE_WM8750)
181#define PWRMGMT1_MICBIAS (1 << 1)
182#define PWRMGMT1_ADCR (1 << 2)
183#define PWRMGMT1_ADCL (1 << 3)
184#define PWRMGMT1_AINR (1 << 4)
185#define PWRMGMT1_AINL (1 << 5)
186#endif
139#define PWRMGMT1_VREF (1 << 6) 187#define PWRMGMT1_VREF (1 << 6)
140#define PWRMGMT1_VMIDSEL_DISABLED (0 << 7) 188#define PWRMGMT1_VMIDSEL_DISABLED (0 << 7)
141#define PWRMGMT1_VMIDSEL_50K (1 << 7) 189#define PWRMGMT1_VMIDSEL_50K (1 << 7)
@@ -158,7 +206,48 @@ extern void audiohw_set_lineout_vol(int vol_l, int vol_r);
158#define ADDITIONAL3_HPFLREN (1 << 5) 206#define ADDITIONAL3_HPFLREN (1 << 5)
159#define ADDITIONAL3_VROI (1 << 6) 207#define ADDITIONAL3_VROI (1 << 6)
160 208
209#if defined(HAVE_WM8750)
210#define ADCIM 0x1f
211#define ADCIM_LDCM (1 << 4)
212#define ADCIM_RDCM (1 << 5)
213#define ADCIM_MONOMIX_STEREO (0 << 6)
214#define ADCIM_MONOMIX_AMONOL (1 << 6)
215#define ADCIM_MONOMIX_AMONOR (2 << 6)
216#define ADCIM_MONOMIX_DMONO (3 << 6)
217#define ADCIM_MONOMIX(x) ((x) & (0x3 << 6))
218#define ADCIM_DS (1 << 8)
219
220#define ADCL 0x20
221#define ADCL_LMICBOOST_DISABLED (0 << 4)
222#define ADCL_LMICBOOST_13DB (1 << 4)
223#define ADCL_LMICBOOST_20DB (2 << 4)
224#define ADCL_LMICBOOST_29DB (3 << 4)
225#define ADCL_LMICBOOST(x) ((x) & (0x3 << 7))
226#define ADCL_LINSEL_LINPUT1 (0 << 6)
227#define ADCL_LINSEL_LINPUT2 (1 << 6)
228#define ADCL_LINSEL_LINPUT3 (2 << 6)
229#define ADCL_LINSEL_DIFF (3 << 6)
230
231#define ADCR 0x21
232#define ADCR_RMICBOOST_DISABLED (0 << 4)
233#define ADCR_RMICBOOST_13DB (1 << 4)
234#define ADCR_RMICBOOST_20DB (2 << 4)
235#define ADCR_RMICBOOST_29DB (3 << 4)
236#define ADCR_RMICBOOST(x) ((x) & (0x3 << 7))
237#define ADCR_RINSEL_RINPUT1 (0 << 6)
238#define ADCR_RINSEL_RINPUT2 (1 << 6)
239#define ADCR_RINSEL_RINPUT3 (2 << 6)
240#define ADCR_RINSEL_DIFF (3 << 6)
241#endif
242
161#define LEFTMIX1 0x22 243#define LEFTMIX1 0x22
244#if defined(HAVE_WM8750)
245#define LEFTMIX1_LMIXSEL_LINPUT1 (0 << 0)
246#define LEFTMIX1_LMIXSEL_LINPUT2 (1 << 0)
247#define LEFTMIX1_LMIXSEL_LINPUT3 (2 << 0)
248#define LEFTMIX1_LMIXSEL_ADCLIN (3 << 0)
249#define LEFTMIX1_LMIXSEL_DIFF (4 << 0)
250#endif
162#define LEFTMIX1_LI2LO_DEFAULT (5 << 4) 251#define LEFTMIX1_LI2LO_DEFAULT (5 << 4)
163#define LEFTMIX1_LI2LOVOL(x) ((x) & (0x7 << 4)) 252#define LEFTMIX1_LI2LOVOL(x) ((x) & (0x7 << 4))
164#define LEFTMIX1_LI2LO (1 << 7) 253#define LEFTMIX1_LI2LO (1 << 7)
@@ -167,16 +256,39 @@ extern void audiohw_set_lineout_vol(int vol_l, int vol_r);
167#define LEFTMIX2 0x23 256#define LEFTMIX2 0x23
168#define LEFTMIX2_MI2LO_DEFAULT (5 << 4) 257#define LEFTMIX2_MI2LO_DEFAULT (5 << 4)
169#define LEFTMIX2_MI2LOVOL(x) ((x) & (0x7 << 4)) 258#define LEFTMIX2_MI2LOVOL(x) ((x) & (0x7 << 4))
259#if defined(HAVE_WM8750)
260#define LEFTMIX2_RI2LO (1 << 7)
261#elif defined(HAVE_WM8751)
170#define LEFTMIX2_MI2LO (1 << 7) 262#define LEFTMIX2_MI2LO (1 << 7)
263#endif
171#define LEFTMIX2_RD2LO (1 << 8) 264#define LEFTMIX2_RD2LO (1 << 8)
172 265
173#define RIGHTMIX1 0x24 266#define RIGHTMIX1 0x24
267#if defined(HAVE_WM8750)
268#define RIGHTMIX1_RMIXSEL_RINPUT1 (0 << 0)
269#define RIGHTMIX1_RMIXSEL_RINPUT2 (1 << 0)
270#define RIGHTMIX1_RMIXSEL_RINPUT3 (2 << 0)
271#define RIGHTMIX1_RMIXSEL_ADCRIN (3 << 0)
272#define RIGHTMIX1_RMIXSEL_DIFF (4 << 0)
273#define RIGHTMIX1_LI2RO_DEFAULT (5 << 4)
274#define RIGHTMIX1_LI2ROVOL(x) ((x) & (0x7 << 4))
275#define RIGHTMIX1_LI2RO (1 << 7)
276#define RIGHTMIX1_LD2RO (1 << 8)
277#elif defined(HAVE_WM8751)
174#define RIGHTMIX1_MI2RO_DEFAULT (5 << 4) 278#define RIGHTMIX1_MI2RO_DEFAULT (5 << 4)
175#define RIGHTMIX1_MI2ROVOL(x) ((x) & (0x7 << 4)) 279#define RIGHTMIX1_MI2ROVOL(x) ((x) & (0x7 << 4))
176#define RIGHTMIX1_MI2RO (1 << 7) 280#define RIGHTMIX1_MI2RO (1 << 7)
177#define RIGHTMIX1_LD2RO (1 << 8) 281#define RIGHTMIX1_LD2RO (1 << 8)
282#endif
178 283
179#define RIGHTMIX2 0x25 284#define RIGHTMIX2 0x25
285#if defined(HAVE_WM8750)
286#define RIGHTMIX2_RMIXSEL_RINPUT1 (0 << 0)
287#define RIGHTMIX2_RMIXSEL_RINPUT2 (1 << 0)
288#define RIGHTMIX2_RMIXSEL_RINPUT3 (2 << 0)
289#define RIGHTMIX2_RMIXSEL_ADCRIN (3 << 0)
290#define RIGHTMIX2_RMIXSEL_DIFF (4 << 0)
291#endif
180#define RIGHTMIX2_RI2RO_DEFAULT (5 << 4) 292#define RIGHTMIX2_RI2RO_DEFAULT (5 << 4)
181#define RIGHTMIX2_RI2ROVOL(x) ((x) & (0x7 << 4)) 293#define RIGHTMIX2_RI2ROVOL(x) ((x) & (0x7 << 4))
182#define RIGHTMIX2_RI2RO (1 << 7) 294#define RIGHTMIX2_RI2RO (1 << 7)