summaryrefslogtreecommitdiff
path: root/sound/soc/codecs/es8389.h
blob: 123d1e4b2d53904cbd9128c32da65d5fcbec558a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* ES8389.h  --  ES8389 ALSA SoC Audio Codec
*
* Authors:
*
* Based on ES8374.h by Michael Zhang
*/

#ifndef _ES8389_H
#define _ES8389_H

/*
*     ES8389_REGISTER NAME_REG_REGISTER ADDRESS
*/
#define ES8389_RESET                  0x00  /*reset digital,csm,clock manager etc.*/

/*
* Clock Scheme Register definition
*/
#define ES8389_MASTER_MODE            0x01
#define ES8389_MASTER_CLK             0x02
#define ES8389_CLK_OFF1               0x03
#define ES8389_CLK_DIV1               0x04
#define ES8389_CLK_MUL                0x05
#define ES8389_CLK_MUX1               0x06
#define ES8389_CLK_MUX2               0x07
#define ES8389_CLK_CTL1               0x08
#define ES8389_CLK_CTL2               0x09
#define ES8389_CLK_CTL3               0x0A
#define ES8389_SCLK_DIV               0x0B
#define ES8389_LRCK_DIV1              0x0C
#define ES8389_LRCK_DIV2              0x0D
#define ES8389_CLK_OFF2               0x0E
#define ES8389_OSC_CLK                0x0F
#define ES8389_CSM_JUMP               0x10
#define ES8389_CLK_DIV2               0x11
#define ES8389_SYSTEM12               0x12
#define ES8389_SYSTEM13               0x13
#define ES8389_SYSTEM14               0x14
#define ES8389_SYSTEM15               0x15
#define ES8389_SYSTEM16               0x16
#define ES8389_SYSTEM17               0x17
#define ES8389_SYSTEM18               0x18
#define ES8389_SYSTEM19               0x19
#define ES8389_SYSTEM1A               0x1A
#define ES8389_SYSTEM1B               0x1B
#define ES8389_SYSTEM1C               0x1C
#define ES8389_ADC_FORMAT_MUTE        0x20
#define ES8389_ADC_OSR                0x21
#define ES8389_ADC_DSP                0x22
#define ES8389_ADC_MODE               0x23
#define ES8389_ADC_HPF1               0x24
#define ES8389_ADC_HPF2               0x25
#define ES8389_OSR_VOL                0x26
#define ES8389_ADCL_VOL               0x27
#define ES8389_ADCR_VOL               0x28
#define ES8389_ALC_CTL                0x29
#define ES8389_PTDM_SLOT              0x2A
#define ES8389_ALC_ON                 0x2B
#define ES8389_ALC_TARGET             0x2C
#define ES8389_ALC_GAIN               0x2D
#define ES8389_SYSTEM2E               0x2E
#define ES8389_ADC_MUTE               0x2F
#define ES8389_SYSTEM30               0x30
#define ES8389_ADC_RESET              0x31
#define ES8389_DAC_FORMAT_MUTE        0x40
#define ES8389_DAC_DSM_OSR            0x41
#define ES8389_DAC_DSP_OSR            0x42
#define ES8389_DAC_MISC               0x43
#define ES8389_DAC_MIX                0x44
#define ES8389_DAC_INV                0x45
#define ES8389_DACL_VOL               0x46
#define ES8389_DACR_VOL               0x47
#define ES8389_MIX_VOL                0x48
#define ES8389_DAC_RAMP               0x49
#define ES8389_SYSTEM4C               0x4C
#define ES8389_DAC_RESET              0x4D
#define ES8389_VMID                   0x60
#define ES8389_ANA_CTL1               0x61
#define ES8389_ANA_VSEL               0x62
#define ES8389_ANA_CTL2               0x63
#define ES8389_ADC_EN                 0x64
#define ES8389_HPSW                   0x69
#define ES8389_LOW_POWER1             0x6B
#define ES8389_LOW_POWER2             0x6C
#define ES8389_DMIC_EN                0x6D
#define ES8389_PGA_SW                 0x6E
#define ES8389_MOD_SW1                0x6F
#define ES8389_MOD_SW2                0x70
#define ES8389_MOD_SW3                0x71
#define ES8389_MIC1_GAIN              0x72
#define ES8389_MIC2_GAIN              0x73

#define ES8389_CHIP_MISC              0xF0
#define ES8389_CSM_STATE1             0xF1
#define ES8389_PULL_DOWN              0xF2
#define ES8389_ISO_CTL                0xF3
#define ES8389_CSM_STATE2             0xF4

#define ES8389_CHIP_ID0               0xFD
#define ES8389_CHIP_ID1               0xFE

#define ES8389_MAX_REGISTER           0xFF

#define ES8389_MIC_SEL_MASK           (7 << 4)
#define ES8389_MIC_DEFAULT            (1 << 4)

#define ES8389_MASTER_MODE_EN         (1 << 0)

#define ES8389_TDM_OFF                (0 << 0)
#define ES8389_STDM_ON                (1 << 7)
#define ES8389_PTDM_ON                (1 << 6)

#define ES8389_TDM_MODE               ES8389_TDM_OFF
#define ES8389_TDM_SLOT               (0x70 << 0)
#define ES8389_TDM_SHIFT              4

#define ES8389_MCLK_SOURCE            (1 << 6)
#define ES8389_MCLK_PIN               (1 << 6)
#define ES8389_SCLK_PIN               (0 << 6)

/* ES8389_FMT */
#define ES8389_S24_LE                 (0 << 5)
#define ES8389_S20_3_LE               (1 << 5)
#define ES8389_S18_LE                 (2 << 5)
#define ES8389_S16_LE                 (3 << 5)
#define ES8389_S32_LE                 (4 << 5)
#define ES8389_DATA_LEN_MASK          (7 << 5)

#define ES8389_DAIFMT_MASK            (7 << 2)
#define ES8389_DAIFMT_I2S             0
#define ES8389_DAIFMT_LEFT_J          (1 << 2)
#define ES8389_DAIFMT_DSP_A           (1 << 3)
#define ES8389_DAIFMT_DSP_B           (3 << 3)

#define ES8389_STATE_ON               (13 << 0)
#define ES8389_STATE_STANDBY          (7 << 0)

#endif