Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2/*
  3 * Rockchip RK3308 internal audio codec driver -- register definitions
  4 *
  5 * Copyright (c) 2018, Fuzhou Rockchip Electronics Co., Ltd All rights reserved.
  6 * Copyright (c) 2022, Vivax-Metrotech Ltd
  7 */
  8
  9#ifndef __RK3308_CODEC_H__
 10#define __RK3308_CODEC_H__
 11
 12#define RK3308_GLB_CON				0x00
 13
 14/* ADC DIGITAL REGISTERS */
 15
 16/*
 17 * The ADC group are 0 ~ 3, that control:
 18 *
 19 * CH0: left_0(ADC1) and right_0(ADC2)
 20 * CH1: left_1(ADC3) and right_1(ADC4)
 21 * CH2: left_2(ADC5) and right_2(ADC6)
 22 * CH3: left_3(ADC7) and right_3(ADC8)
 23 */
 24#define RK3308_ADC_DIG_OFFSET(ch)		(((ch) & 0x3) * 0xc0 + 0x0)
 25
 26#define RK3308_ADC_DIG_CON01(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x04)
 27#define RK3308_ADC_DIG_CON02(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x08)
 28#define RK3308_ADC_DIG_CON03(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x0c)
 29#define RK3308_ADC_DIG_CON04(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x10)
 30#define RK3308_ADC_DIG_CON05(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x14) // ver.C only
 31#define RK3308_ADC_DIG_CON06(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x18) // ver.C only
 32#define RK3308_ADC_DIG_CON07(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x1c)
 33
 34#define RK3308_ALC_L_DIG_CON00(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x40)
 35#define RK3308_ALC_L_DIG_CON01(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x44)
 36#define RK3308_ALC_L_DIG_CON02(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x48)
 37#define RK3308_ALC_L_DIG_CON03(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x4c)
 38#define RK3308_ALC_L_DIG_CON04(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x50)
 39#define RK3308_ALC_L_DIG_CON05(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x54)
 40#define RK3308_ALC_L_DIG_CON06(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x58)
 41#define RK3308_ALC_L_DIG_CON07(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x5c)
 42#define RK3308_ALC_L_DIG_CON08(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x60)
 43#define RK3308_ALC_L_DIG_CON09(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x64)
 44#define RK3308_ALC_L_DIG_CON12(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x70)
 45
 46#define RK3308_ALC_R_DIG_CON00(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x80)
 47#define RK3308_ALC_R_DIG_CON01(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x84)
 48#define RK3308_ALC_R_DIG_CON02(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x88)
 49#define RK3308_ALC_R_DIG_CON03(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x8c)
 50#define RK3308_ALC_R_DIG_CON04(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x90)
 51#define RK3308_ALC_R_DIG_CON05(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x94)
 52#define RK3308_ALC_R_DIG_CON06(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x98)
 53#define RK3308_ALC_R_DIG_CON07(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0x9c)
 54#define RK3308_ALC_R_DIG_CON08(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0xa0)
 55#define RK3308_ALC_R_DIG_CON09(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0xa4)
 56#define RK3308_ALC_R_DIG_CON12(ch)		(RK3308_ADC_DIG_OFFSET((ch)) + 0xb0)
 57
 58/* DAC DIGITAL REGISTERS */
 59#define RK3308_DAC_DIG_OFFSET			0x300
 60#define RK3308_DAC_DIG_CON01			(RK3308_DAC_DIG_OFFSET + 0x04)
 61#define RK3308_DAC_DIG_CON02			(RK3308_DAC_DIG_OFFSET + 0x08)
 62#define RK3308_DAC_DIG_CON03			(RK3308_DAC_DIG_OFFSET + 0x0c)
 63#define RK3308_DAC_DIG_CON04			(RK3308_DAC_DIG_OFFSET + 0x10)
 64#define RK3308_DAC_DIG_CON05			(RK3308_DAC_DIG_OFFSET + 0x14)
 65#define RK3308_DAC_DIG_CON10			(RK3308_DAC_DIG_OFFSET + 0x28)
 66#define RK3308_DAC_DIG_CON11			(RK3308_DAC_DIG_OFFSET + 0x2c)
 67#define RK3308_DAC_DIG_CON13			(RK3308_DAC_DIG_OFFSET + 0x34)
 68#define RK3308_DAC_DIG_CON14			(RK3308_DAC_DIG_OFFSET + 0x38)
 69
 70/* ADC ANALOG REGISTERS */
 71/*
 72 * The ADC group are 0 ~ 3, that control:
 73 *
 74 * CH0: left_0(ADC1) and right_0(ADC2)
 75 * CH1: left_1(ADC3) and right_1(ADC4)
 76 * CH2: left_2(ADC5) and right_2(ADC6)
 77 * CH3: left_3(ADC7) and right_3(ADC8)
 78 */
 79#define RK3308_ADC_ANA_OFFSET(ch)		(((ch) & 0x3) * 0x40 + 0x340)
 80#define RK3308_ADC_ANA_CON00(ch)		(RK3308_ADC_ANA_OFFSET((ch)) + 0x00)
 81#define RK3308_ADC_ANA_CON01(ch)		(RK3308_ADC_ANA_OFFSET((ch)) + 0x04)
 82#define RK3308_ADC_ANA_CON02(ch)		(RK3308_ADC_ANA_OFFSET((ch)) + 0x08)
 83#define RK3308_ADC_ANA_CON03(ch)		(RK3308_ADC_ANA_OFFSET((ch)) + 0x0c)
 84#define RK3308_ADC_ANA_CON04(ch)		(RK3308_ADC_ANA_OFFSET((ch)) + 0x10)
 85#define RK3308_ADC_ANA_CON05(ch)		(RK3308_ADC_ANA_OFFSET((ch)) + 0x14)
 86#define RK3308_ADC_ANA_CON06(ch)		(RK3308_ADC_ANA_OFFSET((ch)) + 0x18)
 87#define RK3308_ADC_ANA_CON07(ch)		(RK3308_ADC_ANA_OFFSET((ch)) + 0x1c)
 88#define RK3308_ADC_ANA_CON08(ch)		(RK3308_ADC_ANA_OFFSET((ch)) + 0x20)
 89#define RK3308_ADC_ANA_CON10(ch)		(RK3308_ADC_ANA_OFFSET((ch)) + 0x28)
 90#define RK3308_ADC_ANA_CON11(ch)		(RK3308_ADC_ANA_OFFSET((ch)) + 0x2c)
 91
 92/* DAC ANALOG REGISTERS */
 93#define RK3308_DAC_ANA_OFFSET			0x440
 94#define RK3308_DAC_ANA_CON00			(RK3308_DAC_ANA_OFFSET + 0x00)
 95#define RK3308_DAC_ANA_CON01			(RK3308_DAC_ANA_OFFSET + 0x04)
 96#define RK3308_DAC_ANA_CON02			(RK3308_DAC_ANA_OFFSET + 0x08)
 97#define RK3308_DAC_ANA_CON03			(RK3308_DAC_ANA_OFFSET + 0x0c)
 98#define RK3308_DAC_ANA_CON04			(RK3308_DAC_ANA_OFFSET + 0x10)
 99#define RK3308_DAC_ANA_CON05			(RK3308_DAC_ANA_OFFSET + 0x14)
