1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * da732x.h -- Dialog DA732X ALSA SoC Audio Driver Header File 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2012 Dialog Semiconductor GmbH 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Author: Michal Hajduk <Michal.Hajduk@diasemi.com> 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #ifndef __DA732X_H_ 11*4882a593Smuzhiyun #define __DA732X_H_ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include <sound/soc.h> 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* General */ 16*4882a593Smuzhiyun #define DA732X_U8_MASK 0xFF 17*4882a593Smuzhiyun #define DA732X_4BYTES 4 18*4882a593Smuzhiyun #define DA732X_3BYTES 3 19*4882a593Smuzhiyun #define DA732X_2BYTES 2 20*4882a593Smuzhiyun #define DA732X_1BYTE 1 21*4882a593Smuzhiyun #define DA732X_1BYTE_SHIFT 8 22*4882a593Smuzhiyun #define DA732X_2BYTES_SHIFT 16 23*4882a593Smuzhiyun #define DA732X_3BYTES_SHIFT 24 24*4882a593Smuzhiyun #define DA732X_4BYTES_SHIFT 32 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun #define DA732X_DACS_DIS 0x0 27*4882a593Smuzhiyun #define DA732X_HP_DIS 0x0 28*4882a593Smuzhiyun #define DA732X_CLEAR_REG 0x0 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun /* Calibration */ 31*4882a593Smuzhiyun #define DA732X_DAC_OFFSET_STEP 0x20 32*4882a593Smuzhiyun #define DA732X_OUTPUT_OFFSET_STEP 0x80 33*4882a593Smuzhiyun #define DA732X_HP_OUT_TRIM_VAL 0x0 34*4882a593Smuzhiyun #define DA732X_WAIT_FOR_STABILIZATION 1 35*4882a593Smuzhiyun #define DA732X_HPL_DAC 0 36*4882a593Smuzhiyun #define DA732X_HPR_DAC 1 37*4882a593Smuzhiyun #define DA732X_HP_DACS 2 38*4882a593Smuzhiyun #define DA732X_HPL_AMP 0 39*4882a593Smuzhiyun #define DA732X_HPR_AMP 1 40*4882a593Smuzhiyun #define DA732X_HP_AMPS 2 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun /* Clock settings */ 43*4882a593Smuzhiyun #define DA732X_STARTUP_DELAY 100 44*4882a593Smuzhiyun #define DA732X_PLL_OUT_196608 196608000 45*4882a593Smuzhiyun #define DA732X_PLL_OUT_180634 180633600 46*4882a593Smuzhiyun #define DA732X_PLL_OUT_SRM 188620800 47*4882a593Smuzhiyun #define DA732X_MCLK_10MHZ 10000000 48*4882a593Smuzhiyun #define DA732X_MCLK_20MHZ 20000000 49*4882a593Smuzhiyun #define DA732X_MCLK_40MHZ 40000000 50*4882a593Smuzhiyun #define DA732X_MCLK_54MHZ 54000000 51*4882a593Smuzhiyun #define DA732X_MCLK_RET_0_10MHZ 0 52*4882a593Smuzhiyun #define DA732X_MCLK_VAL_0_10MHZ 1 53*4882a593Smuzhiyun #define DA732X_MCLK_RET_10_20MHZ 1 54*4882a593Smuzhiyun #define DA732X_MCLK_VAL_10_20MHZ 2 55*4882a593Smuzhiyun #define DA732X_MCLK_RET_20_40MHZ 2 56*4882a593Smuzhiyun #define DA732X_MCLK_VAL_20_40MHZ 4 57*4882a593Smuzhiyun #define DA732X_MCLK_RET_40_54MHZ 3 58*4882a593Smuzhiyun #define DA732X_MCLK_VAL_40_54MHZ 8 59*4882a593Smuzhiyun #define DA732X_DAI_ID1 0 60*4882a593Smuzhiyun #define DA732X_DAI_ID2 1 61*4882a593Smuzhiyun #define DA732X_SRCCLK_PLL 0 62*4882a593Smuzhiyun #define DA732X_SRCCLK_MCLK 1 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun #define DA732X_LIN_LP_VOL 0x4F 65*4882a593Smuzhiyun #define DA732X_LP_VOL 0x40 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun /* Kcontrols */ 68*4882a593Smuzhiyun #define DA732X_DAC_EN_MAX 2 69*4882a593Smuzhiyun #define DA732X_ADCL_MUX_MAX 2 70*4882a593Smuzhiyun #define DA732X_ADCR_MUX_MAX 3 71*4882a593Smuzhiyun #define DA732X_HPF_MODE_MAX 3 72*4882a593Smuzhiyun #define DA732X_HPF_MODE_SHIFT 4 73*4882a593Smuzhiyun #define DA732X_HPF_MUSIC_SHIFT 0 74*4882a593Smuzhiyun #define DA732X_HPF_MUSIC_MAX 4 75*4882a593Smuzhiyun #define DA732X_HPF_VOICE_SHIFT 4 76*4882a593Smuzhiyun #define DA732X_HPF_VOICE_MAX 8 77*4882a593Smuzhiyun #define DA732X_EQ_EN_MAX 1 78*4882a593Smuzhiyun #define DA732X_HPF_VOICE 1 79*4882a593Smuzhiyun #define DA732X_HPF_MUSIC 2 80*4882a593Smuzhiyun #define DA732X_HPF_DISABLED 0 81*4882a593Smuzhiyun #define DA732X_NO_INVERT 0 82*4882a593Smuzhiyun #define DA732X_INVERT 1 83*4882a593Smuzhiyun #define DA732X_SWITCH_MAX 1 84*4882a593Smuzhiyun #define DA732X_ENABLE_CP 1 85*4882a593Smuzhiyun #define DA732X_DISABLE_CP 0 86*4882a593Smuzhiyun #define DA732X_DISABLE_ALL_CLKS 0 87*4882a593Smuzhiyun #define DA732X_RESET_ADCS 0 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun /* dB values */ 90*4882a593Smuzhiyun #define DA732X_MIC_VOL_DB_MIN 0 91*4882a593Smuzhiyun #define DA732X_MIC_VOL_DB_INC 50 92*4882a593Smuzhiyun #define DA732X_MIC_PRE_VOL_DB_MIN 0 93*4882a593Smuzhiyun #define DA732X_MIC_PRE_VOL_DB_INC 600 94*4882a593Smuzhiyun #define DA732X_AUX_VOL_DB_MIN -6000 95*4882a593Smuzhiyun #define DA732X_AUX_VOL_DB_INC 150 96*4882a593Smuzhiyun #define DA732X_HP_VOL_DB_MIN -2250 97*4882a593Smuzhiyun #define DA732X_HP_VOL_DB_INC 150 98*4882a593Smuzhiyun #define DA732X_LIN2_VOL_DB_MIN -1650 99*4882a593Smuzhiyun #define DA732X_LIN2_VOL_DB_INC 150 100*4882a593Smuzhiyun #define DA732X_LIN3_VOL_DB_MIN -1650 101*4882a593Smuzhiyun #define DA732X_LIN3_VOL_DB_INC 150 102*4882a593Smuzhiyun #define DA732X_LIN4_VOL_DB_MIN -2250 103*4882a593Smuzhiyun #define DA732X_LIN4_VOL_DB_INC 150 104*4882a593Smuzhiyun #define DA732X_EQ_BAND_VOL_DB_MIN -1050 105*4882a593Smuzhiyun #define DA732X_EQ_BAND_VOL_DB_INC 150 106*4882a593Smuzhiyun #define DA732X_DAC_VOL_DB_MIN -7725 107*4882a593Smuzhiyun #define DA732X_DAC_VOL_DB_INC 75 108*4882a593Smuzhiyun #define DA732X_ADC_VOL_DB_MIN 0 109*4882a593Smuzhiyun #define DA732X_ADC_VOL_DB_INC -1 110*4882a593Smuzhiyun #define DA732X_EQ_OVERALL_VOL_DB_MIN -1800 111*4882a593Smuzhiyun #define DA732X_EQ_OVERALL_VOL_DB_INC 600 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun enum da732x_sysctl { 114*4882a593Smuzhiyun DA732X_SR_8KHZ = 0x1, 115*4882a593Smuzhiyun DA732X_SR_11_025KHZ = 0x2, 116*4882a593Smuzhiyun DA732X_SR_12KHZ = 0x3, 117*4882a593Smuzhiyun DA732X_SR_16KHZ = 0x5, 118*4882a593Smuzhiyun DA732X_SR_22_05KHZ = 0x6, 119*4882a593Smuzhiyun DA732X_SR_24KHZ = 0x7, 120*4882a593Smuzhiyun DA732X_SR_32KHZ = 0x9, 121*4882a593Smuzhiyun DA732X_SR_44_1KHZ = 0xA, 122*4882a593Smuzhiyun DA732X_SR_48KHZ = 0xB, 123*4882a593Smuzhiyun DA732X_SR_88_1KHZ = 0xE, 124*4882a593Smuzhiyun DA732X_SR_96KHZ = 0xF, 125*4882a593Smuzhiyun }; 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun #endif /* __DA732X_H_ */ 128