1*5d9cb740SZhang Yi /* SPDX-License-Identifier: GPL-2.0-only */ 2*5d9cb740SZhang Yi 3*5d9cb740SZhang Yi #ifndef __ES9356_H__ 4*5d9cb740SZhang Yi #define __ES9356_H__ 5*5d9cb740SZhang Yi 6*5d9cb740SZhang Yi /*ES9356 Implementation-define*/ 7*5d9cb740SZhang Yi #define ES9356_FLAGS_HP 0x2003 8*5d9cb740SZhang Yi #define ES9356_CSM_RESET 0x2020 9*5d9cb740SZhang Yi #define ES9356_FUC_RESET 0x2021 10*5d9cb740SZhang Yi #define ES9356_STATE 0x2022 11*5d9cb740SZhang Yi #define ES9356_VMID_TIME 0x2023 12*5d9cb740SZhang Yi #define ES9356_STATE_TIME 0x2024 13*5d9cb740SZhang Yi #define ES9356_HP_SPK_TIME 0x2025 14*5d9cb740SZhang Yi #define ES9356_WP_ENABLE 0x2026 15*5d9cb740SZhang Yi #define ES9356_DMIC_GPIO 0x2027 16*5d9cb740SZhang Yi #define ES9356_ENDPOINT_MODE 0x2028 17*5d9cb740SZhang Yi 18*5d9cb740SZhang Yi /*HP DETECT*/ 19*5d9cb740SZhang Yi #define ES9356_HP_TYPE 0x2029 20*5d9cb740SZhang Yi #define ES9356_HP_DETECTTIME 0x202A 21*5d9cb740SZhang Yi #define ES9356_MICBIAS_SEL 0x202B 22*5d9cb740SZhang Yi #define ES9356_KEY_PRESS_TIME 0x202C 23*5d9cb740SZhang Yi #define ES9356_KEY_RELEASE_TIME 0x202D 24*5d9cb740SZhang Yi #define ES9356_KEY_HOLD_TIME 0x202E 25*5d9cb740SZhang Yi #define ES9356_BTSEL_REF 0x202F 26*5d9cb740SZhang Yi #define ES9356_BUTTON_CHARGE 0x2030 27*5d9cb740SZhang Yi 28*5d9cb740SZhang Yi #define ES9356_KEYD_DETECT 0x2031 29*5d9cb740SZhang Yi #define ES9356_DPEN_TIME 0x2032 30*5d9cb740SZhang Yi #define ES9356_TIMER_CHECK 0x2033 31*5d9cb740SZhang Yi #define ES9356_IBIASGEN 0x2041 32*5d9cb740SZhang Yi #define ES9356_VMID1SEL 0x2042 33*5d9cb740SZhang Yi #define ES9356_VMID1STL 0x2043 34*5d9cb740SZhang Yi #define ES9356_VMID2SEL 0x2044 35*5d9cb740SZhang Yi #define ES9356_VMID2STL 0x2045 36*5d9cb740SZhang Yi #define ES9356_VSEL 0x2046 37*5d9cb740SZhang Yi #define ES9356_MICBIAS_CTL 0x2047 38*5d9cb740SZhang Yi #define ES9356_HPDETECT_CTL 0x2048 39*5d9cb740SZhang Yi #define ES9356_MICBIAS_RES 0x2049 40*5d9cb740SZhang Yi 41*5d9cb740SZhang Yi /*CLK*/ 42*5d9cb740SZhang Yi #define ES9356_CLK_SEL 0x2050 43*5d9cb740SZhang Yi #define ES9356_CLK_CTL 0x2051 44*5d9cb740SZhang Yi #define ES9356_DETCLK_CTL 0x2052 45*5d9cb740SZhang Yi #define ES9356_CPCLK_CTL 0x2053 46*5d9cb740SZhang Yi #define ES9356_SPKCLK_CTL 0x2054 47*5d9cb740SZhang Yi #define ES9356_PRE_DIV_CTL 0x2055 48*5d9cb740SZhang Yi #define ES9356_DLL_MODE 0x2056 49*5d9cb740SZhang Yi #define ES9356_ANACLK_SEL 0x2057 50*5d9cb740SZhang Yi #define ES9356_OSRCLK_SEL 0x2058 51*5d9cb740SZhang Yi #define ES9356_DSPCLK_SEL 0x2059 52*5d9cb740SZhang Yi #define ES9356_SPK9M_MODE 0x205a 53*5d9cb740SZhang Yi 54*5d9cb740SZhang Yi /*ADC DIG CTL*/ 55*5d9cb740SZhang Yi #define ES9356_DMIC_POL 0x2061 56*5d9cb740SZhang Yi #define ES9356_ADC_SWAP 0x2062 57*5d9cb740SZhang Yi #define ES9356_ADC_OSR 0x2063 58*5d9cb740SZhang Yi #define ES9356_ADC_OSRGAIN 0x2064 59*5d9cb740SZhang Yi #define ES9356_ADC_CLEARRAM 0x2065 60*5d9cb740SZhang Yi #define ES9356_ADC_RAMP 0x2066 61*5d9cb740SZhang Yi #define ES9356_ADC_HPF1 0x2067 62*5d9cb740SZhang Yi #define ES9356_ADC_HPF2 0x2068 63*5d9cb740SZhang Yi #define ES9356_ADC_ALC 0x206C 64*5d9cb740SZhang Yi #define ES9356_ALC_LEVEL 0x206D 65*5d9cb740SZhang Yi #define ES9356_ALC_RAMP_WINSIZE 0x206E 66*5d9cb740SZhang Yi 67*5d9cb740SZhang Yi /*ADC ANA CTL*/ 68*5d9cb740SZhang Yi #define ES9356_ADC_REF_EN 0x2080 69*5d9cb740SZhang Yi #define ES9356_ADC_AMIC_CTL 0x2081 70*5d9cb740SZhang Yi #define ES9356_ADC_ANA 0x2082 71*5d9cb740SZhang Yi #define ES9356_PGA_CTL 0x2083 72*5d9cb740SZhang Yi #define ES9356_ADC_INT 0x2084 73*5d9cb740SZhang Yi #define ES9356_ADC_VCM 0x2085 74*5d9cb740SZhang Yi #define ES9356_ADC_VRPBIAS 0x2086 75*5d9cb740SZhang Yi #define ES9356_ADC_LP 0x2087 76*5d9cb740SZhang Yi 77*5d9cb740SZhang Yi /*DAC DIG CTL*/ 78*5d9cb740SZhang Yi #define ES9356_DAC_FSMODE 0x2090 79*5d9cb740SZhang Yi #define ES9356_DAC_OSR 0x2091 80*5d9cb740SZhang Yi #define ES9356_DAC_INV 0x2092 81*5d9cb740SZhang Yi #define ES9356_DAC_RAMP 0x2093 82*5d9cb740SZhang Yi #define ES9356_DAC_VPPSCALE 0x2094 83*5d9cb740SZhang Yi #define ES9356_DAC_SWAP 0x2097 84*5d9cb740SZhang Yi #define ES9356_SPKCMP_VPPSC 0x20A0 85*5d9cb740SZhang Yi #define ES9356_CALIBRATION_TIME 0x20A1 86*5d9cb740SZhang Yi #define ES9356_CALIBRATION_SETTING 0x20A2 87*5d9cb740SZhang Yi #define ES9356_DAC_OFFSET_LH 0x20A3 88*5d9cb740SZhang Yi #define ES9356_DAC_OFFSET_LL 0x20A4 89*5d9cb740SZhang Yi #define ES9356_DAC_OFFSET_RH 0x20A5 90*5d9cb740SZhang Yi #define ES9356_DAC_OFFSET_RL 0x20A6 91*5d9cb740SZhang Yi 92*5d9cb740SZhang Yi /*DAC ANA CTL*/ 93*5d9cb740SZhang Yi #define ES9356_DAC_REF_EN 0x20B0 94*5d9cb740SZhang Yi #define ES9356_DAC_ENABLE 0x20B1 95*5d9cb740SZhang Yi #define ES9356_DAC_VROI 0x20B2 96*5d9cb740SZhang Yi #define ES9356_DAC_LP 0x20B3 97*5d9cb740SZhang Yi 98*5d9cb740SZhang Yi /*HP CTL*/ 99*5d9cb740SZhang Yi #define ES9356_CHARGEPUMP_CTL 0x20C0 100*5d9cb740SZhang Yi #define ES9356_CPLDO_CTL 0x20C1 101*5d9cb740SZhang Yi #define ES9356_HP_REF_CTL 0x20C2 102*5d9cb740SZhang Yi #define ES9356_HP_IBIAS 0x20C3 103*5d9cb740SZhang Yi #define ES9356_HP_EN 0x20C4 104*5d9cb740SZhang Yi #define ES9356_HP_VOLUME 0x20C5 105*5d9cb740SZhang Yi #define ES9356_HP_LP 0x20C6 106*5d9cb740SZhang Yi 107*5d9cb740SZhang Yi /*SPK CTL*/ 108*5d9cb740SZhang Yi #define ES9356_SPKLDO_CTL 0x20D0 109*5d9cb740SZhang Yi #define ES9356_CLASSD_CTL 0x20D1 110*5d9cb740SZhang Yi #define ES9356_SPK_HBDG 0x20D5 111*5d9cb740SZhang Yi #define ES9356_SPK_VOLUME 0x20D7 112*5d9cb740SZhang Yi #define ES9356_SPK_SCP 0x20D8 113*5d9cb740SZhang Yi #define ES9356_SPK_DT 0x20D9 114*5d9cb740SZhang Yi #define ES9356_SPK_OTP 0x20DA 115*5d9cb740SZhang Yi #define ES9356_SPKBIAS_COMP 0x20DB 116*5d9cb740SZhang Yi 117*5d9cb740SZhang Yi /* ES9356 SDCA Control - function number */ 118*5d9cb740SZhang Yi #define FUNC_NUM_UAJ 0x01 119*5d9cb740SZhang Yi #define FUNC_NUM_MIC 0x02 120*5d9cb740SZhang Yi #define FUNC_NUM_AMP 0x03 121*5d9cb740SZhang Yi #define FUNC_NUM_HID 0x04 122*5d9cb740SZhang Yi 123*5d9cb740SZhang Yi /* ES9356 SDCA entity */ 124*5d9cb740SZhang Yi #define ES9356_SDCA_ENT0 0x00 125*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_PDE11 0x03 126*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_FU11 0x04 127*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_XU12 0x05 128*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_FU113 0x07 129*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_CS113 0x09 130*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_PPU11 0x0C 131*5d9cb740SZhang Yi 132*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_CS21 0x02 133*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_PPU21 0x03 134*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_FU21 0X04 135*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_XU22 0x06 136*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_SAPU29 0x03 137*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_PDE23 0x0B 138*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_HID01 0x01 139*5d9cb740SZhang Yi 140*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_CS41 0x02 141*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_FU35 0x04 142*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_XU42 0x06 143*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_FU41 0x07 144*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_PDE47 0x0E 145*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_IT33 0x0F 146*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_PDE34 0x10 147*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_FU33 0x11 148*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_XU36 0x13 149*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_FU36 0x15 150*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_CS36 0x17 151*5d9cb740SZhang Yi #define ES9356_SDCA_ENT_GE35 0x18 152*5d9cb740SZhang Yi 153*5d9cb740SZhang Yi /* ES9356 SDCA control */ 154*5d9cb740SZhang Yi #define ES9356_SDCA_CTL_SAMPLE_FREQ_INDEX 0x10 155*5d9cb740SZhang Yi #define ES9356_SDCA_CTL_FU_MUTE 0x01 156*5d9cb740SZhang Yi #define ES9356_SDCA_CTL_FU_VOLUME 0x02 157*5d9cb740SZhang Yi #define ES9356_SDCA_CTL_HIDTX_CURRENT_OWNER 0x10 158*5d9cb740SZhang Yi #define ES9356_SDCA_CTL_SELECTED_MODE 0x01 159*5d9cb740SZhang Yi #define ES9356_SDCA_CTL_DETECTED_MODE 0x02 160*5d9cb740SZhang Yi #define ES9356_SDCA_CTL_REQ_POWER_STATE 0x01 161*5d9cb740SZhang Yi #define ES9356_SDCA_CTL_FU_CH_GAIN 0x0b 162*5d9cb740SZhang Yi #define ES9356_SDCA_CTL_FUNC_STATUS 0x10 163*5d9cb740SZhang Yi #define ES9356_SDCA_CTL_ACTUAL_POWER_STATE 0x10 164*5d9cb740SZhang Yi #define ES9356_SDCA_CTL_POSTURE_NUMBER 0x00 165*5d9cb740SZhang Yi 166*5d9cb740SZhang Yi /* ES9356 SDCA channel */ 167*5d9cb740SZhang Yi #define CH_L 0x01 168*5d9cb740SZhang Yi #define CH_R 0x02 169*5d9cb740SZhang Yi #define MBQ 0x2000 170*5d9cb740SZhang Yi 171*5d9cb740SZhang Yi /* ES9356 HID*/ 172*5d9cb740SZhang Yi #define ES9356_BUF_ADDR_HID 0x44000000 173*5d9cb740SZhang Yi #define ES9356_HID_BYTE2 0x44000001 174*5d9cb740SZhang Yi #define ES9356_HID_BYTE3 0x44000002 175*5d9cb740SZhang Yi #define ES9356_HID_BYTE4 0x44000003 176*5d9cb740SZhang Yi 177*5d9cb740SZhang Yi /* ES9356 Volume Setting*/ 178*5d9cb740SZhang Yi #define ES9356_VU_BASE 768 179*5d9cb740SZhang Yi #define ES9356_OFFSET_HIGH 0x07F8 180*5d9cb740SZhang Yi #define ES9356_OFFSET_LOW 0x0007 181*5d9cb740SZhang Yi #define ES9356_DEFAULT_VOLUME 0x00 182*5d9cb740SZhang Yi #define ES9356_VOLUME_STEP 32 183*5d9cb740SZhang Yi #define ES9356_VOLUME_MIN -768 184*5d9cb740SZhang Yi #define ES9356_VOLUME_MAX 285 185*5d9cb740SZhang Yi #define ES9356_AMIC_GAIN_STEP 768 186*5d9cb740SZhang Yi #define ES9356_DMIC_GAIN_STEP 1536 187*5d9cb740SZhang Yi #define ES9356_GAIN_MIN 0 188*5d9cb740SZhang Yi #define ES9356_AMIC_GAIN_MAX 10 189*5d9cb740SZhang Yi #define ES9356_DMIC_GAIN_MAX 3 190*5d9cb740SZhang Yi 191*5d9cb740SZhang Yi enum { 192*5d9cb740SZhang Yi ES9356_DMIC = 1, /* For dmic */ 193*5d9cb740SZhang Yi ES9356_JACK_IN, /* For headset mic */ 194*5d9cb740SZhang Yi ES9356_AMP, /* For speaker */ 195*5d9cb740SZhang Yi ES9356_JACK_OUT, /* For headphone */ 196*5d9cb740SZhang Yi }; 197*5d9cb740SZhang Yi 198*5d9cb740SZhang Yi enum { 199*5d9cb740SZhang Yi ES9356_SDCA_RATE_16000HZ, 200*5d9cb740SZhang Yi ES9356_SDCA_RATE_24000HZ, 201*5d9cb740SZhang Yi ES9356_SDCA_RATE_32000HZ, 202*5d9cb740SZhang Yi ES9356_SDCA_RATE_44100HZ, 203*5d9cb740SZhang Yi ES9356_SDCA_RATE_48000HZ, 204*5d9cb740SZhang Yi ES9356_SDCA_RATE_88200HZ, 205*5d9cb740SZhang Yi ES9356_SDCA_RATE_96000HZ, 206*5d9cb740SZhang Yi }; 207*5d9cb740SZhang Yi 208*5d9cb740SZhang Yi #endif 209