100#define RK3308_DAC_ANA_CON06			(RK3308_DAC_ANA_OFFSET + 0x18)
101#define RK3308_DAC_ANA_CON07			(RK3308_DAC_ANA_OFFSET + 0x1c)
102#define RK3308_DAC_ANA_CON08			(RK3308_DAC_ANA_OFFSET + 0x20)
103#define RK3308_DAC_ANA_CON12			(RK3308_DAC_ANA_OFFSET + 0x30)
104#define RK3308_DAC_ANA_CON13			(RK3308_DAC_ANA_OFFSET + 0x34)
105#define RK3308_DAC_ANA_CON14			(RK3308_DAC_ANA_OFFSET + 0x38)
106#define RK3308_DAC_ANA_CON15			(RK3308_DAC_ANA_OFFSET + 0x3c)
107
108/*
109 * These are the bits for registers
110 */
111
112/* RK3308_GLB_CON - REG: 0x0000 */
113#define RK3308_ADC_BIST_WORK			BIT(7)
114#define RK3308_DAC_BIST_WORK			BIT(6)
115#define RK3308_ADC_MCLK_GATING			BIT(5)
116#define RK3308_DAC_MCLK_GATING			BIT(4)
117#define RK3308_ADC_DIG_WORK			BIT(2)
118#define RK3308_DAC_DIG_WORK			BIT(1)
119#define RK3308_SYS_WORK				BIT(0)
120
121/* RK3308_ADC_DIG_CON01 - REG: 0x0004 */
122#define RK3308_ADC_I2S_LRC_POL_REVERSAL		BIT(7)
123#define RK3308_ADC_I2S_VALID_LEN_SFT		5
124#define RK3308_ADC_I2S_VALID_LEN_MSK		(0x3 << RK3308_ADC_I2S_VALID_LEN_SFT)
125#define RK3308_ADC_I2S_VALID_LEN_32BITS		(0x3 << RK3308_ADC_I2S_VALID_LEN_SFT)
126#define RK3308_ADC_I2S_VALID_LEN_24BITS		(0x2 << RK3308_ADC_I2S_VALID_LEN_SFT)
127#define RK3308_ADC_I2S_VALID_LEN_20BITS		(0x1 << RK3308_ADC_I2S_VALID_LEN_SFT)
128#define RK3308_ADC_I2S_VALID_LEN_16BITS		(0x0 << RK3308_ADC_I2S_VALID_LEN_SFT)
129#define RK3308_ADC_I2S_MODE_SFT			3
130#define RK3308_ADC_I2S_MODE_MSK			(0x3 << RK3308_ADC_I2S_MODE_SFT)
131#define RK3308_ADC_I2S_MODE_PCM			(0x3 << RK3308_ADC_I2S_MODE_SFT)
132#define RK3308_ADC_I2S_MODE_I2S			(0x2 << RK3308_ADC_I2S_MODE_SFT)
133#define RK3308_ADC_I2S_MODE_LJ			(0x1 << RK3308_ADC_I2S_MODE_SFT)
134#define RK3308_ADC_I2S_MODE_RJ			(0x0 << RK3308_ADC_I2S_MODE_SFT)
135#define RK3308_ADC_I2S_LR_SWAP			BIT(1)
136#define RK3308_ADC_I2S_MONO			BIT(0)
137
138/* RK3308_ADC_DIG_CON02 - REG: 0x0008 */
139#define RK3308_ADC_IO_MODE_MASTER		BIT(5)
140#define RK3308_ADC_MODE_MASTER			BIT(4)
141#define RK3308_ADC_I2S_FRAME_LEN_SFT		2
142#define RK3308_ADC_I2S_FRAME_LEN_MSK		(0x3 << RK3308_ADC_I2S_FRAME_LEN_SFT)
143#define RK3308_ADC_I2S_FRAME_32BITS		(0x3 << RK3308_ADC_I2S_FRAME_LEN_SFT)
144#define RK3308_ADC_I2S_FRAME_24BITS		(0x2 << RK3308_ADC_I2S_FRAME_LEN_SFT)
145#define RK3308_ADC_I2S_FRAME_20BITS		(0x1 << RK3308_ADC_I2S_FRAME_LEN_SFT)
146#define RK3308_ADC_I2S_FRAME_16BITS		(0x0 << RK3308_ADC_I2S_FRAME_LEN_SFT)
147#define RK3308_ADC_I2S_WORK			BIT(1)
148#define RK3308_ADC_I2S_BIT_CLK_POL_REVERSAL	BIT(0)
149
150/* RK3308_ADC_DIG_CON03 - REG: 0x000c */
151#define RK3308_ADC_L_CH_BIST_SFT		2
152#define RK3308_ADC_L_CH_BIST_MSK		(0x3 << RK3308_ADC_L_CH_BIST_SFT)
153#define RK3308_ADC_L_CH_NORMAL_RIGHT		(0x3 << RK3308_ADC_L_CH_BIST_SFT) /* normal mode */
154#define RK3308_ADC_L_CH_BIST_CUBE		(0x2 << RK3308_ADC_L_CH_BIST_SFT)
155#define RK3308_ADC_L_CH_BIST_SINE		(0x1 << RK3308_ADC_L_CH_BIST_SFT)
156#define RK3308_ADC_L_CH_NORMAL_LEFT		(0x0 << RK3308_ADC_L_CH_BIST_SFT) /* normal mode */
157#define RK3308_ADC_R_CH_BIST_SFT		0
158#define RK3308_ADC_R_CH_BIST_MSK		(0x3 << RK3308_ADC_R_CH_BIST_SFT)
159#define RK3308_ADC_R_CH_NORMAL_LEFT		(0x3 << RK3308_ADC_R_CH_BIST_SFT) /* normal mode */
160#define RK3308_ADC_R_CH_BIST_CUBE		(0x2 << RK3308_ADC_R_CH_BIST_SFT)
161#define RK3308_ADC_R_CH_BIST_SINE		(0x1 << RK3308_ADC_R_CH_BIST_SFT)
162#define RK3308_ADC_R_CH_NORMAL_RIGHT		(0x0 << RK3308_ADC_R_CH_BIST_SFT) /* normal mode */
163
164/* RK3308_ADC_DIG_CON04 - REG: 0x0010 */
165#define RK3308_ADC_HPF_PATH_DIS			BIT(2)
166#define RK3308_ADC_HPF_CUTOFF_SFT		0
167#define RK3308_ADC_HPF_CUTOFF_MSK		(0x3 << RK3308_ADC_HPF_CUTOFF_SFT)
168#define RK3308_ADC_HPF_CUTOFF_612HZ		(0x2 << RK3308_ADC_HPF_CUTOFF_SFT)
169#define RK3308_ADC_HPF_CUTOFF_245HZ		(0x1 << RK3308_ADC_HPF_CUTOFF_SFT)
170#define RK3308_ADC_HPF_CUTOFF_20HZ		(0x0 << RK3308_ADC_HPF_CUTOFF_SFT)
171
172/* RK3308_ADC_DIG_CON07 - REG: 0x001c */
173#define RK3308_ADCL_DATA_SFT			4
174#define RK3308_ADCR_DATA_SFT			2
175#define RK3308_ADCL_DATA_SEL_ADCL		BIT(1)
176#define RK3308_ADCR_DATA_SEL_ADCR		BIT(0)
177
178/*
179 * RK3308_ALC_L_DIG_CON00 - REG: 0x0040 + ch * 0xc0
180 * RK3308_ALC_R_DIG_CON00 - REG: 0x0080 + ch * 0xc0
181 */
182#define RK3308_GAIN_ATTACK_JACK			BIT(6)
183#define RK3308_CTRL_GEN_SFT			4
184#define RK3308_CTRL_GEN_MSK			(0x3 << RK3308_ALC_CTRL_GEN_SFT)
185#define RK3308_CTRL_GEN_JACK3			(0x3 << RK3308_ALC_CTRL_GEN_SFT)
186#define RK3308_CTRL_GEN_JACK2			(0x2 << RK3308_ALC_CTRL_GEN_SFT)
187#define RK3308_CTRL_GEN_JACK1			(0x1 << RK3308_ALC_CTRL_GEN_SFT)
188#define RK3308_CTRL_GEN_NORMAL			(0x0 << RK3308_ALC_CTRL_GEN_SFT)
189#define RK3308_AGC_HOLD_TIME_SFT		0
190#define RK3308_AGC_HOLD_TIME_MSK		(0xf << RK3308_AGC_HOLD_TIME_SFT)
191#define RK3308_AGC_HOLD_TIME_1S			(0xa << RK3308_AGC_HOLD_TIME_SFT)
192#define RK3308_AGC_HOLD_TIME_512MS		(0x9 << RK3308_AGC_HOLD_TIME_SFT)
193#define RK3308_AGC_HOLD_TIME_256MS		(0x8 << RK3308_AGC_HOLD_TIME_SFT)
194#define RK3308_AGC_HOLD_TIME_128MS		(0x7 << RK3308_AGC_HOLD_TIME_SFT)
195#define RK3308_AGC_HOLD_TIME_64MS		(0x6 << RK3308_AGC_HOLD_TIME_SFT)
196#define RK3308_AGC_HOLD_TIME_32MS		(0x5 << RK3308_AGC_HOLD_TIME_SFT)
197#define RK3308_AGC_HOLD_TIME_16MS		(0x4 << RK3308_AGC_HOLD_TIME_SFT)
198#define RK3308_AGC_HOLD_TIME_8MS		(0x3 << RK3308_AGC_HOLD_TIME_SFT)
199#define RK3308_AGC_HOLD_TIME_4MS		(0x2 << RK3308_AGC_HOLD_TIME_SFT)
200#define RK3308_AGC_HOLD_TIME_2MS		(0x1 << RK3308_AGC_HOLD_TIME_SFT)
201#define RK3308_AGC_HOLD_TIME_0MS		(0x0 << RK3308_AGC_HOLD_TIME_SFT)
202
203/*
204 * RK3308_ALC_L_DIG_CON01 - REG: 0x0044 + ch * 0xc0
205 * RK3308_ALC_R_DIG_CON01 - REG: 0x0084 + ch * 0xc0
206 */
207#define RK3308_AGC_DECAY_TIME_SFT		4
208#define RK3308_AGC_ATTACK_TIME_SFT		0
209
210/*
211 * RK3308_ALC_L_DIG_CON02 - REG: 0x0048 + ch * 0xc0
212 * RK3308_ALC_R_DIG_CON02 - REG: 0x0088 + ch * 0xc0
213 */
214#define RK3308_AGC_MODE_LIMITER			BIT(7)
215#define RK3308_AGC_ZERO_CRO_EN			BIT(6)
216#define RK3308_AGC_AMP_RECOVER_GAIN		BIT(5)
217#define RK3308_AGC_FAST_DEC_EN			BIT(4)
218#define RK3308_AGC_NOISE_GATE_EN		BIT(3)
219#define RK3308_AGC_NOISE_GATE_THRESH_SFT	0
220#define RK3308_AGC_NOISE_GATE_THRESH_MSK	(0x7 << RK3308_AGC_NOISE_GATE_THRESH_SFT)
221
222/*
223 * RK3308_ALC_L_DIG_CON03 - REG: 0x004c + ch * 0xc0
224 * RK3308_ALC_R_DIG_CON03 - REG: 0x008c + ch * 0xc0
225 */
226#define RK3308_AGC_PGA_ZERO_CRO_EN		BIT(5)
227#define RK3308_AGC_PGA_GAIN_MAX			0x1f
228#define RK3308_AGC_PGA_GAIN_MIN			0
229#define RK3308_AGC_PGA_GAIN_SFT			0
230
231/*
232 * RK3308_ALC_L_DIG_CON04 - REG: 0x0050 + ch * 0xc0
233 * RK3308_ALC_R_DIG_CON04 - REG: 0x0090 + ch * 0xc0
234 */
235#define RK3308_AGC_SLOW_CLK_EN			BIT(3)
236#define RK3308_AGC_APPROX_RATE_SFT		0
237#define RK3308_AGC_APPROX_RATE_MSK		(0x7 << RK3308_AGC_APPROX_RATE_SFT)
238
239/*
240 * RK3308_ALC_L_DIG_CON05 - REG: 0x0054 + ch * 0xc0
241 * RK3308_ALC_R_DIG_CON05 - REG: 0x0094 + ch * 0xc0
242 */
243#define RK3308_AGC_LO_8BITS_AGC_MAX_MSK		0xff
244
245/*
246 * RK3308_ALC_L_DIG_CON06 - REG: 0x0058 + ch * 0xc0
247 * RK3308_ALC_R_DIG_CON06 - REG: 0x0098 + ch * 0xc0
248 */
249#define RK3308_AGC_HI_8BITS_AGC_MAX_MSK		0xff
250
251/*
252 * RK3308_ALC_L_DIG_CON07 - REG: 0x005c + ch * 0xc0
253 * RK3308_ALC_R_DIG_CON07 - REG: 0x009c + ch * 0xc0
254 */
255#define RK3308_AGC_LO_8BITS_AGC_MIN_MSK		0xff
256
257/*
258 * RK3308_ALC_L_DIG_CON08 - REG: 0x0060 + ch * 0xc0
259 * RK3308_ALC_R_DIG_CON08 - REG: 0x00a0 + ch * 0xc0
260 */
261#define RK3308_AGC_HI_8BITS_AGC_MIN_MSK		0xff
262
263/*
264 * RK3308_ALC_L_DIG_CON09 - REG: 0x0064 + ch * 0xc0
265 * RK3308_ALC_R_DIG_CON09 - REG: 0x00a4 + ch * 0xc0
266 */
267#define RK3308_AGC_FUNC_SEL			BIT(6)
268#define RK3308_AGC_MAX_GAIN_PGA_MAX		0x7
269#define RK3308_AGC_MAX_GAIN_PGA_MIN		0
270#define RK3308_AGC_MAX_GAIN_PGA_SFT		3
271#define RK3308_AGC_MAX_GAIN_PGA_MSK		(0x7 << RK3308_AGC_MAX_GAIN_PGA_SFT)
272#define RK3308_AGC_MIN_GAIN_PGA_MAX		0x7
273#define RK3308_AGC_MIN_GAIN_PGA_MIN		0
274#define RK3308_AGC_MIN_GAIN_PGA_SFT		0
275#define RK3308_AGC_MIN_GAIN_PGA_MSK		(0x7 << RK3308_AGC_MIN_GAIN_PGA_SFT)
276
277/*
278 * RK3308_ALC_L_DIG_CON12 - REG: 0x0068 + ch * 0xc0
279 * RK3308_ALC_R_DIG_CON12 - REG: 0x00a8 + ch * 0xc0
280 */
281#define RK3308_AGC_GAIN_MSK			0x1f
282
283/* RK3308_DAC_DIG_CON01 - REG: 0x0304 */
284#define RK3308_DAC_I2S_LRC_POL_REVERSAL		BIT(7)
285#define RK3308_DAC_I2S_VALID_LEN_SFT		5
286#define RK3308_DAC_I2S_VALID_LEN_MSK		(0x3 << RK3308_DAC_I2S_VALID_LEN_SFT)
287#define RK3308_DAC_I2S_VALID_LEN_32BITS		(0x3 << RK3308_DAC_I2S_VALID_LEN_SFT)
288#define RK3308_DAC_I2S_VALID_LEN_24BITS		(0x2 << RK3308_DAC_I2S_VALID_LEN_SFT)
289#define RK3308_DAC_I2S_VALID_LEN_20BITS		(0x1 << RK3308_DAC_I2S_VALID_LEN_SFT)
290#define RK3308_DAC_I2S_VALID_LEN_16BITS		(0x0 << RK3308_DAC_I2S_VALID_LEN_SFT)
291#define RK3308_DAC_I2S_MODE_SFT			3
292#define RK3308_DAC_I2S_MODE_MSK			(0x3 << RK3308_DAC_I2S_MODE_SFT)
293#define RK3308_DAC_I2S_MODE_PCM			(0x3 << RK3308_DAC_I2S_MODE_SFT)
294#define RK3308_DAC_I2S_MODE_I2S			(0x2 << RK3308_DAC_I2S_MODE_SFT)
295#define RK3308_DAC_I2S_MODE_LJ			(0x1 << RK3308_DAC_I2S_MODE_SFT)
296#define RK3308_DAC_I2S_MODE_RJ			(0x0 << RK3308_DAC_I2S_MODE_SFT)
297#define RK3308_DAC_I2S_LR_SWAP			BIT(2)
298
299/* RK3308_DAC_DIG_CON02 - REG: 0x0308 */
300#define RK3308BS_DAC_IO_MODE_MASTER		BIT(7)
301#define RK3308BS_DAC_MODE_MASTER		BIT(6)
302#define RK3308_DAC_IO_MODE_MASTER		BIT(5)
303#define RK3308_DAC_MODE_MASTER			BIT(4)
304#define RK3308_DAC_I2S_FRAME_LEN_SFT		2
305#define RK3308_DAC_I2S_FRAME_LEN_MSK		(0x3 << RK3308_DAC_I2S_FRAME_LEN_SFT)
306#define RK3308_DAC_I2S_FRAME_32BITS		(0x3 << RK3308_DAC_I2S_FRAME_LEN_SFT)
307#define RK3308_DAC_I2S_FRAME_24BITS		(0x2 << RK3308_DAC_I2S_FRAME_LEN_SFT)
308#define RK3308_DAC_I2S_FRAME_20BITS		(0x1 << RK3308_DAC_I2S_FRAME_LEN_SFT)
309#define RK3308_DAC_I2S_FRAME_16BITS		(0x0 << RK3308_DAC_I2S_FRAME_LEN_SFT)
310#define RK3308_DAC_I2S_WORK			BIT(1)
311#define RK3308_DAC_I2S_BIT_CLK_POL_REVERSAL	BIT(0)
312
313/* RK3308_DAC_DIG_CON03 - REG: 0x030C */
314#define RK3308_DAC_L_CH_BIST_SFT		2
315#define RK3308_DAC_L_CH_BIST_MSK		(0x3 << RK3308_DAC_L_CH_BIST_SFT)
316#define RK3308_DAC_L_CH_BIST_LEFT		(0x3 << RK3308_DAC_L_CH_BIST_SFT) /* normal mode */
317#define RK3308_DAC_L_CH_BIST_CUBE		(0x2 << RK3308_DAC_L_CH_BIST_SFT)
318#define RK3308_DAC_L_CH_BIST_SINE		(0x1 << RK3308_DAC_L_CH_BIST_SFT)
319#define RK3308_DAC_L_CH_BIST_RIGHT		(0x0 << RK3308_DAC_L_CH_BIST_SFT) /* normal mode */
320#define RK3308_DAC_R_CH_BIST_SFT		0
321#define RK3308_DAC_R_CH_BIST_MSK		(0x3 << RK3308_DAC_R_CH_BIST_SFT)
322#define RK3308_DAC_R_CH_BIST_LEFT		(0x3 << RK3308_DAC_R_CH_BIST_SFT) /* normal mode */
323#define RK3308_DAC_R_CH_BIST_CUBE		(0x2 << RK3308_DAC_R_CH_BIST_SFT)
324#define RK3308_DAC_R_CH_BIST_SINE		(0x1 << RK3308_DAC_R_CH_BIST_SFT)
325#define RK3308_DAC_R_CH_BIST_RIGHT		(0x0 << RK3308_DAC_R_CH_BIST_SFT) /* normal mode */
326
327/* RK3308_DAC_DIG_CON04 - REG: 0x0310 */
328/* Versions up to B: */
329#define RK3308_DAC_MODULATOR_GAIN_SFT		4
330#define RK3308_DAC_MODULATOR_GAIN_MSK		(0x7 << RK3308_DAC_MODULATOR_GAIN_SFT)
331#define RK3308_DAC_CIC_IF_GAIN_SFT		0
332#define RK3308_DAC_CIC_IF_GAIN_MSK		(0x7 << RK3308_DAC_CIC_IF_GAIN_SFT)
333/* Version C: */
334#define RK3308BS_DAC_DIG_GAIN_SFT		0
335#define RK3308BS_DAC_DIG_GAIN_MSK		(0xff << RK3308BS_DAC_DIG_GAIN_SFT)
336#define RK3308BS_DAC_DIG_GAIN_0DB		(0xed << RK3308BS_DAC_DIG_GAIN_SFT)
337
338/* RK3308BS_ADC_DIG_CON05..06 (Version C only) */
339#define RK3308_ADC_DIG_VOL_CON_x_SFT		0
340#define RK3308_ADC_DIG_VOL_CON_x_MSK		(0xff << RK3308_ADC_DIG_VOL_CON_x_SFT)
341#define RK3308_ADC_DIG_VOL_CON_x_0DB		(0xc2 << RK3308_ADC_DIG_VOL_CON_x_SFT)
342
343/* RK3308_DAC_DIG_CON05 - REG: 0x0314 */
344#define RK3308_DAC_L_REG_CTL_INDATA		BIT(2)
345#define RK3308_DAC_R_REG_CTL_INDATA		BIT(1)
346
347/* RK3308_DAC_DIG_CON10 - REG: 0x0328 */
348#define RK3308_DAC_DATA_HI4(x)			((x) & 0xf)
349
350/* RK3308_DAC_DIG_CON11 - REG: 0x032c */
351#define RK3308_DAC_DATA_LO8(x)			((x) & 0xff)
352
353/* RK3308_ADC_ANA_CON00 - REG: 0x0340 */
354#define RK3308_ADC_CH1_CH2_MIC_ALL_MSK		(0xff << 0)
355#define RK3308_ADC_CH1_CH2_MIC_ALL		0xff
356#define RK3308_ADC_CH2_MIC_UNMUTE		BIT(7)
357#define RK3308_ADC_CH2_MIC_WORK			BIT(6)
358#define RK3308_ADC_CH2_MIC_EN			BIT(5)
359#define RK3308_ADC_CH2_BUF_REF_EN		BIT(4)
360#define RK3308_ADC_CH1_MIC_UNMUTE		BIT(3)
361#define RK3308_ADC_CH1_MIC_WORK			BIT(2)
362#define RK3308_ADC_CH1_MIC_EN			BIT(1)
363#define RK3308_ADC_CH1_BUF_REF_EN		BIT(0)
364
365/* RK3308_ADC_ANA_CON01 - REG: 0x0344
366 *
367 * The PGA of MIC-INs:
368 * - HW version A:
369 *   0x0 - MIC1~MIC8  0 dB (recommended when ADC used as loopback)
370 *   0x3 - MIC1~MIC8 20 dB (recommended when ADC used as MIC input)
371 * - HW version B:
372 *   0x0 - MIC1~MIC8   0 dB
373 *   0x1 - MIC1~MIC8 6.6 dB
374 *   0x2 - MIC1~MIC8  13 dB
375 *   0x3 - MIC1~MIC8  20 dB
376 */
377#define RK3308_ADC_CH2_MIC_GAIN_MAX		0x3
378#define RK3308_ADC_CH2_MIC_GAIN_MIN		0
379#define RK3308_ADC_CH2_MIC_GAIN_SFT		4
380#define RK3308_ADC_CH2_MIC_GAIN_MSK		(0x3 << RK3308_ADC_CH2_MIC_GAIN_SFT)
381#define RK3308_ADC_CH2_MIC_GAIN_20DB		(0x3 << RK3308_ADC_CH2_MIC_GAIN_SFT)
382#define RK3308_ADC_CH2_MIC_GAIN_13DB		(0x2 << RK3308_ADC_CH2_MIC_GAIN_SFT)
383#define RK3308_ADC_CH2_MIC_GAIN_6_6DB		(0x1 << RK3308_ADC_CH2_MIC_GAIN_SFT)
384#define RK3308_ADC_CH2_MIC_GAIN_0DB		(0x0 << RK3308_ADC_CH2_MIC_GAIN_SFT)
385
386#define RK3308_ADC_CH1_MIC_GAIN_MAX		0x3
387#define RK3308_ADC_CH1_MIC_GAIN_MIN		0
388#define RK3308_ADC_CH1_MIC_GAIN_SFT		0
389#define RK3308_ADC_CH1_MIC_GAIN_MSK		(0x3 << RK3308_ADC_CH1_MIC_GAIN_SFT)
390#define RK3308_ADC_CH1_MIC_GAIN_20DB		(0x3 << RK3308_ADC_CH1_MIC_GAIN_SFT)
391#define RK3308_ADC_CH1_MIC_GAIN_13DB		(0x2 << RK3308_ADC_CH1_MIC_GAIN_SFT)
392#define RK3308_ADC_CH1_MIC_GAIN_6_6DB		(0x1 << RK3308_ADC_CH1_MIC_GAIN_SFT)
393#define RK3308_ADC_CH1_MIC_GAIN_0DB		(0x0 << RK3308_ADC_CH1_MIC_GAIN_SFT)
394
395/* RK3308_ADC_ANA_CON02 - REG: 0x0348 */
396#define RK3308_ADC_CH2_ZEROCROSS_DET_EN		BIT(6)
397#define RK3308_ADC_CH2_ALC_WORK			BIT(5)
398#define RK3308_ADC_CH2_ALC_EN			BIT(4)
399#define RK3308_ADC_CH1_ZEROCROSS_DET_EN		BIT(2)
400#define RK3308_ADC_CH1_ALC_WORK			BIT(1)
401#define RK3308_ADC_CH1_ALC_EN			BIT(0)
402
403/* RK3308_ADC_ANA_CON03 - REG: 0x034c */
404#define RK3308_ADC_CH1_ALC_GAIN_MAX		0x1f
405#define RK3308_ADC_CH1_ALC_GAIN_MIN		0
406#define RK3308_ADC_CH1_ALC_GAIN_SFT		0
407#define RK3308_ADC_CH1_ALC_GAIN_MSK		(0x1f << RK3308_ADC_CH1_ALC_GAIN_SFT)
408#define RK3308_ADC_CH1_ALC_GAIN_0DB		(0x0c << RK3308_ADC_CH1_ALC_GAIN_SFT)
409
410/* RK3308_ADC_ANA_CON04 - REG: 0x0350 */
411#define RK3308_ADC_CH2_ALC_GAIN_MAX		0x1f
412#define RK3308_ADC_CH2_ALC_GAIN_MIN		0
413#define RK3308_ADC_CH2_ALC_GAIN_SFT		0
414#define RK3308_ADC_CH2_ALC_GAIN_MSK		(0x1f << RK3308_ADC_CH2_ALC_GAIN_SFT)
415#define RK3308_ADC_CH2_ALC_GAIN_0DB		(0x0c << RK3308_ADC_CH2_ALC_GAIN_SFT)
416
417/* RK3308_ADC_ANA_CON05 - REG: 0x0354 */
418#define RK3308_ADC_CH2_ADC_WORK			BIT(6)
419#define RK3308_ADC_CH2_ADC_EN			BIT(5)
420#define RK3308_ADC_CH2_CLK_EN			BIT(4)
421#define RK3308_ADC_CH1_ADC_WORK			BIT(2)
422#define RK3308_ADC_CH1_ADC_EN			BIT(1)
423#define RK3308_ADC_CH1_CLK_EN			BIT(0)
424
425/* RK3308_ADC_ANA_CON06 - REG: 0x0358 */
426#define RK3308_ADC_CURRENT_EN			BIT(0)
427
428/* RK3308_ADC_ANA_CON07 - REG: 0x035c */
429/* Note: The register configuration is only valid for ADC2 */
430#define RK3308_ADC_CH2_IN_SEL_SFT		6
431#define RK3308_ADC_CH2_IN_SEL_MSK		(0x3 << RK3308_ADC_CH2_IN_SEL_SFT)
432#define RK3308_ADC_CH2_IN_LINEIN_MIC		(0x3 << RK3308_ADC_CH2_IN_SEL_SFT)
433#define RK3308_ADC_CH2_IN_LINEIN		(0x2 << RK3308_ADC_CH2_IN_SEL_SFT)
434#define RK3308_ADC_CH2_IN_MIC			(0x1 << RK3308_ADC_CH2_IN_SEL_SFT)
435#define RK3308_ADC_CH2_IN_NONE			(0x0 << RK3308_ADC_CH2_IN_SEL_SFT)
436/* Note: The register configuration is only valid for ADC1 */
437#define RK3308_ADC_CH1_IN_SEL_SFT		4
438#define RK3308_ADC_CH1_IN_SEL_MSK		(0x3 << RK3308_ADC_CH1_IN_SEL_SFT)
439#define RK3308_ADC_CH1_IN_LINEIN_MIC		(0x3 << RK3308_ADC_CH1_IN_SEL_SFT)
440#define RK3308_ADC_CH1_IN_LINEIN		(0x2 << RK3308_ADC_CH1_IN_SEL_SFT)
441#define RK3308_ADC_CH1_IN_MIC			(0x1 << RK3308_ADC_CH1_IN_SEL_SFT)
442#define RK3308_ADC_CH1_IN_NONE			(0x0 << RK3308_ADC_CH1_IN_SEL_SFT)
443#define RK3308_ADC_MIC_BIAS_BUF_EN		BIT(3)
444#define RK3308_ADC_LEVEL_RANGE_MICBIAS_MAX	7
445#define RK3308_ADC_LEVEL_RANGE_MICBIAS_SFT	0
446#define RK3308_ADC_LEVEL_RANGE_MICBIAS_MSK	(0x7 << RK3308_ADC_LEVEL_RANGE_MICBIAS_SFT)
447
448/* RK3308_ADC_ANA_CON08 - REG: 0x0360 */
449#define RK3308_ADC_MICBIAS_CURRENT_EN		BIT(4)
450
451/* RK3308_ADC_ANA_CON10 - REG: 0x0368 */
452#define RK3308_ADC_REF_EN			BIT(7)
453#define RK3308_ADC_CURRENT_CHARGE_SFT		0
454#define RK3308_ADC_CURRENT_CHARGE_MSK		(0x7f << RK3308_ADC_CURRENT_CHARGE_SFT)
455
456/* RK3308_ADC_ANA_CON11 - REG: 0x036c */
457#define RK3308_ADC_ALCR_CON_GAIN_PGAR_EN	BIT(1)
458#define RK3308_ADC_ALCL_CON_GAIN_PGAL_EN	BIT(0)
459
460/* RK3308_DAC_ANA_CON00 - REG: 0x0440 */
461#define RK3308_DAC_HEADPHONE_DET_EN		BIT(1)
462#define RK3308_DAC_CURRENT_EN			BIT(0)
463
464/* RK3308_DAC_ANA_CON01 - REG: 0x0444 */
465#define RK3308_DAC_BUF_REF_R_EN			BIT(6)
466#define RK3308_DAC_BUF_REF_L_EN			BIT(2)
467#define RK3308_DAC_HPOUT_POP_SOUND_R_SFT	4
468#define RK3308_DAC_HPOUT_POP_SOUND_L_SFT	0
469// unshifted values for both L and R:
470#define RK3308_DAC_HPOUT_POP_SOUND_x_MSK	0x3
471#define RK3308_DAC_HPOUT_POP_SOUND_x_WORK	0x2
472#define RK3308_DAC_HPOUT_POP_SOUND_x_INIT	0x1
473
474/* RK3308_DAC_ANA_CON02 - REG: 0x0448 */
475#define RK3308_DAC_R_DAC_WORK			BIT(7)
476#define RK3308_DAC_R_DAC_EN			BIT(6)
477#define RK3308_DAC_R_CLK_EN			BIT(5)
478#define RK3308_DAC_R_REF_EN			BIT(4)
479#define RK3308_DAC_L_DAC_WORK			BIT(3)
480#define RK3308_DAC_L_DAC_EN			BIT(2)
481#define RK3308_DAC_L_CLK_EN			BIT(1)
482#define RK3308_DAC_L_REF_EN			BIT(0)
483
484/* RK3308_DAC_ANA_CON03 - REG: 0x044c */
485#define RK3308_DAC_R_HPOUT_WORK			BIT(6)
486#define RK3308_DAC_R_HPOUT_EN			BIT(5)
487#define RK3308_DAC_R_HPOUT_MUTE_SFT		4
488#define RK3308_DAC_L_HPOUT_WORK			BIT(2)
489#define RK3308_DAC_L_HPOUT_EN			BIT(1)
490#define RK3308_DAC_L_HPOUT_MUTE_SFT		0
491
492/* RK3308_DAC_ANA_CON04 - REG: 0x0450 */
493#define RK3308_DAC_x_LINEOUT_GAIN_MAX		0x3
494#define RK3308_DAC_R_LINEOUT_GAIN_SFT		6
495#define RK3308_DAC_R_LINEOUT_GAIN_MSK		(0x3 << RK3308_DAC_R_LINEOUT_GAIN_SFT)
496#define RK3308_DAC_R_LINEOUT_GAIN_0DB		(0x3 << RK3308_DAC_R_LINEOUT_GAIN_SFT)
497#define RK3308_DAC_R_LINEOUT_GAIN_NDB_1_5	(0x2 << RK3308_DAC_R_LINEOUT_GAIN_SFT)
498#define RK3308_DAC_R_LINEOUT_GAIN_NDB_3		(0x1 << RK3308_DAC_R_LINEOUT_GAIN_SFT)
499#define RK3308_DAC_R_LINEOUT_GAIN_NDB_6		(0x0 << RK3308_DAC_R_LINEOUT_GAIN_SFT)
500#define RK3308_DAC_R_LINEOUT_MUTE_SFT		5
501#define RK3308_DAC_R_LINEOUT_EN			BIT(4)
502#define RK3308_DAC_L_LINEOUT_GAIN_SFT		2
503#define RK3308_DAC_L_LINEOUT_GAIN_MSK		(0x3 << RK3308_DAC_L_LINEOUT_GAIN_SFT)
504#define RK3308_DAC_L_LINEOUT_GAIN_0DB		(0x3 << RK3308_DAC_L_LINEOUT_GAIN_SFT)
505#define RK3308_DAC_L_LINEOUT_GAIN_NDB_1_5	(0x2 << RK3308_DAC_L_LINEOUT_GAIN_SFT)
506#define RK3308_DAC_L_LINEOUT_GAIN_NDB_3		(0x1 << RK3308_DAC_L_LINEOUT_GAIN_SFT)
507#define RK3308_DAC_L_LINEOUT_GAIN_NDB_6		(0x0 << RK3308_DAC_L_LINEOUT_GAIN_SFT)
508#define RK3308_DAC_L_LINEOUT_MUTE_SFT		1
509#define RK3308_DAC_L_LINEOUT_EN			BIT(0)
510
511/* RK3308_DAC_ANA_CON05 - REG: 0x0454, step is 1.5db */
512/* RK3308_DAC_ANA_CON06 - REG: 0x0458, step is 1.5db */
513#define RK3308_DAC_x_HPOUT_GAIN_MAX		0x1e
514#define RK3308_DAC_x_HPOUT_GAIN_SFT		0
515#define RK3308_DAC_x_HPOUT_GAIN_MSK		(0x1f << RK3308_DAC_x_HPOUT_GAIN_SFT)
516#define RK3308_DAC_x_HPOUT_GAIN_MIN		(0x00 << RK3308_DAC_x_HPOUT_GAIN_SFT)
517
518/* RK3308_DAC_ANA_CON07 - REG: 0x045c */
519#define RK3308_DAC_R_HPOUT_DRV_SFT		4
520#define RK3308_DAC_R_HPOUT_DRV_MSK		(0xf << RK3308_DAC_R_HPOUT_DRV_SFT)
521#define RK3308_DAC_L_HPOUT_DRV_SFT		0
522#define RK3308_DAC_L_HPOUT_DRV_MSK		(0xf << RK3308_DAC_L_HPOUT_DRV_SFT)
523
524/* RK3308_DAC_ANA_CON08 - REG: 0x0460 */
525#define RK3308_DAC_R_LINEOUT_DRV_SFT		4
526#define RK3308_DAC_R_LINEOUT_DRV_MSK		(0xf << RK3308_DAC_R_LINEOUT_DRV_SFT)
527#define RK3308_DAC_L_LINEOUT_DRV_SFT		0
528#define RK3308_DAC_L_LINEOUT_DRV_MSK		(0xf << RK3308_DAC_L_LINEOUT_DRV_SFT)
529
530/* RK3308_DAC_ANA_CON12 - REG: 0x0470 */
531#define RK3308_DAC_R_HPMIX_SEL_SFT		6
532#define RK3308_DAC_R_HPMIX_SEL_MSK		(0x3 << RK3308_DAC_R_HPMIX_SEL_SFT)
533#define RK3308_DAC_R_HPMIX_LINEIN_I2S		(0x3 << RK3308_DAC_R_HPMIX_SEL_SFT)
534#define RK3308_DAC_R_HPMIX_LINEIN		(0x2 << RK3308_DAC_R_HPMIX_SEL_SFT)
535#define RK3308_DAC_R_HPMIX_I2S			(0x1 << RK3308_DAC_R_HPMIX_SEL_SFT)
536#define RK3308_DAC_R_HPMIX_NONE			(0x0 << RK3308_DAC_R_HPMIX_SEL_SFT)
537#define RK3308_DAC_L_HPMIX_SEL_SFT		2
538#define RK3308_DAC_L_HPMIX_SEL_MSK		(0x3 << RK3308_DAC_L_HPMIX_SEL_SFT)
539#define RK3308_DAC_L_HPMIX_LINEIN_I2S		(0x3 << RK3308_DAC_L_HPMIX_SEL_SFT)
540#define RK3308_DAC_L_HPMIX_LINEIN		(0x2 << RK3308_DAC_L_HPMIX_SEL_SFT)
541#define RK3308_DAC_L_HPMIX_I2S			(0x1 << RK3308_DAC_L_HPMIX_SEL_SFT)
542#define RK3308_DAC_L_HPMIX_NONE			(0x0 << RK3308_DAC_L_HPMIX_SEL_SFT)
543#define RK3308_DAC_x_HPMIX_GAIN_MIN		0x1 /* 0x0 and 0x3 are reserved */
544#define RK3308_DAC_x_HPMIX_GAIN_MAX		0x2
545#define RK3308_DAC_R_HPMIX_GAIN_SFT		4
546#define RK3308_DAC_R_HPMIX_GAIN_MSK		(0x3 << RK3308_DAC_R_HPMIX_GAIN_SFT)
547#define RK3308_DAC_R_HPMIX_GAIN_0DB		(0x2 << RK3308_DAC_R_HPMIX_GAIN_SFT)
548#define RK3308_DAC_R_HPMIX_GAIN_NDB_6		(0x1 << RK3308_DAC_R_HPMIX_GAIN_SFT)
549#define RK3308_DAC_L_HPMIX_GAIN_SFT		0
550#define RK3308_DAC_L_HPMIX_GAIN_MSK		(0x3 << RK3308_DAC_L_HPMIX_GAIN_SFT)
551#define RK3308_DAC_L_HPMIX_GAIN_0DB		(0x2 << RK3308_DAC_L_HPMIX_GAIN_SFT)
552#define RK3308_DAC_L_HPMIX_GAIN_NDB_6		(0x1 << RK3308_DAC_L_HPMIX_GAIN_SFT)
553
554/* RK3308_DAC_ANA_CON13 - REG: 0x0474 */
555#define RK3308_DAC_R_HPMIX_UNMUTE		BIT(6)
556#define RK3308_DAC_R_HPMIX_WORK			BIT(5)
557#define RK3308_DAC_R_HPMIX_EN			BIT(4)
558#define RK3308_DAC_L_HPMIX_UNMUTE		BIT(2)
559#define RK3308_DAC_L_HPMIX_WORK			BIT(1)
560#define RK3308_DAC_L_HPMIX_EN			BIT(0)
561
562/* RK3308_DAC_ANA_CON14 - REG: 0x0478 */
563#define RK3308_DAC_VCM_LINEOUT_EN		(0x1 << 4)
564#define RK3308_DAC_CURRENT_CHARGE_SFT		0
565#define RK3308_DAC_CURRENT_CHARGE_MSK		(0xf << RK3308_DAC_CURRENT_CHARGE_SFT)
566
567/* RK3308_DAC_ANA_CON15 - REG: 0x047C */
568#define RK3308_DAC_LINEOUT_POP_SOUND_R_SFT	4
569#define RK3308_DAC_LINEOUT_POP_SOUND_R_MSK	(0x3 << RK3308_DAC_LINEOUT_POP_SOUND_R_SFT)
570#define RK3308_DAC_R_SEL_DC_FROM_INTERNAL	(0x2 << RK3308_DAC_LINEOUT_POP_SOUND_R_SFT)
571#define RK3308_DAC_R_SEL_DC_FROM_VCM		(0x1 << RK3308_DAC_LINEOUT_POP_SOUND_R_SFT)
572#define RK3308_DAC_R_SEL_LINEOUT_FROM_INTERNAL	(0x0 << RK3308_DAC_LINEOUT_POP_SOUND_R_SFT)
573#define RK3308_DAC_LINEOUT_POP_SOUND_L_SFT	0
574#define RK3308_DAC_LINEOUT_POP_SOUND_L_MSK	(0x3 << RK3308_DAC_LINEOUT_POP_SOUND_L_SFT)
575#define RK3308_DAC_L_SEL_DC_FROM_INTERNAL	(0x2 << RK3308_DAC_LINEOUT_POP_SOUND_L_SFT)
576#define RK3308_DAC_L_SEL_DC_FROM_VCM		(0x1 << RK3308_DAC_LINEOUT_POP_SOUND_L_SFT)
577#define RK3308_DAC_L_SEL_LINEOUT_FROM_INTERNAL	(0x0 << RK3308_DAC_LINEOUT_POP_SOUND_L_SFT)
578
579#endif /* __RK3308_CODEC_H__ */