1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * rk3308_codec.h -- RK3308 ALSA Soc Audio Driver 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (c) 2018, Fuzhou Rockchip Electronics Co., Ltd All rights reserved. 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify it 7*4882a593Smuzhiyun * under the terms and conditions of the GNU General Public License, 8*4882a593Smuzhiyun * version 2, as published by the Free Software Foundation. 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * This program is distributed in the hope it will be useful, but WITHOUT 11*4882a593Smuzhiyun * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12*4882a593Smuzhiyun * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 13*4882a593Smuzhiyun * more details. 14*4882a593Smuzhiyun * 15*4882a593Smuzhiyun * You should have received a copy of the GNU General Public License 16*4882a593Smuzhiyun * along with this program. If not, see <http://www.gnu.org/licenses/>. 17*4882a593Smuzhiyun * 18*4882a593Smuzhiyun */ 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #ifndef __RK3308_CODEC_H__ 21*4882a593Smuzhiyun #define __RK3308_CODEC_H__ 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #define ACODEC_RESET_CTL 0x00 /* REG 0x00 */ 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun /* ADC DIGITAL REGISTERS */ 26*4882a593Smuzhiyun #define ACODEC_ADC_I2S_CTL0 0x04 /* REG 0x01 */ 27*4882a593Smuzhiyun #define ACODEC_ADC_I2S_CTL1 0x08 /* REG 0x02 */ 28*4882a593Smuzhiyun #define ACODEC_ADC_BIST_MODE_SEL 0x0c /* REG 0x03 */ 29*4882a593Smuzhiyun #define ACODEC_ADC_HPF_PATH 0x10 /* REG 0x04 */ 30*4882a593Smuzhiyun #define ACODEC_S_ADC_DIG_VOL_CON_L 0x14 /* REG 0x05 */ 31*4882a593Smuzhiyun #define ACODEC_S_ADC_DIG_VOL_CON_R 0x18 /* REG 0x06 */ 32*4882a593Smuzhiyun #define ACODEC_ADC_DATA_PATH 0x1c /* REG 0x07 */ 33*4882a593Smuzhiyun /* Resevred REG 0x08 ~ 0x0f */ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun /* REG 0x10 ~ 0x1c are used to configure AGC of Left channel (ALC1) */ 36*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_L_CTL0 0x40 /* REG 0x10 */ 37*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_L_CTL1 0x44 /* REG 0x11 */ 38*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_L_CTL2 0x48 /* REG 0x12 */ 39*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_L_CTL3 0x4c /* REG 0x13 */ 40*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_L_CTL4 0x50 /* REG 0x14 */ 41*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_L_LO_MAX 0x54 /* REG 0x15 */ 42*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_L_HI_MAX 0x58 /* REG 0x16 */ 43*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_L_LO_MIN 0x5c /* REG 0x17 */ 44*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_L_HI_MIN 0x60 /* REG 0x18 */ 45*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_L_CTL5 0x64 /* REG 0x19 */ 46*4882a593Smuzhiyun /* Resevred REG 0x1a */ 47*4882a593Smuzhiyun #define ACODEC_S_ADC_PEAK_DET_VALUE_DEC_RATE_L 0x6c /* REG 0x1b */ 48*4882a593Smuzhiyun #define ACODEC_ADC_AGC_L_RO_GAIN 0x70 /* REG 0x1c */ 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun /* REG 0x20 ~ 0x2c are used to configure AGC of Right channel (ALC2) */ 51*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_R_CTL0 0x80 /* REG 0x20 */ 52*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_R_CTL1 0x84 /* REG 0x21 */ 53*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_R_CTL2 0x88 /* REG 0x22 */ 54*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_R_CTL3 0x8c /* REG 0x23 */ 55*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_R_CTL4 0x90 /* REG 0x24 */ 56*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_R_LO_MAX 0x94 /* REG 0x25 */ 57*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_R_HI_MAX 0x98 /* REG 0x26 */ 58*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_R_LO_MIN 0x9c /* REG 0x27 */ 59*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_R_HI_MIN 0xa0 /* REG 0x28 */ 60*4882a593Smuzhiyun #define ACODEC_ADC_PGA_AGC_R_CTL5 0xa4 /* REG 0x29 */ 61*4882a593Smuzhiyun /* Resevred REG 0x2a */ 62*4882a593Smuzhiyun #define ACODEC_S_ADC_PEAK_DET_VALUE_DEC_RATE_R 0xac /* REG 0x2b */ 63*4882a593Smuzhiyun #define ACODEC_ADC_AGC_R_RO_GAIN 0xb0 /* REG 0x2c */ 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun /* DAC DIGITAL REGISTERS */ 66*4882a593Smuzhiyun #define ACODEC_DAC_I2S_CTL0 0x04 /* REG 0x01 */ 67*4882a593Smuzhiyun #define ACODEC_DAC_I2S_CTL1 0x08 /* REG 0x02 */ 68*4882a593Smuzhiyun #define ACODEC_DAC_BIST_MODE_SEL 0x0c /* REG 0x03 */ 69*4882a593Smuzhiyun #define ACODEC_DAC_DIGITAL_GAIN 0x10 /* REG 0x04 */ 70*4882a593Smuzhiyun #define ACODEC_DAC_DATA_SEL 0x14 /* REG 0x05 */ 71*4882a593Smuzhiyun /* Resevred REG 0x06 ~ 0x08 */ 72*4882a593Smuzhiyun #define ACODEC_DAC_DATA_HI 0x28 /* REG 0x0a */ 73*4882a593Smuzhiyun #define ACODEC_DAC_DATA_LO 0x2c /* REG 0x0b */ 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun #define ACODEC_DAC_HPDET_DELAYTIME_HI 0x30 /* REG 0x0c */ 76*4882a593Smuzhiyun #define ACODEC_DAC_HPDET_DELAYTIME_LO 0x34 /* REG 0x0d */ 77*4882a593Smuzhiyun #define ACODEC_DAC_HPDET_STATUS 0x38 /* REG 0x0e, Read-only */ 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun #define ACODEC_S_DAC_DATA_HI 0x24 /* REG 0x09 */ 80*4882a593Smuzhiyun #define ACODEC_S_DAC_DATA_LO 0x28 /* REG 0x0a */ 81*4882a593Smuzhiyun #define ACODEC_S_DAC_HPDET_DELAYTIME_HI 0x2c /* REG 0x0b */ 82*4882a593Smuzhiyun #define ACODEC_S_DAC_HPDET_DELAYTIME_LO 0x30 /* REG 0x0c */ 83*4882a593Smuzhiyun #define ACODEC_S_DAC_HPDET_STATUS 0x34 /* REG 0x0d, Read-only */ 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun /* Resevred REG 0x0f */ 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun /* ADC ANALOG REGISTERS */ 88*4882a593Smuzhiyun #define ACODEC_ADC_ANA_MIC_CTL 0x00 /* REG 0x00 */ 89*4882a593Smuzhiyun #define ACODEC_ADC_ANA_MIC_GAIN 0x04 /* REG 0x01 */ 90*4882a593Smuzhiyun #define ACODEC_ADC_ANA_ALC_CTL 0x08 /* REG 0x02 */ 91*4882a593Smuzhiyun #define ACODEC_ADC_ANA_ALC_GAIN1 0x0c /* REG 0x03 */ 92*4882a593Smuzhiyun #define ACODEC_ADC_ANA_ALC_GAIN2 0x10 /* REG 0x04 */ 93*4882a593Smuzhiyun #define ACODEC_ADC_ANA_CTL0 0x14 /* REG 0x05 */ 94*4882a593Smuzhiyun #define ACODEC_ADC_ANA_CTL1 0x18 /* REG 0x06 */ 95*4882a593Smuzhiyun #define ACODEC_ADC_ANA_CTL2 0x1c /* REG 0x07 */ 96*4882a593Smuzhiyun #define ACODEC_ADC_ANA_CTL3 0x20 /* REG 0x08 */ 97*4882a593Smuzhiyun #define ACODEC_S_ADC_ANA_CTL4 0x24 /* REG 0x09 */ 98*4882a593Smuzhiyun #define ACODEC_ADC_ANA_CTL5 0x28 /* REG 0x0a */ 99*4882a593Smuzhiyun #define ACODEC_ADC_ANA_ALC_PGA 0x2c /* REG 0x0b */ 100*4882a593Smuzhiyun /* Resevred REG 0x0c ~ 0x0f */ 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun /* DAC ANALOG REGISTERS */ 103*4882a593Smuzhiyun #define ACODEC_DAC_ANA_CTL0 0x00 /* REG 0x00 */ 104*4882a593Smuzhiyun #define ACODEC_DAC_ANA_POP_VOLT 0x04 /* REG 0x01 */ 105*4882a593Smuzhiyun #define ACODEC_DAC_ANA_CTL1 0x08 /* REG 0x02 */ 106*4882a593Smuzhiyun #define ACODEC_DAC_ANA_HPOUT 0x0c /* REG 0x03 */ 107*4882a593Smuzhiyun #define ACODEC_DAC_ANA_LINEOUT 0x10 /* REG 0x04 */ 108*4882a593Smuzhiyun #define ACODEC_DAC_ANA_L_HPOUT_GAIN 0x14 /* REG 0x05 */ 109*4882a593Smuzhiyun #define ACODEC_DAC_ANA_R_HPOUT_GAIN 0x18 /* REG 0x06 */ 110*4882a593Smuzhiyun #define ACODEC_DAC_ANA_DRV_HPOUT 0x1c /* REG 0x07 */ 111*4882a593Smuzhiyun #define ACODEC_DAC_ANA_DRV_LINEOUT 0x20 /* REG 0x08 */ 112*4882a593Smuzhiyun /* Resevred REG 0x07 ~ 0x0b */ 113*4882a593Smuzhiyun #define ACODEC_DAC_ANA_HPMIX_CTL0 0x30 /* REG 0x0c */ 114*4882a593Smuzhiyun #define ACODEC_DAC_ANA_HPMIX_CTL1 0x34 /* REG 0x0d */ 115*4882a593Smuzhiyun #define ACODEC_DAC_ANA_LINEOUT_CTL0 0x38 /* REG 0x0e */ 116*4882a593Smuzhiyun #define ACODEC_DAC_ANA_LINEOUT_CTL1 0x3c /* REG 0x0f */ 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun /* 119*4882a593Smuzhiyun * These registers are referenced by codec driver 120*4882a593Smuzhiyun */ 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun #define RK3308_GLB_CON ACODEC_RESET_CTL 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun /* ADC DIGITAL REGISTERS */ 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun /* 127*4882a593Smuzhiyun * The ADC group are 0 ~ 3, that control: 128*4882a593Smuzhiyun * 129*4882a593Smuzhiyun * CH0: left_0(ADC1) and right_0(ADC2) 130*4882a593Smuzhiyun * CH1: left_1(ADC3) and right_1(ADC4) 131*4882a593Smuzhiyun * CH2: left_2(ADC5) and right_2(ADC6) 132*4882a593Smuzhiyun * CH3: left_3(ADC7) and right_3(ADC8) 133*4882a593Smuzhiyun */ 134*4882a593Smuzhiyun #define RK3308_ADC_DIG_OFFSET(ch) ((ch & 0x3) * 0xc0 + 0x0) 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun #define RK3308_ADC_DIG_CON01(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_I2S_CTL0) 137*4882a593Smuzhiyun #define RK3308_ADC_DIG_CON02(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_I2S_CTL1) 138*4882a593Smuzhiyun #define RK3308_ADC_DIG_CON03(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_BIST_MODE_SEL) 139*4882a593Smuzhiyun #define RK3308_ADC_DIG_CON04(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_HPF_PATH) 140*4882a593Smuzhiyun #define RK3308BS_ADC_DIG_CON05(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_S_ADC_DIG_VOL_CON_L) 141*4882a593Smuzhiyun #define RK3308BS_ADC_DIG_CON06(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_S_ADC_DIG_VOL_CON_R) 142*4882a593Smuzhiyun #define RK3308_ADC_DIG_CON07(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_DATA_PATH) /* Removed from S */ 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun #define RK3308_ALC_L_DIG_CON00(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_L_CTL0) 145*4882a593Smuzhiyun #define RK3308_ALC_L_DIG_CON01(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_L_CTL1) 146*4882a593Smuzhiyun #define RK3308_ALC_L_DIG_CON02(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_L_CTL2) 147*4882a593Smuzhiyun #define RK3308_ALC_L_DIG_CON03(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_L_CTL3) 148*4882a593Smuzhiyun #define RK3308_ALC_L_DIG_CON04(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_L_CTL4) 149*4882a593Smuzhiyun #define RK3308_ALC_L_DIG_CON05(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_L_LO_MAX) 150*4882a593Smuzhiyun #define RK3308_ALC_L_DIG_CON06(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_L_HI_MAX) 151*4882a593Smuzhiyun #define RK3308_ALC_L_DIG_CON07(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_L_LO_MIN) 152*4882a593Smuzhiyun #define RK3308_ALC_L_DIG_CON08(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_L_HI_MIN) 153*4882a593Smuzhiyun #define RK3308_ALC_L_DIG_CON09(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_L_CTL5) 154*4882a593Smuzhiyun #define RK3308BS_ALC_L_DIG_CON11(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_S_ADC_PEAK_DET_VALUE_DEC_RATE_L) 155*4882a593Smuzhiyun #define RK3308_ALC_L_DIG_CON12(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_AGC_L_RO_GAIN) 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun #define RK3308_ALC_R_DIG_CON00(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_R_CTL0) 158*4882a593Smuzhiyun #define RK3308_ALC_R_DIG_CON01(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_R_CTL1) 159*4882a593Smuzhiyun #define RK3308_ALC_R_DIG_CON02(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_R_CTL2) 160*4882a593Smuzhiyun #define RK3308_ALC_R_DIG_CON03(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_R_CTL3) 161*4882a593Smuzhiyun #define RK3308_ALC_R_DIG_CON04(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_R_CTL4) 162*4882a593Smuzhiyun #define RK3308_ALC_R_DIG_CON05(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_R_LO_MAX) 163*4882a593Smuzhiyun #define RK3308_ALC_R_DIG_CON06(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_R_HI_MAX) 164*4882a593Smuzhiyun #define RK3308_ALC_R_DIG_CON07(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_R_LO_MIN) 165*4882a593Smuzhiyun #define RK3308_ALC_R_DIG_CON08(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_R_HI_MIN) 166*4882a593Smuzhiyun #define RK3308_ALC_R_DIG_CON09(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_PGA_AGC_R_CTL5) 167*4882a593Smuzhiyun #define RK3308BS_ALC_R_DIG_CON11(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_S_ADC_PEAK_DET_VALUE_DEC_RATE_R) 168*4882a593Smuzhiyun #define RK3308_ALC_R_DIG_CON12(ch) (RK3308_ADC_DIG_OFFSET(ch) + ACODEC_ADC_AGC_R_RO_GAIN) 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun /* DAC DIGITAL REGISTERS */ 171*4882a593Smuzhiyun #define RK3308_DAC_DIG_OFFSET 0x300 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun #define RK3308_DAC_DIG_CON01 (RK3308_DAC_DIG_OFFSET + ACODEC_DAC_I2S_CTL0) 174*4882a593Smuzhiyun #define RK3308_DAC_DIG_CON02 (RK3308_DAC_DIG_OFFSET + ACODEC_DAC_I2S_CTL1) 175*4882a593Smuzhiyun #define RK3308_DAC_DIG_CON03 (RK3308_DAC_DIG_OFFSET + ACODEC_DAC_BIST_MODE_SEL) 176*4882a593Smuzhiyun #define RK3308_DAC_DIG_CON04 (RK3308_DAC_DIG_OFFSET + ACODEC_DAC_DIGITAL_GAIN) 177*4882a593Smuzhiyun #define RK3308BS_DAC_DIG_CON04 (RK3308_DAC_DIG_OFFSET + ACODEC_DAC_DIGITAL_GAIN) 178*4882a593Smuzhiyun #define RK3308_DAC_DIG_CON05 (RK3308_DAC_DIG_OFFSET + ACODEC_DAC_DATA_SEL) 179*4882a593Smuzhiyun #define RK3308BS_DAC_DIG_CON05 (RK3308_DAC_DIG_OFFSET + ACODEC_DAC_DATA_SEL) 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun #define RK3308_DAC_DIG_CON10 (RK3308_DAC_DIG_OFFSET + ACODEC_DAC_DATA_HI) 182*4882a593Smuzhiyun #define RK3308_DAC_DIG_CON11 (RK3308_DAC_DIG_OFFSET + ACODEC_DAC_DATA_LO) 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun #define RK3308_DAC_DIG_CON12 (RK3308_DAC_DIG_OFFSET + ACODEC_DAC_HPDET_DELAYTIME_HI) 185*4882a593Smuzhiyun #define RK3308_DAC_DIG_CON13 (RK3308_DAC_DIG_OFFSET + ACODEC_DAC_HPDET_DELAYTIME_LO) 186*4882a593Smuzhiyun #define RK3308_DAC_DIG_CON14 (RK3308_DAC_DIG_OFFSET + ACODEC_DAC_HPDET_STATUS) 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun #define RK3308BS_DAC_DIG_CON09 (RK3308_DAC_DIG_OFFSET + ACODEC_S_DAC_DATA_HI) 189*4882a593Smuzhiyun #define RK3308BS_DAC_DIG_CON10 (RK3308_DAC_DIG_OFFSET + ACODEC_S_DAC_DATA_LO) 190*4882a593Smuzhiyun #define RK3308BS_DAC_DIG_CON11 (RK3308_DAC_DIG_OFFSET + ACODEC_S_DAC_DELAY_TIME_DET_HI) 191*4882a593Smuzhiyun #define RK3308BS_DAC_DIG_CON12 (RK3308_DAC_DIG_OFFSET + ACODEC_S_DAC_DELAY_TIME_DET_LO) 192*4882a593Smuzhiyun #define RK3308BS_DAC_DIG_CON13 (RK3308_DAC_DIG_OFFSET + ACODEC_S_DAC_HPDET_STATUS) 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun #define RK3308_CODEC_HEADPHONE_CON RK3308_DAC_DIG_CON14 195*4882a593Smuzhiyun #define RK3308BS_CODEC_HEADPHONE_CON RK3308BS_DAC_DIG_CON13 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun /* ADC ANALOG REGISTERS */ 198*4882a593Smuzhiyun /* 199*4882a593Smuzhiyun * The ADC group are 0 ~ 3, that control: 200*4882a593Smuzhiyun * 201*4882a593Smuzhiyun * CH0: left_0(ADC1) and right_0(ADC2) 202*4882a593Smuzhiyun * CH1: left_1(ADC3) and right_1(ADC4) 203*4882a593Smuzhiyun * CH2: left_2(ADC5) and right_2(ADC6) 204*4882a593Smuzhiyun * CH3: left_3(ADC7) and right_3(ADC8) 205*4882a593Smuzhiyun */ 206*4882a593Smuzhiyun #define RK3308_ADC_ANA_OFFSET(ch) (((ch) & 0x3) * 0x40 + 0x340) 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun #define RK3308_ADC_ANA_CON00(ch) (RK3308_ADC_ANA_OFFSET(ch) + ACODEC_ADC_ANA_MIC_CTL) 209*4882a593Smuzhiyun #define RK3308_ADC_ANA_CON01(ch) (RK3308_ADC_ANA_OFFSET(ch) + ACODEC_ADC_ANA_MIC_GAIN) 210*4882a593Smuzhiyun #define RK3308_ADC_ANA_CON02(ch) (RK3308_ADC_ANA_OFFSET(ch) + ACODEC_ADC_ANA_ALC_CTL) 211*4882a593Smuzhiyun #define RK3308_ADC_ANA_CON03(ch) (RK3308_ADC_ANA_OFFSET(ch) + ACODEC_ADC_ANA_ALC_GAIN1) 212*4882a593Smuzhiyun #define RK3308_ADC_ANA_CON04(ch) (RK3308_ADC_ANA_OFFSET(ch) + ACODEC_ADC_ANA_ALC_GAIN2) 213*4882a593Smuzhiyun #define RK3308_ADC_ANA_CON05(ch) (RK3308_ADC_ANA_OFFSET(ch) + ACODEC_ADC_ANA_CTL0) 214*4882a593Smuzhiyun #define RK3308_ADC_ANA_CON06(ch) (RK3308_ADC_ANA_OFFSET(ch) + ACODEC_ADC_ANA_CTL1) 215*4882a593Smuzhiyun #define RK3308_ADC_ANA_CON07(ch) (RK3308_ADC_ANA_OFFSET(ch) + ACODEC_ADC_ANA_CTL2) 216*4882a593Smuzhiyun #define RK3308_ADC_ANA_CON08(ch) (RK3308_ADC_ANA_OFFSET(ch) + ACODEC_ADC_ANA_CTL3) 217*4882a593Smuzhiyun #define RK3308BS_ADC_ANA_CON09(ch) (RK3308_ADC_ANA_OFFSET(ch) + ACODEC_S_ADC_ANA_CTL4) 218*4882a593Smuzhiyun #define RK3308_ADC_ANA_CON10(ch) (RK3308_ADC_ANA_OFFSET(ch) + ACODEC_ADC_ANA_CTL5) 219*4882a593Smuzhiyun #define RK3308_ADC_ANA_CON11(ch) (RK3308_ADC_ANA_OFFSET(ch) + ACODEC_ADC_ANA_ALC_PGA) 220*4882a593Smuzhiyun 221*4882a593Smuzhiyun /* DAC ANALOG REGISTERS */ 222*4882a593Smuzhiyun #define RK3308_DAC_ANA_OFFSET 0x440 223*4882a593Smuzhiyun #define RK3308_DAC_ANA_CON00 (RK3308_DAC_ANA_OFFSET + ACODEC_DAC_ANA_CTL0) 224*4882a593Smuzhiyun #define RK3308_DAC_ANA_CON01 (RK3308_DAC_ANA_OFFSET + ACODEC_DAC_ANA_POP_VOLT) 225*4882a593Smuzhiyun #define RK3308_DAC_ANA_CON02 (RK3308_DAC_ANA_OFFSET + ACODEC_DAC_ANA_CTL1) 226*4882a593Smuzhiyun #define RK3308_DAC_ANA_CON03 (RK3308_DAC_ANA_OFFSET + ACODEC_DAC_ANA_HPOUT) 227*4882a593Smuzhiyun #define RK3308_DAC_ANA_CON04 (RK3308_DAC_ANA_OFFSET + ACODEC_DAC_ANA_LINEOUT) 228*4882a593Smuzhiyun #define RK3308_DAC_ANA_CON05 (RK3308_DAC_ANA_OFFSET + ACODEC_DAC_ANA_L_HPOUT_GAIN) 229*4882a593Smuzhiyun #define RK3308_DAC_ANA_CON06 (RK3308_DAC_ANA_OFFSET + ACODEC_DAC_ANA_R_HPOUT_GAIN) 230*4882a593Smuzhiyun #define RK3308_DAC_ANA_CON07 (RK3308_DAC_ANA_OFFSET + ACODEC_DAC_ANA_DRV_HPOUT) 231*4882a593Smuzhiyun #define RK3308_DAC_ANA_CON08 (RK3308_DAC_ANA_OFFSET + ACODEC_DAC_ANA_DRV_LINEOUT) 232*4882a593Smuzhiyun #define RK3308_DAC_ANA_CON12 (RK3308_DAC_ANA_OFFSET + ACODEC_DAC_ANA_HPMIX_CTL0) 233*4882a593Smuzhiyun #define RK3308_DAC_ANA_CON13 (RK3308_DAC_ANA_OFFSET + ACODEC_DAC_ANA_HPMIX_CTL1) 234*4882a593Smuzhiyun #define RK3308_DAC_ANA_CON14 (RK3308_DAC_ANA_OFFSET + ACODEC_DAC_ANA_LINEOUT_CTL0) 235*4882a593Smuzhiyun #define RK3308_DAC_ANA_CON15 (RK3308_DAC_ANA_OFFSET + ACODEC_DAC_ANA_LINEOUT_CTL1) 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun /* 238*4882a593Smuzhiyun * These are the bits for registers 239*4882a593Smuzhiyun */ 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun /* RK3308_GLB_CON - REG: 0x0000 */ 242*4882a593Smuzhiyun #define RK3308_ADC_BIST_WORK (1 << 7) 243*4882a593Smuzhiyun #define RK3308_ADC_BIST_RESET (0 << 7) 244*4882a593Smuzhiyun #define RK3308_DAC_BIST_WORK (1 << 6) 245*4882a593Smuzhiyun #define RK3308_DAC_BIST_RESET (0 << 6) 246*4882a593Smuzhiyun #define RK3308_ADC_MCLK_MSK (1 << 5) 247*4882a593Smuzhiyun #define RK3308_ADC_MCLK_DIS (1 << 5) 248*4882a593Smuzhiyun #define RK3308_ADC_MCLK_EN (0 << 5) 249*4882a593Smuzhiyun #define RK3308_DAC_MCLK_MSK (1 << 4) 250*4882a593Smuzhiyun #define RK3308_DAC_MCLK_DIS (1 << 4) 251*4882a593Smuzhiyun #define RK3308_DAC_MCLK_EN (0 << 4) 252*4882a593Smuzhiyun #define RK3308_CODEC_RST_MSK (0x7 << 0) 253*4882a593Smuzhiyun #define RK3308_ADC_DIG_WORK (1 << 2) 254*4882a593Smuzhiyun #define RK3308_ADC_DIG_RESET (0 << 2) 255*4882a593Smuzhiyun #define RK3308_DAC_DIG_WORK (1 << 1) 256*4882a593Smuzhiyun #define RK3308_DAC_DIG_RESET (0 << 1) 257*4882a593Smuzhiyun #define RK3308_SYS_WORK (1 << 0) 258*4882a593Smuzhiyun #define RK3308_SYS_RESET (0 << 0) 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun /* RK3308_ADC_DIG_CON01 - REG: 0x0004 */ 261*4882a593Smuzhiyun #define RK3308_ADC_I2S_LRC_POL_MSK (1 << 0) 262*4882a593Smuzhiyun #define RK3308_ADC_I2S_LRC_POL_REVERSAL (1 << 0) 263*4882a593Smuzhiyun #define RK3308_ADC_I2S_LRC_POL_NORMAL (0 << 0) 264*4882a593Smuzhiyun #define RK3308_ADC_I2S_VALID_LEN_SFT 5 265*4882a593Smuzhiyun #define RK3308_ADC_I2S_VALID_LEN_MSK (0x3 << RK3308_ADC_I2S_VALID_LEN_SFT) 266*4882a593Smuzhiyun #define RK3308_ADC_I2S_VALID_LEN_32BITS (0x3 << RK3308_ADC_I2S_VALID_LEN_SFT) 267*4882a593Smuzhiyun #define RK3308_ADC_I2S_VALID_LEN_24BITS (0x2 << RK3308_ADC_I2S_VALID_LEN_SFT) 268*4882a593Smuzhiyun #define RK3308_ADC_I2S_VALID_LEN_20BITS (0x1 << RK3308_ADC_I2S_VALID_LEN_SFT) 269*4882a593Smuzhiyun #define RK3308_ADC_I2S_VALID_LEN_16BITS (0x0 << RK3308_ADC_I2S_VALID_LEN_SFT) 270*4882a593Smuzhiyun #define RK3308_ADC_I2S_MODE_SFT 3 271*4882a593Smuzhiyun #define RK3308_ADC_I2S_MODE_MSK (0x3 << RK3308_ADC_I2S_MODE_SFT) 272*4882a593Smuzhiyun #define RK3308_ADC_I2S_MODE_PCM (0x3 << RK3308_ADC_I2S_MODE_SFT) 273*4882a593Smuzhiyun #define RK3308_ADC_I2S_MODE_I2S (0x2 << RK3308_ADC_I2S_MODE_SFT) 274*4882a593Smuzhiyun #define RK3308_ADC_I2S_MODE_LJ (0x1 << RK3308_ADC_I2S_MODE_SFT) 275*4882a593Smuzhiyun #define RK3308_ADC_I2S_MODE_RJ (0x0 << RK3308_ADC_I2S_MODE_SFT) 276*4882a593Smuzhiyun #define RK3308_ADC_I2S_LR_MSK (1 << 1) 277*4882a593Smuzhiyun #define RK3308_ADC_I2S_LR_SWAP (1 << 1) 278*4882a593Smuzhiyun #define RK3308_ADC_I2S_LR_NORMAL (0 << 1) 279*4882a593Smuzhiyun #define RK3308_ADC_I2S_TYPE_MSK (1 << 0) 280*4882a593Smuzhiyun #define RK3308_ADC_I2S_MONO (1 << 0) 281*4882a593Smuzhiyun #define RK3308_ADC_I2S_STEREO (0 << 0) 282*4882a593Smuzhiyun #define RK3308BS_ADC_I2S_SWAP_SFT 0 283*4882a593Smuzhiyun #define RK3308BS_ADC_I2S_LR (0 << RK3308BS_ADC_I2S_SWAP_SFT) 284*4882a593Smuzhiyun #define RK3308BS_ADC_I2S_LL (1 << RK3308BS_ADC_I2S_SWAP_SFT) 285*4882a593Smuzhiyun #define RK3308BS_ADC_I2S_RR (2 << RK3308BS_ADC_I2S_SWAP_SFT) 286*4882a593Smuzhiyun #define RK3308BS_ADC_I2S_RL (3 << RK3308BS_ADC_I2S_SWAP_SFT) 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun /* RK3308_ADC_DIG_CON02 - REG: 0x0008 */ 289*4882a593Smuzhiyun #define RK3308_ADC_IO_MODE_MSK (1 << 5) 290*4882a593Smuzhiyun #define RK3308_ADC_IO_MODE_MASTER (1 << 5) 291*4882a593Smuzhiyun #define RK3308_ADC_IO_MODE_SLAVE (0 << 5) 292*4882a593Smuzhiyun #define RK3308_ADC_MODE_MSK (1 << 4) 293*4882a593Smuzhiyun #define RK3308_ADC_MODE_MASTER (1 << 4) 294*4882a593Smuzhiyun #define RK3308_ADC_MODE_SLAVE (0 << 4) 295*4882a593Smuzhiyun #define RK3308_ADC_I2S_FRAME_LEN_SFT 2 296*4882a593Smuzhiyun #define RK3308_ADC_I2S_FRAME_LEN_MSK (0x3 << RK3308_ADC_I2S_FRAME_LEN_SFT) 297*4882a593Smuzhiyun #define RK3308_ADC_I2S_FRAME_32BITS (0x3 << RK3308_ADC_I2S_FRAME_LEN_SFT) 298*4882a593Smuzhiyun #define RK3308_ADC_I2S_FRAME_24BITS (0x2 << RK3308_ADC_I2S_FRAME_LEN_SFT) 299*4882a593Smuzhiyun #define RK3308_ADC_I2S_FRAME_20BITS (0x1 << RK3308_ADC_I2S_FRAME_LEN_SFT) 300*4882a593Smuzhiyun #define RK3308_ADC_I2S_FRAME_16BITS (0x0 << RK3308_ADC_I2S_FRAME_LEN_SFT) 301*4882a593Smuzhiyun #define RK3308_ADC_I2S_MSK (0x1 << 1) 302*4882a593Smuzhiyun #define RK3308_ADC_I2S_WORK (0x1 << 1) 303*4882a593Smuzhiyun #define RK3308_ADC_I2S_RESET (0x0 << 1) 304*4882a593Smuzhiyun #define RK3308_ADC_I2S_BIT_CLK_POL_MSK (0x1 << 0) 305*4882a593Smuzhiyun #define RK3308_ADC_I2S_BIT_CLK_POL_REVERSAL (0x1 << 0) 306*4882a593Smuzhiyun #define RK3308_ADC_I2S_BIT_CLK_POL_NORMAL (0x0 << 0) 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun /* RK3308_ADC_DIG_CON03 - REG: 0x000c */ 309*4882a593Smuzhiyun #define RK3308_ADC_L_CH_BIST_SFT 2 310*4882a593Smuzhiyun #define RK3308_ADC_L_CH_BIST_MSK (0x3 << RK3308_ADC_L_CH_BIST_SFT) 311*4882a593Smuzhiyun #define RK3308_ADC_L_CH_NORMAL_RIGHT (0x3 << RK3308_ADC_L_CH_BIST_SFT) /* normal mode */ 312*4882a593Smuzhiyun #define RK3308_ADC_L_CH_BIST_CUBE (0x2 << RK3308_ADC_L_CH_BIST_SFT) 313*4882a593Smuzhiyun #define RK3308_ADC_L_CH_BIST_SINE (0x1 << RK3308_ADC_L_CH_BIST_SFT) 314*4882a593Smuzhiyun #define RK3308_ADC_L_CH_NORMAL_LEFT (0x0 << RK3308_ADC_L_CH_BIST_SFT) /* normal mode */ 315*4882a593Smuzhiyun #define RK3308_ADC_R_CH_BIST_SFT 0 316*4882a593Smuzhiyun #define RK3308_ADC_R_CH_BIST_MSK (0x3 << RK3308_ADC_R_CH_BIST_SFT) 317*4882a593Smuzhiyun #define RK3308_ADC_R_CH_NORMAL_LEFT (0x3 << RK3308_ADC_R_CH_BIST_SFT) /* normal mode */ 318*4882a593Smuzhiyun #define RK3308_ADC_R_CH_BIST_CUBE (0x2 << RK3308_ADC_R_CH_BIST_SFT) 319*4882a593Smuzhiyun #define RK3308_ADC_R_CH_BIST_SINE (0x1 << RK3308_ADC_R_CH_BIST_SFT) 320*4882a593Smuzhiyun #define RK3308_ADC_R_CH_NORMAL_RIGHT (0x0 << RK3308_ADC_R_CH_BIST_SFT) /* normal mode */ 321*4882a593Smuzhiyun 322*4882a593Smuzhiyun /* RK3308_ADC_DIG_CON04 - REG: 0x0010 */ 323*4882a593Smuzhiyun #define RK3308_ADC_HPF_PATH_SFT 2 324*4882a593Smuzhiyun #define RK3308_ADC_HPF_PATH_MSK (1 << RK3308_ADC_HPF_PATH_SFT) 325*4882a593Smuzhiyun #define RK3308_ADC_HPF_PATH_DIS (1 << RK3308_ADC_HPF_PATH_SFT) 326*4882a593Smuzhiyun #define RK3308_ADC_HPF_PATH_EN (0 << RK3308_ADC_HPF_PATH_SFT) 327*4882a593Smuzhiyun #define RK3308_ADC_HPF_CUTOFF_SFT 0 328*4882a593Smuzhiyun #define RK3308_ADC_HPF_CUTOFF_MSK (0x3 << RK3308_ADC_HPF_CUTOFF_SFT) 329*4882a593Smuzhiyun #define RK3308_ADC_HPF_CUTOFF_612HZ (0x2 << RK3308_ADC_HPF_CUTOFF_SFT) 330*4882a593Smuzhiyun #define RK3308_ADC_HPF_CUTOFF_245HZ (0x1 << RK3308_ADC_HPF_CUTOFF_SFT) 331*4882a593Smuzhiyun #define RK3308_ADC_HPF_CUTOFF_20HZ (0x0 << RK3308_ADC_HPF_CUTOFF_SFT) 332*4882a593Smuzhiyun 333*4882a593Smuzhiyun /* RK3308BS_ADC_DIG_CON05 - REG: 0x0014 */ 334*4882a593Smuzhiyun #define RK3308_ADC_DIG_VOL_CON_L_MSK 0xff 335*4882a593Smuzhiyun #define RK3308_ADC_DIG_VOL_CON_L(x) ((x) & RK3308_ADC_DIG_VOL_CON_L_MSK) 336*4882a593Smuzhiyun /* RK3308BS_ADC_DIG_CON06 - REG: 0x0018 */ 337*4882a593Smuzhiyun #define RK3308_ADC_DIG_VOL_CON_R_MSK 0xff 338*4882a593Smuzhiyun #define RK3308_ADC_DIG_VOL_CON_R(x) ((x) & RK3308_ADC_DIG_VOL_CON_R_MSK) 339*4882a593Smuzhiyun #define RK3308_ADC_DIG_VOL_0DB 0xc2 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun /* RK3308_ADC_DIG_CON07 - REG: 0x001c */ 342*4882a593Smuzhiyun #define RK3308_ADCL_DATA_SFT 4 343*4882a593Smuzhiyun #define RK3308_ADCL_DATA(x) ((x) << RK3308_ADCL_DATA_SFT) 344*4882a593Smuzhiyun #define RK3308_ADCR_DATA_SFT 2 345*4882a593Smuzhiyun #define RK3308_ADCR_DATA(x) ((x) << RK3308_ADCR_DATA_SFT) 346*4882a593Smuzhiyun #define RK3308_ADCL_DATA_SEL_ADCL (0x1 << 1) 347*4882a593Smuzhiyun #define RK3308_ADCL_DATA_SEL_NORMAL (0x0 << 1) 348*4882a593Smuzhiyun #define RK3308_ADCR_DATA_SEL_ADCR (0x1 << 0) 349*4882a593Smuzhiyun #define RK3308_ADCR_DATA_SEL_NORMAL (0x0 << 0) 350*4882a593Smuzhiyun 351*4882a593Smuzhiyun /* 352*4882a593Smuzhiyun * RK3308_ALC_L_DIG_CON00 - REG: 0x0040 + ch * 0xc0 353*4882a593Smuzhiyun * RK3308_ALC_R_DIG_CON00 - REG: 0x0080 + ch * 0xc0 354*4882a593Smuzhiyun */ 355*4882a593Smuzhiyun #define RK3308_GAIN_ATTACK_JACK (0x1 << 6) 356*4882a593Smuzhiyun #define RK3308_GAIN_ATTACK_NORMAL (0x0 << 6) 357*4882a593Smuzhiyun #define RK3308_CTRL_GEN_SFT 4 358*4882a593Smuzhiyun #define RK3308_CTRL_GEN_MSK (0x3 << RK3308_ALC_CTRL_GEN_SFT) 359*4882a593Smuzhiyun #define RK3308_CTRL_GEN_JACK3 (0x3 << RK3308_ALC_CTRL_GEN_SFT) 360*4882a593Smuzhiyun #define RK3308_CTRL_GEN_JACK2 (0x2 << RK3308_ALC_CTRL_GEN_SFT) 361*4882a593Smuzhiyun #define RK3308_CTRL_GEN_JACK1 (0x1 << RK3308_ALC_CTRL_GEN_SFT) 362*4882a593Smuzhiyun #define RK3308_CTRL_GEN_NORMAL (0x0 << RK3308_ALC_CTRL_GEN_SFT) 363*4882a593Smuzhiyun #define RK3308_AGC_HOLD_TIME_SFT 0 364*4882a593Smuzhiyun #define RK3308_AGC_HOLD_TIME_MSK (0xf << RK3308_AGC_HOLD_TIME_SFT) 365*4882a593Smuzhiyun #define RK3308_AGC_HOLD_TIME_1S (0xa << RK3308_AGC_HOLD_TIME_SFT) 366*4882a593Smuzhiyun #define RK3308_AGC_HOLD_TIME_512MS (0x9 << RK3308_AGC_HOLD_TIME_SFT) 367*4882a593Smuzhiyun #define RK3308_AGC_HOLD_TIME_256MS (0x8 << RK3308_AGC_HOLD_TIME_SFT) 368*4882a593Smuzhiyun #define RK3308_AGC_HOLD_TIME_128MS (0x7 << RK3308_AGC_HOLD_TIME_SFT) 369*4882a593Smuzhiyun #define RK3308_AGC_HOLD_TIME_64MS (0x6 << RK3308_AGC_HOLD_TIME_SFT) 370*4882a593Smuzhiyun #define RK3308_AGC_HOLD_TIME_32MS (0x5 << RK3308_AGC_HOLD_TIME_SFT) 371*4882a593Smuzhiyun #define RK3308_AGC_HOLD_TIME_16MS (0x4 << RK3308_AGC_HOLD_TIME_SFT) 372*4882a593Smuzhiyun #define RK3308_AGC_HOLD_TIME_8MS (0x3 << RK3308_AGC_HOLD_TIME_SFT) 373*4882a593Smuzhiyun #define RK3308_AGC_HOLD_TIME_4MS (0x2 << RK3308_AGC_HOLD_TIME_SFT) 374*4882a593Smuzhiyun #define RK3308_AGC_HOLD_TIME_2MS (0x1 << RK3308_AGC_HOLD_TIME_SFT) 375*4882a593Smuzhiyun #define RK3308_AGC_HOLD_TIME_0MS (0x0 << RK3308_AGC_HOLD_TIME_SFT) 376*4882a593Smuzhiyun 377*4882a593Smuzhiyun /* 378*4882a593Smuzhiyun * RK3308_ALC_L_DIG_CON01 - REG: 0x0044 + ch * 0xc0 379*4882a593Smuzhiyun * RK3308_ALC_R_DIG_CON01 - REG: 0x0084 + ch * 0xc0 380*4882a593Smuzhiyun */ 381*4882a593Smuzhiyun #define RK3308_AGC_DECAY_TIME_SFT 4 382*4882a593Smuzhiyun /* Normal mode (reg_agc_mode = 0) */ 383*4882a593Smuzhiyun #define RK3308_AGC_DECAY_NORMAL_MSK (0xf << RK3308_AGC_DECAY_TIME_SFT) 384*4882a593Smuzhiyun #define RK3308_AGC_DECAY_NORMAL_512MS (0xa << RK3308_AGC_DECAY_TIME_SFT) 385*4882a593Smuzhiyun #define RK3308_AGC_DECAY_NORMAL_256MS (0x9 << RK3308_AGC_DECAY_TIME_SFT) 386*4882a593Smuzhiyun #define RK3308_AGC_DECAY_NORMAL_128MS (0x8 << RK3308_AGC_DECAY_TIME_SFT) 387*4882a593Smuzhiyun #define RK3308_AGC_DECAY_NORMAL_64MS (0x7 << RK3308_AGC_DECAY_TIME_SFT) 388*4882a593Smuzhiyun #define RK3308_AGC_DECAY_NORMAL_32MS (0x6 << RK3308_AGC_DECAY_TIME_SFT) 389*4882a593Smuzhiyun #define RK3308_AGC_DECAY_NORMAL_16MS (0x5 << RK3308_AGC_DECAY_TIME_SFT) 390*4882a593Smuzhiyun #define RK3308_AGC_DECAY_NORMAL_8MS (0x4 << RK3308_AGC_DECAY_TIME_SFT) 391*4882a593Smuzhiyun #define RK3308_AGC_DECAY_NORMAL_4MS (0x3 << RK3308_AGC_DECAY_TIME_SFT) 392*4882a593Smuzhiyun #define RK3308_AGC_DECAY_NORMAL_2MS (0x2 << RK3308_AGC_DECAY_TIME_SFT) 393*4882a593Smuzhiyun #define RK3308_AGC_DECAY_NORMAL_1MS (0x1 << RK3308_AGC_DECAY_TIME_SFT) 394*4882a593Smuzhiyun #define RK3308_AGC_DECAY_NORMAL_0MS (0x0 << RK3308_AGC_DECAY_TIME_SFT) 395*4882a593Smuzhiyun /* Limiter mode (reg_agc_mode = 1) */ 396*4882a593Smuzhiyun #define RK3308_AGC_DECAY_LIMITER_MSK (0xf << RK3308_AGC_DECAY_TIME_SFT) 397*4882a593Smuzhiyun #define RK3308_AGC_DECAY_LIMITER_128MS (0xa << RK3308_AGC_DECAY_TIME_SFT) 398*4882a593Smuzhiyun #define RK3308_AGC_DECAY_LIMITER_64MS (0x9 << RK3308_AGC_DECAY_TIME_SFT) 399*4882a593Smuzhiyun #define RK3308_AGC_DECAY_LIMITER_32MS (0x8 << RK3308_AGC_DECAY_TIME_SFT) 400*4882a593Smuzhiyun #define RK3308_AGC_DECAY_LIMITER_16MS (0x7 << RK3308_AGC_DECAY_TIME_SFT) 401*4882a593Smuzhiyun #define RK3308_AGC_DECAY_LIMITER_8MS (0x6 << RK3308_AGC_DECAY_TIME_SFT) 402*4882a593Smuzhiyun #define RK3308_AGC_DECAY_LIMITER_4MS (0x5 << RK3308_AGC_DECAY_TIME_SFT) 403*4882a593Smuzhiyun #define RK3308_AGC_DECAY_LIMITER_2MS (0x4 << RK3308_AGC_DECAY_TIME_SFT) 404*4882a593Smuzhiyun #define RK3308_AGC_DECAY_LIMITER_1MS (0x3 << RK3308_AGC_DECAY_TIME_SFT) 405*4882a593Smuzhiyun #define RK3308_AGC_DECAY_LIMITER_500US (0x2 << RK3308_AGC_DECAY_TIME_SFT) 406*4882a593Smuzhiyun #define RK3308_AGC_DECAY_LIMITER_250US (0x1 << RK3308_AGC_DECAY_TIME_SFT) 407*4882a593Smuzhiyun #define RK3308_AGC_DECAY_LIMITER_125US (0x0 << RK3308_AGC_DECAY_TIME_SFT) 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_TIME_SFT 0 410*4882a593Smuzhiyun /* Normal mode (reg_agc_mode = 0) */ 411*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_NORMAL_MSK (0xf << RK3308_AGC_ATTACK_TIME_SFT) 412*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_NORMAL_128MS (0xa << RK3308_AGC_ATTACK_TIME_SFT) 413*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_NORMAL_64MS (0x9 << RK3308_AGC_ATTACK_TIME_SFT) 414*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_NORMAL_32MS (0x8 << RK3308_AGC_ATTACK_TIME_SFT) 415*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_NORMAL_16MS (0x7 << RK3308_AGC_ATTACK_TIME_SFT) 416*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_NORMAL_8MS (0x6 << RK3308_AGC_ATTACK_TIME_SFT) 417*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_NORMAL_4MS (0x5 << RK3308_AGC_ATTACK_TIME_SFT) 418*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_NORMAL_2MS (0x4 << RK3308_AGC_ATTACK_TIME_SFT) 419*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_NORMAL_1MS (0x3 << RK3308_AGC_ATTACK_TIME_SFT) 420*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_NORMAL_500US (0x2 << RK3308_AGC_ATTACK_TIME_SFT) 421*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_NORMAL_250US (0x1 << RK3308_AGC_ATTACK_TIME_SFT) 422*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_NORMAL_125US (0x0 << RK3308_AGC_ATTACK_TIME_SFT) 423*4882a593Smuzhiyun /* Limiter mode (reg_agc_mode = 1) */ 424*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_LIMITER_MSK (0xf << RK3308_AGC_ATTACK_TIME_SFT) 425*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_LIMITER_32MS (0xa << RK3308_AGC_ATTACK_TIME_SFT) 426*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_LIMITER_16MS (0x9 << RK3308_AGC_ATTACK_TIME_SFT) 427*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_LIMITER_8MS (0x8 << RK3308_AGC_ATTACK_TIME_SFT) 428*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_LIMITER_4MS (0x7 << RK3308_AGC_ATTACK_TIME_SFT) 429*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_LIMITER_2MS (0x6 << RK3308_AGC_ATTACK_TIME_SFT) 430*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_LIMITER_1MS (0x5 << RK3308_AGC_ATTACK_TIME_SFT) 431*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_LIMITER_500US (0x4 << RK3308_AGC_ATTACK_TIME_SFT) 432*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_LIMITER_250US (0x3 << RK3308_AGC_ATTACK_TIME_SFT) 433*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_LIMITER_125US (0x2 << RK3308_AGC_ATTACK_TIME_SFT) 434*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_LIMITER_64US (0x1 << RK3308_AGC_ATTACK_TIME_SFT) 435*4882a593Smuzhiyun #define RK3308_AGC_ATTACK_LIMITER_32US (0x0 << RK3308_AGC_ATTACK_TIME_SFT) 436*4882a593Smuzhiyun 437*4882a593Smuzhiyun /* 438*4882a593Smuzhiyun * RK3308_ALC_L_DIG_CON02 - REG: 0x0048 + ch * 0xc0 439*4882a593Smuzhiyun * RK3308_ALC_R_DIG_CON02 - REG: 0x0088 + ch * 0xc0 440*4882a593Smuzhiyun */ 441*4882a593Smuzhiyun #define RK3308_AGC_MODE_LIMITER (0x1 << 7) 442*4882a593Smuzhiyun #define RK3308_AGC_MODE_NORMAL (0x0 << 7) 443*4882a593Smuzhiyun #define RK3308_AGC_ZERO_CRO_EN (0x1 << 6) 444*4882a593Smuzhiyun #define RK3308_AGC_ZERO_CRO_DIS (0x0 << 6) 445*4882a593Smuzhiyun #define RK3308_AGC_AMP_RECOVER_GAIN (0x1 << 5) 446*4882a593Smuzhiyun #define RK3308_AGC_AMP_RECOVER_LVOL (0x0 << 5) 447*4882a593Smuzhiyun #define RK3308_AGC_FAST_DEC_EN (0x1 << 4) 448*4882a593Smuzhiyun #define RK3308_AGC_FAST_DEC_DIS (0x0 << 4) 449*4882a593Smuzhiyun #define RK3308_AGC_NOISE_GATE_EN (0x1 << 3) 450*4882a593Smuzhiyun #define RK3308_AGC_NOISE_GATE_DIS (0x0 << 3) 451*4882a593Smuzhiyun #define RK3308_AGC_NOISE_GATE_THRESH_SFT 0 452*4882a593Smuzhiyun #define RK3308_AGC_NOISE_GATE_THRESH_MSK (0x7 << RK3308_AGC_NOISE_GATE_THRESH_SFT) 453*4882a593Smuzhiyun #define RK3308_AGC_NOISE_GATE_THRESH_N81DB (0x7 << RK3308_AGC_NOISE_GATE_THRESH_SFT) 454*4882a593Smuzhiyun #define RK3308_AGC_NOISE_GATE_THRESH_N75DB (0x6 << RK3308_AGC_NOISE_GATE_THRESH_SFT) 455*4882a593Smuzhiyun #define RK3308_AGC_NOISE_GATE_THRESH_N69DB (0x5 << RK3308_AGC_NOISE_GATE_THRESH_SFT) 456*4882a593Smuzhiyun #define RK3308_AGC_NOISE_GATE_THRESH_N63DB (0x4 << RK3308_AGC_NOISE_GATE_THRESH_SFT) 457*4882a593Smuzhiyun #define RK3308_AGC_NOISE_GATE_THRESH_N57DB (0x3 << RK3308_AGC_NOISE_GATE_THRESH_SFT) 458*4882a593Smuzhiyun #define RK3308_AGC_NOISE_GATE_THRESH_N51DB (0x2 << RK3308_AGC_NOISE_GATE_THRESH_SFT) 459*4882a593Smuzhiyun #define RK3308_AGC_NOISE_GATE_THRESH_N45DB (0x1 << RK3308_AGC_NOISE_GATE_THRESH_SFT) 460*4882a593Smuzhiyun #define RK3308_AGC_NOISE_GATE_THRESH_N39DB (0x0 << RK3308_AGC_NOISE_GATE_THRESH_SFT) 461*4882a593Smuzhiyun 462*4882a593Smuzhiyun /* 463*4882a593Smuzhiyun * RK3308_ALC_L_DIG_CON03 - REG: 0x004c + ch * 0xc0 464*4882a593Smuzhiyun * RK3308_ALC_R_DIG_CON03 - REG: 0x008c + ch * 0xc0 465*4882a593Smuzhiyun */ 466*4882a593Smuzhiyun #define RK3308_AGC_PGA_ZERO_CRO_EN (0x1 << 5) 467*4882a593Smuzhiyun #define RK3308_AGC_PGA_ZERO_CRO_DIS (0x0 << 5) 468*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_MAX 0x1f 469*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_MIN 0 470*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_SFT 0 471*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_MSK (0x1f << RK3308_AGC_PGA_GAIN_SFT) 472*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_28_5 (0x1f << RK3308_AGC_PGA_GAIN_SFT) 473*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_27 (0x1e << RK3308_AGC_PGA_GAIN_SFT) 474*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_25_5 (0x1d << RK3308_AGC_PGA_GAIN_SFT) 475*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_24 (0x1c << RK3308_AGC_PGA_GAIN_SFT) 476*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_22_5 (0x1b << RK3308_AGC_PGA_GAIN_SFT) 477*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_21 (0x1a << RK3308_AGC_PGA_GAIN_SFT) 478*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_19_5 (0x19 << RK3308_AGC_PGA_GAIN_SFT) 479*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_18 (0x18 << RK3308_AGC_PGA_GAIN_SFT) 480*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_16_5 (0x17 << RK3308_AGC_PGA_GAIN_SFT) 481*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_15 (0x16 << RK3308_AGC_PGA_GAIN_SFT) 482*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_13_5 (0x15 << RK3308_AGC_PGA_GAIN_SFT) 483*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_12 (0x14 << RK3308_AGC_PGA_GAIN_SFT) 484*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_10_5 (0x13 << RK3308_AGC_PGA_GAIN_SFT) 485*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_9 (0x12 << RK3308_AGC_PGA_GAIN_SFT) 486*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_7_5 (0x11 << RK3308_AGC_PGA_GAIN_SFT) 487*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_6 (0x10 << RK3308_AGC_PGA_GAIN_SFT) 488*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_4_5 (0x0f << RK3308_AGC_PGA_GAIN_SFT) 489*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_3 (0x0e << RK3308_AGC_PGA_GAIN_SFT) 490*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_PDB_1_5 (0x0d << RK3308_AGC_PGA_GAIN_SFT) 491*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_0DB (0x0c << RK3308_AGC_PGA_GAIN_SFT) 492*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_NDB_1_5 (0x0b << RK3308_AGC_PGA_GAIN_SFT) 493*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_NDB_3 (0x0a << RK3308_AGC_PGA_GAIN_SFT) 494*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_NDB_4_5 (0x09 << RK3308_AGC_PGA_GAIN_SFT) 495*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_NDB_6 (0x08 << RK3308_AGC_PGA_GAIN_SFT) 496*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_NDB_7_5 (0x07 << RK3308_AGC_PGA_GAIN_SFT) 497*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_NDB_9 (0x06 << RK3308_AGC_PGA_GAIN_SFT) 498*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_NDB_10_5 (0x05 << RK3308_AGC_PGA_GAIN_SFT) 499*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_NDB_12 (0x04 << RK3308_AGC_PGA_GAIN_SFT) 500*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_NDB_13_5 (0x03 << RK3308_AGC_PGA_GAIN_SFT) 501*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_NDB_15 (0x02 << RK3308_AGC_PGA_GAIN_SFT) 502*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_NDB_16_5 (0x01 << RK3308_AGC_PGA_GAIN_SFT) 503*4882a593Smuzhiyun #define RK3308_AGC_PGA_GAIN_NDB_18 (0x00 << RK3308_AGC_PGA_GAIN_SFT) 504*4882a593Smuzhiyun 505*4882a593Smuzhiyun /* 506*4882a593Smuzhiyun * RK3308_ALC_L_DIG_CON04 - REG: 0x0050 + ch * 0xc0 507*4882a593Smuzhiyun * RK3308_ALC_R_DIG_CON04 - REG: 0x0090 + ch * 0xc0 508*4882a593Smuzhiyun */ 509*4882a593Smuzhiyun #define RK3308_AGC_SLOW_CLK_EN (0x1 << 3) 510*4882a593Smuzhiyun #define RK3308_AGC_SLOW_CLK_DIS (0x0 << 3) 511*4882a593Smuzhiyun #define RK3308_AGC_APPROX_RATE_SFT 0 512*4882a593Smuzhiyun #define RK3308_AGC_APPROX_RATE_MSK (0x7 << RK3308_AGC_APPROX_RATE_SFT) 513*4882a593Smuzhiyun #define RK3308_AGC_APPROX_RATE_8K (0x7 << RK3308_AGC_APPROX_RATE_SFT) 514*4882a593Smuzhiyun #define RK3308_AGC_APPROX_RATE_12K (0x6 << RK3308_AGC_APPROX_RATE_SFT) 515*4882a593Smuzhiyun #define RK3308_AGC_APPROX_RATE_16K (0x5 << RK3308_AGC_APPROX_RATE_SFT) 516*4882a593Smuzhiyun #define RK3308_AGC_APPROX_RATE_24K (0x4 << RK3308_AGC_APPROX_RATE_SFT) 517*4882a593Smuzhiyun #define RK3308_AGC_APPROX_RATE_32K (0x3 << RK3308_AGC_APPROX_RATE_SFT) 518*4882a593Smuzhiyun #define RK3308_AGC_APPROX_RATE_44_1K (0x2 << RK3308_AGC_APPROX_RATE_SFT) 519*4882a593Smuzhiyun #define RK3308_AGC_APPROX_RATE_48K (0x1 << RK3308_AGC_APPROX_RATE_SFT) 520*4882a593Smuzhiyun #define RK3308_AGC_APPROX_RATE_96K (0x0 << RK3308_AGC_APPROX_RATE_SFT) 521*4882a593Smuzhiyun 522*4882a593Smuzhiyun /* 523*4882a593Smuzhiyun * RK3308_ALC_L_DIG_CON05 - REG: 0x0054 + ch * 0xc0 524*4882a593Smuzhiyun * RK3308_ALC_R_DIG_CON05 - REG: 0x0094 + ch * 0xc0 525*4882a593Smuzhiyun */ 526*4882a593Smuzhiyun #define RK3308_AGC_LO_8BITS_AGC_MAX_MSK 0xff 527*4882a593Smuzhiyun 528*4882a593Smuzhiyun /* 529*4882a593Smuzhiyun * RK3308_ALC_L_DIG_CON06 - REG: 0x0058 + ch * 0xc0 530*4882a593Smuzhiyun * RK3308_ALC_R_DIG_CON06 - REG: 0x0098 + ch * 0xc0 531*4882a593Smuzhiyun */ 532*4882a593Smuzhiyun #define RK3308_AGC_HI_8BITS_AGC_MAX_MSK 0xff 533*4882a593Smuzhiyun 534*4882a593Smuzhiyun /* 535*4882a593Smuzhiyun * RK3308_ALC_L_DIG_CON07 - REG: 0x005c + ch * 0xc0 536*4882a593Smuzhiyun * RK3308_ALC_R_DIG_CON07 - REG: 0x009c + ch * 0xc0 537*4882a593Smuzhiyun */ 538*4882a593Smuzhiyun #define RK3308_AGC_LO_8BITS_AGC_MIN_MSK 0xff 539*4882a593Smuzhiyun 540*4882a593Smuzhiyun /* 541*4882a593Smuzhiyun * RK3308_ALC_L_DIG_CON08 - REG: 0x0060 + ch * 0xc0 542*4882a593Smuzhiyun * RK3308_ALC_R_DIG_CON08 - REG: 0x00a0 + ch * 0xc0 543*4882a593Smuzhiyun */ 544*4882a593Smuzhiyun #define RK3308_AGC_HI_8BITS_AGC_MIN_MSK 0xff 545*4882a593Smuzhiyun 546*4882a593Smuzhiyun /* 547*4882a593Smuzhiyun * RK3308_ALC_L_DIG_CON09 - REG: 0x0064 + ch * 0xc0 548*4882a593Smuzhiyun * RK3308_ALC_R_DIG_CON09 - REG: 0x00a4 + ch * 0xc0 549*4882a593Smuzhiyun */ 550*4882a593Smuzhiyun #define RK3308_AGC_FUNC_SEL_MSK (0x1 << 6) 551*4882a593Smuzhiyun #define RK3308_AGC_FUNC_SEL_EN (0x1 << 6) 552*4882a593Smuzhiyun #define RK3308_AGC_FUNC_SEL_DIS (0x0 << 6) 553*4882a593Smuzhiyun #define RK3308_AGC_MAX_GAIN_PGA_MAX 0x7 554*4882a593Smuzhiyun #define RK3308_AGC_MAX_GAIN_PGA_MIN 0 555*4882a593Smuzhiyun #define RK3308_AGC_MAX_GAIN_PGA_SFT 3 556*4882a593Smuzhiyun #define RK3308_AGC_MAX_GAIN_PGA_MSK (0x7 << RK3308_AGC_MAX_GAIN_PGA_SFT) 557*4882a593Smuzhiyun #define RK3308_AGC_MAX_GAIN_PGA_PDB_28_5 (0x7 << RK3308_AGC_MAX_GAIN_PGA_SFT) 558*4882a593Smuzhiyun #define RK3308_AGC_MAX_GAIN_PGA_PDB_22_5 (0x6 << RK3308_AGC_MAX_GAIN_PGA_SFT) 559*4882a593Smuzhiyun #define RK3308_AGC_MAX_GAIN_PGA_PDB_16_5 (0x5 << RK3308_AGC_MAX_GAIN_PGA_SFT) 560*4882a593Smuzhiyun #define RK3308_AGC_MAX_GAIN_PGA_PDB_10_5 (0x4 << RK3308_AGC_MAX_GAIN_PGA_SFT) 561*4882a593Smuzhiyun #define RK3308_AGC_MAX_GAIN_PGA_PDB_4_5 (0x3 << RK3308_AGC_MAX_GAIN_PGA_SFT) 562*4882a593Smuzhiyun #define RK3308_AGC_MAX_GAIN_PGA_NDB_1_5 (0x2 << RK3308_AGC_MAX_GAIN_PGA_SFT) 563*4882a593Smuzhiyun #define RK3308_AGC_MAX_GAIN_PGA_NDB_7_5 (0x1 << RK3308_AGC_MAX_GAIN_PGA_SFT) 564*4882a593Smuzhiyun #define RK3308_AGC_MAX_GAIN_PGA_NDB_13_5 (0x0 << RK3308_AGC_MAX_GAIN_PGA_SFT) 565*4882a593Smuzhiyun #define RK3308_AGC_MIN_GAIN_PGA_MAX 0x7 566*4882a593Smuzhiyun #define RK3308_AGC_MIN_GAIN_PGA_MIN 0 567*4882a593Smuzhiyun #define RK3308_AGC_MIN_GAIN_PGA_SFT 0 568*4882a593Smuzhiyun #define RK3308_AGC_MIN_GAIN_PGA_MSK (0x7 << RK3308_AGC_MIN_GAIN_PGA_SFT) 569*4882a593Smuzhiyun #define RK3308_AGC_MIN_GAIN_PGA_PDB_24 (0x7 << RK3308_AGC_MIN_GAIN_PGA_SFT) 570*4882a593Smuzhiyun #define RK3308_AGC_MIN_GAIN_PGA_PDB_18 (0x6 << RK3308_AGC_MIN_GAIN_PGA_SFT) 571*4882a593Smuzhiyun #define RK3308_AGC_MIN_GAIN_PGA_PDB_12 (0x5 << RK3308_AGC_MIN_GAIN_PGA_SFT) 572*4882a593Smuzhiyun #define RK3308_AGC_MIN_GAIN_PGA_PDB_6 (0x4 << RK3308_AGC_MIN_GAIN_PGA_SFT) 573*4882a593Smuzhiyun #define RK3308_AGC_MIN_GAIN_PGA_0DB (0x3 << RK3308_AGC_MIN_GAIN_PGA_SFT) 574*4882a593Smuzhiyun #define RK3308_AGC_MIN_GAIN_PGA_NDB_6 (0x2 << RK3308_AGC_MIN_GAIN_PGA_SFT) 575*4882a593Smuzhiyun #define RK3308_AGC_MIN_GAIN_PGA_NDB_12 (0x1 << RK3308_AGC_MIN_GAIN_PGA_SFT) 576*4882a593Smuzhiyun #define RK3308_AGC_MIN_GAIN_PGA_NDB_18 (0x0 << RK3308_AGC_MIN_GAIN_PGA_SFT) 577*4882a593Smuzhiyun 578*4882a593Smuzhiyun /* 579*4882a593Smuzhiyun * RK3308BS_ALC_L_DIG_CON11 - REG: 0x006c + ch * 0xc0 580*4882a593Smuzhiyun * RK3308BS_ALC_R_DIG_CON11 - REG: 0x00ac + ch * 0xc0 581*4882a593Smuzhiyun */ 582*4882a593Smuzhiyun #define ACODEC_S_ADC_PEAK_DET_VALUE_DEC_RATE(x) ((x) & 0x1f) 583*4882a593Smuzhiyun 584*4882a593Smuzhiyun /* 585*4882a593Smuzhiyun * RK3308_ALC_L_DIG_CON12 - REG: 0x0070 + ch * 0xc0 586*4882a593Smuzhiyun * RK3308_ALC_R_DIG_CON12 - REG: 0x00b0 + ch * 0xc0 587*4882a593Smuzhiyun */ 588*4882a593Smuzhiyun #define RK3308_AGC_GAIN_MSK 0x1f 589*4882a593Smuzhiyun 590*4882a593Smuzhiyun /* 591*4882a593Smuzhiyun * RK3308BS_ALC_L_DIG_CON12 - REG: 0x0070 + ch * 0xc0 592*4882a593Smuzhiyun * RK3308BS_ALC_R_DIG_CON12 - REG: 0x00b0 + ch * 0xc0 593*4882a593Smuzhiyun */ 594*4882a593Smuzhiyun 595*4882a593Smuzhiyun /* 596*4882a593Smuzhiyun * RK3308BS_ALC_L_DIG_CON13 - REG: 0x0074 + ch * 0xc0 597*4882a593Smuzhiyun * RK3308BS_ALC_R_DIG_CON13 - REG: 0x00b4 + ch * 0xc0 598*4882a593Smuzhiyun */ 599*4882a593Smuzhiyun 600*4882a593Smuzhiyun /* 601*4882a593Smuzhiyun * RK3308BS_ALC_L_DIG_CON14 - REG: 0x0078 + ch * 0xc0 602*4882a593Smuzhiyun * RK3308BS_ALC_R_DIG_CON14 - REG: 0x00b8 + ch * 0xc0 603*4882a593Smuzhiyun */ 604*4882a593Smuzhiyun #define RK3308BS_AGC_GAIN_MSK 0x1f 605*4882a593Smuzhiyun 606*4882a593Smuzhiyun /* RK3308_DAC_DIG_CON01 - REG: 0x0304 */ 607*4882a593Smuzhiyun #define RK3308_DAC_I2S_LRC_POL_MSK (0x1 << 7) 608*4882a593Smuzhiyun #define RK3308_DAC_I2S_LRC_POL_REVERSAL (0x1 << 7) 609*4882a593Smuzhiyun #define RK3308_DAC_I2S_LRC_POL_NORMAL (0x0 << 7) 610*4882a593Smuzhiyun #define RK3308_DAC_I2S_VALID_LEN_SFT 5 611*4882a593Smuzhiyun #define RK3308_DAC_I2S_VALID_LEN_MSK (0x3 << RK3308_DAC_I2S_VALID_LEN_SFT) 612*4882a593Smuzhiyun #define RK3308_DAC_I2S_VALID_LEN_32BITS (0x3 << RK3308_DAC_I2S_VALID_LEN_SFT) 613*4882a593Smuzhiyun #define RK3308_DAC_I2S_VALID_LEN_24BITS (0x2 << RK3308_DAC_I2S_VALID_LEN_SFT) 614*4882a593Smuzhiyun #define RK3308_DAC_I2S_VALID_LEN_20BITS (0x1 << RK3308_DAC_I2S_VALID_LEN_SFT) 615*4882a593Smuzhiyun #define RK3308_DAC_I2S_VALID_LEN_16BITS (0x0 << RK3308_DAC_I2S_VALID_LEN_SFT) 616*4882a593Smuzhiyun #define RK3308_DAC_I2S_MODE_SFT 3 617*4882a593Smuzhiyun #define RK3308_DAC_I2S_MODE_MSK (0x3 << RK3308_DAC_I2S_MODE_SFT) 618*4882a593Smuzhiyun #define RK3308_DAC_I2S_MODE_PCM (0x3 << RK3308_DAC_I2S_MODE_SFT) 619*4882a593Smuzhiyun #define RK3308_DAC_I2S_MODE_I2S (0x2 << RK3308_DAC_I2S_MODE_SFT) 620*4882a593Smuzhiyun #define RK3308_DAC_I2S_MODE_LJ (0x1 << RK3308_DAC_I2S_MODE_SFT) 621*4882a593Smuzhiyun #define RK3308_DAC_I2S_MODE_RJ (0x0 << RK3308_DAC_I2S_MODE_SFT) 622*4882a593Smuzhiyun #define RK3308_DAC_I2S_LR_MSK (0x1 << 2) 623*4882a593Smuzhiyun #define RK3308_DAC_I2S_LR_SWAP (0x1 << 2) 624*4882a593Smuzhiyun #define RK3308_DAC_I2S_LR_NORMAL (0x0 << 2) 625*4882a593Smuzhiyun #define RK3308BS_DAC_I2S_BYPASS_MSK (0x1 << 1) 626*4882a593Smuzhiyun #define RK3308BS_DAC_I2S_BYPASS_EN (0x1 << 1) 627*4882a593Smuzhiyun #define RK3308BS_DAC_I2S_BYPASS_DIS (0x0 << 1) 628*4882a593Smuzhiyun 629*4882a593Smuzhiyun /* RK3308_DAC_DIG_CON02 - REG: 0x0308 */ 630*4882a593Smuzhiyun #define RK3308BS_DAC_IO_MODE_MSK (0x1 << 7) 631*4882a593Smuzhiyun #define RK3308BS_DAC_IO_MODE_MASTER (0x1 << 7) 632*4882a593Smuzhiyun #define RK3308BS_DAC_IO_MODE_SLAVE (0x0 << 7) 633*4882a593Smuzhiyun #define RK3308BS_DAC_MODE_MSK (0x1 << 6) 634*4882a593Smuzhiyun #define RK3308BS_DAC_MODE_MASTER (0x1 << 6) 635*4882a593Smuzhiyun #define RK3308BS_DAC_MODE_SLAVE (0x0 << 6) 636*4882a593Smuzhiyun #define RK3308_DAC_IO_MODE_MSK (0x1 << 5) 637*4882a593Smuzhiyun #define RK3308_DAC_IO_MODE_MASTER (0x1 << 5) 638*4882a593Smuzhiyun #define RK3308_DAC_IO_MODE_SLAVE (0x0 << 5) 639*4882a593Smuzhiyun #define RK3308_DAC_MODE_MSK (0x1 << 4) 640*4882a593Smuzhiyun #define RK3308_DAC_MODE_MASTER (0x1 << 4) 641*4882a593Smuzhiyun #define RK3308_DAC_MODE_SLAVE (0x0 << 4) 642*4882a593Smuzhiyun #define RK3308_DAC_I2S_FRAME_LEN_SFT 2 643*4882a593Smuzhiyun #define RK3308_DAC_I2S_FRAME_LEN_MSK (0x3 << RK3308_DAC_I2S_FRAME_LEN_SFT) 644*4882a593Smuzhiyun #define RK3308_DAC_I2S_FRAME_32BITS (0x3 << RK3308_DAC_I2S_FRAME_LEN_SFT) 645*4882a593Smuzhiyun #define RK3308_DAC_I2S_FRAME_24BITS (0x2 << RK3308_DAC_I2S_FRAME_LEN_SFT) 646*4882a593Smuzhiyun #define RK3308_DAC_I2S_FRAME_20BITS (0x1 << RK3308_DAC_I2S_FRAME_LEN_SFT) 647*4882a593Smuzhiyun #define RK3308_DAC_I2S_FRAME_16BITS (0x0 << RK3308_DAC_I2S_FRAME_LEN_SFT) 648*4882a593Smuzhiyun #define RK3308_DAC_I2S_MSK (0x1 << 1) 649*4882a593Smuzhiyun #define RK3308_DAC_I2S_WORK (0x1 << 1) 650*4882a593Smuzhiyun #define RK3308_DAC_I2S_RESET (0x0 << 1) 651*4882a593Smuzhiyun #define RK3308_DAC_I2S_BIT_CLK_POL_MSK (0x1 << 0) 652*4882a593Smuzhiyun #define RK3308_DAC_I2S_BIT_CLK_POL_REVERSAL (0x1 << 0) 653*4882a593Smuzhiyun #define RK3308_DAC_I2S_BIT_CLK_POL_NORMAL (0x0 << 0) 654*4882a593Smuzhiyun 655*4882a593Smuzhiyun /* RK3308_DAC_DIG_CON03 - REG: 0x030C */ 656*4882a593Smuzhiyun #define RK3308_DAC_L_CH_BIST_SFT 2 657*4882a593Smuzhiyun #define RK3308_DAC_L_CH_BIST_MSK (0x3 << RK3308_DAC_L_CH_BIST_SFT) 658*4882a593Smuzhiyun #define RK3308_DAC_L_CH_BIST_LEFT (0x3 << RK3308_DAC_L_CH_BIST_SFT) /* normal mode */ 659*4882a593Smuzhiyun #define RK3308_DAC_L_CH_BIST_CUBE (0x2 << RK3308_DAC_L_CH_BIST_SFT) 660*4882a593Smuzhiyun #define RK3308_DAC_L_CH_BIST_SINE (0x1 << RK3308_DAC_L_CH_BIST_SFT) 661*4882a593Smuzhiyun #define RK3308_DAC_L_CH_BIST_RIGHT (0x0 << RK3308_DAC_L_CH_BIST_SFT) /* normal mode */ 662*4882a593Smuzhiyun #define RK3308_DAC_R_CH_BIST_SFT 0 663*4882a593Smuzhiyun #define RK3308_DAC_R_CH_BIST_MSK (0x3 << RK3308_DAC_R_CH_BIST_SFT) 664*4882a593Smuzhiyun #define RK3308_DAC_R_CH_BIST_LEFT (0x3 << RK3308_DAC_R_CH_BIST_SFT) /* normal mode */ 665*4882a593Smuzhiyun #define RK3308_DAC_R_CH_BIST_CUBE (0x2 << RK3308_DAC_R_CH_BIST_SFT) 666*4882a593Smuzhiyun #define RK3308_DAC_R_CH_BIST_SINE (0x1 << RK3308_DAC_R_CH_BIST_SFT) 667*4882a593Smuzhiyun #define RK3308_DAC_R_CH_BIST_RIGHT (0x0 << RK3308_DAC_R_CH_BIST_SFT) /* normal mode */ 668*4882a593Smuzhiyun 669*4882a593Smuzhiyun /* RK3308_DAC_DIG_CON04 - REG: 0x0310 */ 670*4882a593Smuzhiyun #define RK3308_DAC_MODULATOR_GAIN_SFT 4 671*4882a593Smuzhiyun #define RK3308_DAC_MODULATOR_GAIN_MSK (0x7 << RK3308_DAC_MODULATOR_GAIN_SFT) 672*4882a593Smuzhiyun #define RK3308_DAC_MODULATOR_GAIN_4_8DB (0x5 << RK3308_DAC_MODULATOR_GAIN_SFT) 673*4882a593Smuzhiyun #define RK3308_DAC_MODULATOR_GAIN_4_2DB (0x4 << RK3308_DAC_MODULATOR_GAIN_SFT) 674*4882a593Smuzhiyun #define RK3308_DAC_MODULATOR_GAIN_3_5DB (0x3 << RK3308_DAC_MODULATOR_GAIN_SFT) 675*4882a593Smuzhiyun #define RK3308_DAC_MODULATOR_GAIN_2_8DB (0x2 << RK3308_DAC_MODULATOR_GAIN_SFT) 676*4882a593Smuzhiyun #define RK3308_DAC_MODULATOR_GAIN_2DB (0x1 << RK3308_DAC_MODULATOR_GAIN_SFT) 677*4882a593Smuzhiyun #define RK3308_DAC_MODULATOR_GAIN_0DB (0x0 << RK3308_DAC_MODULATOR_GAIN_SFT) 678*4882a593Smuzhiyun #define RK3308_DAC_CIC_IF_GAIN_SFT 0 679*4882a593Smuzhiyun #define RK3308_DAC_CIC_IF_GAIN_MSK (0x7 << RK3308_DAC_CIC_IF_GAIN_SFT) 680*4882a593Smuzhiyun 681*4882a593Smuzhiyun /* RK3308BS_DAC_DIG_CON04 - REG: 0x0310 */ 682*4882a593Smuzhiyun #define RK3308BS_DAC_DIG_GAIN_SFT 0 683*4882a593Smuzhiyun #define RK3308BS_DAC_DIG_GAIN_MSK (0xff << RK3308BS_DAC_DIG_GAIN_SFT) 684*4882a593Smuzhiyun #define RK3308BS_DAC_DIG_GAIN(x) ((x) & RK3308BS_DAC_DIG_GAIN_MSK) 685*4882a593Smuzhiyun #define RK3308BS_DAC_DIG_0DB 0xed 686*4882a593Smuzhiyun 687*4882a593Smuzhiyun /* RK3308_DAC_DIG_CON05 - REG: 0x0314 */ 688*4882a593Smuzhiyun #define RK3308_DAC_L_DATA_SEL_INPUT (0x1 << 2) 689*4882a593Smuzhiyun #define RK3308_DAC_L_DATA_SEL_NORMAL (0x0 << 2) 690*4882a593Smuzhiyun #define RK3308_DAC_R_DATA_SEL_INPUT (0x1 << 1) 691*4882a593Smuzhiyun #define RK3308_DAC_R_DATA_SEL_NORMAL (0x0 << 1) 692*4882a593Smuzhiyun 693*4882a593Smuzhiyun /* RK3308BS_DAC_DIG_CON05 - REG: 0x0314 */ 694*4882a593Smuzhiyun #define RK3308BS_DAC_L_DATA_SEL_MUTE (0x1 << 2) 695*4882a593Smuzhiyun #define RK3308BS_DAC_L_DATA_SEL_NORMAL (0x0 << 2) 696*4882a593Smuzhiyun #define RK3308BS_DAC_R_DATA_SEL_MUTE (0x1 << 1) 697*4882a593Smuzhiyun #define RK3308BS_DAC_R_DATA_SEL_NORMAL (0x0 << 1) 698*4882a593Smuzhiyun 699*4882a593Smuzhiyun /* RK3308_DAC_DIG_CON10 - REG: 0x0328 */ 700*4882a593Smuzhiyun #define RK3308_DAC_DATA_HI4(x) ((x) & 0xf) /* Need to RK3308_DAC_x_REG_CTL_INDATA */ 701*4882a593Smuzhiyun 702*4882a593Smuzhiyun /* RK3308_DAC_DIG_CON11 - REG: 0x032c */ 703*4882a593Smuzhiyun #define RK3308_DAC_DATA_LO8(x) ((x) & 0xff) /* Need to RK3308_DAC_x_REG_CTL_INDATA */ 704*4882a593Smuzhiyun 705*4882a593Smuzhiyun /* RK3308BS_DAC_DIG_CON09 - REG: 0x0324 */ 706*4882a593Smuzhiyun #define RK3308BS_DAC_DATA_HI4(x) ((x) & 0xf) /* Need to RK3308_DAC_x_REG_CTL_INDATA */ 707*4882a593Smuzhiyun 708*4882a593Smuzhiyun /* RK3308BS_DAC_DIG_CON10 - REG: 0x0328 */ 709*4882a593Smuzhiyun #define RK3308BS_DAC_DATA_LO8(x) ((x) & 0xff) /* Need to RK3308_DAC_x_REG_CTL_INDATA */ 710*4882a593Smuzhiyun 711*4882a593Smuzhiyun /* RK3308BS_DAC_DIG_CON11 - REG: 0x032c */ 712*4882a593Smuzhiyun #define RK3308BS_DAC_DELAY_TIME_DETECT_HI2(x) ((x) & 0x3) 713*4882a593Smuzhiyun 714*4882a593Smuzhiyun /* RK3308BS_DAC_DIG_CON12 - REG: 0x0330 */ 715*4882a593Smuzhiyun #define RK3308BS_DAC_DELAY_TIME_DETECT_LO8(x) ((x) & 0xff) 716*4882a593Smuzhiyun 717*4882a593Smuzhiyun /* RK3308_ADC_ANA_CON00 - REG: 0x0340 */ 718*4882a593Smuzhiyun #define RK3308_ADC_CH1_CH2_MIC_ALL_MSK (0xff << 0) 719*4882a593Smuzhiyun #define RK3308_ADC_CH1_CH2_MIC_ALL 0xff 720*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_UNMUTE (0x1 << 7) 721*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_MUTE (0x0 << 7) 722*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_WORK (0x1 << 6) 723*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_INIT (0x0 << 6) 724*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_EN (0x1 << 5) 725*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_DIS (0x0 << 5) 726*4882a593Smuzhiyun #define RK3308_ADC_CH2_BUF_REF_EN (0x1 << 4) 727*4882a593Smuzhiyun #define RK3308_ADC_CH2_BUF_REF_DIS (0x0 << 4) 728*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_UNMUTE (0x1 << 3) 729*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_MUTE (0x0 << 3) 730*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_WORK (0x1 << 2) 731*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_INIT (0x0 << 2) 732*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_EN (0x1 << 1) 733*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_DIS (0x0 << 1) 734*4882a593Smuzhiyun #define RK3308_ADC_CH1_BUF_REF_EN (0x1 << 0) 735*4882a593Smuzhiyun #define RK3308_ADC_CH1_BUF_REF_DIS (0x0 << 0) 736*4882a593Smuzhiyun 737*4882a593Smuzhiyun /* RK3308_ADC_ANA_CON01 - REG: 0x0344 738*4882a593Smuzhiyun * 739*4882a593Smuzhiyun * The PGA of MIC-INs: 740*4882a593Smuzhiyun * 0x0 - MIC1~MIC8 0dB 741*4882a593Smuzhiyun * 0x1 - MIC1~MIC8 6.6dB 742*4882a593Smuzhiyun * 0x2 - MIC1~MIC8 13dB 743*4882a593Smuzhiyun * 0x3 - MIC1~MIC8 20dB 744*4882a593Smuzhiyun */ 745*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_GAIN_MAX 0x3 746*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_GAIN_MIN 0 747*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_GAIN_SFT 4 748*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_GAIN_MSK (0x3 << RK3308_ADC_CH2_MIC_GAIN_SFT) 749*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_GAIN_20DB (0x3 << RK3308_ADC_CH2_MIC_GAIN_SFT) 750*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_GAIN_13DB (0x2 << RK3308_ADC_CH2_MIC_GAIN_SFT) /* TRM: only used for version B */ 751*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_GAIN_6_6DB (0x1 << RK3308_ADC_CH2_MIC_GAIN_SFT) /* TRM: only used for version B */ 752*4882a593Smuzhiyun #define RK3308_ADC_CH2_MIC_GAIN_0DB (0x0 << RK3308_ADC_CH2_MIC_GAIN_SFT) 753*4882a593Smuzhiyun 754*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_GAIN_MAX 0x3 755*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_GAIN_MIN 0 756*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_GAIN_SFT 0 757*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_GAIN_MSK (0x3 << RK3308_ADC_CH1_MIC_GAIN_SFT) 758*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_GAIN_20DB (0x3 << RK3308_ADC_CH1_MIC_GAIN_SFT) 759*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_GAIN_13DB (0x2 << RK3308_ADC_CH1_MIC_GAIN_SFT) /* TRM: only used for version B */ 760*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_GAIN_6_6DB (0x1 << RK3308_ADC_CH1_MIC_GAIN_SFT) /* TRM: only used for version B */ 761*4882a593Smuzhiyun #define RK3308_ADC_CH1_MIC_GAIN_0DB (0x0 << RK3308_ADC_CH1_MIC_GAIN_SFT) 762*4882a593Smuzhiyun 763*4882a593Smuzhiyun /* RK3308_ADC_ANA_CON02 - REG: 0x0348 */ 764*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_ZC_MSK (0x7 << 4) 765*4882a593Smuzhiyun #define RK3308_ADC_CH2_ZEROCROSS_DET_EN (0x1 << 6) 766*4882a593Smuzhiyun #define RK3308_ADC_CH2_ZEROCROSS_DET_DIS (0x0 << 6) 767*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_WORK (0x1 << 5) 768*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_INIT (0x0 << 5) 769*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_EN (0x1 << 4) 770*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_DIS (0x0 << 4) 771*4882a593Smuzhiyun 772*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_ZC_MSK (0x7 << 0) 773*4882a593Smuzhiyun #define RK3308_ADC_CH1_ZEROCROSS_DET_EN (0x1 << 2) 774*4882a593Smuzhiyun #define RK3308_ADC_CH1_ZEROCROSS_DET_DIS (0x0 << 2) 775*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_WORK (0x1 << 1) 776*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_INIT (0x0 << 1) 777*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_EN (0x1 << 0) 778*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_DIS (0x0 << 0) 779*4882a593Smuzhiyun 780*4882a593Smuzhiyun /* RK3308_ADC_ANA_CON03 - REG: 0x034c */ 781*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_MAX 0x1f 782*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_MIN 0 783*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_SFT 0 784*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_MSK (0x1f << RK3308_ADC_CH1_ALC_GAIN_SFT) 785*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_28_5 (0x1f << RK3308_ADC_CH1_ALC_GAIN_SFT) 786*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_27 (0x1e << RK3308_ADC_CH1_ALC_GAIN_SFT) 787*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_25_5 (0x1d << RK3308_ADC_CH1_ALC_GAIN_SFT) 788*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_24 (0x1c << RK3308_ADC_CH1_ALC_GAIN_SFT) 789*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_22_5 (0x1b << RK3308_ADC_CH1_ALC_GAIN_SFT) 790*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_21 (0x1a << RK3308_ADC_CH1_ALC_GAIN_SFT) 791*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_19_5 (0x19 << RK3308_ADC_CH1_ALC_GAIN_SFT) 792*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_18 (0x18 << RK3308_ADC_CH1_ALC_GAIN_SFT) 793*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_16_5 (0x17 << RK3308_ADC_CH1_ALC_GAIN_SFT) 794*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_15 (0x16 << RK3308_ADC_CH1_ALC_GAIN_SFT) 795*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_13_5 (0x15 << RK3308_ADC_CH1_ALC_GAIN_SFT) 796*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_12 (0x14 << RK3308_ADC_CH1_ALC_GAIN_SFT) 797*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_10_5 (0x13 << RK3308_ADC_CH1_ALC_GAIN_SFT) 798*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_9 (0x12 << RK3308_ADC_CH1_ALC_GAIN_SFT) 799*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_7_5 (0x11 << RK3308_ADC_CH1_ALC_GAIN_SFT) 800*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_6 (0x10 << RK3308_ADC_CH1_ALC_GAIN_SFT) 801*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_4_5 (0x0f << RK3308_ADC_CH1_ALC_GAIN_SFT) 802*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_3 (0x0e << RK3308_ADC_CH1_ALC_GAIN_SFT) 803*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_PDB_1_5 (0x0d << RK3308_ADC_CH1_ALC_GAIN_SFT) 804*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_0DB (0x0c << RK3308_ADC_CH1_ALC_GAIN_SFT) 805*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_NDB_1_5 (0x0b << RK3308_ADC_CH1_ALC_GAIN_SFT) 806*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_NDB_3 (0x0a << RK3308_ADC_CH1_ALC_GAIN_SFT) 807*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_NDB_4_5 (0x09 << RK3308_ADC_CH1_ALC_GAIN_SFT) 808*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_NDB_6 (0x08 << RK3308_ADC_CH1_ALC_GAIN_SFT) 809*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_NDB_7_5 (0x07 << RK3308_ADC_CH1_ALC_GAIN_SFT) 810*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_NDB_9 (0x06 << RK3308_ADC_CH1_ALC_GAIN_SFT) 811*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_NDB_10_5 (0x05 << RK3308_ADC_CH1_ALC_GAIN_SFT) 812*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_NDB_12 (0x04 << RK3308_ADC_CH1_ALC_GAIN_SFT) 813*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_NDB_13_5 (0x03 << RK3308_ADC_CH1_ALC_GAIN_SFT) 814*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_NDB_15 (0x02 << RK3308_ADC_CH1_ALC_GAIN_SFT) 815*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_NDB_16_5 (0x01 << RK3308_ADC_CH1_ALC_GAIN_SFT) 816*4882a593Smuzhiyun #define RK3308_ADC_CH1_ALC_GAIN_NDB_18 (0x00 << RK3308_ADC_CH1_ALC_GAIN_SFT) 817*4882a593Smuzhiyun 818*4882a593Smuzhiyun /* RK3308_ADC_ANA_CON04 - REG: 0x0350 */ 819*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_MAX 0x1f 820*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_MIN 0 821*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_SFT 0 822*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_MSK (0x1f << RK3308_ADC_CH2_ALC_GAIN_SFT) 823*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_28_5 (0x1f << RK3308_ADC_CH2_ALC_GAIN_SFT) 824*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_27 (0x1e << RK3308_ADC_CH2_ALC_GAIN_SFT) 825*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_25_5 (0x1d << RK3308_ADC_CH2_ALC_GAIN_SFT) 826*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_24 (0x1c << RK3308_ADC_CH2_ALC_GAIN_SFT) 827*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_22_5 (0x1b << RK3308_ADC_CH2_ALC_GAIN_SFT) 828*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_21 (0x1a << RK3308_ADC_CH2_ALC_GAIN_SFT) 829*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_19_5 (0x19 << RK3308_ADC_CH2_ALC_GAIN_SFT) 830*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_18 (0x18 << RK3308_ADC_CH2_ALC_GAIN_SFT) 831*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_16_5 (0x17 << RK3308_ADC_CH2_ALC_GAIN_SFT) 832*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_15 (0x16 << RK3308_ADC_CH2_ALC_GAIN_SFT) 833*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_13_5 (0x15 << RK3308_ADC_CH2_ALC_GAIN_SFT) 834*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_12 (0x14 << RK3308_ADC_CH2_ALC_GAIN_SFT) 835*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_10_5 (0x13 << RK3308_ADC_CH2_ALC_GAIN_SFT) 836*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_9 (0x12 << RK3308_ADC_CH2_ALC_GAIN_SFT) 837*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_7_5 (0x11 << RK3308_ADC_CH2_ALC_GAIN_SFT) 838*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_6 (0x10 << RK3308_ADC_CH2_ALC_GAIN_SFT) 839*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_4_5 (0x0f << RK3308_ADC_CH2_ALC_GAIN_SFT) 840*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_3 (0x0e << RK3308_ADC_CH2_ALC_GAIN_SFT) 841*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_PDB_1_5 (0x0d << RK3308_ADC_CH2_ALC_GAIN_SFT) 842*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_0DB (0x0c << RK3308_ADC_CH2_ALC_GAIN_SFT) 843*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_NDB_1_5 (0x0b << RK3308_ADC_CH2_ALC_GAIN_SFT) 844*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_NDB_3 (0x0a << RK3308_ADC_CH2_ALC_GAIN_SFT) 845*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_NDB_4_5 (0x09 << RK3308_ADC_CH2_ALC_GAIN_SFT) 846*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_NDB_6 (0x08 << RK3308_ADC_CH2_ALC_GAIN_SFT) 847*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_NDB_7_5 (0x07 << RK3308_ADC_CH2_ALC_GAIN_SFT) 848*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_NDB_9 (0x06 << RK3308_ADC_CH2_ALC_GAIN_SFT) 849*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_NDB_10_5 (0x05 << RK3308_ADC_CH2_ALC_GAIN_SFT) 850*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_NDB_12 (0x04 << RK3308_ADC_CH2_ALC_GAIN_SFT) 851*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_NDB_13_5 (0x03 << RK3308_ADC_CH2_ALC_GAIN_SFT) 852*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_NDB_15 (0x02 << RK3308_ADC_CH2_ALC_GAIN_SFT) 853*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_NDB_16_5 (0x01 << RK3308_ADC_CH2_ALC_GAIN_SFT) 854*4882a593Smuzhiyun #define RK3308_ADC_CH2_ALC_GAIN_NDB_18 (0x00 << RK3308_ADC_CH2_ALC_GAIN_SFT) 855*4882a593Smuzhiyun 856*4882a593Smuzhiyun /* RK3308_ADC_ANA_CON05 - REG: 0x0354 */ 857*4882a593Smuzhiyun #define RK3308_ADC_CH2_ADC_CLK_MSK (0x7 << 4) 858*4882a593Smuzhiyun #define RK3308_ADC_CH2_ADC_WORK (0x1 << 6) 859*4882a593Smuzhiyun #define RK3308_ADC_CH2_ADC_INIT (0x0 << 6) 860*4882a593Smuzhiyun #define RK3308_ADC_CH2_ADC_EN (0x1 << 5) 861*4882a593Smuzhiyun #define RK3308_ADC_CH2_ADC_DIS (0x0 << 5) 862*4882a593Smuzhiyun #define RK3308_ADC_CH2_CLK_EN (0x1 << 4) 863*4882a593Smuzhiyun #define RK3308_ADC_CH2_CLK_DIS (0x0 << 4) 864*4882a593Smuzhiyun 865*4882a593Smuzhiyun #define RK3308_ADC_CH1_ADC_CLK_MSK (0x7 << 0) 866*4882a593Smuzhiyun #define RK3308_ADC_CH1_ADC_WORK (0x1 << 2) 867*4882a593Smuzhiyun #define RK3308_ADC_CH1_ADC_INIT (0x0 << 2) 868*4882a593Smuzhiyun #define RK3308_ADC_CH1_ADC_EN (0x1 << 1) 869*4882a593Smuzhiyun #define RK3308_ADC_CH1_ADC_DIS (0x0 << 1) 870*4882a593Smuzhiyun #define RK3308_ADC_CH1_CLK_EN (0x1 << 0) 871*4882a593Smuzhiyun #define RK3308_ADC_CH1_CLK_DIS (0x0 << 0) 872*4882a593Smuzhiyun 873*4882a593Smuzhiyun /* RK3308_ADC_ANA_CON06 - REG: 0x0358 */ 874*4882a593Smuzhiyun #define RK3308_ADC_CURRENT_MSK (0x1 << 0) 875*4882a593Smuzhiyun #define RK3308_ADC_CURRENT_EN (0x1 << 0) 876*4882a593Smuzhiyun #define RK3308_ADC_CURRENT_DIS (0x0 << 0) 877*4882a593Smuzhiyun 878*4882a593Smuzhiyun /* RK3308_ADC_ANA_CON07 - REG: 0x035c */ 879*4882a593Smuzhiyun /* Note: The register configuration is only valid for ADC2 */ 880*4882a593Smuzhiyun #define RK3308_ADC_CH2_IN_SEL_SFT 6 881*4882a593Smuzhiyun #define RK3308_ADC_CH2_IN_SEL_MSK (0x3 << RK3308_ADC_CH2_IN_SEL_SFT) 882*4882a593Smuzhiyun #define RK3308_ADC_CH2_IN_LINEIN_MIC (0x3 << RK3308_ADC_CH2_IN_SEL_SFT) 883*4882a593Smuzhiyun #define RK3308_ADC_CH2_IN_LINEIN (0x2 << RK3308_ADC_CH2_IN_SEL_SFT) 884*4882a593Smuzhiyun #define RK3308_ADC_CH2_IN_MIC (0x1 << RK3308_ADC_CH2_IN_SEL_SFT) 885*4882a593Smuzhiyun #define RK3308_ADC_CH2_IN_NONE (0x0 << RK3308_ADC_CH2_IN_SEL_SFT) 886*4882a593Smuzhiyun /* Note: The register configuration is only valid for ADC1 */ 887*4882a593Smuzhiyun #define RK3308_ADC_CH1_IN_SEL_SFT 4 888*4882a593Smuzhiyun #define RK3308_ADC_CH1_IN_SEL_MSK (0x3 << RK3308_ADC_CH1_IN_SEL_SFT) 889*4882a593Smuzhiyun #define RK3308_ADC_CH1_IN_LINEIN_MIC (0x3 << RK3308_ADC_CH1_IN_SEL_SFT) 890*4882a593Smuzhiyun #define RK3308_ADC_CH1_IN_LINEIN (0x2 << RK3308_ADC_CH1_IN_SEL_SFT) 891*4882a593Smuzhiyun #define RK3308_ADC_CH1_IN_MIC (0x1 << RK3308_ADC_CH1_IN_SEL_SFT) 892*4882a593Smuzhiyun #define RK3308_ADC_CH1_IN_NONE (0x0 << RK3308_ADC_CH1_IN_SEL_SFT) 893*4882a593Smuzhiyun 894*4882a593Smuzhiyun #define RK3308_ADC_MIC_BIAS_BUF_SFT 3 895*4882a593Smuzhiyun #define RK3308_ADC_MIC_BIAS_BUF_EN (0x1 << RK3308_ADC_MIC_BIAS_BUF_SFT) 896*4882a593Smuzhiyun #define RK3308_ADC_MIC_BIAS_BUF_DIS (0x0 << RK3308_ADC_MIC_BIAS_BUF_SFT) 897*4882a593Smuzhiyun #define RK3308_ADC_LEVEL_RANGE_MICBIAS_SFT 0 898*4882a593Smuzhiyun #define RK3308_ADC_LEVEL_RANGE_MICBIAS_MSK (0x7 << RK3308_ADC_LEVEL_RANGE_MICBIAS_SFT) 899*4882a593Smuzhiyun /* 900*4882a593Smuzhiyun * The follow MICBIAS_VOLTs are based on the external reference voltage(Vref). 901*4882a593Smuzhiyun * For example, the Vref == 3.3V, the MICBIAS_VOLT_0_85 is equal: 902*4882a593Smuzhiyun * 3.3V * 0.85 = 2.805V. 903*4882a593Smuzhiyun */ 904*4882a593Smuzhiyun #define RK3308_ADC_MICBIAS_VOLT_0_85 (0x7 << RK3308_ADC_LEVEL_RANGE_MICBIAS_SFT) 905*4882a593Smuzhiyun #define RK3308_ADC_MICBIAS_VOLT_0_8 (0x6 << RK3308_ADC_LEVEL_RANGE_MICBIAS_SFT) 906*4882a593Smuzhiyun #define RK3308_ADC_MICBIAS_VOLT_0_75 (0x5 << RK3308_ADC_LEVEL_RANGE_MICBIAS_SFT) 907*4882a593Smuzhiyun #define RK3308_ADC_MICBIAS_VOLT_0_7 (0x4 << RK3308_ADC_LEVEL_RANGE_MICBIAS_SFT) 908*4882a593Smuzhiyun #define RK3308_ADC_MICBIAS_VOLT_0_65 (0x3 << RK3308_ADC_LEVEL_RANGE_MICBIAS_SFT) 909*4882a593Smuzhiyun #define RK3308_ADC_MICBIAS_VOLT_0_6 (0x2 << RK3308_ADC_LEVEL_RANGE_MICBIAS_SFT) 910*4882a593Smuzhiyun #define RK3308_ADC_MICBIAS_VOLT_0_55 (0x1 << RK3308_ADC_LEVEL_RANGE_MICBIAS_SFT) 911*4882a593Smuzhiyun #define RK3308_ADC_MICBIAS_VOLT_0_5 (0x0 << RK3308_ADC_LEVEL_RANGE_MICBIAS_SFT) 912*4882a593Smuzhiyun 913*4882a593Smuzhiyun /* RK3308_ADC_ANA_CON08 - REG: 0x0360 */ 914*4882a593Smuzhiyun #define RK3308_ADC_MICBIAS_CURRENT_MSK (0x1 << 4) 915*4882a593Smuzhiyun #define RK3308_ADC_MICBIAS_CURRENT_EN (0x1 << 4) 916*4882a593Smuzhiyun #define RK3308_ADC_MICBIAS_CURRENT_DIS (0x0 << 4) 917*4882a593Smuzhiyun #define RK3308BS_ADC_MICBIAS_CURRENT_SEL(x) ((x) & 0xf) 918*4882a593Smuzhiyun 919*4882a593Smuzhiyun /* RK3308BS_ADC_ANA_CON09 - REG: 0x0364 */ 920*4882a593Smuzhiyun #define RK3308BS_ADC_MICBIAS_OPA_VBIAS(x) (((x) & 0x7) << 4) 921*4882a593Smuzhiyun #define RK3308BS_ADC_VCM_SETUP_MIN_CURRENT_EN (0x0 << 1) 922*4882a593Smuzhiyun #define RK3308BS_ADC_VCM_SETUP_MIN_CURRENT_DIS (0x0 << 0) 923*4882a593Smuzhiyun 924*4882a593Smuzhiyun /* RK3308_ADC_ANA_CON10 - REG: 0x0368 */ 925*4882a593Smuzhiyun #define RK3308_ADC_REF_EN (0x1 << 7) 926*4882a593Smuzhiyun #define RK3308_ADC_REF_DIS (0x0 << 7) 927*4882a593Smuzhiyun #define RK3308_ADC_CURRENT_CHARGE_SFT 0 928*4882a593Smuzhiyun #define RK3308_ADC_CURRENT_CHARGE_MSK (0x7f << RK3308_ADC_CURRENT_CHARGE_SFT) 929*4882a593Smuzhiyun /* 930*4882a593Smuzhiyun * 1: Choose the current I 931*4882a593Smuzhiyun * 0: Don't choose the current I 932*4882a593Smuzhiyun */ 933*4882a593Smuzhiyun #define RK3308_ADC_SEL_I(x) ((x) & 0x7f) 934*4882a593Smuzhiyun 935*4882a593Smuzhiyun /* RK3308_ADC_ANA_CON11 - REG: 0x036c */ 936*4882a593Smuzhiyun #define RK3308_ADC_ALCR_CON_GAIN_PGAR_MSK (0x1 << 1) 937*4882a593Smuzhiyun #define RK3308_ADC_ALCR_CON_GAIN_PGAR_EN (0x1 << 1) 938*4882a593Smuzhiyun #define RK3308_ADC_ALCR_CON_GAIN_PGAR_DIS (0x0 << 1) 939*4882a593Smuzhiyun #define RK3308_ADC_ALCL_CON_GAIN_PGAL_MSK (0x1 << 0) 940*4882a593Smuzhiyun #define RK3308_ADC_ALCL_CON_GAIN_PGAL_EN (0x1 << 0) 941*4882a593Smuzhiyun #define RK3308_ADC_ALCL_CON_GAIN_PGAL_DIS (0x0 << 0) 942*4882a593Smuzhiyun 943*4882a593Smuzhiyun /* RK3308_DAC_ANA_CON00 - REG: 0x0440 */ 944*4882a593Smuzhiyun #define RK3308_DAC_CURRENT_SEL_SFT 4 945*4882a593Smuzhiyun #define RK3308_DAC_CURRENT_SEL_MSK (0xf << RK3308_DAC_CURRENT_SEL_SFT) 946*4882a593Smuzhiyun #define RK3308_DAC_CURRENT_SEL(x) ((x) & RK3308_DAC_CURRENT_SEL_MSK) 947*4882a593Smuzhiyun #define RK3308_DAC_HEADPHONE_DET_MSK (0x1 << 1) 948*4882a593Smuzhiyun #define RK3308_DAC_HEADPHONE_DET_EN (0x1 << 1) 949*4882a593Smuzhiyun #define RK3308_DAC_HEADPHONE_DET_DIS (0x0 << 1) 950*4882a593Smuzhiyun #define RK3308_DAC_CURRENT_MSK (0x1 << 0) 951*4882a593Smuzhiyun #define RK3308_DAC_CURRENT_EN (0x1 << 0) 952*4882a593Smuzhiyun #define RK3308_DAC_CURRENT_DIS (0x0 << 0) 953*4882a593Smuzhiyun 954*4882a593Smuzhiyun /* RK3308_DAC_ANA_CON01 - REG: 0x0444 */ 955*4882a593Smuzhiyun #define RK3308_DAC_BUF_REF_R_MSK (0x1 << 6) 956*4882a593Smuzhiyun #define RK3308_DAC_BUF_REF_R_EN (0x1 << 6) 957*4882a593Smuzhiyun #define RK3308_DAC_BUF_REF_R_DIS (0x0 << 6) 958*4882a593Smuzhiyun #define RK3308_DAC_HPOUT_POP_SOUND_R_SFT 4 959*4882a593Smuzhiyun #define RK3308_DAC_HPOUT_POP_SOUND_R_MSK (0x3 << RK3308_DAC_HPOUT_POP_SOUND_R_SFT) 960*4882a593Smuzhiyun #define RK3308_DAC_HPOUT_POP_SOUND_R_WORK (0x2 << RK3308_DAC_HPOUT_POP_SOUND_R_SFT) 961*4882a593Smuzhiyun #define RK3308_DAC_HPOUT_POP_SOUND_R_INIT (0x1 << RK3308_DAC_HPOUT_POP_SOUND_R_SFT) 962*4882a593Smuzhiyun #define RK3308_DAC_HPOUT_POP_SOUND_R_DIS (0x0 << RK3308_DAC_HPOUT_POP_SOUND_R_SFT) 963*4882a593Smuzhiyun #define RK3308_DAC_BUF_REF_L_MSK (0x1 << 2) 964*4882a593Smuzhiyun #define RK3308_DAC_BUF_REF_L_EN (0x1 << 2) 965*4882a593Smuzhiyun #define RK3308_DAC_BUF_REF_L_DIS (0x0 << 2) 966*4882a593Smuzhiyun #define RK3308_DAC_HPOUT_POP_SOUND_L_SFT 0 967*4882a593Smuzhiyun #define RK3308_DAC_HPOUT_POP_SOUND_L_MSK (0x3 << RK3308_DAC_HPOUT_POP_SOUND_L_SFT) 968*4882a593Smuzhiyun #define RK3308_DAC_HPOUT_POP_SOUND_L_WORK (0x2 << RK3308_DAC_HPOUT_POP_SOUND_L_SFT) 969*4882a593Smuzhiyun #define RK3308_DAC_HPOUT_POP_SOUND_L_INIT (0x1 << RK3308_DAC_HPOUT_POP_SOUND_L_SFT) 970*4882a593Smuzhiyun #define RK3308_DAC_HPOUT_POP_SOUND_L_DIS (0x0 << RK3308_DAC_HPOUT_POP_SOUND_L_SFT) 971*4882a593Smuzhiyun 972*4882a593Smuzhiyun /* RK3308_DAC_ANA_CON02 - REG: 0x0448 */ 973*4882a593Smuzhiyun #define RK3308_DAC_R_DAC_WORK (0x1 << 7) 974*4882a593Smuzhiyun #define RK3308_DAC_R_DAC_INIT (0x0 << 7) 975*4882a593Smuzhiyun #define RK3308_DAC_R_DAC_EN (0x1 << 6) 976*4882a593Smuzhiyun #define RK3308_DAC_R_DAC_DIS (0x0 << 6) 977*4882a593Smuzhiyun #define RK3308_DAC_R_CLK_EN (0x1 << 5) 978*4882a593Smuzhiyun #define RK3308_DAC_R_CLK_DIS (0x0 << 5) 979*4882a593Smuzhiyun #define RK3308_DAC_R_REF_EN (0x1 << 4) 980*4882a593Smuzhiyun #define RK3308_DAC_R_REF_DIS (0x0 << 4) 981*4882a593Smuzhiyun #define RK3308_DAC_L_DAC_WORK (0x1 << 3) 982*4882a593Smuzhiyun #define RK3308_DAC_L_DAC_INIT (0x0 << 3) 983*4882a593Smuzhiyun #define RK3308_DAC_L_DAC_EN (0x1 << 2) 984*4882a593Smuzhiyun #define RK3308_DAC_L_DAC_DIS (0x0 << 2) 985*4882a593Smuzhiyun #define RK3308_DAC_L_CLK_EN (0x1 << 1) 986*4882a593Smuzhiyun #define RK3308_DAC_L_CLK_DIS (0x0 << 1) 987*4882a593Smuzhiyun #define RK3308_DAC_L_REF_EN (0x1 << 0) 988*4882a593Smuzhiyun #define RK3308_DAC_L_REF_DIS (0x0 << 0) 989*4882a593Smuzhiyun 990*4882a593Smuzhiyun /* RK3308_DAC_ANA_CON03 - REG: 0x044c */ 991*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_WORK (0x1 << 6) 992*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_INIT (0x0 << 6) 993*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_EN (0x1 << 5) 994*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_DIS (0x0 << 5) 995*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_UNMUTE (0x1 << 4) 996*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_MUTE (0x0 << 4) 997*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_WORK (0x1 << 2) 998*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_INIT (0x0 << 2) 999*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_EN (0x1 << 1) 1000*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_DIS (0x0 << 1) 1001*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_UNMUTE (0x1 << 0) 1002*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_MUTE (0x0 << 0) 1003*4882a593Smuzhiyun 1004*4882a593Smuzhiyun /* RK3308_DAC_ANA_CON04 - REG: 0x0450 */ 1005*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_GAIN_MAX 0x3 1006*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_GAIN_SFT 6 1007*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_GAIN_MSK (0x3 << RK3308_DAC_R_LINEOUT_GAIN_SFT) 1008*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_GAIN_0DB (0x3 << RK3308_DAC_R_LINEOUT_GAIN_SFT) 1009*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_GAIN_NDB_1_5 (0x2 << RK3308_DAC_R_LINEOUT_GAIN_SFT) 1010*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_GAIN_NDB_3 (0x1 << RK3308_DAC_R_LINEOUT_GAIN_SFT) 1011*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_GAIN_NDB_6 (0x0 << RK3308_DAC_R_LINEOUT_GAIN_SFT) 1012*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_UNMUTE (0x1 << 5) 1013*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_MUTE (0x0 << 5) 1014*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_EN (0x1 << 4) 1015*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_DIS (0x0 << 4) 1016*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_GAIN_MAX 0x3 1017*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_GAIN_SFT 2 1018*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_GAIN_MSK (0x3 << RK3308_DAC_L_LINEOUT_GAIN_SFT) 1019*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_GAIN_0DB (0x3 << RK3308_DAC_L_LINEOUT_GAIN_SFT) 1020*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_GAIN_NDB_1_5 (0x2 << RK3308_DAC_L_LINEOUT_GAIN_SFT) 1021*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_GAIN_NDB_3 (0x1 << RK3308_DAC_L_LINEOUT_GAIN_SFT) 1022*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_GAIN_NDB_6 (0x0 << RK3308_DAC_L_LINEOUT_GAIN_SFT) 1023*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_UNMUTE (0x1 << 1) 1024*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_MUTE (0x0 << 1) 1025*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_EN (0x1 << 0) 1026*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_DIS (0x0 << 0) 1027*4882a593Smuzhiyun 1028*4882a593Smuzhiyun /* RK3308_DAC_ANA_CON05 - REG: 0x0454, step is 1.5db */ 1029*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_MAX 0x1e 1030*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_SFT 0 1031*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_MSK (0x1f << RK3308_DAC_L_HPOUT_GAIN_SFT) 1032*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_PDB_6 (0x1e << RK3308_DAC_L_HPOUT_GAIN_SFT) 1033*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_PDB_4_5 (0x1d << RK3308_DAC_L_HPOUT_GAIN_SFT) 1034*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_PDB_3 (0x1c << RK3308_DAC_L_HPOUT_GAIN_SFT) 1035*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_PDB_1_5 (0x1b << RK3308_DAC_L_HPOUT_GAIN_SFT) 1036*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_0DB (0x1a << RK3308_DAC_L_HPOUT_GAIN_SFT) 1037*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_1_5 (0x19 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1038*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_3 (0x18 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1039*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_4_5 (0x17 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1040*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_6 (0x16 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1041*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_7_5 (0x15 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1042*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_9 (0x14 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1043*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_10_5 (0x13 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1044*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_12 (0x12 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1045*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_13_5 (0x11 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1046*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_15 (0x10 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1047*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_16_5 (0x0f << RK3308_DAC_L_HPOUT_GAIN_SFT) 1048*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_18 (0x0e << RK3308_DAC_L_HPOUT_GAIN_SFT) 1049*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_19_5 (0x0d << RK3308_DAC_L_HPOUT_GAIN_SFT) 1050*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_21 (0x0c << RK3308_DAC_L_HPOUT_GAIN_SFT) 1051*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_22_5 (0x0b << RK3308_DAC_L_HPOUT_GAIN_SFT) 1052*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_24 (0x0a << RK3308_DAC_L_HPOUT_GAIN_SFT) 1053*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_25_5 (0x09 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1054*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_27 (0x08 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1055*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_28_5 (0x07 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1056*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_30 (0x06 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1057*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_31_5 (0x05 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1058*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_33 (0x04 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1059*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_34_5 (0x03 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1060*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_36 (0x02 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1061*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_37_5 (0x01 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1062*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_GAIN_NDB_39 (0x00 << RK3308_DAC_L_HPOUT_GAIN_SFT) 1063*4882a593Smuzhiyun 1064*4882a593Smuzhiyun /* RK3308_DAC_ANA_CON06 - REG: 0x0458, step is 1.5db */ 1065*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_MAX 0x1e 1066*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_SFT 0 1067*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_MSK (0x1f << RK3308_DAC_R_HPOUT_GAIN_SFT) 1068*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_PDB_6 (0x1e << RK3308_DAC_R_HPOUT_GAIN_SFT) 1069*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_PDB_4_5 (0x1d << RK3308_DAC_R_HPOUT_GAIN_SFT) 1070*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_PDB_3 (0x1c << RK3308_DAC_R_HPOUT_GAIN_SFT) 1071*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_PDB_1_5 (0x1b << RK3308_DAC_R_HPOUT_GAIN_SFT) 1072*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_0DB (0x1a << RK3308_DAC_R_HPOUT_GAIN_SFT) 1073*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_1_5 (0x19 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1074*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_3 (0x18 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1075*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_4_5 (0x17 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1076*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_6 (0x16 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1077*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_7_5 (0x15 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1078*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_9 (0x14 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1079*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_10_5 (0x13 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1080*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_12 (0x12 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1081*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_13_5 (0x11 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1082*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_15 (0x10 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1083*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_16_5 (0x0f << RK3308_DAC_R_HPOUT_GAIN_SFT) 1084*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_18 (0x0e << RK3308_DAC_R_HPOUT_GAIN_SFT) 1085*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_19_5 (0x0d << RK3308_DAC_R_HPOUT_GAIN_SFT) 1086*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_21 (0x0c << RK3308_DAC_R_HPOUT_GAIN_SFT) 1087*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_22_5 (0x0b << RK3308_DAC_R_HPOUT_GAIN_SFT) 1088*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_24 (0x0a << RK3308_DAC_R_HPOUT_GAIN_SFT) 1089*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_25_5 (0x09 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1090*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_27 (0x08 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1091*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_28_5 (0x07 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1092*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_30 (0x06 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1093*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_31_5 (0x05 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1094*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_33 (0x04 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1095*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_34_5 (0x03 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1096*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_36 (0x02 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1097*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_37_5 (0x01 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1098*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_GAIN_NDB_39 (0x00 << RK3308_DAC_R_HPOUT_GAIN_SFT) 1099*4882a593Smuzhiyun 1100*4882a593Smuzhiyun /* RK3308_DAC_ANA_CON07 - REG: 0x045c */ 1101*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_DRV_SFT 4 1102*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_DRV_MSK (0xf << RK3308_DAC_R_HPOUT_DRV_SFT) 1103*4882a593Smuzhiyun #define RK3308_DAC_R_HPOUT_DRV(x) (((x) << RK3308_DAC_R_HPOUT_DRV_SFT) & RK3308_DAC_R_HPOUT_DRV_MSK) 1104*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_DRV_SFT 0 1105*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_DRV_MSK (0xf << RK3308_DAC_L_HPOUT_DRV_SFT) 1106*4882a593Smuzhiyun #define RK3308_DAC_L_HPOUT_DRV(x) (((x) << RK3308_DAC_L_HPOUT_DRV_SFT) & RK3308_DAC_L_HPOUT_DRV_MSK) 1107*4882a593Smuzhiyun 1108*4882a593Smuzhiyun /* RK3308_DAC_ANA_CON08 - REG: 0x0460 */ 1109*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_DRV_SFT 4 1110*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_DRV_MSK (0xf << RK3308_DAC_R_LINEOUT_DRV_SFT) 1111*4882a593Smuzhiyun #define RK3308_DAC_R_LINEOUT_DRV(x) (((x) << RK3308_DAC_R_LINEOUT_DRV_SFT) & RK3308_DAC_R_LINEOUT_DRV_MSK) 1112*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_DRV_SFT 0 1113*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_DRV_MSK (0xf << RK3308_DAC_L_LINEOUT_DRV_SFT) 1114*4882a593Smuzhiyun #define RK3308_DAC_L_LINEOUT_DRV(x) (((x) << RK3308_DAC_L_LINEOUT_DRV_SFT) & RK3308_DAC_L_LINEOUT_DRV_MSK) 1115*4882a593Smuzhiyun 1116*4882a593Smuzhiyun /* RK3308_DAC_ANA_CON12 - REG: 0x0470 */ 1117*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_SEL_SFT 6 1118*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_SEL_MSK (0x3 << RK3308_DAC_R_HPMIX_SEL_SFT) 1119*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_LINEIN_I2S (0x3 << RK3308_DAC_R_HPMIX_SEL_SFT) 1120*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_LINEIN (0x2 << RK3308_DAC_R_HPMIX_SEL_SFT) 1121*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_I2S (0x1 << RK3308_DAC_R_HPMIX_SEL_SFT) 1122*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_NONE (0x0 << RK3308_DAC_R_HPMIX_SEL_SFT) 1123*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_GAIN_MIN 0x1 1124*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_GAIN_MAX 0x2 1125*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_GAIN_SFT 4 1126*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_GAIN_MSK (0x3 << RK3308_DAC_R_HPMIX_GAIN_SFT) 1127*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_GAIN_0DB (0x2 << RK3308_DAC_R_HPMIX_GAIN_SFT) 1128*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_GAIN_NDB_6 (0x1 << RK3308_DAC_R_HPMIX_GAIN_SFT) 1129*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_SEL_SFT 2 1130*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_SEL_MSK (0x3 << RK3308_DAC_L_HPMIX_SEL_SFT) 1131*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_LINEIN_I2S (0x3 << RK3308_DAC_L_HPMIX_SEL_SFT) 1132*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_LINEIN (0x2 << RK3308_DAC_L_HPMIX_SEL_SFT) 1133*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_I2S (0x1 << RK3308_DAC_L_HPMIX_SEL_SFT) 1134*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_NONE (0x0 << RK3308_DAC_L_HPMIX_SEL_SFT) 1135*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_GAIN_MIN 0x1 1136*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_GAIN_MAX 0x2 1137*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_GAIN_SFT 0 1138*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_GAIN_MSK (0x3 << RK3308_DAC_L_HPMIX_GAIN_SFT) 1139*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_GAIN_0DB (0x2 << RK3308_DAC_L_HPMIX_GAIN_SFT) 1140*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_GAIN_NDB_6 (0x1 << RK3308_DAC_L_HPMIX_GAIN_SFT) 1141*4882a593Smuzhiyun 1142*4882a593Smuzhiyun /* RK3308_DAC_ANA_CON13 - REG: 0x0474 */ 1143*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_UNMUTE (0x1 << 6) 1144*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_MUTE (0x0 << 6) 1145*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_WORK (0x1 << 5) 1146*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_INIT (0x0 << 5) 1147*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_EN (0x1 << 4) 1148*4882a593Smuzhiyun #define RK3308_DAC_R_HPMIX_DIS (0x0 << 4) 1149*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_UNMUTE (0x1 << 2) 1150*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_MUTE (0x0 << 2) 1151*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_WORK (0x1 << 1) 1152*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_INIT (0x0 << 1) 1153*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_EN (0x1 << 0) 1154*4882a593Smuzhiyun #define RK3308_DAC_L_HPMIX_DIS (0x0 << 0) 1155*4882a593Smuzhiyun 1156*4882a593Smuzhiyun /* RK3308_DAC_ANA_CON14 - REG: 0x0478 */ 1157*4882a593Smuzhiyun #define RK3308_DAC_VCM_LINEOUT_EN (0x1 << 4) 1158*4882a593Smuzhiyun #define RK3308_DAC_VCM_LINEOUT_DIS (0x0 << 4) 1159*4882a593Smuzhiyun #define RK3308_DAC_CURRENT_CHARGE_SFT 0 1160*4882a593Smuzhiyun #define RK3308_DAC_CURRENT_CHARGE_MSK (0xf << RK3308_DAC_CURRENT_CHARGE_SFT) 1161*4882a593Smuzhiyun 1162*4882a593Smuzhiyun /* 1163*4882a593Smuzhiyun * 1: Choose the current I 1164*4882a593Smuzhiyun * 0: Don't choose the current I 1165*4882a593Smuzhiyun */ 1166*4882a593Smuzhiyun #define RK3308_DAC_SEL_I(x) ((x) & 0xf) 1167*4882a593Smuzhiyun 1168*4882a593Smuzhiyun /* RK3308_DAC_ANA_CON15 - REG: 0x047C */ 1169*4882a593Smuzhiyun #define RK3308_DAC_LINEOUT_POP_SOUND_R_SFT 4 1170*4882a593Smuzhiyun #define RK3308_DAC_LINEOUT_POP_SOUND_R_MSK (0x3 << RK3308_DAC_LINEOUT_POP_SOUND_R_SFT) 1171*4882a593Smuzhiyun #define RK3308_DAC_R_SEL_DC_FROM_INTERNAL (0x2 << RK3308_DAC_LINEOUT_POP_SOUND_R_SFT) 1172*4882a593Smuzhiyun #define RK3308_DAC_R_SEL_DC_FROM_VCM (0x1 << RK3308_DAC_LINEOUT_POP_SOUND_R_SFT) 1173*4882a593Smuzhiyun #define RK3308_DAC_R_SEL_LINEOUT_FROM_INTERNAL (0x0 << RK3308_DAC_LINEOUT_POP_SOUND_R_SFT) 1174*4882a593Smuzhiyun #define RK3308_DAC_LINEOUT_POP_SOUND_L_SFT 0 1175*4882a593Smuzhiyun #define RK3308_DAC_LINEOUT_POP_SOUND_L_MSK (0x3 << RK3308_DAC_LINEOUT_POP_SOUND_L_SFT) 1176*4882a593Smuzhiyun #define RK3308_DAC_L_SEL_DC_FROM_INTERNAL (0x2 << RK3308_DAC_LINEOUT_POP_SOUND_L_SFT) 1177*4882a593Smuzhiyun #define RK3308_DAC_L_SEL_DC_FROM_VCM (0x1 << RK3308_DAC_LINEOUT_POP_SOUND_L_SFT) 1178*4882a593Smuzhiyun #define RK3308_DAC_L_SEL_LINEOUT_FROM_INTERNAL (0x0 << RK3308_DAC_LINEOUT_POP_SOUND_L_SFT) 1179*4882a593Smuzhiyun 1180*4882a593Smuzhiyun #define RK3308_HIFI 0x0 1181*4882a593Smuzhiyun 1182*4882a593Smuzhiyun #endif /* __RK3308_CODEC_H__ */ 1183