void RT28XXDMAEnable(int param_1)
{
char cVar1;
uint uVar2;
int iVar3;
if (*(char *)(param_1 + 0xec) == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1004) = 4;
}
iVar3 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while (iVar3 = iVar3 + 1, cVar1 == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x208);
if ((uVar2 & 10) == 0) goto LAB_0005459c;
if (2 < RTDebugLevel) {
printk("==> DMABusy\n");
}
RTMPusecDelay(1000);
if (iVar3 == 200) goto LAB_0005459c;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar2 = 0;
LAB_0005459c:
RTMPusecDelay(0x32);
uVar2 = uVar2 & 0xffffff8a | 0x65;
if (2 < RTDebugLevel) {
printk("<== WRITE DMA offset 0x208 = 0x%x\n",uVar2);
}
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x208) = uVar2;
}
return;
}