Lines Matching +full:0 +full:x7400
47 #define RT5645_DEVICE_ID 0x6308
48 #define RT5650_DEVICE_ID 0x6419
50 #define RT5645_PR_RANGE_BASE (0xff + 1)
51 #define RT5645_PR_SPACING 0x100
53 #define RT5645_PR_BASE (RT5645_PR_RANGE_BASE + (0 * RT5645_PR_SPACING))
63 .range_max = RT5645_PR_BASE + 0xf8,
65 .selector_mask = 0xff,
66 .selector_shift = 0x0,
68 .window_len = 0x1,
73 {RT5645_PR_BASE + 0x3d, 0x3600},
74 {RT5645_PR_BASE + 0x1c, 0xfd70},
75 {RT5645_PR_BASE + 0x20, 0x611f},
76 {RT5645_PR_BASE + 0x21, 0x4040},
77 {RT5645_PR_BASE + 0x23, 0x0004},
78 {RT5645_ASRC_4, 0x0120},
82 {0xf6, 0x0100},
83 {RT5645_PWR_ANLG1, 0x02},
84 {RT5645_IL_CMD3, 0x6728},
85 {RT5645_PR_BASE + 0x3a, 0x0000},
89 { 0x00, 0x0000 },
90 { 0x01, 0xc8c8 },
91 { 0x02, 0xc8c8 },
92 { 0x03, 0xc8c8 },
93 { 0x0a, 0x0002 },
94 { 0x0b, 0x2827 },
95 { 0x0c, 0xe000 },
96 { 0x0d, 0x0000 },
97 { 0x0e, 0x0000 },
98 { 0x0f, 0x0808 },
99 { 0x14, 0x3333 },
100 { 0x16, 0x4b00 },
101 { 0x18, 0x018b },
102 { 0x19, 0xafaf },
103 { 0x1a, 0xafaf },
104 { 0x1b, 0x0001 },
105 { 0x1c, 0x2f2f },
106 { 0x1d, 0x2f2f },
107 { 0x1e, 0x0000 },
108 { 0x20, 0x0000 },
109 { 0x27, 0x7060 },
110 { 0x28, 0x7070 },
111 { 0x29, 0x8080 },
112 { 0x2a, 0x5656 },
113 { 0x2b, 0x5454 },
114 { 0x2c, 0xaaa0 },
115 { 0x2d, 0x0000 },
116 { 0x2f, 0x1002 },
117 { 0x31, 0x5000 },
118 { 0x32, 0x0000 },
119 { 0x33, 0x0000 },
120 { 0x34, 0x0000 },
121 { 0x35, 0x0000 },
122 { 0x3b, 0x0000 },
123 { 0x3c, 0x007f },
124 { 0x3d, 0x0000 },
125 { 0x3e, 0x007f },
126 { 0x3f, 0x0000 },
127 { 0x40, 0x001f },
128 { 0x41, 0x0000 },
129 { 0x42, 0x001f },
130 { 0x45, 0x6000 },
131 { 0x46, 0x003e },
132 { 0x47, 0x003e },
133 { 0x48, 0xf807 },
134 { 0x4a, 0x0004 },
135 { 0x4d, 0x0000 },
136 { 0x4e, 0x0000 },
137 { 0x4f, 0x01ff },
138 { 0x50, 0x0000 },
139 { 0x51, 0x0000 },
140 { 0x52, 0x01ff },
141 { 0x53, 0xf000 },
142 { 0x56, 0x0111 },
143 { 0x57, 0x0064 },
144 { 0x58, 0xef0e },
145 { 0x59, 0xf0f0 },
146 { 0x5a, 0xef0e },
147 { 0x5b, 0xf0f0 },
148 { 0x5c, 0xef0e },
149 { 0x5d, 0xf0f0 },
150 { 0x5e, 0xf000 },
151 { 0x5f, 0x0000 },
152 { 0x61, 0x0300 },
153 { 0x62, 0x0000 },
154 { 0x63, 0x00c2 },
155 { 0x64, 0x0000 },
156 { 0x65, 0x0000 },
157 { 0x66, 0x0000 },
158 { 0x6a, 0x0000 },
159 { 0x6c, 0x0aaa },
160 { 0x70, 0x8000 },
161 { 0x71, 0x8000 },
162 { 0x72, 0x8000 },
163 { 0x73, 0x7770 },
164 { 0x74, 0x3e00 },
165 { 0x75, 0x2409 },
166 { 0x76, 0x000a },
167 { 0x77, 0x0c00 },
168 { 0x78, 0x0000 },
169 { 0x79, 0x0123 },
170 { 0x80, 0x0000 },
171 { 0x81, 0x0000 },
172 { 0x82, 0x0000 },
173 { 0x83, 0x0000 },
174 { 0x84, 0x0000 },
175 { 0x85, 0x0000 },
176 { 0x8a, 0x0120 },
177 { 0x8e, 0x0004 },
178 { 0x8f, 0x1100 },
179 { 0x90, 0x0646 },
180 { 0x91, 0x0c06 },
181 { 0x93, 0x0000 },
182 { 0x94, 0x0200 },
183 { 0x95, 0x0000 },
184 { 0x9a, 0x2184 },
185 { 0x9b, 0x010a },
186 { 0x9c, 0x0aea },
187 { 0x9d, 0x000c },
188 { 0x9e, 0x0400 },
189 { 0xa0, 0xa0a8 },
190 { 0xa1, 0x0059 },
191 { 0xa2, 0x0001 },
192 { 0xae, 0x6000 },
193 { 0xaf, 0x0000 },
194 { 0xb0, 0x6000 },
195 { 0xb1, 0x0000 },
196 { 0xb2, 0x0000 },
197 { 0xb3, 0x001f },
198 { 0xb4, 0x020c },
199 { 0xb5, 0x1f00 },
200 { 0xb6, 0x0000 },
201 { 0xbb, 0x0000 },
202 { 0xbc, 0x0000 },
203 { 0xbd, 0x0000 },
204 { 0xbe, 0x0000 },
205 { 0xbf, 0x3100 },
206 { 0xc0, 0x0000 },
207 { 0xc1, 0x0000 },
208 { 0xc2, 0x0000 },
209 { 0xc3, 0x2000 },
210 { 0xcd, 0x0000 },
211 { 0xce, 0x0000 },
212 { 0xcf, 0x1813 },
213 { 0xd0, 0x0690 },
214 { 0xd1, 0x1c17 },
215 { 0xd3, 0xb320 },
216 { 0xd4, 0x0000 },
217 { 0xd6, 0x0400 },
218 { 0xd9, 0x0809 },
219 { 0xda, 0x0000 },
220 { 0xdb, 0x0003 },
221 { 0xdc, 0x0049 },
222 { 0xdd, 0x001b },
223 { 0xdf, 0x0008 },
224 { 0xe0, 0x4000 },
225 { 0xe6, 0x8000 },
226 { 0xe7, 0x0200 },
227 { 0xec, 0xb300 },
228 { 0xed, 0x0000 },
229 { 0xf0, 0x001f },
230 { 0xf1, 0x020c },
231 { 0xf2, 0x1f00 },
232 { 0xf3, 0x0000 },
233 { 0xf4, 0x4000 },
234 { 0xf8, 0x0000 },
235 { 0xf9, 0x0000 },
236 { 0xfa, 0x2060 },
237 { 0xfb, 0x4040 },
238 { 0xfc, 0x0000 },
239 { 0xfd, 0x0002 },
240 { 0xfe, 0x10ec },
241 { 0xff, 0x6308 },
245 { 0x00, 0x0000 },
246 { 0x01, 0xc8c8 },
247 { 0x02, 0xc8c8 },
248 { 0x03, 0xc8c8 },
249 { 0x0a, 0x0002 },
250 { 0x0b, 0x2827 },
251 { 0x0c, 0xe000 },
252 { 0x0d, 0x0000 },
253 { 0x0e, 0x0000 },
254 { 0x0f, 0x0808 },
255 { 0x14, 0x3333 },
256 { 0x16, 0x4b00 },
257 { 0x18, 0x018b },
258 { 0x19, 0xafaf },
259 { 0x1a, 0xafaf },
260 { 0x1b, 0x0001 },
261 { 0x1c, 0x2f2f },
262 { 0x1d, 0x2f2f },
263 { 0x1e, 0x0000 },
264 { 0x20, 0x0000 },
265 { 0x27, 0x7060 },
266 { 0x28, 0x7070 },
267 { 0x29, 0x8080 },
268 { 0x2a, 0x5656 },
269 { 0x2b, 0x5454 },
270 { 0x2c, 0xaaa0 },
271 { 0x2d, 0x0000 },
272 { 0x2f, 0x5002 },
273 { 0x31, 0x5000 },
274 { 0x32, 0x0000 },
275 { 0x33, 0x0000 },
276 { 0x34, 0x0000 },
277 { 0x35, 0x0000 },
278 { 0x3b, 0x0000 },
279 { 0x3c, 0x007f },
280 { 0x3d, 0x0000 },
281 { 0x3e, 0x007f },
282 { 0x3f, 0x0000 },
283 { 0x40, 0x001f },
284 { 0x41, 0x0000 },
285 { 0x42, 0x001f },
286 { 0x45, 0x6000 },
287 { 0x46, 0x003e },
288 { 0x47, 0x003e },
289 { 0x48, 0xf807 },
290 { 0x4a, 0x0004 },
291 { 0x4d, 0x0000 },
292 { 0x4e, 0x0000 },
293 { 0x4f, 0x01ff },
294 { 0x50, 0x0000 },
295 { 0x51, 0x0000 },
296 { 0x52, 0x01ff },
297 { 0x53, 0xf000 },
298 { 0x56, 0x0111 },
299 { 0x57, 0x0064 },
300 { 0x58, 0xef0e },
301 { 0x59, 0xf0f0 },
302 { 0x5a, 0xef0e },
303 { 0x5b, 0xf0f0 },
304 { 0x5c, 0xef0e },
305 { 0x5d, 0xf0f0 },
306 { 0x5e, 0xf000 },
307 { 0x5f, 0x0000 },
308 { 0x61, 0x0300 },
309 { 0x62, 0x0000 },
310 { 0x63, 0x00c2 },
311 { 0x64, 0x0000 },
312 { 0x65, 0x0000 },
313 { 0x66, 0x0000 },
314 { 0x6a, 0x0000 },
315 { 0x6c, 0x0aaa },
316 { 0x70, 0x8000 },
317 { 0x71, 0x8000 },
318 { 0x72, 0x8000 },
319 { 0x73, 0x7770 },
320 { 0x74, 0x3e00 },
321 { 0x75, 0x2409 },
322 { 0x76, 0x000a },
323 { 0x77, 0x0c00 },
324 { 0x78, 0x0000 },
325 { 0x79, 0x0123 },
326 { 0x7a, 0x0123 },
327 { 0x80, 0x0000 },
328 { 0x81, 0x0000 },
329 { 0x82, 0x0000 },
330 { 0x83, 0x0000 },
331 { 0x84, 0x0000 },
332 { 0x85, 0x0000 },
333 { 0x8a, 0x0120 },
334 { 0x8e, 0x0004 },
335 { 0x8f, 0x1100 },
336 { 0x90, 0x0646 },
337 { 0x91, 0x0c06 },
338 { 0x93, 0x0000 },
339 { 0x94, 0x0200 },
340 { 0x95, 0x0000 },
341 { 0x9a, 0x2184 },
342 { 0x9b, 0x010a },
343 { 0x9c, 0x0aea },
344 { 0x9d, 0x000c },
345 { 0x9e, 0x0400 },
346 { 0xa0, 0xa0a8 },
347 { 0xa1, 0x0059 },
348 { 0xa2, 0x0001 },
349 { 0xae, 0x6000 },
350 { 0xaf, 0x0000 },
351 { 0xb0, 0x6000 },
352 { 0xb1, 0x0000 },
353 { 0xb2, 0x0000 },
354 { 0xb3, 0x001f },
355 { 0xb4, 0x020c },
356 { 0xb5, 0x1f00 },
357 { 0xb6, 0x0000 },
358 { 0xbb, 0x0000 },
359 { 0xbc, 0x0000 },
360 { 0xbd, 0x0000 },
361 { 0xbe, 0x0000 },
362 { 0xbf, 0x3100 },
363 { 0xc0, 0x0000 },
364 { 0xc1, 0x0000 },
365 { 0xc2, 0x0000 },
366 { 0xc3, 0x2000 },
367 { 0xcd, 0x0000 },
368 { 0xce, 0x0000 },
369 { 0xcf, 0x1813 },
370 { 0xd0, 0x0690 },
371 { 0xd1, 0x1c17 },
372 { 0xd3, 0xb320 },
373 { 0xd4, 0x0000 },
374 { 0xd6, 0x0400 },
375 { 0xd9, 0x0809 },
376 { 0xda, 0x0000 },
377 { 0xdb, 0x0003 },
378 { 0xdc, 0x0049 },
379 { 0xdd, 0x001b },
380 { 0xdf, 0x0008 },
381 { 0xe0, 0x4000 },
382 { 0xe6, 0x8000 },
383 { 0xe7, 0x0200 },
384 { 0xec, 0xb300 },
385 { 0xed, 0x0000 },
386 { 0xf0, 0x001f },
387 { 0xf1, 0x020c },
388 { 0xf2, 0x1f00 },
389 { 0xf3, 0x0000 },
390 { 0xf4, 0x4000 },
391 { 0xf8, 0x0000 },
392 { 0xf9, 0x0000 },
393 { 0xfa, 0x2060 },
394 { 0xfb, 0x4040 },
395 { 0xfc, 0x0000 },
396 { 0xfd, 0x0002 },
397 { 0xfe, 0x10ec },
398 { 0xff, 0x6308 },
421 /* 0 = IN2N; 1 = GPIO5; 2 = GPIO11 */
423 /* 0 = IN2P; 1 = GPIO6; 2 = GPIO10; 3 = GPIO12 */
477 return snd_soc_component_write(component, RT5645_RESET, 0); in rt5645_reset()
484 for (i = 0; i < ARRAY_SIZE(rt5645_ranges); i++) { in rt5645_volatile_register()
520 for (i = 0; i < ARRAY_SIZE(rt5645_ranges); i++) { in rt5645_readable_register()
671 static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -4650, 150, 0);
672 static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -6525, 75, 0);
673 static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0);
674 static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -1725, 75, 0);
675 static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0);
677 /* {0, +20, +24, +30, +35, +40, +44, +50, +52} dB */
679 0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
680 1, 1, TLV_DB_SCALE_ITEM(2000, 0, 0),
681 2, 2, TLV_DB_SCALE_ITEM(2400, 0, 0),
682 3, 5, TLV_DB_SCALE_ITEM(3000, 500, 0),
683 6, 6, TLV_DB_SCALE_ITEM(4400, 0, 0),
684 7, 7, TLV_DB_SCALE_ITEM(5000, 0, 0),
685 8, 8, TLV_DB_SCALE_ITEM(5200, 0, 0)
688 /* {-6, -4.5, -3, -1.5, 0, 0.82, 1.58, 2.28} dB */
690 0, 4, TLV_DB_SCALE_ITEM(-600, 150, 0),
691 5, 5, TLV_DB_SCALE_ITEM(82, 0, 0),
692 6, 6, TLV_DB_SCALE_ITEM(158, 0, 0),
693 7, 7, TLV_DB_SCALE_ITEM(228, 0, 0)
702 return 0; in rt5645_hweq_info()
714 for (i = 0; i < RT5645_HWEQ_NUM; i++) { in rt5645_hweq_get()
719 return 0; in rt5645_hweq_get()
724 if ((reg >= 0x1a4 && reg <= 0x1cd) || (reg >= 0x1e5 && reg <= 0x1f8) || in rt5645_validate_hweq()
740 for (i = 0; i < RT5645_HWEQ_NUM; i++) { in rt5645_hweq_put()
746 for (i = RT5645_HWEQ_NUM - 1; i >= 0; i--) { in rt5645_hweq_put()
747 if (rt5645->eq_param[i].reg == 0) in rt5645_hweq_put()
750 return 0; in rt5645_hweq_put()
755 for (i = 0; i < RT5645_HWEQ_NUM; i++) { in rt5645_hweq_put()
757 rt5645->eq_param[i].reg != 0) in rt5645_hweq_put()
758 return 0; in rt5645_hweq_put()
759 else if (rt5645->eq_param[i].reg == 0) in rt5645_hweq_put()
763 return 0; in rt5645_hweq_put()
809 RT5645_SPK_G_CLSD_SFT, 7, 0, spk_clsd_tlv),
829 RT5645_L_VOL_SFT + 1, RT5645_R_VOL_SFT + 1, 87, 0, dac_vol_tlv),
831 RT5645_L_VOL_SFT + 1, RT5645_R_VOL_SFT + 1, 87, 0, dac_vol_tlv),
835 RT5645_BST_SFT1, 12, 0, bst_tlv),
837 RT5645_BST_SFT2, 8, 0, bst_tlv),
847 RT5645_L_VOL_SFT + 1, RT5645_R_VOL_SFT + 1, 63, 0, adc_vol_tlv),
851 RT5645_L_VOL_SFT + 1, RT5645_R_VOL_SFT + 1, 63, 0, adc_vol_tlv),
855 RT5645_STO1_ADC_L_BST_SFT, RT5645_STO1_ADC_R_BST_SFT, 3, 0,
858 RT5645_MONO_ADC_L_BST_SFT, RT5645_MONO_ADC_R_BST_SFT, 3, 0,
888 if (idx < 0) in set_dmic_clk()
907 return 0; in is_sys_clk_from_pll()
917 case 0: in is_using_asrc()
919 shift = 0; in is_using_asrc()
927 shift = 0; in is_using_asrc()
942 return 0; in is_using_asrc()
945 val = (snd_soc_component_read(component, reg) >> shift) & 0xf; in is_using_asrc()
953 return 0; in is_using_asrc()
963 for (i = 0; i < RT5645_HWEQ_NUM; i++) { in rt5645_enable_hweq()
971 return 0; in rt5645_enable_hweq()
991 unsigned int asrc2_mask = 0; in rt5645_sel_asrc_clk_src()
992 unsigned int asrc2_value = 0; in rt5645_sel_asrc_clk_src()
993 unsigned int asrc3_mask = 0; in rt5645_sel_asrc_clk_src()
994 unsigned int asrc3_value = 0; in rt5645_sel_asrc_clk_src()
1051 return 0; in rt5645_sel_asrc_clk_src()
1300 /*DAC2 L/R source*/ /* MX-1B [6:4] [2:0] */
1395 /* MX-28 [1:0] */
1438 /* MX-78 [4:0] */
1471 0, rt5650_if1_adc_in_src);
1518 /* MX-79 [14:12][10:8][6:4][2:0] */
1542 RT5645_TDM_CTRL_3, 0, rt5645_tdm_dac_swap_select);
1547 /* MX-7a [14:12][10:8][6:4][2:0] */
1567 RT5650_TDM_CTRL_4, 0, rt5645_tdm_dac_swap_select);
1591 /* MX-2d [1] [0] */
1684 if (hp_amp_power_count <= 0) { in hp_amp_power()
1686 snd_soc_component_write(component, RT5645_DEPOP_M2, 0x3100); in hp_amp_power()
1688 0x0e06); in hp_amp_power()
1689 snd_soc_component_write(component, RT5645_DEPOP_M1, 0x000d); in hp_amp_power()
1691 RT5645_HP_DCC_INT1, 0x9f01); in hp_amp_power()
1692 for (i = 0; i < 20; i++) { in hp_amp_power()
1696 if (!(val & 0x8000)) in hp_amp_power()
1702 0x3e, 0x7400); in hp_amp_power()
1703 snd_soc_component_write(component, RT5645_DEPOP_M3, 0x0737); in hp_amp_power()
1705 RT5645_MAMP_INT_REG2, 0xfc00); in hp_amp_power()
1706 snd_soc_component_write(component, RT5645_DEPOP_M2, 0x1140); in hp_amp_power()
1715 snd_soc_component_write(component, RT5645_DEPOP_M1, 0x000d); in hp_amp_power()
1717 RT5645_HP_DCC_INT1, 0x9f01); in hp_amp_power()
1721 RT5645_PWR_FV1 | RT5645_PWR_FV2, 0); in hp_amp_power()
1739 0x14, 0x1aaa); in hp_amp_power()
1741 0x24, 0x0430); in hp_amp_power()
1747 if (hp_amp_power_count <= 0) { in hp_amp_power()
1750 0x3e, 0x7400); in hp_amp_power()
1751 snd_soc_component_write(component, RT5645_DEPOP_M3, 0x0737); in hp_amp_power()
1753 RT5645_MAMP_INT_REG2, 0xfc00); in hp_amp_power()
1754 snd_soc_component_write(component, RT5645_DEPOP_M2, 0x1140); in hp_amp_power()
1756 snd_soc_component_write(component, RT5645_DEPOP_M1, 0x0001); in hp_amp_power()
1758 RT5645_PWR_HP_L | RT5645_PWR_HP_R, 0); in hp_amp_power()
1768 snd_soc_component_write(component, RT5645_DEPOP_M1, 0x0000); in hp_amp_power()
1771 RT5645_PWR_HA, 0); in hp_amp_power()
1773 RT5645_DEPOP_MASK, 0); in hp_amp_power()
1797 RT5645_MAMP_INT_REG2, 0xfc00); in rt5645_hp_event()
1824 RT5645_MAMP_INT_REG2, 0xfc00); in rt5645_hp_event()
1835 hp_amp_power(component, 0); in rt5645_hp_event()
1839 return 0; in rt5645_hp_event()
1842 return 0; in rt5645_hp_event()
1865 snd_soc_component_write(component, RT5645_EQ_CTRL2, 0); in rt5645_spk_event()
1868 RT5645_PWR_CLS_D_L, 0); in rt5645_spk_event()
1872 return 0; in rt5645_spk_event()
1875 return 0; in rt5645_spk_event()
1889 RT5645_L_MUTE | RT5645_R_MUTE, 0); in rt5645_lout_event()
1897 RT5645_PWR_LM, 0); in rt5645_lout_event()
1898 hp_amp_power(component, 0); in rt5645_lout_event()
1902 return 0; in rt5645_lout_event()
1905 return 0; in rt5645_lout_event()
1921 RT5645_PWR_BST2_P, 0); in rt5645_bst2_event()
1925 return 0; in rt5645_bst2_event()
1928 return 0; in rt5645_bst2_event()
1950 return 0; in rt5645_set_micbias1_event()
1953 return 0; in rt5645_set_micbias1_event()
1975 return 0; in rt5645_set_micbias2_event()
1978 return 0; in rt5645_set_micbias2_event()
1983 RT5645_PWR_LDO2_BIT, 0, NULL, 0),
1985 RT5645_PWR_PLL_BIT, 0, NULL, 0),
1988 RT5645_PWR_JD1_BIT, 0, NULL, 0),
1990 RT5645_PWR_MIC_DET_BIT, 0, NULL, 0),
1994 11, 0, NULL, 0),
1996 12, 0, NULL, 0),
1998 10, 0, NULL, 0),
2000 9, 0, NULL, 0),
2002 8, 0, NULL, 0),
2004 7, 0, NULL, 0),
2006 5, 0, NULL, 0),
2008 4, 0, NULL, 0),
2010 3, 0, NULL, 0),
2012 1, 0, NULL, 0),
2014 0, 0, NULL, 0),
2019 RT5645_PWR_MB1_BIT, 0, rt5645_set_micbias1_event,
2022 RT5645_PWR_MB2_BIT, 0, rt5645_set_micbias2_event,
2037 SND_SOC_DAPM_PGA("DMIC1", SND_SOC_NOPM, 0, 0, NULL, 0),
2038 SND_SOC_DAPM_PGA("DMIC2", SND_SOC_NOPM, 0, 0, NULL, 0),
2039 SND_SOC_DAPM_SUPPLY("DMIC CLK", SND_SOC_NOPM, 0, 0,
2042 RT5645_DMIC_1_EN_SFT, 0, NULL, 0),
2044 RT5645_DMIC_2_EN_SFT, 0, NULL, 0),
2047 RT5645_PWR_BST1_BIT, 0, NULL, 0),
2049 RT5645_PWR_BST2_BIT, 0, NULL, 0, rt5645_bst2_event,
2053 RT5645_PWR_IN_L_BIT, 0, NULL, 0),
2055 RT5645_PWR_IN_R_BIT, 0, NULL, 0),
2058 0, rt5645_rec_l_mix, ARRAY_SIZE(rt5645_rec_l_mix)),
2060 0, rt5645_rec_r_mix, ARRAY_SIZE(rt5645_rec_r_mix)),
2062 SND_SOC_DAPM_ADC("ADC L", NULL, SND_SOC_NOPM, 0, 0),
2063 SND_SOC_DAPM_ADC("ADC R", NULL, SND_SOC_NOPM, 0, 0),
2066 RT5645_PWR_ADC_L_BIT, 0, NULL, 0),
2068 RT5645_PWR_ADC_R_BIT, 0, NULL, 0),
2071 SND_SOC_DAPM_MUX("Stereo1 DMIC Mux", SND_SOC_NOPM, 0, 0,
2073 SND_SOC_DAPM_MUX("Stereo1 ADC L2 Mux", SND_SOC_NOPM, 0, 0,
2075 SND_SOC_DAPM_MUX("Stereo1 ADC R2 Mux", SND_SOC_NOPM, 0, 0,
2077 SND_SOC_DAPM_MUX("Stereo1 ADC L1 Mux", SND_SOC_NOPM, 0, 0,
2079 SND_SOC_DAPM_MUX("Stereo1 ADC R1 Mux", SND_SOC_NOPM, 0, 0,
2081 SND_SOC_DAPM_MUX("Mono DMIC L Mux", SND_SOC_NOPM, 0, 0,
2083 SND_SOC_DAPM_MUX("Mono DMIC R Mux", SND_SOC_NOPM, 0, 0,
2085 SND_SOC_DAPM_MUX("Mono ADC L2 Mux", SND_SOC_NOPM, 0, 0,
2087 SND_SOC_DAPM_MUX("Mono ADC L1 Mux", SND_SOC_NOPM, 0, 0,
2089 SND_SOC_DAPM_MUX("Mono ADC R1 Mux", SND_SOC_NOPM, 0, 0,
2091 SND_SOC_DAPM_MUX("Mono ADC R2 Mux", SND_SOC_NOPM, 0, 0,
2096 RT5645_PWR_ADC_S1F_BIT, 0, NULL, 0),
2097 SND_SOC_DAPM_MIXER_E("Sto1 ADC MIXL", SND_SOC_NOPM, 0, 0,
2099 NULL, 0),
2100 SND_SOC_DAPM_MIXER_E("Sto1 ADC MIXR", SND_SOC_NOPM, 0, 0,
2102 NULL, 0),
2104 RT5645_PWR_ADC_MF_L_BIT, 0, NULL, 0),
2105 SND_SOC_DAPM_MIXER_E("Mono ADC MIXL", SND_SOC_NOPM, 0, 0,
2107 NULL, 0),
2109 RT5645_PWR_ADC_MF_R_BIT, 0, NULL, 0),
2110 SND_SOC_DAPM_MIXER_E("Mono ADC MIXR", SND_SOC_NOPM, 0, 0,
2112 NULL, 0),
2115 SND_SOC_DAPM_PGA("Stereo1 ADC MIXL", SND_SOC_NOPM, 0, 0, NULL, 0),
2116 SND_SOC_DAPM_PGA("Stereo1 ADC MIXR", SND_SOC_NOPM, 0, 0, NULL, 0),
2117 SND_SOC_DAPM_PGA("Sto2 ADC LR MIX", SND_SOC_NOPM, 0, 0, NULL, 0),
2118 SND_SOC_DAPM_PGA("VAD_ADC", SND_SOC_NOPM, 0, 0, NULL, 0),
2119 SND_SOC_DAPM_PGA("IF_ADC1", SND_SOC_NOPM, 0, 0, NULL, 0),
2120 SND_SOC_DAPM_PGA("IF_ADC2", SND_SOC_NOPM, 0, 0, NULL, 0),
2121 SND_SOC_DAPM_PGA("IF1_ADC1", SND_SOC_NOPM, 0, 0, NULL, 0),
2122 SND_SOC_DAPM_PGA("IF1_ADC2", SND_SOC_NOPM, 0, 0, NULL, 0),
2123 SND_SOC_DAPM_PGA("IF1_ADC3", SND_SOC_NOPM, 0, 0, NULL, 0),
2124 SND_SOC_DAPM_PGA("IF1_ADC4", SND_SOC_NOPM, 0, 0, NULL, 0),
2128 0, 0, &rt5645_if2_adc_in_mux),
2132 RT5645_PWR_I2S1_BIT, 0, NULL, 0),
2133 SND_SOC_DAPM_PGA("IF1 DAC0", SND_SOC_NOPM, 0, 0, NULL, 0),
2134 SND_SOC_DAPM_PGA("IF1 DAC1", SND_SOC_NOPM, 0, 0, NULL, 0),
2135 SND_SOC_DAPM_PGA("IF1 DAC2", SND_SOC_NOPM, 0, 0, NULL, 0),
2136 SND_SOC_DAPM_PGA("IF1 DAC3", SND_SOC_NOPM, 0, 0, NULL, 0),
2137 SND_SOC_DAPM_PGA("IF1 ADC", SND_SOC_NOPM, 0, 0, NULL, 0),
2138 SND_SOC_DAPM_PGA("IF1 ADC L", SND_SOC_NOPM, 0, 0, NULL, 0),
2139 SND_SOC_DAPM_PGA("IF1 ADC R", SND_SOC_NOPM, 0, 0, NULL, 0),
2141 RT5645_PWR_I2S2_BIT, 0, NULL, 0),
2142 SND_SOC_DAPM_PGA("IF2 DAC", SND_SOC_NOPM, 0, 0, NULL, 0),
2143 SND_SOC_DAPM_PGA("IF2 DAC L", SND_SOC_NOPM, 0, 0, NULL, 0),
2144 SND_SOC_DAPM_PGA("IF2 DAC R", SND_SOC_NOPM, 0, 0, NULL, 0),
2145 SND_SOC_DAPM_PGA("IF2 ADC", SND_SOC_NOPM, 0, 0, NULL, 0),
2149 0, 0, &rt5645_vad_adc_mux),
2152 SND_SOC_DAPM_AIF_IN("AIF1RX", "AIF1 Playback", 0, SND_SOC_NOPM, 0, 0),
2153 SND_SOC_DAPM_AIF_OUT("AIF1TX", "AIF1 Capture", 0, SND_SOC_NOPM, 0, 0),
2154 SND_SOC_DAPM_AIF_IN("AIF2RX", "AIF2 Playback", 0, SND_SOC_NOPM, 0, 0),
2155 SND_SOC_DAPM_AIF_OUT("AIF2TX", "AIF2 Capture", 0, SND_SOC_NOPM, 0, 0),
2159 SND_SOC_DAPM_MIXER("DAC1 MIXL", SND_SOC_NOPM, 0, 0,
2161 SND_SOC_DAPM_MIXER("DAC1 MIXR", SND_SOC_NOPM, 0, 0,
2165 SND_SOC_DAPM_MUX("DAC L2 Mux", SND_SOC_NOPM, 0, 0, &rt5645_dac_l2_mux),
2166 SND_SOC_DAPM_MUX("DAC R2 Mux", SND_SOC_NOPM, 0, 0, &rt5645_dac_r2_mux),
2168 RT5645_PWR_DAC_L2_BIT, 0, NULL, 0),
2170 RT5645_PWR_DAC_R2_BIT, 0, NULL, 0),
2172 SND_SOC_DAPM_MUX("DAC1 L Mux", SND_SOC_NOPM, 0, 0, &rt5645_dac1l_mux),
2173 SND_SOC_DAPM_MUX("DAC1 R Mux", SND_SOC_NOPM, 0, 0, &rt5645_dac1r_mux),
2177 RT5645_PWR_DAC_S1F_BIT, 0, NULL, 0),
2179 RT5645_PWR_DAC_MF_L_BIT, 0, NULL, 0),
2181 RT5645_PWR_DAC_MF_R_BIT, 0, NULL, 0),
2182 SND_SOC_DAPM_MIXER("Stereo DAC MIXL", SND_SOC_NOPM, 0, 0,
2184 SND_SOC_DAPM_MIXER("Stereo DAC MIXR", SND_SOC_NOPM, 0, 0,
2186 SND_SOC_DAPM_MIXER("Mono DAC MIXL", SND_SOC_NOPM, 0, 0,
2188 SND_SOC_DAPM_MIXER("Mono DAC MIXR", SND_SOC_NOPM, 0, 0,
2190 SND_SOC_DAPM_MIXER("DAC MIXL", SND_SOC_NOPM, 0, 0,
2192 SND_SOC_DAPM_MIXER("DAC MIXR", SND_SOC_NOPM, 0, 0,
2197 0),
2199 0),
2201 0),
2203 0),
2206 0, rt5645_spk_l_mix, ARRAY_SIZE(rt5645_spk_l_mix)),
2208 0, rt5645_spk_r_mix, ARRAY_SIZE(rt5645_spk_r_mix)),
2210 0, rt5645_out_l_mix, ARRAY_SIZE(rt5645_out_l_mix)),
2212 0, rt5645_out_r_mix, ARRAY_SIZE(rt5645_out_r_mix)),
2214 SND_SOC_DAPM_SWITCH("SPKVOL L", RT5645_PWR_VOL, RT5645_PWR_SV_L_BIT, 0,
2216 SND_SOC_DAPM_SWITCH("SPKVOL R", RT5645_PWR_VOL, RT5645_PWR_SV_R_BIT, 0,
2219 0, rt5645_hpvoll_mix, ARRAY_SIZE(rt5645_hpvoll_mix)),
2221 0, rt5645_hpvolr_mix, ARRAY_SIZE(rt5645_hpvolr_mix)),
2223 RT5645_PWR_HM_L_BIT, 0, NULL, 0),
2225 RT5645_PWR_HM_R_BIT, 0, NULL, 0),
2226 SND_SOC_DAPM_PGA("DAC 1", SND_SOC_NOPM, 0, 0, NULL, 0),
2227 SND_SOC_DAPM_PGA("DAC 2", SND_SOC_NOPM, 0, 0, NULL, 0),
2228 SND_SOC_DAPM_PGA("HPOVOL", SND_SOC_NOPM, 0, 0, NULL, 0),
2229 SND_SOC_DAPM_SWITCH("HPOVOL L", SND_SOC_NOPM, 0, 0, &hp_l_vol_control),
2230 SND_SOC_DAPM_SWITCH("HPOVOL R", SND_SOC_NOPM, 0, 0, &hp_r_vol_control),
2233 SND_SOC_DAPM_MIXER("SPOL MIX", SND_SOC_NOPM, 0, 0, rt5645_spo_l_mix,
2235 SND_SOC_DAPM_MIXER("SPOR MIX", SND_SOC_NOPM, 0, 0, rt5645_spo_r_mix,
2237 SND_SOC_DAPM_MIXER("HPO MIX", SND_SOC_NOPM, 0, 0, rt5645_hpo_mix,
2239 SND_SOC_DAPM_MIXER("LOUT MIX", SND_SOC_NOPM, 0, 0, rt5645_lout_mix,
2242 SND_SOC_DAPM_PGA_S("HP amp", 1, SND_SOC_NOPM, 0, 0, rt5645_hp_event,
2244 SND_SOC_DAPM_PGA_S("LOUT amp", 1, SND_SOC_NOPM, 0, 0, rt5645_lout_event,
2246 SND_SOC_DAPM_PGA_S("SPK amp", 2, SND_SOC_NOPM, 0, 0, rt5645_spk_event,
2251 0, NULL, 0),
2252 SND_SOC_DAPM_MUX("PDM1 L Mux", SND_SOC_NOPM, 0, 0, &rt5645_pdm1_l_mux),
2253 SND_SOC_DAPM_MUX("PDM1 R Mux", SND_SOC_NOPM, 0, 0, &rt5645_pdm1_r_mux),
2255 SND_SOC_DAPM_SWITCH("PDM1 L", SND_SOC_NOPM, 0, 0, &pdm1_l_vol_control),
2256 SND_SOC_DAPM_SWITCH("PDM1 R", SND_SOC_NOPM, 0, 0, &pdm1_r_vol_control),
2270 SND_SOC_DAPM_MUX("RT5645 IF1 DAC1 L Mux", SND_SOC_NOPM, 0, 0,
2272 SND_SOC_DAPM_MUX("RT5645 IF1 DAC1 R Mux", SND_SOC_NOPM, 0, 0,
2274 SND_SOC_DAPM_MUX("RT5645 IF1 DAC2 L Mux", SND_SOC_NOPM, 0, 0,
2276 SND_SOC_DAPM_MUX("RT5645 IF1 DAC2 R Mux", SND_SOC_NOPM, 0, 0,
2279 0, 0, &rt5645_if1_adc_in_mux),
2281 0, 0, &rt5645_if1_adc1_in_mux),
2283 0, 0, &rt5645_if1_adc2_in_mux),
2285 0, 0, &rt5645_if1_adc3_in_mux),
2290 0, 0, &rt5650_a_dac1_l_mux),
2292 0, 0, &rt5650_a_dac1_r_mux),
2294 0, 0, &rt5650_a_dac2_l_mux),
2296 0, 0, &rt5650_a_dac2_r_mux),
2299 0, 0, &rt5650_if1_adc1_in_mux),
2301 0, 0, &rt5650_if1_adc2_in_mux),
2303 0, 0, &rt5650_if1_adc3_in_mux),
2305 0, 0, &rt5650_if1_adc_in_mux),
2307 SND_SOC_DAPM_MUX("RT5650 IF1 DAC1 L Mux", SND_SOC_NOPM, 0, 0,
2309 SND_SOC_DAPM_MUX("RT5650 IF1 DAC1 R Mux", SND_SOC_NOPM, 0, 0,
2311 SND_SOC_DAPM_MUX("RT5650 IF1 DAC2 L Mux", SND_SOC_NOPM, 0, 0,
2313 SND_SOC_DAPM_MUX("RT5650 IF1 DAC2 R Mux", SND_SOC_NOPM, 0, 0,
2757 unsigned int val_len = 0, val_clk, mask_clk, dl_sft; in rt5645_hw_params()
2762 if (pre_div < 0) { in rt5645_hw_params()
2767 if (frame_size < 0) { in rt5645_hw_params()
2793 val_len = 0x1; in rt5645_hw_params()
2796 val_len = 0x2; in rt5645_hw_params()
2799 val_len = 0x3; in rt5645_hw_params()
2810 (0x3 << dl_sft), (val_len << dl_sft)); in rt5645_hw_params()
2818 (0x3 << dl_sft), (val_len << dl_sft)); in rt5645_hw_params()
2826 return 0; in rt5645_hw_params()
2833 unsigned int reg_val = 0, pol_sft; in rt5645_set_dai_fmt()
2850 rt5645->master[dai->id] = 0; in rt5645_set_dai_fmt()
2896 return 0; in rt5645_set_dai_fmt()
2904 unsigned int reg_val = 0; in rt5645_set_dai_sysclk()
2907 return 0; in rt5645_set_dai_sysclk()
2930 return 0; in rt5645_set_dai_sysclk()
2943 return 0; in rt5645_set_dai_pll()
2948 rt5645->pll_in = 0; in rt5645_set_dai_pll()
2949 rt5645->pll_out = 0; in rt5645_set_dai_pll()
2952 return 0; in rt5645_set_dai_pll()
2982 if (ret < 0) { in rt5645_set_dai_pll()
2988 pll_code.m_bp, (pll_code.m_bp ? 0 : pll_code.m_code), in rt5645_set_dai_pll()
2994 ((pll_code.m_bp ? 0 : pll_code.m_code) << RT5645_PLL_M_SFT) | in rt5645_set_dai_pll()
3001 return 0; in rt5645_set_dai_pll()
3010 unsigned int mask, val = 0; in rt5645_set_tdm_slot()
3019 mask = 0x8ff0; in rt5645_set_tdm_slot()
3025 mask = 0x7c00; in rt5645_set_tdm_slot()
3067 return 0; in rt5645_set_tdm_slot()
3103 snd_soc_component_write(component, RT5645_DEPOP_M2, 0x1140); in rt5645_set_bias_level()
3108 msecs_to_jiffies(0)); in rt5645_set_bias_level()
3113 snd_soc_component_write(component, RT5645_DEPOP_M2, 0x1100); in rt5645_set_bias_level()
3116 RT5645_DIG_GATE_CTRL, 0); in rt5645_set_bias_level()
3120 RT5645_PWR_FV1 | RT5645_PWR_FV2, 0x0); in rt5645_set_bias_level()
3127 return 0; in rt5645_set_bias_level()
3157 snd_soc_component_update_bits(component, RT5650_4BTN_IL_CMD1, 0x3, 0x3); in rt5645_enable_push_button_irq()
3159 RT5645_INT_IRQ_ST, 0x8, 0x8); in rt5645_enable_push_button_irq()
3161 snd_soc_component_update_bits(component, RT5650_4BTN_IL_CMD2, 0x8000, 0x0); in rt5645_enable_push_button_irq()
3162 snd_soc_component_update_bits(component, RT5645_INT_IRQ_ST, 0x8, 0x0); in rt5645_enable_push_button_irq()
3177 regmap_write(rt5645->regmap, RT5645_CHARGE_PUMP, 0x0206); in rt5645_jack_detect()
3195 regmap_write(rt5645->regmap, RT5645_JD_CTRL3, 0x00f0); in rt5645_jack_detect()
3202 RT5645_CBJ_MN_JD, 0); in rt5645_jack_detect()
3209 val &= 0x7; in rt5645_jack_detect()
3224 gpiod_set_value(rt5645->gpiod_cbj_sleeve, 0); in rt5645_jack_detect()
3230 regmap_write(rt5645->regmap, RT5645_CHARGE_PUMP, 0x0e06); in rt5645_jack_detect()
3232 rt5645->jack_type = 0; in rt5645_jack_detect()
3240 RT5645_CBJ_BST1_EN, 0); in rt5645_jack_detect()
3245 if (rt5645->pdata.jd_mode == 0) in rt5645_jack_detect()
3254 gpiod_set_value(rt5645->gpiod_cbj_sleeve, 0); in rt5645_jack_detect()
3265 pr_debug("val=0x%x\n", val); in rt5645_button_detect()
3266 btn_type = val & 0xfff0; in rt5645_button_detect()
3292 rt5645_irq(0, rt5645); in rt5645_set_jack_detect()
3294 return 0; in rt5645_set_jack_detect()
3322 int val, btn_type, gpio_state = 0, report = 0; in rt5645_jack_detect_work()
3330 case 0: /* Not using rt5645 JD */ in rt5645_jack_detect_work()
3346 val = snd_soc_component_read(rt5645->component, RT5645_A_JD_CTRL1) & 0x0020; in rt5645_jack_detect_work()
3349 val = snd_soc_component_read(rt5645->component, RT5645_INT_IRQ_ST) & 0x1000; in rt5645_jack_detect_work()
3354 if (!val && (rt5645->jack_type == 0)) { /* jack in */ in rt5645_jack_detect_work()
3358 btn_type = 0; in rt5645_jack_detect_work()
3359 if (snd_soc_component_read(rt5645->component, RT5645_INT_IRQ_ST) & 0x4) { in rt5645_jack_detect_work()
3369 case 0x8000: in rt5645_jack_detect_work()
3370 case 0x4000: in rt5645_jack_detect_work()
3371 case 0x2000: in rt5645_jack_detect_work()
3374 case 0x1000: in rt5645_jack_detect_work()
3375 case 0x0800: in rt5645_jack_detect_work()
3376 case 0x0400: in rt5645_jack_detect_work()
3379 case 0x0200: in rt5645_jack_detect_work()
3380 case 0x0100: in rt5645_jack_detect_work()
3381 case 0x0080: in rt5645_jack_detect_work()
3384 case 0x0040: in rt5645_jack_detect_work()
3385 case 0x0020: in rt5645_jack_detect_work()
3386 case 0x0010: in rt5645_jack_detect_work()
3389 case 0x0000: /* unpressed */ in rt5645_jack_detect_work()
3393 "Unexpected button code 0x%04x\n", in rt5645_jack_detect_work()
3398 if (btn_type == 0)/* button release */ in rt5645_jack_detect_work()
3406 report = 0; in rt5645_jack_detect_work()
3408 RT5645_INT_IRQ_ST, 0x1, 0x0); in rt5645_jack_detect_work()
3409 rt5645_jack_detect(rt5645->component, 0); in rt5645_jack_detect_work()
3500 return 0; in rt5645_probe()
3516 return 0; in rt5645_suspend()
3526 return 0; in rt5645_resume()
3746 static const struct acpi_gpio_params ef20_hp_detect = { 1, 0, false };
4049 for (i = 0; i < ARRAY_SIZE(rt5645->supplies); i++) in rt5645_i2c_probe()
4081 if (ret < 0) { in rt5645_i2c_probe()
4082 dev_err(&i2c->dev, "Failed to read: 0x%02X\n, ret = %d", RT5645_VENDOR_ID2, ret); in rt5645_i2c_probe()
4110 regmap_write(rt5645->regmap, RT5645_RESET, 0); in rt5645_i2c_probe()
4113 rt5645->v_id = val & 0xff; in rt5645_i2c_probe()
4115 regmap_write(rt5645->regmap, RT5645_AD_DA_MIXER, 0x8080); in rt5645_i2c_probe()
4119 if (ret != 0) in rt5645_i2c_probe()
4125 if (ret != 0) in rt5645_i2c_probe()
4130 regmap_update_bits(rt5645->regmap, RT5645_CLSD_OUT_CTRL, 0xc0, 0xc0); in rt5645_i2c_probe()
4249 timer_setup(&rt5645->btn_check_timer, rt5645_btn_check_callback, 0); in rt5645_i2c_probe()
4270 return 0; in rt5645_i2c_probe()
4297 gpiod_set_value(rt5645->gpiod_cbj_sleeve, 0); in rt5645_i2c_remove()
4311 0); in rt5645_i2c_shutdown()
4313 regmap_write(rt5645->regmap, RT5645_RESET, 0); in rt5645_i2c_shutdown()
4316 gpiod_set_value(rt5645->gpiod_cbj_sleeve, 0); in rt5645_i2c_shutdown()
4329 return 0; in rt5645_sys_suspend()
4340 rt5645->jack_type = 0; in rt5645_sys_resume()
4343 return 0; in rt5645_sys_resume()