2 * ac108.h -- ac108 ALSA Soc Audio driver
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
16 /*** AC108 Codec Register Define***/
20 #define CHIP_RST_VAL 0x12
23 #define PWR_CTRL1 0x01
24 #define PWR_CTRL2 0x02
25 #define PWR_CTRL3 0x03
26 #define PWR_CTRL4 0x04
27 #define PWR_CTRL5 0x05
28 #define PWR_CTRL6 0x06
29 #define PWR_CTRL7 0x07
30 #define PWR_CTRL8 0x08
31 #define PWR_CTRL9 0x09
33 //PLL Configure Control
34 #define PLL_CTRL1 0x10
35 #define PLL_CTRL2 0x11
36 #define PLL_CTRL3 0x12
37 #define PLL_CTRL4 0x13
38 #define PLL_CTRL5 0x14
39 #define PLL_CTRL6 0x16
40 #define PLL_CTRL7 0x17
41 #define PLL_LOCK_CTRL 0x18
43 //System Clock Control
44 #define SYSCLK_CTRL 0x20
45 #define MOD_CLK_EN 0x21
46 #define MOD_RST_CTRL 0x22
47 #define DSM_CLK_CTRL 0x25
51 #define I2S_BCLK_CTRL 0x31
52 #define I2S_LRCK_CTRL1 0x32
53 #define I2S_LRCK_CTRL2 0x33
54 #define I2S_FMT_CTRL1 0x34
55 #define I2S_FMT_CTRL2 0x35
56 #define I2S_FMT_CTRL3 0x36
59 #define I2S_TX1_CTRL1 0x38
60 #define I2S_TX1_CTRL2 0x39
61 #define I2S_TX1_CTRL3 0x3A
62 #define I2S_TX1_CHMP_CTRL1 0x3C
63 #define I2S_TX1_CHMP_CTRL2 0x3D
64 #define I2S_TX1_CHMP_CTRL3 0x3E
65 #define I2S_TX1_CHMP_CTRL4 0x3F
68 #define I2S_TX2_CTRL1 0x40
69 #define I2S_TX2_CTRL2 0x41
70 #define I2S_TX2_CTRL3 0x42
71 #define I2S_TX2_CHMP_CTRL1 0x44
72 #define I2S_TX2_CHMP_CTRL2 0x45
73 #define I2S_TX2_CHMP_CTRL3 0x46
74 #define I2S_TX2_CHMP_CTRL4 0x47
77 #define I2S_RX1_CTRL1 0x50
78 #define I2S_RX1_CHMP_CTRL1 0x54
79 #define I2S_RX1_CHMP_CTRL2 0x55
80 #define I2S_RX1_CHMP_CTRL3 0x56
81 #define I2S_RX1_CHMP_CTRL4 0x57
84 #define I2S_LPB_DEBUG 0x58
88 #define ADC_DIG_EN 0x61
92 #define ADC_DDT_CTRL 0x65
96 #define HPF_COEF_REGH1 0x67
97 #define HPF_COEF_REGH2 0x68
98 #define HPF_COEF_REGL1 0x69
99 #define HPF_COEF_REGL2 0x6A
100 #define HPF_GAIN_REGH1 0x6B
101 #define HPF_GAIN_REGH2 0x6C
102 #define HPF_GAIN_REGL1 0x6D
103 #define HPF_GAIN_REGL2 0x6E
105 //ADC Digital Channel Volume Control
106 #define ADC1_DVOL_CTRL 0x70
107 #define ADC2_DVOL_CTRL 0x71
108 #define ADC3_DVOL_CTRL 0x72
109 #define ADC4_DVOL_CTRL 0x73
111 //ADC Digital Mixer Source and Gain Control
112 #define ADC1_DMIX_SRC 0x76
113 #define ADC2_DMIX_SRC 0x77
114 #define ADC3_DMIX_SRC 0x78
115 #define ADC4_DMIX_SRC 0x79
117 //ADC Digital Debug Control
118 #define ADC_DIG_DEBUG 0x7F
120 //I2S Pad Drive Control
121 #define I2S_DAT_PADDRV_CTRL 0x80
122 #define I2S_CLK_PADDRV_CTRL 0x81
125 #define ANA_PGA1_CTRL 0x90
126 #define ANA_PGA2_CTRL 0x91
127 #define ANA_PGA3_CTRL 0x92
128 #define ANA_PGA4_CTRL 0x93
131 #define MIC_OFFSET_CTRL1 0x96
132 #define MIC_OFFSET_CTRL2 0x97
133 #define MIC1_OFFSET_STATU1 0x98
134 #define MIC1_OFFSET_STATU2 0x99
135 #define MIC2_OFFSET_STATU1 0x9A
136 #define MIC2_OFFSET_STATU2 0x9B
137 #define MIC3_OFFSET_STATU1 0x9C
138 #define MIC3_OFFSET_STATU2 0x9D
139 #define MIC4_OFFSET_STATU1 0x9E
140 #define MIC4_OFFSET_STATU2 0x9F
142 //ADC1 Analog Control
143 #define ANA_ADC1_CTRL1 0xA0
144 #define ANA_ADC1_CTRL2 0xA1
145 #define ANA_ADC1_CTRL3 0xA2
146 #define ANA_ADC1_CTRL4 0xA3
147 #define ANA_ADC1_CTRL5 0xA4
148 #define ANA_ADC1_CTRL6 0xA5
149 #define ANA_ADC1_CTRL7 0xA6
151 //ADC2 Analog Control
152 #define ANA_ADC2_CTRL1 0xA7
153 #define ANA_ADC2_CTRL2 0xA8
154 #define ANA_ADC2_CTRL3 0xA9
155 #define ANA_ADC2_CTRL4 0xAA
156 #define ANA_ADC2_CTRL5 0xAB
157 #define ANA_ADC2_CTRL6 0xAC
158 #define ANA_ADC2_CTRL7 0xAD
160 //ADC3 Analog Control
161 #define ANA_ADC3_CTRL1 0xAE
162 #define ANA_ADC3_CTRL2 0xAF
163 #define ANA_ADC3_CTRL3 0xB0
164 #define ANA_ADC3_CTRL4 0xB1
165 #define ANA_ADC3_CTRL5 0xB2
166 #define ANA_ADC3_CTRL6 0xB3
167 #define ANA_ADC3_CTRL7 0xB4
169 //ADC4 Analog Control
170 #define ANA_ADC4_CTRL1 0xB5
171 #define ANA_ADC4_CTRL2 0xB6
172 #define ANA_ADC4_CTRL3 0xB7
173 #define ANA_ADC4_CTRL4 0xB8
174 #define ANA_ADC4_CTRL5 0xB9
175 #define ANA_ADC4_CTRL6 0xBA
176 #define ANA_ADC4_CTRL7 0xBB
179 #define GPIO_CFG1 0xC0
180 #define GPIO_CFG2 0xC1
181 #define GPIO_DAT 0xC2
182 #define GPIO_DRV 0xC3
183 #define GPIO_PULL 0xC4
184 #define GPIO_INT_CFG 0xC5
185 #define GPIO_INT_EN 0xC6
186 #define GPIO_INT_STATUS 0xC7
189 #define BGTC_DAT 0xD1
190 #define BGVC_DAT 0xD2
191 #define PRNG_CLK_CTRL 0xDF
195 /*** AC108 Codec Register Bit Define***/
199 #define CP12_SENSE_SELECT 3
202 #define CP12_SENSE_FILT 6
203 #define CP12_COMP_FF_EN 3
204 #define CP12_FORCE_ENABLE 2
205 #define CP12_FORCE_RSTB 1
208 #define LDO33DIG_CTRL 0
211 #define LDO33ANA_2XHDRM 2
212 #define LDO33ANA_ENABLE 0
216 #define VREF_FASTSTART_ENABLE 1
217 #define VREF_ENABLE 0
220 #define VREFP_FASTSTART_ENABLE 7
221 #define VREFP_RESCTRL 5
222 #define VREFP_LPMODE 4
224 #define VREFP_ENABLE 0
230 #define PLL_LOCKED_STATUS 2
235 #define PLL_PREDIV2 5
236 #define PLL_PREDIV1 0
239 #define PLL_LOOPDIV_MSB 0
242 #define PLL_LOOPDIV_LSB 0
245 #define PLL_POSTDIV2 5
246 #define PLL_POSTDIV1 0
255 #define PLL_TEST_EN 0
258 #define LOCK_LEVEL1 2
259 #define LOCK_LEVEL2 1
260 #define PLL_LOCK_EN 0
269 /*MOD_CLK_EN & MOD_RST_CTRL*/
271 #define ADC_DIGITAL 4
272 #define MIC_OFFSET_CALIBRATION 1
276 #define MIC_OFFSET_DIV 4
277 #define DSM_CLK_SEL 0
290 #define EDGE_TRANSFER 5
291 #define BCLK_POLARITY 4
295 #define LRCK_POLARITY 4
296 #define LRCK_PERIODH 0
299 #define LRCK_PERIODL 0
306 #define TX_SLOT_HIZ 1
310 #define SLOT_WIDTH_SEL 4
311 #define SAMPLE_RESOLUTION 0
336 #define TX1_CH16_EN 7
337 #define TX1_CH15_EN 6
338 #define TX1_CH14_EN 5
339 #define TX1_CH13_EN 4
340 #define TX1_CH12_EN 3
341 #define TX1_CH11_EN 2
342 #define TX1_CH10_EN 1
345 /*I2S_TX1_CHMP_CTRL1*/
346 #define TX1_CH4_MAP 6
347 #define TX1_CH3_MAP 4
348 #define TX1_CH2_MAP 2
349 #define TX1_CH1_MAP 0
351 /*I2S_TX1_CHMP_CTRL2*/
352 #define TX1_CH8_MAP 6
353 #define TX1_CH7_MAP 4
354 #define TX1_CH6_MAP 2
355 #define TX1_CH5_MAP 0
357 /*I2S_TX1_CHMP_CTRL3*/
358 #define TX1_CH12_MAP 6
359 #define TX1_CH11_MAP 4
360 #define TX1_CH10_MAP 2
361 #define TX1_CH9_MAP 0
363 /*I2S_TX1_CHMP_CTRL4*/
364 #define TX1_CH16_MAP 6
365 #define TX1_CH15_MAP 4
366 #define TX1_CH14_MAP 2
367 #define TX1_CH13_MAP 0
373 /*I2S_TX2_CHMP_CTRL1*/
374 #define TX2_CH4_MAP 6
375 #define TX2_CH3_MAP 4
376 #define TX2_CH2_MAP 2
377 #define TX2_CH1_MAP 0
379 /*I2S_TX2_CHMP_CTRL2*/
380 #define TX2_CH8_MAP 6
381 #define TX2_CH7_MAP 4
382 #define TX2_CH6_MAP 2
383 #define TX2_CH5_MAP 0
385 /*I2S_TX2_CHMP_CTRL3*/
386 #define TX2_CH12_MAP 6
387 #define TX2_CH11_MAP 4
388 #define TX2_CH10_MAP 2
389 #define TX2_CH9_MAP 0
391 /*I2S_TX2_CHMP_CTRL4*/
392 #define TX2_CH16_MAP 6
393 #define TX2_CH15_MAP 4
394 #define TX2_CH14_MAP 2
395 #define TX2_CH13_MAP 0
401 /*I2S_RX1_CHMP_CTRL1*/
402 #define RX1_CH4_MAP 6
403 #define RX1_CH3_MAP 4
404 #define RX1_CH2_MAP 2
405 #define RX1_CH1_MAP 0
407 /*I2S_RX1_CHMP_CTRL2*/
408 #define RX1_CH8_MAP 6
409 #define RX1_CH7_MAP 4
410 #define RX1_CH6_MAP 2
411 #define RX1_CH5_MAP 0
413 /*I2S_RX1_CHMP_CTRL3*/
414 #define RX1_CH12_MAP 6
415 #define RX1_CH11_MAP 4
416 #define RX1_CH10_MAP 2
417 #define RX1_CH9_MAP 0
419 /*I2S_RX1_CHMP_CTRL4*/
420 #define RX1_CH16_MAP 6
421 #define RX1_CH15_MAP 4
422 #define RX1_CH14_MAP 2
423 #define RX1_CH13_MAP 0
427 #define I2S_LPB_DEBUG_EN 0
431 #define ADC_FS_I2S1 0
445 #define DIG_ADC4_SRS 6
446 #define DIG_ADC3_SRS 4
447 #define DIG_ADC2_SRS 2
448 #define DIG_ADC1_SRS 0
451 #define ADOUT_DLY_EN 2
456 #define DIG_ADC4_HPF_EN 3
457 #define DIG_ADC3_HPF_EN 2
458 #define DIG_ADC2_HPF_EN 1
459 #define DIG_ADC1_HPF_EN 0
463 #define ADC1_ADC4_DMXL_GC 7
464 #define ADC1_ADC3_DMXL_GC 6
465 #define ADC1_ADC2_DMXL_GC 5
466 #define ADC1_ADC1_DMXL_GC 4
467 #define ADC1_ADC4_DMXL_SRC 3
468 #define ADC1_ADC3_DMXL_SRC 2
469 #define ADC1_ADC2_DMXL_SRC 1
470 #define ADC1_ADC1_DMXL_SRC 0
473 #define ADC2_ADC4_DMXL_GC 7
474 #define ADC2_ADC3_DMXL_GC 6
475 #define ADC2_ADC2_DMXL_GC 5
476 #define ADC2_ADC1_DMXL_GC 4
477 #define ADC2_ADC4_DMXL_SRC 3
478 #define ADC2_ADC3_DMXL_SRC 2
479 #define ADC2_ADC2_DMXL_SRC 1
480 #define ADC2_ADC1_DMXL_SRC 0
483 #define ADC3_ADC4_DMXL_GC 7
484 #define ADC3_ADC3_DMXL_GC 6
485 #define ADC3_ADC2_DMXL_GC 5
486 #define ADC3_ADC1_DMXL_GC 4
487 #define ADC3_ADC4_DMXL_SRC 3
488 #define ADC3_ADC3_DMXL_SRC 2
489 #define ADC3_ADC2_DMXL_SRC 1
490 #define ADC3_ADC1_DMXL_SRC 0
493 #define ADC4_ADC4_DMXL_GC 7
494 #define ADC4_ADC3_DMXL_GC 6
495 #define ADC4_ADC2_DMXL_GC 5
496 #define ADC4_ADC1_DMXL_GC 4
497 #define ADC4_ADC4_DMXL_SRC 3
498 #define ADC4_ADC3_DMXL_SRC 2
499 #define ADC4_ADC2_DMXL_SRC 1
500 #define ADC4_ADC1_DMXL_SRC 0
504 #define ADC_PTN_SEL 0
507 /*I2S_DAT_PADDRV_CTRL*/
508 #define TX2_DAT_DRV 4
509 #define TX1_DAT_DRV 0
511 /*I2S_CLK_PADDRV_CTRL*/
517 #define ADC1_ANALOG_PGA 1
518 #define ADC1_ANALOG_PGA_STEP 0
521 #define ADC2_ANALOG_PGA 1
522 #define ADC2_ANALOG_PGA_STEP 0
525 #define ADC3_ANALOG_PGA 1
526 #define ADC3_ANALOG_PGA_STEP 0
529 #define ADC4_ANALOG_PGA 1
530 #define ADC4_ANALOG_PGA_STEP 0
534 #define MIC_OFFSET_CAL_EN4 3
535 #define MIC_OFFSET_CAL_EN3 2
536 #define MIC_OFFSET_CAL_EN2 1
537 #define MIC_OFFSET_CAL_EN1 0
540 #define MIC_OFFSET_CAL_GAIN 3
541 #define MIC_OFFSET_CAL_CHANNEL 1
542 #define MIC_OFFSET_CAL_EN_ONCE 0
544 /*MIC1_OFFSET_STATU1*/
545 #define MIC1_OFFSET_CAL_DONE 7
546 #define MIC1_OFFSET_CAL_RUN_STA 6
547 #define MIC1_OFFSET_MSB 0
549 /*MIC1_OFFSET_STATU2*/
550 #define MIC1_OFFSET_LSB 0
552 /*MIC2_OFFSET_STATU1*/
553 #define MIC2_OFFSET_CAL_DONE 7
554 #define MIC2_OFFSET_CAL_RUN_STA 6
555 #define MIC2_OFFSET_MSB 0
557 /*MIC2_OFFSET_STATU2*/
558 #define MIC2_OFFSET_LSB 0
560 /*MIC3_OFFSET_STATU1*/
561 #define MIC3_OFFSET_CAL_DONE 7
562 #define MIC3_OFFSET_CAL_RUN_STA 6
563 #define MIC3_OFFSET_MSB 0
565 /*MIC3_OFFSET_STATU2*/
566 #define MIC3_OFFSET_LSB 0
568 /*MIC4_OFFSET_STATU1*/
569 #define MIC4_OFFSET_CAL_DONE 7
570 #define MIC4_OFFSET_CAL_RUN_STA 6
571 #define MIC4_OFFSET_MSB 0
573 /*MIC4_OFFSET_STATU2*/
574 #define MIC4_OFFSET_LSB 0
578 #define ADC1_PGA_BYPASS 7
579 #define ADC1_PGA_BYP_RCM 6
580 #define ADC1_PGA_CTRL_RCM 4
581 #define ADC1_PGA_MUTE 3
582 #define ADC1_DSM_ENABLE 2
583 #define ADC1_PGA_ENABLE 1
584 #define ADC1_MICBIAS_EN 0
587 #define ADC1_ANA_CAL_EN 5
588 #define ADC1_SEL_OUT_EDGE 3
589 #define ADC1_DSM_DISABLE 2
590 #define ADC1_VREFP_DISABLE 1
591 #define ADC1_AAF_DISABLE 0
594 #define PGA_CTRL_TC 6
595 #define PGA_CTRL_RC 4
596 #define PGA_CTRL_I_LIN 2
597 #define PGA_CTRL_I_IN 0
600 #define PGA_CTRL_HI_Z 7
601 #define PGA_CTRL_SHORT_RF 6
602 #define PGA_CTRL_VCM_VG 4
603 #define PGA_CTRL_VCM_IN 0
607 #define ADC2_PGA_BYPASS 7
608 #define ADC2_PGA_BYP_RCM 6
609 #define ADC2_PGA_CTRL_RCM 4
610 #define ADC2_PGA_MUTE 3
611 #define ADC2_DSM_ENABLE 2
612 #define ADC2_PGA_ENABLE 1
613 #define ADC2_MICBIAS_EN 0
616 #define ADC2_ANA_CAL_EN 5
617 #define ADC2_SEL_OUT_EDGE 3
618 #define ADC2_DSM_DISABLE 2
619 #define ADC2_VREFP_DISABLE 1
620 #define ADC2_AAF_DISABLE 0
623 #define PGA_CTRL_IBOOST 7
624 #define PGA_CTRL_IQCTRL 6
625 #define PGA_CTRL_OABIAS 4
626 #define PGA_CTRL_CMLP_DIS 3
627 #define PGA_CTRL_PDB_RIN 2
628 #define PGA_CTRL_PEAKDET 0
631 #define AAF_LPMODE_EN 7
632 #define AAF_STG2_IB_SEL 4
633 #define AAFDSM_IB_DIV2 3
634 #define AAF_STG1_IB_SEL 0
638 #define ADC3_PGA_BYPASS 7
639 #define ADC3_PGA_BYP_RCM 6
640 #define ADC3_PGA_CTRL_RCM 4
641 #define ADC3_PGA_MUTE 3
642 #define ADC3_DSM_ENABLE 2
643 #define ADC3_PGA_ENABLE 1
644 #define ADC3_MICBIAS_EN 0
647 #define ADC3_ANA_CAL_EN 5
648 #define ADC3_INVERT_CLK 4
649 #define ADC3_SEL_OUT_EDGE 3
650 #define ADC3_DSM_DISABLE 2
651 #define ADC3_VREFP_DISABLE 1
652 #define ADC3_AAF_DISABLE 0
655 #define DSM_COMP_IB_SEL 6
656 #define DSM_OTA_CTRL 4
658 #define DSM_OTA_IB_SEL 0
662 #define ADC4_PGA_BYPASS 7
663 #define ADC4_PGA_BYP_RCM 6
664 #define ADC4_PGA_CTRL_RCM 4
665 #define ADC4_PGA_MUTE 3
666 #define ADC4_DSM_ENABLE 2
667 #define ADC4_PGA_ENABLE 1
668 #define ADC4_MICBIAS_EN 0
671 #define ADC4_ANA_CAL_EN 5
672 #define ADC4_SEL_OUT_EDGE 3
673 #define ADC4_DSM_DISABLE 2
674 #define ADC4_VREFP_DISABLE 1
675 #define ADC4_AAF_DISABLE 0
679 #define DSM_EN_DITHER 4
680 #define DSM_VREFP_LPMODE 2
681 #define DSM_VREFP_OUTCTRL 0
686 #define ADC4_CLK_GATING 3
687 #define ADC3_CLK_GATING 2
688 #define ADC2_CLK_GATING 1
689 #define ADC1_CLK_GATING 0
693 #define GPIO2_SELECT 4
694 #define GPIO1_SELECT 0
697 #define GPIO4_SELECT 4
698 #define GPIO3_SELECT 0
700 /*GPIO_DAT*///order???
719 #define GPIO4_EINT_CFG 6
720 #define GPIO3_EINT_CFG 4
721 #define GPIO2_EINT_CFG 2
722 #define GPIO1_EINT_CFG 0
724 /*GPIO_INT_EN*///order???
725 #define GPIO4_EINT_EN 3
726 #define GPIO3_EINT_EN 2
727 #define GPIO2_EINT_EN 1
728 #define GPIO1_EINT_EN 0
730 /*GPIO_INT_STATUS*///order???
731 #define GPIO4_EINT_STA 3
732 #define GPIO3_EINT_STA 2
733 #define GPIO2_EINT_STA 1
734 #define GPIO1_EINT_STA 0
738 #define PRNG_CLK_EN 1
739 #define PRNG_CLK_POS 0
743 /*** Some Config Value ***/
745 //[SYSCLK_CTRL]: PLLCLK_SRC
746 #define PLLCLK_SRC_MCLK 0
747 #define PLLCLK_SRC_BCLK 1
748 #define PLLCLK_SRC_GPIO2 2
749 #define PLLCLK_SRC_GPIO3 3
751 //[SYSCLK_CTRL]: SYSCLK_SRC
752 #define SYSCLK_SRC_MCLK 0
753 #define SYSCLK_SRC_PLL 1
755 //I2S BCLK POLARITY Control
756 #define BCLK_NORMAL_DRIVE_N_SAMPLE_P 0
757 #define BCLK_INVERT_DRIVE_P_SAMPLE_N 1
759 //I2S LRCK POLARITY Control
760 #define LRCK_LEFT_LOW_RIGHT_HIGH 0
761 #define LRCK_LEFT_HIGH_RIGHT_LOW 1
763 //I2S Format Selection
765 #define LEFT_JUSTIFIED_FORMAT 1
766 #define RIGHT_JUSTIFIED_FORMAT 2
769 //I2S data protocol types
771 #define IS_ENCODING_MODE 0