@@ -404,6 +404,21 @@ error_t es8388_config_fmt(codec_mode_t mode, i2s_format_t fmt) {
404
404
* - (0) Success
405
405
*/
406
406
#if AI_THINKER_ES8388_VOLUME_HACK == 1
407
+ error_t es8388_set_left_right_volume (int left_volume , int right_volume ) {
408
+ AD_LOGD ("es8388_set_left_right_volume (HACK 1): %d %d" , left_volume , right_volume );
409
+ error_t res = RESULT_OK ;
410
+
411
+ // https://dl.radxa.com/rock2/docs/hw/ds/ES8388%20user%20Guide.pdf pages 23 & 24
412
+ // DAC Volume Control -DAC LDACVOL RDACVOL default 0 = 0DB; Default value 192 = – -96 dB
413
+ res = es_write_reg (ES8388_ADDR , ES8388_DACCONTROL4 , left_volume ); // LDACVOL (digital volume control)
414
+ res |= es_write_reg (ES8388_ADDR , ES8388_DACCONTROL5 , right_volume ); // RDACVOL
415
+ // Lineout 1 & 2 - LOUT1 & 2, RLOUT1 & 2 volume: 6 bits
416
+ res |= es_write_reg (ES8388_ADDR , ES8388_DACCONTROL24 , 0b011110 ); // LOUT1VOL 0b011110 = 0db, 0b011111 = +1.5db, 0b011101 = -1.5db
417
+ res |= es_write_reg (ES8388_ADDR , ES8388_DACCONTROL25 , 0b011110 ); // ROUT1VOL
418
+ res |= es_write_reg (ES8388_ADDR , ES8388_DACCONTROL26 , 0b011110 ); // LOUT2VOL 0b011110 = 0db, 0b011111 = +1.5db, 0b011101 = -1.5db
419
+ res |= es_write_reg (ES8388_ADDR , ES8388_DACCONTROL27 , 0b011110 ); // ROUT2VOL
420
+ return res ;
421
+ }
407
422
408
423
error_t es8388_set_voice_volume (int volume ) {
409
424
AD_LOGD ("es8388_set_voice_volume (HACK 1): %d" , volume );
0 commit comments