-
-
Save Demon000/ab1a924ecca6e1dda7ab3525a115ad33 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* aw882xx_ar_get_ctl_by_pcm_info(mixer*, char*, char const*, mixer_ctl**) */ | |
| undefined8 | |
| aw882xx_ar_get_ctl_by_pcm_info(mixer *param_1,char *param_2,char *param_3,mixer_ctl **param_4) | |
| { | |
| size_t sVar1; | |
| size_t sVar2; | |
| char *pcVar3; | |
| mixer_ctl *pmVar4; | |
| undefined8 uVar5; | |
| char *__size; | |
| if ((((param_1 == (mixer *)0x0) || (param_2 == (char *)0x0)) || (param_3 == (char *)0x0)) || | |
| (param_4 == (mixer_ctl **)0x0)) { | |
| pcVar3 = "[AWINIC] [ERR] %s: %d: pointer is nulll"; | |
| uVar5 = 0x8c; | |
| } | |
| else { | |
| sVar1 = strlen(param_2); | |
| sVar2 = strlen(param_3); | |
| if ((CARRY8(sVar1,sVar2)) || (0xfffffffffffffffd < sVar1 + sVar2)) { | |
| /* WARNING: Subroutine does not return */ | |
| __ubsan_handle_add_overflow_minimal_abort(); | |
| } | |
| __size = (char *)(sVar1 + sVar2 + 2 & 0xffffffff); | |
| pcVar3 = (char *)calloc(1,(size_t)__size); | |
| if (pcVar3 != (char *)0x0) { | |
| snprintf(pcVar3,0xffffffffffffffff,__size,"%s %s",param_2,param_3); | |
| __android_log_print(3,0,"[AWINIC] [DBG] %s: %d: mixer_name:%s", | |
| "aw882xx_ar_get_ctl_by_pcm_info",0x99,pcVar3); | |
| uVar5 = g_tinyalsa._24_8_; | |
| __cfi_slowpath(0x2a2f64f469bb68b4,g_tinyalsa._24_8_); | |
| pmVar4 = (mixer_ctl *)(*(code *)uVar5)(param_1,pcVar3); | |
| *param_4 = pmVar4; | |
| if (pmVar4 == (mixer_ctl *)0x0) { | |
| __android_log_print(6,0,"[AWINIC] [ERR] %s: %d: get ctl failed", | |
| "aw882xx_ar_get_ctl_by_pcm_info",0x9d); | |
| free(pcVar3); | |
| return 0xffffffff; | |
| } | |
| free(pcVar3); | |
| return 0; | |
| } | |
| pcVar3 = "[AWINIC] [ERR] %s: %d: calloc failed"; | |
| uVar5 = 0x94; | |
| } | |
| __android_log_print(6,0,pcVar3,"aw882xx_ar_get_ctl_by_pcm_info",uVar5); | |
| return 0xffffffff; | |
| } | |
| /* aw882xx_ar_set_dsp_info(aw_ar_info*, unsigned int, char*, unsigned int) */ | |
| void aw882xx_ar_set_dsp_info(aw_ar_info *param_1,uint param_2,char *param_3,uint param_4) | |
| { | |
| uint uVar1; | |
| long lVar2; | |
| int iVar3; | |
| undefined4 *__ptr; | |
| undefined8 uVar4; | |
| char *pcVar5; | |
| ulong __size; | |
| mixer_ctl *local_60; | |
| long local_58; | |
| lVar2 = tpidr_el0; | |
| local_58 = *(long *)(lVar2 + 0x28); | |
| local_60 = (mixer_ctl *)0x0; | |
| if (param_3 == (char *)0x0) { | |
| pcVar5 = "[AWINIC] [ERR] %s: %d: pointer is nulll"; | |
| uVar4 = 0xfb; | |
| LAB_0047b7e8: | |
| __android_log_print(6,0,pcVar5,"aw882xx_ar_set_dsp_info",uVar4); | |
| } | |
| else { | |
| iVar3 = aw882xx_ar_get_ctl_by_pcm_info | |
| (*(mixer **)param_1,*(char **)(param_1 + 0x10),"setParam",&local_60); | |
| if (-1 < iVar3) { | |
| uVar1 = param_4 + 3 & 0xfffffffc; | |
| __size = (ulong)(uVar1 + (-uVar1 & 4) + 0x10); | |
| __ptr = (undefined4 *)calloc(1,__size); | |
| if (__ptr == (undefined4 *)0x0) { | |
| pcVar5 = "[AWINIC] [ERR] %s: %d: calloc failed"; | |
| uVar4 = 0x10b; | |
| goto LAB_0047b7e8; | |
| } | |
| *__ptr = *(undefined4 *)(param_1 + 8); | |
| __ptr[1] = param_2; | |
| __ptr[2] = uVar1; | |
| memcpy(__ptr + 4,param_3,(ulong)param_4); | |
| uVar4 = g_tinyalsa._48_8_; | |
| __cfi_slowpath(0x849f0231bd9ef471,g_tinyalsa._48_8_); | |
| iVar3 = (*(code *)uVar4)(local_60,__ptr,__size); | |
| if (-1 < iVar3) { | |
| free(__ptr); | |
| uVar4 = 0; | |
| goto LAB_0047b7f0; | |
| } | |
| __android_log_print(6,0,"[AWINIC] [ERR] %s: %d: mixer_ctl_set_array failed", | |
| "aw882xx_ar_set_dsp_info",0x118); | |
| free(__ptr); | |
| } | |
| } | |
| uVar4 = 0xffffffff; | |
| LAB_0047b7f0: | |
| if (*(long *)(lVar2 + 0x28) == local_58) { | |
| return; | |
| } | |
| /* WARNING: Subroutine does not return */ | |
| __stack_chk_fail(uVar4); | |
| } | |
| /* aw882xx_ar_write_msg_to_dsp(aw_ar_info*, unsigned int, unsigned int, char*, unsigned int) */ | |
| int aw882xx_ar_write_msg_to_dsp | |
| (aw_ar_info *param_1,uint param_2,uint param_3,char *param_4,uint param_5) | |
| { | |
| undefined4 uVar1; | |
| uint uVar2; | |
| int iVar3; | |
| char *__ptr; | |
| if ((param_1 == (aw_ar_info *)0x0) || (param_4 == (char *)0x0)) { | |
| __android_log_print(6,0,"[AWINIC] [ERR] %s: %d: pointer is nulll or size is 0", | |
| "aw882xx_ar_write_msg_to_dsp",0x162); | |
| iVar3 = -1; | |
| } | |
| else { | |
| __ptr = (char *)calloc(1,0x1c); | |
| if (__ptr == (char *)0x0) { | |
| __android_log_print(6,0,"[AWINIC] [ERR] %s: %d: msg_id:0x%x calloc dsp_msg error", | |
| "aw882xx_ar_write_msg_to_dsp",0x168,param_3); | |
| iVar3 = -1; | |
| } | |
| else { | |
| uVar1 = *(undefined4 *)param_4; | |
| *(uint *)(__ptr + 4) = param_3; | |
| *(undefined4 *)(__ptr + 8) = 1; | |
| uVar2 = *(uint *)(&DAT_00176f28 + (ulong)param_2 * 4); | |
| *(undefined4 *)(__ptr + 0x18) = uVar1; | |
| iVar3 = aw882xx_ar_set_dsp_info(param_1,uVar2,__ptr,0x1c); | |
| if (iVar3 < 0) { | |
| __android_log_print(6,0,"[AWINIC] [ERR] %s: %d: msg_id:0x%x, write data to dsp failed", | |
| "aw882xx_ar_write_msg_to_dsp",0x177,param_3); | |
| free(__ptr); | |
| } | |
| else { | |
| __android_log_print(3,0,"[AWINIC] [DBG] %s: %d: msg_id:0x%x, write data[%d] to dsp success", | |
| "aw882xx_ar_write_msg_to_dsp",0x17d,param_3,0x1c); | |
| free(__ptr); | |
| iVar3 = 0; | |
| } | |
| } | |
| } | |
| return iVar3; | |
| } | |
| int aw882xx_ar_dsp_set_cali_re.cfi(aw_ar_info *param_1,uint param_2,int param_3) | |
| { | |
| long lVar1; | |
| int iVar2; | |
| uint uVar3; | |
| uint uVar4; | |
| uint uVar5; | |
| uint local_4c; | |
| long local_48; | |
| lVar1 = tpidr_el0; | |
| local_48 = *(long *)(lVar1 + 0x28); | |
| local_4c = (param_3 << 0xc) / 1000; | |
| if (param_2 < 4) { | |
| uVar4 = 0x10013d1b; | |
| uVar5 = param_2; | |
| uVar3 = 0; | |
| switch(param_2) { | |
| case 2: | |
| uVar5 = 1; | |
| break; | |
| case 3: | |
| uVar3 = 1; | |
| case 1: | |
| uVar5 = uVar3; | |
| uVar4 = 0x10013d1c; | |
| } | |
| uVar3 = 0x7f; | |
| __android_log_print(6,0,"[AWINIC] [ERR] %s: %d: msg num[%d]","aw882xx_ar_get_msg_num",0x7f,uVar5 | |
| ); | |
| iVar2 = aw882xx_ar_write_msg_to_dsp(param_1,uVar5,uVar4,(char *)&local_4c,uVar3); | |
| if (iVar2 != 0) { | |
| __android_log_print(6,0,"[AWINIC] [ERR] %s: %d: dev[%d]: write cali re failed", | |
| "aw882xx_ar_dsp_set_cali_re",0x279,param_2); | |
| } | |
| printf("dev[%d]: write cali re %d\n",(ulong)param_2,(ulong)local_4c); | |
| __android_log_print(4,0,"[AWINIC] [INF] %s: %d: dev[%d]: write cali re %d\n", | |
| "aw882xx_ar_dsp_set_cali_re",0x27c,param_2,local_4c); | |
| } | |
| else { | |
| __android_log_print(6,0,"[AWINIC] [ERR] %s: %d: can not find msg num, channel %d ", | |
| "aw882xx_ar_get_msg_num",0x7b,param_2); | |
| __android_log_print(6,0,"[AWINIC] [ERR] %s: %d: dev[%d]: get msg_num failed", | |
| "aw882xx_ar_dsp_set_cali_re",0x267,param_2); | |
| iVar2 = -1; | |
| } | |
| if (*(long *)(lVar1 + 0x28) == local_48) { | |
| return iVar2; | |
| } | |
| /* WARNING: Subroutine does not return */ | |
| __stack_chk_fail(); | |
| } | |
| undefined4 zte_ar_set_cali_re_to_adsp.cfi(undefined8 param_1,undefined4 param_2,undefined8 param_3) | |
| { | |
| long lVar1; | |
| undefined8 *__ptr; | |
| FILE *__stream; | |
| size_t sVar2; | |
| undefined4 uVar3; | |
| undefined8 local_68; | |
| undefined8 local_60; | |
| undefined7 uStack_58; | |
| undefined4 local_51; | |
| long local_48; | |
| lVar1 = tpidr_el0; | |
| local_48 = *(long *)(lVar1 + 0x28); | |
| local_60 = 0; | |
| uStack_58 = 0; | |
| local_51 = 0; | |
| local_68 = 0; | |
| __ptr = (undefined8 *)calloc(1,0x18); | |
| if (__ptr == (undefined8 *)0x0) { | |
| __android_log_print(6,0,"[AWINIC] [ERR] %s: %d: calloc failed","zte_ar_set_cali_re_to_adsp", | |
| 0x348); | |
| uVar3 = 0xffffffff; | |
| } | |
| else { | |
| *__ptr = param_3; | |
| *(undefined4 *)(__ptr + 1) = param_2; | |
| __ptr[2] = param_1; | |
| __android_log_print(4,0,"[AWINIC] [INF] %s: %d: mixer = 0x%x, miid = 0x%x, pcm_device_name = %d" | |
| ,"zte_ar_set_cali_re_to_adsp",0x351,param_3,param_2,param_1); | |
| __stream = fopen("/mnt/vendor/persist/smartpa_cali_data/aw_cali.bin","rb"); | |
| if (__stream == (FILE *)0x0) { | |
| __android_log_print(6,0,"[AWINIC] [ERR] %s: %d: open the file failed", | |
| "zte_ar_set_cali_re_to_adsp",0x355); | |
| uVar3 = 0xffffffff; | |
| } | |
| else { | |
| __cfi_slowpath(0x695b19aca8f9bcf9,fread); | |
| sVar2 = fread(&uStack_58,10,1,__stream); | |
| if (sVar2 != 0) { | |
| sscanf((char *)&uStack_58,"%d",&local_68); | |
| __android_log_print(4,0,"[AWINIC] [INF] %s: %d: read re value is %d, channel is %d", | |
| "zte_ar_set_cali_re_to_adsp",0x35c,local_68 & 0xffffffff,0); | |
| aw882xx_ar_dsp_set_cali_re(__ptr,0,local_68 & 0xffffffff); | |
| __cfi_slowpath(0x695b19aca8f9bcf9,fread); | |
| sVar2 = fread(&uStack_58,10,1,__stream); | |
| if (sVar2 != 0) { | |
| sscanf((char *)&uStack_58,"%d",(ulong)&local_68 | 4); | |
| __android_log_print(4,0,"[AWINIC] [INF] %s: %d: read re value is %d, channel is %d", | |
| "zte_ar_set_cali_re_to_adsp",0x35c,local_68._4_4_,1); | |
| aw882xx_ar_dsp_set_cali_re(__ptr,1,local_68._4_4_); | |
| __cfi_slowpath(0x695b19aca8f9bcf9,fread); | |
| sVar2 = fread(&uStack_58,10,1,__stream); | |
| if (sVar2 != 0) { | |
| sscanf((char *)&uStack_58,"%d",&local_60); | |
| __android_log_print(4,0,"[AWINIC] [INF] %s: %d: read re value is %d, channel is %d", | |
| "zte_ar_set_cali_re_to_adsp",0x35c,local_60 & 0xffffffff,2); | |
| aw882xx_ar_dsp_set_cali_re(__ptr,2,local_60 & 0xffffffff); | |
| __cfi_slowpath(0x695b19aca8f9bcf9,fread); | |
| sVar2 = fread(&uStack_58,10,1,__stream); | |
| if (sVar2 != 0) { | |
| sscanf((char *)&uStack_58,"%d",(long)&local_60 + 4); | |
| __android_log_print(4,0,"[AWINIC] [INF] %s: %d: read re value is %d, channel is %d", | |
| "zte_ar_set_cali_re_to_adsp",0x35c,local_60._4_4_,3); | |
| aw882xx_ar_dsp_set_cali_re(__ptr,3,local_60._4_4_); | |
| __cfi_slowpath(0x695b19aca8f9bcf9,fread); | |
| sVar2 = fread(&uStack_58,10,1,__stream); | |
| if (sVar2 != 0) { | |
| sscanf((char *)&uStack_58,"%d",&uStack_58); | |
| /* WARNING: Subroutine does not return */ | |
| abort(); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| fclose(__stream); | |
| uVar3 = 0; | |
| } | |
| free(__ptr); | |
| } | |
| if (*(long *)(lVar1 + 0x28) == local_48) { | |
| return uVar3; | |
| } | |
| /* WARNING: Subroutine does not return */ | |
| __stack_chk_fail(); | |
| } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment