1root { 2 platfrom { 3 template codec_controller { 4 match_attr = ""; 5 serviceName = ""; 6 codecDaiName = ""; 7 } 8 controller_0x120c1030 :: codec_controller { 9 match_attr = "hdf_codec_driver"; 10 serviceName = "codec_service_0"; 11 codecDaiName = "codec_dai"; 12 } 13 controller_0x120c1031 :: codec_controller { 14 match_attr = "hdf_codec_driver_ex"; 15 serviceName = "codec_service_1"; 16 codecDaiName = "codec_dai"; 17 regConfig { 18 /* reg: register address 19 rreg: register address 20 shift: shift bits 21 rshift: rshift bits 22 min: min value 23 max: max value 24 mask: mask of value 25 invert: enum InvertVal 0-uninvert 1-invert 26 value: value 27 */ 28 29 /* reg, value */ 30 resetSeqConfig = [ 31 0x00, 0x03 32 ]; 33 34 /* reg, value */ 35 initSeqConfig = [ 36 0x00, 0xC0, // es8316_reset 37 0x01, 0x7F, // es8316_clkmgr_clksw 38 0x02, 0x08, // es8316_clkmgr_clksel 39 0x03, 0x20, // es8316_clkmgr_adcosr 40 0x04, 0x11, // es8316_clkmgr_adcdiv1 41 0x05, 0x00, // es8316_clkmgr_adcdiv2 42 0x06, 0x11, // es8316_clkmgr_dacdiv1 43 0x07, 0x00, // es8316_clkmgr_dacdiv2 44 0x08, 0x00, // es8316_clkmgr_cpdiv 45 0x09, 0x04, // es8316_serdata1 46 0x0A, 0x0C, // es8316_serdata_adc 47 0x0B, 0x0C, // es8316_serdata_dac 48 0x0C, 0xFF, // es8316_sys_vmidsel 49 0x0D, 0x00, // es8316_sys_pdn 50 0x0E, 0x3F, // es8316_sys_lp1 51 0x0F, 0x1F, // es8316_sys_lp2 52 0x10, 0x11, // es8316_sys_vmidlow 53 0x11, 0xFC, // es8316_sys_vsel 54 0x12, 0x28, // es8316_sys_ref 55 0x13, 0x00, // es8316_hpmix_sel 56 0x14, 0x88, // es8316_hpmix_switch 57 0x15, 0x00, // es8316_hpmix_pdn 58 0x16, 0xBB, // es8316_hpmix_vol 59 0x17, 0x66, // es8316_cphp_outen 60 0x18, 0x00, // es8316_cphp_ical_vol 61 0x19, 0x06, // es8316_cphp_pdn1 62 0x1A, 0x22, // es8316_cphp_pdn2 63 0x1B, 0x03, // es8316_cphp_ldoctl 64 0x1C, 0x0F, // es8316_cal_type 65 0x1D, 0x00, // es8316_cal_set 66 0x1E, 0x90, // es8316_cal_hpliv 67 0x1F, 0x90, // es8316_cal_hpriv 68 0x20, 0x00, // es8316_cal_hplmv 69 0x21, 0x00, // es8316_cal_hprmv 70 0x22, 0x00, // es8316_adc_pdn_linsel 71 0x23, 0x60, // es8316_adc_pgagain // mic gain 72 0x24, 0x00, // es8316_adc_d2sepga 73 0x25, 0x08, // es8316_adc_dmic 74 0x26, 0x30, // es8316_adc_mute // capture mute bit[5] 75 0x27, 0x00, // es8316_adc_volume // capture volume 76 0x29, 0xCD, // es8316_adc_alc1 77 0x2A, 0x08, // es8316_adc_alc2 78 0x2B, 0xA0, // es8316_adc_alc3 79 0x2C, 0x05, // es8316_adc_alc4 80 0x2D, 0x06, // es8316_adc_alc5 81 0x2E, 0x61, // es8316_adc_alc_ng 82 0x2F, 0x00, // es8316_dac_pdn 83 0x30, 0x30, // es8316_dac_set1 // output mute bit[5] 84 0x31, 0x20, // es8316_dac_set2 85 0x32, 0x00, // es8316_dac_set3 86 0x33, 0x1A, // es8316_dac_voll // left output volume 87 0x34, 0x1A, // es8316_dac_volr // right output volume 88 0x35, 0x1F 89 ]; 90 91 /* reg, rreg, shift, rshift, min, max, mask, invert, value */ 92 ctrlParamsSeqConfig = [ 93 0x33, 0x34, 0, 0, 0x0, 0xC0, 0xFF, 1, 0x00, // output volume 94// 0x27, 0x27, 0, 0, 0x0, 0xC0, 0xFF, 1, 0x00, // capture volume 95 0x23, 0x23, 4, 4, 0x0, 0x0A, 0x0F, 0, 0x00, // capture volume(mic gain) 96 0x30, 0x30, 5, 5, 0x0, 0x01, 0x01, 0, 0x00, // output mute 97 0x26, 0x26, 5, 5, 0x0, 0x01, 0x01, 0, 0x00, // capture mute 98 0x23, 0x23, 4, 4, 0x0, 0x0A, 0x0F, 0, 0x00, // mic left gain 99 0x23, 0x23, 4, 4, 0x0, 0x0A, 0x0F, 0, 0x00, // mic right gain 100 0x2F, 0x2F, 0, 0, 0x0, 0x11, 0x11, 0, 0x00, // output channel 101 0x22, 0x22, 4, 4, 0x0, 0x03, 0x03, 0, 0x00 // capture channel 102 ]; 103 104 /* reg, rreg, shift, rshift, min, max, mask, invert, value */ 105 daiStartupSeqConfig = [ 106 0x22, 0x22, 0, 0, 0x0, 0xFF, 0xFF, 0, 0x00, // es8316_adc_pdn_linsel 107 0x2F, 0x2F, 0, 0, 0x0, 0xFF, 0xFF, 0, 0x00, // es8316_dac_pdn 108 0x26, 0x26, 0, 0, 0x0, 0xFF, 0xFF, 0, 0x10, // es8316_adc_mute(capture unmute) 109 0x30, 0x30, 0, 0, 0x0, 0xFF, 0xFF, 0, 0x10 // es8316_dac_set1(output unmute) 110 ]; 111 112 /* reg, rreg, shift, rshift, min, max, mask, invert, value 113 The top three are frequency, format and channel respectively, and the others are behind 114 */ 115 daiParamsSeqConfig = [ 116 // playback input params (hal input) 117 0x09, 0x09, 0, 0, 0x0, 0x0F, 0x0F, 0, 0x00, // i2s_frequency 118 0x0B, 0x0B, 2, 2, 0x0, 0x04, 0x0F, 0, 0x00, // i2s_format 119 0x2F, 0x2F, 0, 0, 0x0, 0x11, 0xFF, 0, 0x00, // i2s_channel 120 // capture input params (hal input) 121 0x09, 0x09, 0, 0, 0x0, 0x0F, 0x0F, 0, 0x00, // capture__frequency 122 0x0A, 0x0A, 2, 2, 0x0, 0x04, 0x0F, 0, 0x00, // capture_format 123 0x22, 0x22, 4, 4, 0x0, 0x03, 0x0F, 0, 0x00 // capture_channel 124 ]; 125 126 /* reg, value */ 127 getStatusSeqConfig = [ 128 0x4F, 0x0 129 ]; 130 131 /* 132 "Master Playback Volume", 133 "Master Capture Volume", 134 "Playback Mute", 135 "Capture Mute", 136 "Mic Left Gain", 137 "Mic Right Gain", 138 "External Codec Enable", 139 "Internally Codec Enable", 140 "Render Channel Mode", 141 "Captrue Channel Mode" 142 */ 143 /* array index, iface, enable */ 144 controlsConfig = [ 145 0, 0, 1, 146 1, 1, 1, 147 2, 0, 1, 148 3, 1, 1, 149 4, 2, 1, 150 5, 2, 1, 151 8, 6, 1, 152 9, 6, 1 153 ]; 154 } 155 } 156 157 } 158} 159