xref: /linux/sound/soc/codecs/es8389.h (revision a9e6060bb2a6cae6d43a98ec0794844ad01273d3)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3 * ES8389.h  --  ES8389 ALSA SoC Audio Codec
4 *
5 * Authors:
6 *
7 * Based on ES8374.h by Michael Zhang
8 */
9 
10 #ifndef _ES8389_H
11 #define _ES8389_H
12 
13 /*
14 *     ES8389_REGISTER NAME_REG_REGISTER ADDRESS
15 */
16 #define ES8389_RESET                  0x00  /*reset digital,csm,clock manager etc.*/
17 
18 /*
19 * Clock Scheme Register definition
20 */
21 #define ES8389_MASTER_MODE            0x01
22 #define ES8389_MASTER_CLK             0x02
23 #define ES8389_CLK_OFF1               0x03
24 #define ES8389_CLK_DIV1               0x04
25 #define ES8389_CLK_MUL                0x05
26 #define ES8389_CLK_MUX1               0x06
27 #define ES8389_CLK_MUX2               0x07
28 #define ES8389_CLK_CTL1               0x08
29 #define ES8389_CLK_CTL2               0x09
30 #define ES8389_CLK_CTL3               0x0A
31 #define ES8389_SCLK_DIV               0x0B
32 #define ES8389_LRCK_DIV1              0x0C
33 #define ES8389_LRCK_DIV2              0x0D
34 #define ES8389_CLK_OFF2               0x0E
35 #define ES8389_OSC_CLK                0x0F
36 #define ES8389_CSM_JUMP               0x10
37 #define ES8389_CLK_DIV2               0x11
38 #define ES8389_SYSTEM12               0x12
39 #define ES8389_SYSTEM13               0x13
40 #define ES8389_SYSTEM14               0x14
41 #define ES8389_SYSTEM15               0x15
42 #define ES8389_SYSTEM16               0x16
43 #define ES8389_SYSTEM17               0x17
44 #define ES8389_SYSTEM18               0x18
45 #define ES8389_SYSTEM19               0x19
46 #define ES8389_SYSTEM1A               0x1A
47 #define ES8389_SYSTEM1B               0x1B
48 #define ES8389_SYSTEM1C               0x1C
49 #define ES8389_ADC_FORMAT_MUTE        0x20
50 #define ES8389_ADC_OSR                0x21
51 #define ES8389_ADC_DSP                0x22
52 #define ES8389_ADC_MODE               0x23
53 #define ES8389_ADC_HPF1               0x24
54 #define ES8389_ADC_HPF2               0x25
55 #define ES8389_OSR_VOL                0x26
56 #define ES8389_ADCL_VOL               0x27
57 #define ES8389_ADCR_VOL               0x28
58 #define ES8389_ALC_CTL                0x29
59 #define ES8389_PTDM_SLOT              0x2A
60 #define ES8389_ALC_ON                 0x2B
61 #define ES8389_ALC_TARGET             0x2C
62 #define ES8389_ALC_GAIN               0x2D
63 #define ES8389_SYSTEM2E               0x2E
64 #define ES8389_ADC_MUTE               0x2F
65 #define ES8389_SYSTEM30               0x30
66 #define ES8389_ADC_RESET              0x31
67 #define ES8389_DAC_FORMAT_MUTE        0x40
68 #define ES8389_DAC_DSM_OSR            0x41
69 #define ES8389_DAC_DSP_OSR            0x42
70 #define ES8389_DAC_MISC               0x43
71 #define ES8389_DAC_MIX                0x44
72 #define ES8389_DAC_INV                0x45
73 #define ES8389_DACL_VOL               0x46
74 #define ES8389_DACR_VOL               0x47
75 #define ES8389_MIX_VOL                0x48
76 #define ES8389_DAC_RAMP               0x49
77 #define ES8389_SYSTEM4C               0x4C
78 #define ES8389_DAC_RESET              0x4D
79 #define ES8389_VMID                   0x60
80 #define ES8389_ANA_CTL1               0x61
81 #define ES8389_ANA_VSEL               0x62
82 #define ES8389_ANA_CTL2               0x63
83 #define ES8389_ADC_EN                 0x64
84 #define ES8389_HPSW                   0x69
85 #define ES8389_LOW_POWER1             0x6B
86 #define ES8389_LOW_POWER2             0x6C
87 #define ES8389_DMIC_EN                0x6D
88 #define ES8389_PGA_SW                 0x6E
89 #define ES8389_MOD_SW1                0x6F
90 #define ES8389_MOD_SW2                0x70
91 #define ES8389_MOD_SW3                0x71
92 #define ES8389_MIC1_GAIN              0x72
93 #define ES8389_MIC2_GAIN              0x73
94 
95 #define ES8389_CHIP_MISC              0xF0
96 #define ES8389_CSM_STATE1             0xF1
97 #define ES8389_PULL_DOWN              0xF2
98 #define ES8389_ISO_CTL                0xF3
99 #define ES8389_CSM_STATE2             0xF4
100 
101 #define ES8389_CHIP_ID0               0xFD
102 #define ES8389_CHIP_ID1               0xFE
103 
104 #define ES8389_MAX_REGISTER           0xFF
105 
106 #define ES8389_MIC_SEL_MASK           (7 << 4)
107 #define ES8389_MIC_DEFAULT            (1 << 4)
108 
109 #define ES8389_MASTER_MODE_EN         (1 << 0)
110 
111 #define ES8389_TDM_OFF                (0 << 0)
112 #define ES8389_STDM_ON                (1 << 7)
113 #define ES8389_PTDM_ON                (1 << 6)
114 
115 #define ES8389_TDM_MODE               ES8389_TDM_OFF
116 #define ES8389_TDM_SLOT               (0x70 << 0)
117 #define ES8389_TDM_SHIFT              4
118 
119 #define ES8389_MCLK_SOURCE            (1 << 6)
120 #define ES8389_MCLK_PIN               (1 << 6)
121 #define ES8389_SCLK_PIN               (0 << 6)
122 
123 /* ES8389_FMT */
124 #define ES8389_S24_LE                 (0 << 5)
125 #define ES8389_S20_3_LE               (1 << 5)
126 #define ES8389_S18_LE                 (2 << 5)
127 #define ES8389_S16_LE                 (3 << 5)
128 #define ES8389_S32_LE                 (4 << 5)
129 #define ES8389_DATA_LEN_MASK          (7 << 5)
130 
131 #define ES8389_DAIFMT_MASK            (7 << 2)
132 #define ES8389_DAIFMT_I2S             0
133 #define ES8389_DAIFMT_LEFT_J          (1 << 2)
134 #define ES8389_DAIFMT_DSP_A           (1 << 3)
135 #define ES8389_DAIFMT_DSP_B           (3 << 3)
136 
137 #define ES8389_STATE_ON               (13 << 0)
138 #define ES8389_STATE_STANDBY          (7 << 0)
139 
140 #endif
141