1root { 2 platform { 3 template codec_controller { 4 match_attr = ""; 5 serviceName = ""; 6 codecDaiName = ""; 7 } 8 controller_0x120c1030 :: codec_controller { 9 match_attr = "hdf_codec_driver_0"; 10 serviceName = "codec_service_0"; 11 codecDaiName = "codec_dai"; 12 13 hwInfo = [ 14 /* 15 Playback/Captrue, formats, rates, rate_min, rate_max, channels_min, channels_max, 16 buffer_bytes_max, period_bytes_min, period_bytes_max, periods_min, periods_max 17 */ 18 1, 0xF, 0xFF, 8000, 96000, 1, 2, 1, 2, 3, 4, 5, 19 2, 0xF, 0xFF, 8000, 96000, 1, 2, 1, 2, 3, 4, 5, 20 ]; 21 22 regConfig { 23 /* reg: register address 24 rreg: register address 25 shift: shift bits 26 rshift: rshift bits 27 min: min value 28 max: max value 29 mask: mask of value 30 invert: enum InvertVal 0-uninvert 1-invert 31 value: value 32 */ 33 34 /* reg, value */ 35 resetSeqConfig = [ 36 0x00, 0x80, 37 0x00, 0x00, 38 ]; 39 40 /* reg, value */ 41 initSeqConfig = [ 42 0x00, 0x36, 43 0x01, 0x60, 44 0x02, 0x00, 45 0x03, 0xf9, 46 0x04, 0xc0, 47 0x05, 0x00, 48 0x06, 0x00, 49 0x07, 0x7c, 50 0x08, 0x00, 51 0x09, 0x00, 52 0x0a, 0x00, 53 0x0b, 0x02, 54 0x0c, 0x4c, 55 0x0d, 0x02, 56 0x0e, 0x30, 57 0x0f, 0x20, 58 0x10, 0x00, 59 0x11, 0x00, 60 0x12, 0xea, 61 0x13, 0xc0, 62 0x14, 0x05, 63 0x15, 0x06, 64 0x16, 0x53, 65 0x17, 0x18, 66 0x18, 0x02, 67 0x19, 0x02, 68 0x1a, 0x00, 69 0x1b, 0x00, 70 0x1c, 0x08, 71 0x1d, 0x00, 72 0x1e, 0x1f, 73 0x1f, 0xf7, 74 0x20, 0xfd, 75 0x21, 0xff, 76 0x22, 0x1f, 77 0x23, 0xf7, 78 0x24, 0xfd, 79 0x25, 0xff, 80 0x26, 0x00, 81 0x27, 0xb8, 82 0x28, 0x28, 83 0x29, 0x28, 84 0x2a, 0xb8, 85 0x2b, 0x80, 86 0x2c, 0x00, 87 0x2d, 0x00, 88 0x2e, 0x15, 89 0x2f, 0x15, 90 0x30, 0x15, 91 0x31, 0x15, 92 0x32, 0x00, 93 0x33, 0xaa, 94 0x34, 0xaa, 95 0x35, 0x00, 96 0x36, 0x08, 97 0x37, 0x00, 98 0x38, 0x00, 99 0x39, 0x00, 100 0x3a, 0x00, 101 0x3b, 0x40, 102 0x3c, 0x0a, 103 0x3d, 0xe4, 104 0x3e, 0x00, 105 0x3f, 0x00, 106 ]; 107 108 /* reg, rreg, shift, rshift, min, max, mask, invert, value */ 109 ctrlParamsSeqConfig = [ 110 0x2e, 0x2f, 0, 0, 0x0, 0x21, 0xFF, 1, 0x00, // output volume(OUT1) 111 0x10, 0x11, 0, 0, 0x0, 0xC0, 0xFF, 1, 0x00, // capture volume(mic gain) 112 0x19, 0x19, 2, 2, 0x0, 0x01, 0x01, 0, 0x00, // output mute 113 0x0f, 0x0f, 5, 5, 0x0, 0x01, 0x01, 0, 0x00, // capture mute 114 0x09, 0x09, 4, 4, 0x0, 0xF, 0xF, 0, 0x00, // mic left gain 115 0x09, 0x09, 0, 0, 0x0, 0xF, 0xF, 0, 0x00, // mic right gain 116 0x35, 0x35, 0, 0, 0x0, 0x11, 0x11, 0, 0x00, // output channel unused 117 0x35, 0x35, 4, 4, 0x0, 0x03, 0x03, 0, 0x00 // capture channel unused 118 ]; 119 120 /* reg, rreg, shift, rshift, min, max, mask, invert, value */ 121 daiStartupSeqConfig = [ 122 0x03, 0x03, 0, 0, 0x0, 0xFF, 0xFF, 0, 0x59, // es8316_adc_pdn_linsel 123 0x04, 0x04, 0, 0, 0x0, 0xFF, 0xFF, 0, 0x3c, // es8316_dac_pdn 124 0x0f, 0x0f, 0, 0, 0x0, 0xFF, 0xFF, 0, 0x20, // es8316_adc_mute(capture unmute) 125 0x19, 0x19, 0, 0, 0x0, 0xFF, 0xFF, 0, 0x02 // es8316_dac_set1(output unmute) 126 ]; 127 128 /* reg, rreg, shift, rshift, min, max, mask, invert, value 129 The top three are frequency, format and channel respectively, and the others are behind 130 */ 131 daiParamsSeqConfig = [ 132 // playback input params (hal input) 133 0x18, 0x18, 0, 0, 0x0, 0x1F, 0x1F, 0, 0x00, // i2s_frequency 134 0x17, 0x17, 3, 3, 0x0, 0x4, 0xFF, 0, 0x00, // i2s_format 135 0x1c, 0x1c, 4, 4, 0x0, 0x1, 0xFF, 0, 0x00, // i2s_channel 136 // capture input params (hal input) 137 0x0d, 0x0d, 0, 0, 0x0, 0x1F, 0x1F, 0, 0x00, // capture__frequency 138 0x0C, 0x0C, 2, 2, 0x0, 0x4, 0x0F, 0, 0x00, // capture_format 139 0x0e, 0x0e, 7, 7, 0x0, 0x1, 0xF, 0, 0x00 // capture_channel 140 ]; 141 142 /* reg, value */ 143 getStatusSeqConfig = [ 144 0x4F, 0x0 145 ]; 146 147 /* 148 "Master Playback Volume", 149 "Master Capture Volume", 150 "Playback Mute", 151 "Capture Mute", 152 "Mic Left Gain", 153 "Mic Right Gain", 154 "External Codec Enable", 155 "Internally Codec Enable", 156 "Render Channel Mode", 157 "Captrue Channel Mode" 158 */ 159 /* array index, iface, enable */ 160 controlsConfig = [ 161 162 /*array index, iface, mixer/mux, enable,*/ 163 0, 2, 0, 1, 164 1, 2, 0, 1, 165 2, 2, 0, 1, 166 3, 2, 0, 1, 167 4, 2, 0, 1, 168 5, 2, 0, 1, 169 8, 2, 0, 1, 170 9, 2, 0, 1, 171 ]; 172 } 173 } 174 controller_0x120c1031 :: codec_controller { 175 match_attr = "hdf_codec_driver_1"; 176 serviceName = "codec_service_1"; 177 codecDaiName = "hdmi_codec_dai"; 178 179 hwInfo = [ 180 /* 181 Playback/Captrue, formats, rates, rate_min, rate_max, channels_min, channels_max, 182 buffer_bytes_max, period_bytes_min, period_bytes_max, periods_min, periods_max 183 */ 184 1, 0xF, 0xFF, 8000, 96000, 1, 2, 1, 2, 3, 4, 5 185 ]; 186 187 regConfig { 188 /* reg: register address 189 rreg: register address 190 shift: shift bits 191 rshift: rshift bits 192 min: min value 193 max: max value 194 mask: mask of value 195 invert: enum InvertVal 0-uninvert 1-invert 196 value: value 197 */ 198 199 /* reg, value */ 200 resetSeqConfig = [ 201 0x00, 0x80, 202 0x00, 0x00, 203 ]; 204 205 /* reg, value */ 206 initSeqConfig = [ 207 0x00, 0x36, 208 0x01, 0x60, 209 0x02, 0x00, 210 0x03, 0xf9, 211 0x04, 0xc0, 212 0x05, 0x00, 213 0x06, 0x00, 214 0x07, 0x7c, 215 0x08, 0x00, 216 0x09, 0x00, 217 0x0a, 0x00, 218 0x0b, 0x02, 219 0x0c, 0x4c, 220 0x0d, 0x02, 221 0x0e, 0x30, 222 0x0f, 0x20, 223 0x10, 0x00, 224 0x11, 0x00, 225 0x12, 0xea, 226 0x13, 0xc0, 227 0x14, 0x05, 228 0x15, 0x06, 229 0x16, 0x53, 230 0x17, 0x18, 231 0x18, 0x02, 232 0x19, 0x02, 233 0x1a, 0x00, 234 0x1b, 0x00, 235 0x1c, 0x08, 236 0x1d, 0x00, 237 0x1e, 0x1f, 238 0x1f, 0xf7, 239 0x20, 0xfd, 240 0x21, 0xff, 241 0x22, 0x1f, 242 0x23, 0xf7, 243 0x24, 0xfd, 244 0x25, 0xff, 245 0x26, 0x00, 246 0x27, 0xb8, 247 0x28, 0x28, 248 0x29, 0x28, 249 0x2a, 0xb8, 250 0x2b, 0x80, 251 0x2c, 0x00, 252 0x2d, 0x00, 253 0x2e, 0x15, 254 0x2f, 0x15, 255 0x30, 0x15, 256 0x31, 0x15, 257 0x32, 0x00, 258 0x33, 0xaa, 259 0x34, 0xaa, 260 0x35, 0x00, 261 0x36, 0x08, 262 0x37, 0x00, 263 0x38, 0x00, 264 0x39, 0x00, 265 0x3a, 0x00, 266 0x3b, 0x40, 267 0x3c, 0x0a, 268 0x3d, 0xe4, 269 0x3e, 0x00, 270 0x3f, 0x00, 271 ]; 272 273 /* reg, rreg, shift, rshift, min, max, mask, invert, value */ 274 ctrlParamsSeqConfig = [ 275 0x2e, 0x2f, 0, 0, 0x0, 0x21, 0xFF, 1, 0x00, // output volume(OUT1) 276 0x10, 0x11, 0, 0, 0x0, 0xC0, 0xFF, 1, 0x00, // capture volume(mic gain) 277 0x19, 0x19, 2, 2, 0x0, 0x01, 0x01, 0, 0x00, // output mute 278 0x0f, 0x0f, 5, 5, 0x0, 0x01, 0x01, 0, 0x00, // capture mute 279 0x09, 0x09, 4, 4, 0x0, 0xF, 0xF, 0, 0x00, // mic left gain 280 0x09, 0x09, 0, 0, 0x0, 0xF, 0xF, 0, 0x00, // mic right gain 281 0x35, 0x35, 0, 0, 0x0, 0x11, 0x11, 0, 0x00, // output channel unused 282 0x35, 0x35, 4, 4, 0x0, 0x03, 0x03, 0, 0x00 // capture channel unused 283 ]; 284 285 /* reg, rreg, shift, rshift, min, max, mask, invert, value */ 286 daiStartupSeqConfig = [ 287 0x03, 0x03, 0, 0, 0x0, 0xFF, 0xFF, 0, 0x59, // es8316_adc_pdn_linsel 288 0x04, 0x04, 0, 0, 0x0, 0xFF, 0xFF, 0, 0x3c, // es8316_dac_pdn 289 0x0f, 0x0f, 0, 0, 0x0, 0xFF, 0xFF, 0, 0x20, // es8316_adc_mute(capture unmute) 290 0x19, 0x19, 0, 0, 0x0, 0xFF, 0xFF, 0, 0x02 // es8316_dac_set1(output unmute) 291 ]; 292 293 /* reg, rreg, shift, rshift, min, max, mask, invert, value 294 The top three are frequency, format and channel respectively, and the others are behind 295 */ 296 daiParamsSeqConfig = [ 297 // playback input params (hal input) 298 0x18, 0x18, 0, 0, 0x0, 0x1F, 0x1F, 0, 0x00, // i2s_frequency 299 0x17, 0x17, 3, 3, 0x0, 0x4, 0xFF, 0, 0x00, // i2s_format 300 0x1c, 0x1c, 4, 4, 0x0, 0x1, 0xFF, 0, 0x00, // i2s_channel 301 // capture input params (hal input) 302 0x0d, 0x0d, 0, 0, 0x0, 0x1F, 0x1F, 0, 0x00, // capture__frequency 303 0x0C, 0x0C, 2, 2, 0x0, 0x4, 0x0F, 0, 0x00, // capture_format 304 0x0e, 0x0e, 7, 7, 0x0, 0x1, 0xF, 0, 0x00 // capture_channel 305 ]; 306 307 /* reg, value */ 308 getStatusSeqConfig = [ 309 0x4F, 0x0 310 ]; 311 312 /* 313 "Master Playback Volume", 314 "Master Capture Volume", 315 "Playback Mute", 316 "Capture Mute", 317 "Mic Left Gain", 318 "Mic Right Gain", 319 "External Codec Enable", 320 "Internally Codec Enable", 321 "Render Channel Mode", 322 "Captrue Channel Mode" 323 */ 324 /* array index, iface, enable */ 325 controlsConfig = [ 326 327 /*array index, iface, mixer/mux, enable,*/ 328 0, 2, 0, 1, 329 1, 2, 0, 1, 330 2, 2, 0, 1, 331 3, 2, 0, 1, 332 4, 2, 0, 1, 333 5, 2, 0, 1, 334 8, 2, 0, 1, 335 9, 2, 0, 1, 336 ]; 337 } 338 } 339 } 340} 341