10a7ce71fSopenharmony_ciroot { 20a7ce71fSopenharmony_ci platform { 30a7ce71fSopenharmony_ci template codec_controller { 40a7ce71fSopenharmony_ci match_attr = ""; 50a7ce71fSopenharmony_ci serviceName = ""; 60a7ce71fSopenharmony_ci codecDaiName = ""; 70a7ce71fSopenharmony_ci } 80a7ce71fSopenharmony_ci controller_0x120c1030 :: codec_controller { 90a7ce71fSopenharmony_ci match_attr = "hdf_codec_driver"; 100a7ce71fSopenharmony_ci serviceName = "codec_service_0"; 110a7ce71fSopenharmony_ci codecDaiName = "codec_dai"; 120a7ce71fSopenharmony_ci 130a7ce71fSopenharmony_ci idInfo { 140a7ce71fSopenharmony_ci chipName = "hi3516"; 150a7ce71fSopenharmony_ci chipIdRegister = 0x113c0000; 160a7ce71fSopenharmony_ci chipIdSize = 0x1000; 170a7ce71fSopenharmony_ci } 180a7ce71fSopenharmony_ci 190a7ce71fSopenharmony_ci regConfig { 200a7ce71fSopenharmony_ci /* reg, value */ 210a7ce71fSopenharmony_ci initSeqConfig = [ 220a7ce71fSopenharmony_ci 0x14, 0x04000002, 230a7ce71fSopenharmony_ci 0x18, 0xFD200004, 240a7ce71fSopenharmony_ci 0x1C, 0x00180018, 250a7ce71fSopenharmony_ci 0x20, 0x83830028, 260a7ce71fSopenharmony_ci 0x24, 0x00005C5C, 270a7ce71fSopenharmony_ci 0x28, 0x00130000, 280a7ce71fSopenharmony_ci 0x30, 0xFF035A00, 290a7ce71fSopenharmony_ci 0x34, 0x08000001, 300a7ce71fSopenharmony_ci 0x38, 0x06062424, 310a7ce71fSopenharmony_ci 0x3C, 0x1E1EC001, 320a7ce71fSopenharmony_ci 0x14, 0x04000002 330a7ce71fSopenharmony_ci ]; 340a7ce71fSopenharmony_ci 350a7ce71fSopenharmony_ci /* reg: register address 360a7ce71fSopenharmony_ci rreg: register address 370a7ce71fSopenharmony_ci shift: shift bits 380a7ce71fSopenharmony_ci rshift: rshift bits 390a7ce71fSopenharmony_ci min: min value 400a7ce71fSopenharmony_ci max: max value 410a7ce71fSopenharmony_ci mask: mask of value 420a7ce71fSopenharmony_ci invert: enum InvertVal 0-uninvert 1-invert 430a7ce71fSopenharmony_ci value: value 440a7ce71fSopenharmony_ci */ 450a7ce71fSopenharmony_ci ctrlParamsSeqConfig = [ 460a7ce71fSopenharmony_ci 0x2004, 0x2004, 8, 8, 0x28, 0x7F, 0x7F, 0, 0, //"Main Playback Volume" 470a7ce71fSopenharmony_ci 0x3c, 0x3c, 24, 24, 0x0, 0x57, 0x7F, 1, 0, //"Main Capture Volume" 480a7ce71fSopenharmony_ci 0x38, 0x38, 31, 31, 0x0, 0x1, 0x1, 0, 0, //"Playback Mute" 490a7ce71fSopenharmony_ci 0x3c, 0x3c, 31, 31, 0x0, 0x1, 0x1, 0, 0, //"Capture Mute" 500a7ce71fSopenharmony_ci 0x20, 0x20, 16, 16, 0x0, 0xF, 0x1F, 0, 0, //"Mic Left Gain" 510a7ce71fSopenharmony_ci 0x20, 0x20, 24, 24, 0x0, 0xF, 0x1F, 0, 0, //"Mic Right Gain" 520a7ce71fSopenharmony_ci 0x2000, 0x2000, 16, 16, 0x0, 0x7, 0x7, 0, 0, //"Render Channel Mode" 530a7ce71fSopenharmony_ci 0x1000, 0x1000, 16, 16, 0x0, 0x7, 0x7, 0, 0 //"Capture Channel Mode" 540a7ce71fSopenharmony_ci ]; 550a7ce71fSopenharmony_ci 560a7ce71fSopenharmony_ci controlsConfig = [ 570a7ce71fSopenharmony_ci /* 580a7ce71fSopenharmony_ci "Master Playback Volume", 590a7ce71fSopenharmony_ci "Master Capture Volume", 600a7ce71fSopenharmony_ci "Playback Mute", 610a7ce71fSopenharmony_ci "Capture Mute", 620a7ce71fSopenharmony_ci "Mic Left Gain", 630a7ce71fSopenharmony_ci "Mic Right Gain", 640a7ce71fSopenharmony_ci "External Codec Enable", 650a7ce71fSopenharmony_ci "Internally Codec Enable", 660a7ce71fSopenharmony_ci "Render Channel Mode", 670a7ce71fSopenharmony_ci "Capture Channel Mode" 680a7ce71fSopenharmony_ci */ 690a7ce71fSopenharmony_ci 700a7ce71fSopenharmony_ci /*array index, iface, enable*/ 710a7ce71fSopenharmony_ci 0, 0, 0, 720a7ce71fSopenharmony_ci 1, 1, 1, 730a7ce71fSopenharmony_ci 2, 0, 1, 740a7ce71fSopenharmony_ci 3, 1, 1, 750a7ce71fSopenharmony_ci 4, 2, 1, 760a7ce71fSopenharmony_ci 5, 2, 1, 770a7ce71fSopenharmony_ci 8, 6, 0, 780a7ce71fSopenharmony_ci 9, 6, 0, 790a7ce71fSopenharmony_ci ]; 800a7ce71fSopenharmony_ci 810a7ce71fSopenharmony_ci /* reg, rreg, shift, rshift, min, max, mask, invert, value */ 820a7ce71fSopenharmony_ci daiStartupSeqConfig = [ 830a7ce71fSopenharmony_ci 0x24, 0x24, 11, 11, 0x0, 0x1, 0x1, 0, 0x1 // adc_tune_En09 840a7ce71fSopenharmony_ci ]; 850a7ce71fSopenharmony_ci 860a7ce71fSopenharmony_ci /* reg, rreg, shift, rshift, min, max, mask, invert, value */ 870a7ce71fSopenharmony_ci daiParamsSeqConfig = [ 880a7ce71fSopenharmony_ci 0x30, 0x30, 13, 13, 0x0, 0x1F, 0x1F, 0, 0x0, // i2s_frequency 890a7ce71fSopenharmony_ci 0x1C, 0x1C, 6, 6, 0x0, 0x3, 0x3, 0, 0x0, // adc_mode_sel 900a7ce71fSopenharmony_ci 0x30, 0x30, 22, 22, 0x0, 0x3, 0x3, 0, 0x0, // i2s_datawith 910a7ce71fSopenharmony_ci ]; 920a7ce71fSopenharmony_ci 930a7ce71fSopenharmony_ci ctrlSapmParamsSeqConfig = [ 940a7ce71fSopenharmony_ci 0x20, 0x20, 23, 23, 0x0, 0x1, 0x1, 0, 0, //LPGA MIC 0 -- connect MIC 950a7ce71fSopenharmony_ci 0x20, 0x20, 31, 31, 0x0, 0x1, 0x1, 0, 0, //RPGA MIC 0 -- connect MIC 960a7ce71fSopenharmony_ci 0x30, 0x30, 27, 27, 0x0, 0x1, 0x1, 0, 0, //dacl to dacr mixer 970a7ce71fSopenharmony_ci 0x30, 0x30, 26, 26, 0x0, 0x1, 0x1, 0, 0 //dacr to dacl mixer 980a7ce71fSopenharmony_ci ]; 990a7ce71fSopenharmony_ci 1000a7ce71fSopenharmony_ci /* index = "ADCL", "ADCR", "DACL", "DACR", "LPGA", "RPGA", "SPKL", "SPKR", "MIC"*/ 1010a7ce71fSopenharmony_ci sapmComponent = [ 1020a7ce71fSopenharmony_ci 10, 0, 0x20, 0x1, 15, 1, 0, 0, //ADCL 1030a7ce71fSopenharmony_ci 10, 1, 0x20, 0x1, 14, 1, 0, 0, //ADCR 1040a7ce71fSopenharmony_ci 11, 2, 0x14, 0x1, 11, 1, 0, 0, //DACL 1050a7ce71fSopenharmony_ci 11, 3, 0x14, 0x1, 12, 1, 0, 0, //DACR 1060a7ce71fSopenharmony_ci 8, 4, 0x20, 0x1, 13, 1, 1, 1, //LPGA 1070a7ce71fSopenharmony_ci 8, 5, 0x20, 0x1, 12, 1, 2, 1, //RPGA 1080a7ce71fSopenharmony_ci 15, 6, 0, 0x1, 0, 0, 3, 1, //SPKL 1090a7ce71fSopenharmony_ci 15, 7, 0, 0x1, 0, 0, 4, 1, //SPKR 1100a7ce71fSopenharmony_ci 0, 8, 0, 0x1, 0, 0, 0, 0 //MIC 1110a7ce71fSopenharmony_ci ]; 1120a7ce71fSopenharmony_ci 1130a7ce71fSopenharmony_ci /*array index, iface, enable*/ 1140a7ce71fSopenharmony_ci sapmConfig = [ 1150a7ce71fSopenharmony_ci 0, 5, 1, 1160a7ce71fSopenharmony_ci 1, 5, 1, 1170a7ce71fSopenharmony_ci 2, 0, 1, 1180a7ce71fSopenharmony_ci 3, 0, 1 1190a7ce71fSopenharmony_ci ]; 1200a7ce71fSopenharmony_ci } 1210a7ce71fSopenharmony_ci } 1220a7ce71fSopenharmony_ci controller_0x120c1031 :: codec_controller { 1230a7ce71fSopenharmony_ci match_attr = "hdf_codec_driver_ex"; 1240a7ce71fSopenharmony_ci serviceName = "codec_service_1"; 1250a7ce71fSopenharmony_ci codecDaiName = "accessory_dai"; 1260a7ce71fSopenharmony_ci 1270a7ce71fSopenharmony_ci regConfig { 1280a7ce71fSopenharmony_ci /* regAddr: register address 1290a7ce71fSopenharmony_ci regValue: config register value 1300a7ce71fSopenharmony_ci mask: mask of value 1310a7ce71fSopenharmony_ci shift: shift bits 1320a7ce71fSopenharmony_ci max: max value 1330a7ce71fSopenharmony_ci min: min value 1340a7ce71fSopenharmony_ci invert: enum Tfa9879InvertVal 0-uninvert 1-invert 1350a7ce71fSopenharmony_ci */ 1360a7ce71fSopenharmony_ci 1370a7ce71fSopenharmony_ci /* reg, value */ 1380a7ce71fSopenharmony_ci /* regAddr, regValue, mask, shift, max, min, invert, opsType */ 1390a7ce71fSopenharmony_ci /* reg, rreg, shift, value, min, max, mask, invert */ 1400a7ce71fSopenharmony_ci resetSeqConfig = [ 1410a7ce71fSopenharmony_ci 0x00, 0x0 1420a7ce71fSopenharmony_ci ]; 1430a7ce71fSopenharmony_ci 1440a7ce71fSopenharmony_ci /* reg, value */ 1450a7ce71fSopenharmony_ci initSeqConfig = [ 1460a7ce71fSopenharmony_ci 0x00, 0x0001, 1470a7ce71fSopenharmony_ci 0x01, 0x0a18, 1480a7ce71fSopenharmony_ci 0x02, 0x0007, 1490a7ce71fSopenharmony_ci 0x03, 0x0a18, 1500a7ce71fSopenharmony_ci 0x04, 0x0007, 1510a7ce71fSopenharmony_ci 0x05, 0x59DD, 1520a7ce71fSopenharmony_ci 0x06, 0xC63E, 1530a7ce71fSopenharmony_ci 0x07, 0x651A, 1540a7ce71fSopenharmony_ci 0x08, 0xE53E, 1550a7ce71fSopenharmony_ci 0x09, 0x4616, 1560a7ce71fSopenharmony_ci 0x0A, 0xD33E, 1570a7ce71fSopenharmony_ci 0x0B, 0x4DF3, 1580a7ce71fSopenharmony_ci 0x0C, 0xEA3E, 1590a7ce71fSopenharmony_ci 0x0D, 0x5EE0, 1600a7ce71fSopenharmony_ci 0x0E, 0xF93E, 1610a7ce71fSopenharmony_ci 0x0F, 0x0008, 1620a7ce71fSopenharmony_ci 0x10, 0x92BA, 1630a7ce71fSopenharmony_ci 0x11, 0x12A5, 1640a7ce71fSopenharmony_ci 0x12, 0x0004, 1650a7ce71fSopenharmony_ci 0x13, 0x1031, 1660a7ce71fSopenharmony_ci 0x14, 0x0000 1670a7ce71fSopenharmony_ci ]; 1680a7ce71fSopenharmony_ci 1690a7ce71fSopenharmony_ci /* reg: register address 1700a7ce71fSopenharmony_ci rreg: register address 1710a7ce71fSopenharmony_ci shift: shift bits 1720a7ce71fSopenharmony_ci rshift: rshift bits 1730a7ce71fSopenharmony_ci min: min value 1740a7ce71fSopenharmony_ci max: max value 1750a7ce71fSopenharmony_ci mask: mask of value 1760a7ce71fSopenharmony_ci invert: enum InvertVal 0-uninvert 1-invert 1770a7ce71fSopenharmony_ci value: value 1780a7ce71fSopenharmony_ci */ 1790a7ce71fSopenharmony_ci /* reg, rreg, shift, rshift, min, max, mask, invert, value */ 1800a7ce71fSopenharmony_ci ctrlParamsSeqConfig = [ 1810a7ce71fSopenharmony_ci 0x13, 0x13, 0, 0, 0x0, 0xBC, 0xFF, 1, 0x0, // output volume 1820a7ce71fSopenharmony_ci 0x14, 0x14, 9, 9, 0x0, 0x1, 0x1, 0, 0x0, // output mute 1830a7ce71fSopenharmony_ci 0x01, 0x01, 10, 10, 0x0, 0x3, 0x3, 0, 0x0 // output channel 1840a7ce71fSopenharmony_ci ]; 1850a7ce71fSopenharmony_ci 1860a7ce71fSopenharmony_ci /* reg, rreg, shift, rshift, min, max, mask, invert, value */ 1870a7ce71fSopenharmony_ci daiStartupSeqConfig = [ 1880a7ce71fSopenharmony_ci 0x00, 0x00, 0, 0, 0x0, 0xF, 0xF, 0, 0x9 // work 1890a7ce71fSopenharmony_ci ]; 1900a7ce71fSopenharmony_ci 1910a7ce71fSopenharmony_ci /* reg, rreg, shift, rshift, min, max, mask, invert, value */ 1920a7ce71fSopenharmony_ci daiParamsSeqConfig = [ 1930a7ce71fSopenharmony_ci 0x01, 0x01, 6, 6, 0x0, 0xF, 0xF, 0, 0x0, // i2s_frequency 1940a7ce71fSopenharmony_ci 0x01, 0x01, 3, 3, 0x0, 0x7, 0x7, 0, 0x0, // i2s_format 1950a7ce71fSopenharmony_ci 0x01, 0x01, 10, 10, 0x0, 0x3, 0x3, 0, 0x0 // i2s_channel 1960a7ce71fSopenharmony_ci ]; 1970a7ce71fSopenharmony_ci 1980a7ce71fSopenharmony_ci controlsConfig = [ 1990a7ce71fSopenharmony_ci /* 2000a7ce71fSopenharmony_ci "Master Playback Volume", 2010a7ce71fSopenharmony_ci "Playback Mute", 2020a7ce71fSopenharmony_ci "Render Channel Mode" 2030a7ce71fSopenharmony_ci */ 2040a7ce71fSopenharmony_ci /*array index, iface, enable*/ 2050a7ce71fSopenharmony_ci 0, 0, 1, 2060a7ce71fSopenharmony_ci 2, 0, 1, 2070a7ce71fSopenharmony_ci 8, 6, 1 2080a7ce71fSopenharmony_ci ]; 2090a7ce71fSopenharmony_ci } 2100a7ce71fSopenharmony_ci } 2110a7ce71fSopenharmony_ci } 2120a7ce71fSopenharmony_ci} 213