Linux Audio
Check our new training course
Embedded Linux Audio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
/* SPDX-License-Identifier: GPL-2.0-only */ /* * es8326.h -- es8326 ALSA SoC audio driver * Copyright Everest Semiconductor Co.,Ltd * * Authors: David Yang <yangxiaohua@everest-semi.com> */ #ifndef _ES8326_H #define _ES8326_H /* ES8326 register space */ #define ES8326_RESET 0x00 #define ES8326_CLK_CTL 0x01 #define ES8326_CLK_INV 0x02 #define ES8326_CLK_RESAMPLE 0x03 #define ES8326_CLK_DIV1 0x04 #define ES8326_CLK_DIV2 0x05 #define ES8326_CLK_DLL 0x06 #define ES8326_CLK_MUX 0x07 #define ES8326_CLK_ADC_SEL 0x08 #define ES8326_CLK_DAC_SEL 0x09 #define ES8326_CLK_ADC_OSR 0x0a #define ES8326_CLK_DAC_OSR 0x0b #define ES8326_CLK_DIV_CPC 0x0c #define ES8326_CLK_DIV_BCLK 0x0d #define ES8326_CLK_TRI 0x0e #define ES8326_CLK_DIV_LRCK 0x0f #define ES8326_CLK_VMIDS1 0x10 #define ES8326_CLK_VMIDS2 0x11 #define ES8326_CLK_CAL_TIME 0x12 #define ES8326_FMT 0x13 #define ES8326_DAC_MUTE 0x14 #define ES8326_ADC_MUTE 0x15 #define ES8326_ANA_PDN 0x16 #define ES8326_PGA_PDN 0x17 #define ES8326_VMIDSEL 0x18 #define ES8326_ANA_LP 0x19 #define ES8326_ANA_DMS 0x1a #define ES8326_ANA_MICBIAS 0x1b #define ES8326_ANA_VSEL 0x1c #define ES8326_SYS_BIAS 0x1d #define ES8326_BIAS_SW1 0x1e #define ES8326_BIAS_SW2 0x1f #define ES8326_BIAS_SW3 0x20 #define ES8326_BIAS_SW4 0x21 #define ES8326_VMIDLOW 0x22 #define ES8326_PGAGAIN 0x23 #define ES8326_HP_DRIVER 0x24 #define ES8326_DAC2HPMIX 0x25 #define ES8326_HP_VOL 0x26 #define ES8326_HP_CAL 0x27 #define ES8326_HP_DRIVER_REF 0x28 #define ES8326_ADC_SCALE 0x29 #define ES8326_ADC1_SRC 0x2a #define ES8326_ADC2_SRC 0x2b #define ES8326_ADC1_VOL 0x2c #define ES8326_ADC2_VOL 0x2d #define ES8326_ADC_RAMPRATE 0x2e #define ES8326_ALC_RECOVERY 0x32 #define ES8326_ALC_LEVEL 0x33 #define ES8326_ADC_HPFS1 0x34 #define ES8326_ADC_HPFS2 0x35 #define ES8326_ADC_EQ 0x36 #define ES8326_HP_OFFSET_CAL 0x4A #define ES8326_HPL_OFFSET_INI 0x4B #define ES8326_HPR_OFFSET_INI 0x4C #define ES8326_DAC_DSM 0x4D #define ES8326_DAC_RAMPRATE 0x4E #define ES8326_DAC_VPPSCALE 0x4F #define ES8326_DAC_VOL 0x50 #define ES8326_DRC_RECOVERY 0x53 #define ES8326_DRC_WINSIZE 0x54 #define ES8326_HPJACK_TIMER 0x56 #define ES8326_HPDET_TYPE 0x57 #define ES8326_INT_SOURCE 0x58 #define ES8326_INTOUT_IO 0x59 #define ES8326_SDINOUT1_IO 0x5A #define ES8326_SDINOUT23_IO 0x5B #define ES8326_JACK_PULSE 0x5C #define ES8326_HP_MISC 0xF7 #define ES8326_CTIA_OMTP_STA 0xF8 #define ES8326_PULLUP_CTL 0xF9 #define ES8326_CSM_I2C_STA 0xFA #define ES8326_HPDET_STA 0xFB #define ES8326_CSM_MUTE_STA 0xFC #define ES8326_CHIP_ID1 0xFD #define ES8326_CHIP_ID2 0xFE #define ES8326_CHIP_VERSION 0xFF /* ES8326_RESET */ #define ES8326_CSM_ON (1 << 7) #define ES8326_MASTER_MODE_EN (1 << 6) #define ES8326_PWRUP_SEQ_EN (1 << 5) #define ES8326_CODEC_RESET (0x0f << 0) #define ES8326_CSM_OFF (0 << 7) #define ES8326_MUTE_MASK (3 << 0) #define ES8326_MUTE (3 << 0) /* ES8326_CLK_CTL */ #define ES8326_CLK_ON (0x7f << 0) #define ES8326_CLK_OFF (0 << 0) /* ES8326_CLK_INV */ #define ES8326_BCLK_AS_MCLK (1 << 3) /* ES8326_FMT */ #define ES8326_S24_LE (0 << 2) #define ES8326_S20_3_LE (1 << 2) #define ES8326_S18_LE (2 << 2) #define ES8326_S16_LE (3 << 2) #define ES8326_S32_LE (4 << 2) #define ES8326_DATA_LEN_MASK (7 << 2) #define ES8326_DAIFMT_MASK ((1 << 5) | (3 << 0)) #define ES8326_DAIFMT_I2S 0 #define ES8326_DAIFMT_LEFT_J (1 << 0) #define ES8326_DAIFMT_DSP_A (3 << 0) #define ES8326_DAIFMT_DSP_B ((1 << 5) | (3 << 0)) /* ES8326_PGAGAIN */ #define ES8326_MIC_SEL_MASK (3 << 4) #define ES8326_MIC1_SEL (1 << 4) #define ES8326_MIC2_SEL (1 << 5) /* ES8326_HP_CAL */ #define ES8326_HP_OFF 0 #define ES8326_HP_FORCE_CAL ((1 << 7) | (1 << 3)) #define ES8326_HP_ON ((7 << 4) | (7 << 0)) /* ES8326_ADC1_SRC */ #define ES8326_ADC1_SHIFT 0 #define ES8326_ADC2_SHIFT 4 #define ES8326_ADC_SRC_ANA 0 #define ES8326_ADC_SRC_ANA_INV_SW0 1 #define ES8326_ADC_SRC_ANA_INV_SW1 2 #define ES8326_ADC_SRC_DMIC_MCLK 3 #define ES8326_ADC_SRC_DMIC_SDIN2 4 #define ES8326_ADC_SRC_DMIC_SDIN2_INV 5 #define ES8326_ADC_SRC_DMIC_SDIN3 6 #define ES8326_ADC_SRC_DMIC_SDIN3_INV 7 #define ES8326_ADC_AMIC ((ES8326_ADC_SRC_ANA_INV_SW1 << ES8326_ADC2_SHIFT) \ | (ES8326_ADC_SRC_ANA_INV_SW1 << ES8326_ADC1_SHIFT)) #define ES8326_ADC_DMIC ((ES8326_ADC_SRC_DMIC_SDIN2 << ES8326_ADC2_SHIFT) \ | (ES8326_ADC_SRC_DMIC_SDIN2 << ES8326_ADC1_SHIFT)) /* ES8326_ADC2_SRC */ #define ES8326_ADC3_SHIFT 0 #define ES8326_ADC4_SHIFT 3 /* ES8326_HPDET_TYPE */ #define ES8326_HP_DET_SRC_PIN27 (1 << 5) #define ES8326_HP_DET_SRC_PIN9 (1 << 4) #define ES8326_HP_DET_JACK_POL (1 << 3) #define ES8326_HP_DET_BUTTON_POL (1 << 2) #define ES8326_HP_TYPE_OMTP (3 << 0) #define ES8326_HP_TYPE_CTIA (2 << 0) #define ES8326_HP_TYPE_AUTO (1 << 0) #define ES8326_HP_TYPE_AUTO_INV (0 << 0) /* ES8326_INT_SOURCE */ #define ES8326_INT_SRC_DAC_MOZ (1 << 0) #define ES8326_INT_SRC_ADC_MOZ (1 << 1) #define ES8326_INT_SRC_BUTTON (1 << 2) #define ES8326_INT_SRC_PIN9 (1 << 3) #define ES8326_INT_SRC_PIN27 (1 << 4) /* ES8326_SDINOUT1_IO */ #define ES8326_IO_INPUT (0 << 0) #define ES8326_IO_SDIN_SLOT0 (1 << 0) #define ES8326_IO_SDIN_SLOT1 (2 << 0) #define ES8326_IO_SDIN_SLOT2 (3 << 0) #define ES8326_IO_SDIN_SLOT7 (8 << 0) #define ES8326_IO_DMIC_CLK (9 << 0) #define ES8326_IO_DMIC_CLK_INV (0x0a << 0) #define ES8326_IO_SDOUT2 (0x0b << 0) #define ES8326_IO_LOW (0x0e << 0) #define ES8326_IO_HIGH (0x0f << 0) #define ES8326_ADC2DAC (1 << 3) #define ES8326_SDINOUT1_SHIFT 4 /* ES8326_SDINOUT23_IO */ #define ES8326_SDINOUT2_SHIFT 4 #define ES8326_SDINOUT3_SHIFT 0 /* ES8326_HPDET_STA */ #define ES8326_HPINSERT_FLAG (1 << 1) #define ES8326_HPBUTTON_FLAG (1 << 0) /* ES8326_CHIP_VERSION 0xFF */ #define ES8326_VERSION (1 << 0) #define ES8326_VERSION_B (3 << 0) #endif