15c439937SZhu Ning /* SPDX-License-Identifier: GPL-2.0-only */ 25c439937SZhu Ning /* 35c439937SZhu Ning * es8326.h -- es8326 ALSA SoC audio driver 45c439937SZhu Ning * Copyright Everest Semiconductor Co.,Ltd 55c439937SZhu Ning * 65c439937SZhu Ning * Authors: David Yang <yangxiaohua@everest-semi.com> 75c439937SZhu Ning */ 85c439937SZhu Ning 95c439937SZhu Ning #ifndef _ES8326_H 105c439937SZhu Ning #define _ES8326_H 115c439937SZhu Ning 125c439937SZhu Ning /* ES8326 register space */ 135c439937SZhu Ning #define ES8326_RESET 0x00 145c439937SZhu Ning #define ES8326_CLK_CTL 0x01 155c439937SZhu Ning #define ES8326_CLK_INV 0x02 165c439937SZhu Ning #define ES8326_CLK_RESAMPLE 0x03 175c439937SZhu Ning #define ES8326_CLK_DIV1 0x04 185c439937SZhu Ning #define ES8326_CLK_DIV2 0x05 195c439937SZhu Ning #define ES8326_CLK_DLL 0x06 205c439937SZhu Ning #define ES8326_CLK_MUX 0x07 215c439937SZhu Ning #define ES8326_CLK_ADC_SEL 0x08 225c439937SZhu Ning #define ES8326_CLK_DAC_SEL 0x09 235c439937SZhu Ning #define ES8326_CLK_ADC_OSR 0x0a 245c439937SZhu Ning #define ES8326_CLK_DAC_OSR 0x0b 255c439937SZhu Ning #define ES8326_CLK_DIV_CPC 0x0c 265c439937SZhu Ning #define ES8326_CLK_DIV_BCLK 0x0d 275c439937SZhu Ning #define ES8326_CLK_TRI 0x0e 285c439937SZhu Ning #define ES8326_CLK_DIV_LRCK 0x0f 295c439937SZhu Ning #define ES8326_CLK_VMIDS1 0x10 305c439937SZhu Ning #define ES8326_CLK_VMIDS2 0x11 315c439937SZhu Ning #define ES8326_CLK_CAL_TIME 0x12 325c439937SZhu Ning #define ES8326_FMT 0x13 335c439937SZhu Ning 345c439937SZhu Ning #define ES8326_DAC_MUTE 0x14 355c439937SZhu Ning #define ES8326_ADC_MUTE 0x15 365c439937SZhu Ning #define ES8326_ANA_PDN 0x16 375c439937SZhu Ning #define ES8326_PGA_PDN 0x17 385c439937SZhu Ning #define ES8326_VMIDSEL 0x18 395c439937SZhu Ning #define ES8326_ANA_LP 0x19 405c439937SZhu Ning #define ES8326_ANA_DMS 0x1a 415c439937SZhu Ning #define ES8326_ANA_MICBIAS 0x1b 425c439937SZhu Ning #define ES8326_ANA_VSEL 0x1c 435c439937SZhu Ning #define ES8326_SYS_BIAS 0x1d 445c439937SZhu Ning #define ES8326_BIAS_SW1 0x1e 455c439937SZhu Ning #define ES8326_BIAS_SW2 0x1f 465c439937SZhu Ning #define ES8326_BIAS_SW3 0x20 475c439937SZhu Ning #define ES8326_BIAS_SW4 0x21 485c439937SZhu Ning #define ES8326_VMIDLOW 0x22 495c439937SZhu Ning #define ES8326_PGAGAIN 0x23 505c439937SZhu Ning #define ES8326_HP_DRIVER 0x24 515c439937SZhu Ning #define ES8326_DAC2HPMIX 0x25 525c439937SZhu Ning #define ES8326_HP_VOL 0x26 535c439937SZhu Ning #define ES8326_HP_CAL 0x27 545c439937SZhu Ning #define ES8326_HP_DRIVER_REF 0x28 555c439937SZhu Ning #define ES8326_ADC_SCALE 0x29 565c439937SZhu Ning #define ES8326_ADC1_SRC 0x2a 575c439937SZhu Ning #define ES8326_ADC2_SRC 0x2b 585c439937SZhu Ning #define ES8326_ADC1_VOL 0x2c 595c439937SZhu Ning #define ES8326_ADC2_VOL 0x2d 605c439937SZhu Ning #define ES8326_ADC_RAMPRATE 0x2e 615c439937SZhu Ning #define ES8326_ALC_RECOVERY 0x32 625c439937SZhu Ning #define ES8326_ALC_LEVEL 0x33 635c439937SZhu Ning #define ES8326_ADC_HPFS1 0x34 645c439937SZhu Ning #define ES8326_ADC_HPFS2 0x35 655c439937SZhu Ning #define ES8326_ADC_EQ 0x36 665c439937SZhu Ning #define ES8326_HP_OFFSET_CAL 0x4A 675c439937SZhu Ning #define ES8326_HPL_OFFSET_INI 0x4B 685c439937SZhu Ning #define ES8326_HPR_OFFSET_INI 0x4C 695c439937SZhu Ning #define ES8326_DAC_DSM 0x4D 705c439937SZhu Ning #define ES8326_DAC_RAMPRATE 0x4E 715c439937SZhu Ning #define ES8326_DAC_VPPSCALE 0x4F 725c439937SZhu Ning #define ES8326_DAC_VOL 0x50 735c439937SZhu Ning #define ES8326_DRC_RECOVERY 0x53 745c439937SZhu Ning #define ES8326_DRC_WINSIZE 0x54 755c439937SZhu Ning #define ES8326_HPJACK_TIMER 0x56 765c439937SZhu Ning #define ES8326_HP_DET 0x57 775c439937SZhu Ning #define ES8326_INT_SOURCE 0x58 785c439937SZhu Ning #define ES8326_INTOUT_IO 0x59 795c439937SZhu Ning #define ES8326_SDINOUT1_IO 0x5A 805c439937SZhu Ning #define ES8326_SDINOUT23_IO 0x5B 815c439937SZhu Ning #define ES8326_JACK_PULSE 0x5C 825c439937SZhu Ning 835c439937SZhu Ning #define ES8326_PULLUP_CTL 0xF9 845c439937SZhu Ning #define ES8326_HP_DETECT 0xFB 855c439937SZhu Ning #define ES8326_CHIP_ID1 0xFD 865c439937SZhu Ning #define ES8326_CHIP_ID2 0xFE 875c439937SZhu Ning #define ES8326_CHIP_VERSION 0xFF 885c439937SZhu Ning 895c439937SZhu Ning /* ES8326_RESET */ 905c439937SZhu Ning #define ES8326_CSM_ON (1 << 7) 915c439937SZhu Ning #define ES8326_MASTER_MODE_EN (1 << 6) 925c439937SZhu Ning #define ES8326_PWRUP_SEQ_EN (1 << 5) 935c439937SZhu Ning #define ES8326_CODEC_RESET (0x0f << 0) 945c439937SZhu Ning #define ES8326_CSM_OFF (0 << 7) 95*083912c2SZhu Ning #define ES8326_MUTE_MASK (3 << 0) 96*083912c2SZhu Ning #define ES8326_MUTE (3 << 0) 975c439937SZhu Ning 985c439937SZhu Ning /* ES8326_CLK_CTL */ 995c439937SZhu Ning #define ES8326_CLK_ON (0x7f << 0) 1005c439937SZhu Ning #define ES8326_CLK_OFF (0 << 0) 1015c439937SZhu Ning 1025c439937SZhu Ning /* ES8326_CLK_INV */ 1035c439937SZhu Ning #define ES8326_BCLK_AS_MCLK (1 << 3) 1045c439937SZhu Ning 1055c439937SZhu Ning /* ES8326_FMT */ 1065c439937SZhu Ning #define ES8326_S24_LE (0 << 2) 1075c439937SZhu Ning #define ES8326_S20_3_LE (1 << 2) 1085c439937SZhu Ning #define ES8326_S18_LE (2 << 2) 1095c439937SZhu Ning #define ES8326_S16_LE (3 << 2) 1105c439937SZhu Ning #define ES8326_S32_LE (4 << 2) 1115c439937SZhu Ning #define ES8326_DATA_LEN_MASK (7 << 2) 1125c439937SZhu Ning 1135c439937SZhu Ning #define ES8326_DAIFMT_MASK ((1 << 5) | (3 << 0)) 1145c439937SZhu Ning #define ES8326_DAIFMT_I2S 0 1155c439937SZhu Ning #define ES8326_DAIFMT_LEFT_J (1 << 0) 1165c439937SZhu Ning #define ES8326_DAIFMT_DSP_A (3 << 0) 1175c439937SZhu Ning #define ES8326_DAIFMT_DSP_B ((1 << 5) | (3 << 0)) 1185c439937SZhu Ning 1195c439937SZhu Ning /* ES8326_PGAGAIN */ 1205c439937SZhu Ning #define ES8326_MIC_SEL_MASK (3 << 4) 1215c439937SZhu Ning #define ES8326_MIC1_SEL (1 << 4) 1225c439937SZhu Ning #define ES8326_MIC2_SEL (1 << 5) 1235c439937SZhu Ning 1245c439937SZhu Ning /* ES8326_HP_CAL */ 125*083912c2SZhu Ning #define ES8326_HP_OFF 0 126*083912c2SZhu Ning #define ES8326_HP_FORCE_CAL ((1 << 7) | (1 << 3)) 127*083912c2SZhu Ning #define ES8326_HP_ON ((7 << 4) | (7 << 0)) 1285c439937SZhu Ning 1295c439937SZhu Ning /* ES8326_ADC1_SRC */ 1305c439937SZhu Ning #define ES8326_ADC1_SHIFT 0 1315c439937SZhu Ning #define ES8326_ADC2_SHIFT 4 1325c439937SZhu Ning #define ES8326_ADC_SRC_ANA 0 1335c439937SZhu Ning #define ES8326_ADC_SRC_ANA_INV_SW0 1 1345c439937SZhu Ning #define ES8326_ADC_SRC_ANA_INV_SW1 2 1355c439937SZhu Ning #define ES8326_ADC_SRC_DMIC_MCLK 3 1365c439937SZhu Ning #define ES8326_ADC_SRC_DMIC_SDIN2 4 1375c439937SZhu Ning #define ES8326_ADC_SRC_DMIC_SDIN2_INV 5 1385c439937SZhu Ning #define ES8326_ADC_SRC_DMIC_SDIN3 6 1395c439937SZhu Ning #define ES8326_ADC_SRC_DMIC_SDIN3_INV 7 1405c439937SZhu Ning 1415c439937SZhu Ning #define ES8326_ADC_AMIC ((ES8326_ADC_SRC_ANA_INV_SW1 << ES8326_ADC2_SHIFT) \ 1425c439937SZhu Ning | (ES8326_ADC_SRC_ANA_INV_SW1 << ES8326_ADC1_SHIFT)) 1435c439937SZhu Ning #define ES8326_ADC_DMIC ((ES8326_ADC_SRC_DMIC_SDIN2 << ES8326_ADC2_SHIFT) \ 1445c439937SZhu Ning | (ES8326_ADC_SRC_DMIC_SDIN2 << ES8326_ADC1_SHIFT)) 1455c439937SZhu Ning /* ES8326_ADC2_SRC */ 1465c439937SZhu Ning #define ES8326_ADC3_SHIFT 0 1475c439937SZhu Ning #define ES8326_ADC4_SHIFT 3 1485c439937SZhu Ning 1495c439937SZhu Ning /* ES8326_HP_DET */ 1505c439937SZhu Ning #define ES8326_HP_DET_SRC_PIN27 (1 << 5) 1515c439937SZhu Ning #define ES8326_HP_DET_SRC_PIN9 (1 << 4) 1525c439937SZhu Ning #define ES8326_HP_DET_JACK_POL (1 << 3) 1535c439937SZhu Ning #define ES8326_HP_DET_BUTTON_POL (1 << 2) 1545c439937SZhu Ning #define ES8326_HP_TYPE_OMTP (3 << 0) 1555c439937SZhu Ning #define ES8326_HP_TYPE_CTIA (2 << 0) 1565c439937SZhu Ning #define ES8326_HP_TYPE_AUTO (1 << 0) 1575c439937SZhu Ning #define ES8326_HP_TYPE_AUTO_INV (0 << 0) 1585c439937SZhu Ning 1595c439937SZhu Ning /* ES8326_SDINOUT1_IO */ 1605c439937SZhu Ning #define ES8326_IO_INPUT (0 << 0) 1615c439937SZhu Ning #define ES8326_IO_SDIN_SLOT0 (1 << 0) 1625c439937SZhu Ning #define ES8326_IO_SDIN_SLOT1 (2 << 0) 1635c439937SZhu Ning #define ES8326_IO_SDIN_SLOT2 (3 << 0) 1645c439937SZhu Ning #define ES8326_IO_SDIN_SLOT7 (8 << 0) 1655c439937SZhu Ning #define ES8326_IO_DMIC_CLK (9 << 0) 1665c439937SZhu Ning #define ES8326_IO_DMIC_CLK_INV (0x0a << 0) 1675c439937SZhu Ning #define ES8326_IO_SDOUT2 (0x0b << 0) 1685c439937SZhu Ning #define ES8326_IO_LOW (0x0e << 0) 1695c439937SZhu Ning #define ES8326_IO_HIGH (0x0f << 0) 1705c439937SZhu Ning #define ES8326_ADC2DAC (1 << 3) 1715c439937SZhu Ning #define ES8326_SDINOUT1_SHIFT 4 1725c439937SZhu Ning 1735c439937SZhu Ning /* ES8326_SDINOUT23_IO */ 1745c439937SZhu Ning #define ES8326_SDINOUT2_SHIFT 4 1755c439937SZhu Ning #define ES8326_SDINOUT3_SHIFT 0 1765c439937SZhu Ning 1775c439937SZhu Ning /* ES8326_HP_DETECT */ 1785c439937SZhu Ning #define ES8326_HPINSERT_FLAG (1 << 1) 1795c439937SZhu Ning #define ES8326_HPBUTTON_FLAG (1 << 0) 1805c439937SZhu Ning 1815c439937SZhu Ning /* ES8326_CHIP_VERSION 0xFF */ 1825c439937SZhu Ning #define ES8326_VERSION_B (1 << 0) 1835c439937SZhu Ning 1845c439937SZhu Ning #endif 185*083912c2SZhu Ning 186