1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * ALSA SoC ES7202 pdm adc driver 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Author: David Yang, <yangxiaohua@everest-semi.com> 5*4882a593Smuzhiyun * Copyright: (C) 2020 Everest Semiconductor Co Ltd., 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify 8*4882a593Smuzhiyun * it under the terms of the GNU General Public License version 2 as 9*4882a593Smuzhiyun * published by the Free Software Foundation. 10*4882a593Smuzhiyun * 11*4882a593Smuzhiyun */ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #ifndef _ES7202_H 14*4882a593Smuzhiyun #define _ES7202_H 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* ES7202 register space */ 17*4882a593Smuzhiyun #define ES7202_RESET_REG00 0x00 18*4882a593Smuzhiyun #define ES7202_SOFT_MODE_REG01 0x01 19*4882a593Smuzhiyun #define ES7202_CLK_DIV_REG02 0x02 20*4882a593Smuzhiyun #define ES7202_CLK_EN_REG03 0x03 21*4882a593Smuzhiyun #define ES7202_T1_VMID_REG04 0x04 22*4882a593Smuzhiyun #define ES7202_T2_VMID_REG05 0x05 23*4882a593Smuzhiyun #define ES7202_CHIP_STA_REG06 0x06 24*4882a593Smuzhiyun #define ES7202_PDM_INF_CTL_REG07 0x07 25*4882a593Smuzhiyun #define ES7202_MISC_CTL_REG08 0x08 26*4882a593Smuzhiyun #define ES7202_ANALOG_EN_REG10 0x10 27*4882a593Smuzhiyun #define ES7202_BIAS_VMID_REG11 0x11 28*4882a593Smuzhiyun #define ES7202_PGA1_BIAS_REG12 0x12 29*4882a593Smuzhiyun #define ES7202_PGA2_BIAS_REG13 0x13 30*4882a593Smuzhiyun #define ES7202_MOD1_BIAS_REG14 0x14 31*4882a593Smuzhiyun #define ES7202_MOD2_BIAS_REG15 0x15 32*4882a593Smuzhiyun #define ES7202_VREFP_BIAS_REG16 0x16 33*4882a593Smuzhiyun #define ES7202_VMMOD_BIAS_REG17 0x17 34*4882a593Smuzhiyun #define ES7202_MODS_BIAS_REG18 0x18 35*4882a593Smuzhiyun #define ES7202_ANALOG_LP1_REG19 0x19 36*4882a593Smuzhiyun #define ES7202_ANALOG_LP2_REG1A 0x1A 37*4882a593Smuzhiyun #define ES7202_ANALOG_MISC1_REG1B 0x1B 38*4882a593Smuzhiyun #define ES7202_ANALOG_MISC2_REG1C 0x1C 39*4882a593Smuzhiyun #define ES7202_PGA1_REG1D 0x1D 40*4882a593Smuzhiyun #define ES7202_PGA2_REG1E 0x1E 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun /* ES7202 User Marco define */ 43*4882a593Smuzhiyun #define VDD_1V8 0 44*4882a593Smuzhiyun #define VDD_3V3 1 45*4882a593Smuzhiyun #define MAX_VOLTAGE_1_8 1980000 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun /* 48*4882a593Smuzhiyun * Select Microphone channels for mic array 49*4882a593Smuzhiyun */ 50*4882a593Smuzhiyun #define MIC_CHN_16 16 51*4882a593Smuzhiyun #define MIC_CHN_14 14 52*4882a593Smuzhiyun #define MIC_CHN_12 12 53*4882a593Smuzhiyun #define MIC_CHN_10 10 54*4882a593Smuzhiyun #define MIC_CHN_8 8 55*4882a593Smuzhiyun #define MIC_CHN_6 6 56*4882a593Smuzhiyun #define MIC_CHN_4 4 57*4882a593Smuzhiyun #define MIC_CHN_2 2 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun #define ES7202_CHANNELS_MAX CONFIG_SND_SOC_ES7202_MIC_MAX_CHANNELS 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_2 62*4882a593Smuzhiyun #define ADC_DEV_MAXNUM 1 63*4882a593Smuzhiyun #endif 64*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_4 65*4882a593Smuzhiyun #define ADC_DEV_MAXNUM 2 66*4882a593Smuzhiyun #endif 67*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_6 68*4882a593Smuzhiyun #define ADC_DEV_MAXNUM 3 69*4882a593Smuzhiyun #endif 70*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_8 71*4882a593Smuzhiyun #define ADC_DEV_MAXNUM 4 72*4882a593Smuzhiyun #endif 73*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_10 74*4882a593Smuzhiyun #define ADC_DEV_MAXNUM 5 75*4882a593Smuzhiyun #endif 76*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_12 77*4882a593Smuzhiyun #define ADC_DEV_MAXNUM 6 78*4882a593Smuzhiyun #endif 79*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_14 80*4882a593Smuzhiyun #define ADC_DEV_MAXNUM 7 81*4882a593Smuzhiyun #endif 82*4882a593Smuzhiyun #if ES7202_CHANNELS_MAX == MIC_CHN_16 83*4882a593Smuzhiyun #define ADC_DEV_MAXNUM 8 84*4882a593Smuzhiyun #endif 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun /* select I2C bus number for es7202 */ 87*4882a593Smuzhiyun #define ES7202_I2C_BUS_NUM CONFIG_SND_SOC_ES7202_I2C_BUS 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun /* 90*4882a593Smuzhiyun * select DTS or I2C Detect method for es7202 91*4882a593Smuzhiyun * 0: i2c_detect, 1:of_device_id 92*4882a593Smuzhiyun */ 93*4882a593Smuzhiyun #define ES7202_MATCH_DTS_EN 1 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun #endif 96