Skip to content

Instantly share code, notes, and snippets.

@Demon000
Last active April 29, 2025 21:02
Show Gist options
  • Select an option

  • Save Demon000/ab1a924ecca6e1dda7ab3525a115ad33 to your computer and use it in GitHub Desktop.

Select an option

Save Demon000/ab1a924ecca6e1dda7ab3525a115ad33 to your computer and use it in GitHub Desktop.
/* 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