2 * rk2928.h ALSA SoC RK2928 codec driver
4 * Copyright 2012 Rockchip
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.
11 #ifndef __RK2928_CODEC_H__
12 #define __RK2928_CODEC_H__
14 #define CODEC_REG_ADC_DIGITAL_GIAN_L 0x08
15 #define CODEC_REG_ADC_DIGITAL_GIAN_H 0x09
17 #define CODEC_REG_ADC_PGA_GAIN 0x0b
18 #define m_MIC_GAIN_CHANNEL_L (0x0F << 4)
19 #define m_MIC_GAIN_CHANNEL_R (0x0F)
20 #define v_MIC_GAIN_CHANNEL_L(n) ((n) << 4)
21 #define v_MIC_GAIN_CHANNEL_R(n) (n)
23 #define CODEC_REG_POWER 0x0c
24 #define m_PD_CODEC (0x01)
25 #define m_PD_MIC_BIAS (0x01 << 1)
26 #define m_PD_ADC_R (0x01 << 2)
27 #define m_PD_ADC_L (0x01 << 3)
28 #define m_PD_ADC (0x03 << 2)
29 #define m_PD_DAC (0x03 << 4)
30 #define v_PD_CODEC(n) (n)
31 #define v_PD_MIC_BIAS(n) (n << 1)
32 #define v_PD_ADC_R(n) (n << 2)
33 #define v_PD_ADC_L(n) (n << 3)
34 #define v_PD_DAC_R(n) (n << 4)
35 #define v_PD_DAC_L(n) (n << 5)
36 #define v_PD_ADC(n) (v_PD_ADC_L(n) | v_PD_ADC_R(n))
37 #define v_PD_DAC(n) (v_PD_DAC_L(n) | v_PD_DAC_R(n))
38 #define v_PWR_OFF v_PD_DAC_L(1) | v_PD_DAC_R(1) | v_PD_ADC_L(1) | v_PD_ADC_R(1) | v_PD_MIC_BIAS(0) | v_PD_CODEC(1) //²»¹Ø±Õmic_bias for phone_pad
40 #define CODEC_REG_VCM_BIAS 0x0d
41 #define v_MIC_BIAS(n) (n)
43 VCM_RESISTOR_100K = 0,
46 #define v_VCM_25K_100K(n) (n << 2)
48 #define CODEC_REG_DAC_MUTE 0x0e
49 #define v_MUTE_DAC_L(n) (n << 1)
50 #define v_MUTE_DAC_R(n) (n)
51 #define v_MUTE_DAC(n) v_MUTE_DAC_L(n) | v_MUTE_DAC_R(n)
53 #define CODEC_REG_ADC_SOURCE 0x0f
58 #define v_SRC_ADC_L(n) (n << 1)
59 #define v_SRC_ADC_R(n) (n)
61 #define CODEC_REG_DAC_GAIN 0x10
62 #define m_GAIN_DAC_L (0x03 << 2)
63 #define m_GAIN_DAC_R (0x03)
66 DAC_GAIN_3DB_P = 0x2, //3db
69 #define v_GAIN_DAC_L(n) (n << 2)
70 #define v_GAIN_DAC_R(n) (n)
71 #define v_GAIN_DAC(n) (v_GAIN_DAC_L(n) | v_GAIN_DAC_R(n))
78 #define DBG(format, ...) \
79 printk(KERN_INFO "RK2928 CODEC: " format "\n", ## __VA_ARGS__)
81 #define DBG(format, ...)
84 struct rk2928_codec_pdata {
86 int (*hpctl_io_init)(void);
89 #endif /* __RK2928_CODEC_H__ */