| /* |
| * ES8374.h -- ES8374 ALSA SoC Audio Codec |
| * |
| * |
| * |
| * Authors: |
| * |
| * Based on ES8374.h by David Yang |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| */ |
| |
| #ifndef _ES8374_H |
| #define _ES8374_H |
| |
| /* THE REGISTER DEFINITION FORMAT */ |
| /* |
| * ES8374_REGISTER NAME_REG_REGISTER ADDRESS |
| */ |
| #define ES8374_RESET_REG00 0x00 /* this register is used to reset digital,csm,clock manager etc.*/ |
| |
| /* |
| * Clock Scheme Register definition |
| */ |
| #define ES8374_CLK_MANAGEMENT_REG01 0x01 /* The register is used to turn on/off the clock for ADC, DAC, MCLK, BCLK and CLASS D */ |
| #define ES8374_CLK_MANAGEMENT_REG02 0x02 /* ADC, PLL clock */ |
| |
| |
| #define ES8374_ADC_OSR_REG03 0x03 /* The ADC OSR setting */ |
| #define ES8374_DAC_FLT_CNT_REG04 0x04 /* The DAC filter counter waiting cycles control */ |
| #define ES8374_CLK_DIV_REG05 0x05 /* ADC&DAC internal mclk Divider */ |
| #define ES8374_LRCK_DIV_REG06 0x06 /* The LRCK divider */ |
| #define ES8374_LRCK_DIV_REG07 0x07 |
| #define ES8374_CLASS_D_DIV_REG08 0x08 /* Class D clock divider */ |
| /* |
| * PLL control register definition |
| */ |
| #define ES8374_PLL_CONTROL1_REG09 0x09 /* Register 0x09 for PLL reset, power up/down, dither and divider settting */ |
| #define ES8374_PLL_CONTROL2_REG0A 0x0A /* Register 0x0A for PLL low power, gain, supply voltage and vco setting */ |
| #define ES8374_PLL_N_REG0B 0x0B /* Register 0x0B for N and pll calibrate */ |
| #define ES8374_PLL_K_REG0C 0x0C /* Register 0x0C - 0x0E for PLLK */ |
| #define ES8374_PLL_K_REG0D 0x0D |
| #define ES8374_PLL_K_REG0E 0x0E |
| /* |
| * The serial digital audio port |
| */ |
| #define ES8374_MS_BCKDIV_REG0F 0x0F /* The setting for Master/Slave mode and BCLK divider */ |
| #define ES8374_ADC_FMT_REG10 0x10 /* ADC Format */ |
| #define ES8374_DAC_FMT_REG11 0x11 /* DAC Format */ |
| |
| /* |
| * The system Control |
| */ |
| #define ES8374_CHP_INI_REG12 0x12 /* The time control for chip initialization */ |
| #define ES8374_POWERUP_REG13 0x13 /* The time control for power up */ |
| /* |
| * The analog control |
| */ |
| #define ES8374_ANA_REF_REG14 0x14 /* The analog reference */ |
| #define ES8374_ANA_PWR_CTL_REG15 0x15 /* The analog power up/down */ |
| #define ES8374_ANA_LOW_PWR_REG16 0x16 /* Low power setting*/ |
| #define ES8374_ANA_REF_LP_REG17 0x17 /* Reference and low power setting */ |
| #define ES8374_ANA_BIAS_REG18 0x18 /* Bias selecting */ |
| /* |
| * MONO OUT |
| */ |
| #define ES8374_MONO_MIX_REG1A 0x1A /* MonoMixer */ |
| #define ES8374_MONO_GAIN_REG1B 0x1B /* Mono Out Gain */ |
| /* |
| * SPEAKER OUT |
| */ |
| #define ES8374_SPK_MIX_REG1C 0x1C /* Speaker Mixer */ |
| #define ES8374_SPK_MIX_GAIN_REG1D 0x1D /* Speaker Mixer Gain */ |
| #define ES8374_SPK_OUT_GAIN_REG1E 0x1E /* Speaker Output Gain */ |
| #define ES8374_SPK_CTL_REG1F 0x1F /* Speaker control */ |
| #define ES8374_SPK_CTL_REG20 0x20 /* Speaker control */ |
| /* |
| * Analog In |
| */ |
| #define ES8374_AIN_PWR_SRC_REG21 0x21 /* Power control and source selecting for AIN*/ |
| #define ES8374_AIN_PGA_REG22 0x22 /* AIN PGA Gain Control */ |
| /* |
| * ADC Control |
| */ |
| #define ES8374_ADC_CONTROL_REG24 0x24 /* adc and DMIC Setting */ |
| #define ES8374_ADC_VOLUME_REG25 0x25 /* adc volume */ |
| /* |
| * ADC ALC |
| */ |
| #define ES8374_ALC_EN_MAX_GAIN_REG26 0x26 /* adc alc enable and max gain setting */ |
| #define ES8374_ALC_MIN_GAIN_REG27 0x27 /* ADC Alc min gain */ |
| #define ES8374_ALC_LVL_HLD_REG28 0x28 /* alc level and hold time control */ |
| #define ES8374_ALC_DCY_ATK_REG29 0x29 /* ALC DCY and ATK time control */ |
| #define ES8374_ALC_WIN_SIZE_REG2A 0x2A /* ALC WIN Size */ |
| #define ES8374_ALC_NGTH_REG2B 0x2B /* alc noise gate setting */ |
| /* |
| * ADC HPF setting |
| */ |
| #define ES8374_ADC_HPF_REG2C 0x2C /* The high pass filter coefficient*/ |
| /* |
| * Equalizer SRC setting |
| */ |
| #define ES8374_EQ_SRC_REG2D 0x2D /* adc src, dac src and EQ SRC setting */ |
| |
| /* |
| * ADC 1st shelving filter |
| */ |
| #define ES8374_ADC_SHV_A_REG2E 0x2E /* adc shelving A*/ |
| #define ES8374_ADC_SHV_A_REG2F 0x2F |
| #define ES8374_ADC_SHV_A_REG30 0x30 |
| #define ES8374_ADC_SHV_A_REG31 0x31 |
| |
| #define ES8374_ADC_SHV_B_REG32 0x32 /* ADC Shelving B*/ |
| #define ES8374_ADC_SHV_B_REG33 0x33 |
| #define ES8374_ADC_SHV_B_REG34 0x34 |
| #define ES8374_ADC_SHV_B_REG35 0x35 |
| |
| /* |
| * DAC control |
| */ |
| #define ES8374_DAC_CONTROL_REG36 0x36 /* dac control1 */ |
| #define ES8374_DAC_CONTROL_REG37 0x37 /* dac control2 */ |
| |
| #define ES8374_DAC_VOLUME_REG38 0x38 /* dac volume */ |
| #define ES8374_DAC_OFFSET_REG39 0x39 /* DAC offset */ |
| |
| /* |
| * DAC 2nd shleving filter |
| */ |
| /* register 0x3A to 0x44 is for dac shelving filter */ |
| /* |
| * Equalizer coeffient |
| */ |
| /* register 0x45 to 0x6c is for 2nd equalizer filter, this filter can be shared by DAC and ADC */ |
| |
| #define ES8374_GPIO_INSERT_REG6D 0x6D /* GPIO & HP INSERT CONTROL */ |
| #define ES8374_FLAG_REG6E 0x6E /* Flag register */ |
| |
| /* The End Of Register definition */ |
| |
| #define ES8374_PLL 1 |
| #define ES8374_PLL_SRC_FRM_MCLK 1 |
| |
| #define ES8374_CLKID_MCLK 0 |
| #define ES8374_CLKID_PLLO 1 |
| |
| #define ES8374_MAX_REGISTER 128 |
| |
| #endif |