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