An obsolete weakness occurs when someone uses deprecated or obsolete functions when building a system. As a programming language evolves, some functions occasionally become obsolete.
This C routine is considered obsolete.
xf86-video-ast/src/xf86-video-ast-1.1.5/src/ast_vgatool.c
The highlighted line of code below is the trigger point of this particular Alpine 3.6 obsolete weakness.
MOutdwm(mmiobase, 0x1E6E007C, 0x00000000);
MOutdwm(mmiobase, 0x1E6E0070, 0x221);
do{
data = MIndwm(mmiobase, 0x1E6E0070);
}while(!(data & 0x00001000));
MOutdwm(mmiobase, 0x1E6E0070, 0x00000000);
MOutdwm(mmiobase, 0x1E6E0050, 0x80000000);
MOutdwm(mmiobase, 0x1E6E0050, 0x00000000);
#endif
}
static void DDR3_Init(PAST2300DRAMParam param)
{
ULONG data, data2, retry = 0;
UCHAR *mmiobase;
mmiobase = param->pjMMIOVirtualAddress;
DDR3_Init_Start:
MOutdwm(mmiobase, 0x1E6E0000, 0xFC600309);
MOutdwm(mmiobase, 0x1E6E0064, 0x00000000);
MOutdwm(mmiobase, 0x1E6E0034, 0x00000000);
MOutdwm(mmiobase, 0x1E6E0018, 0x00000100);
MOutdwm(mmiobase, 0x1E6E0024, 0x00000000);
usleep(10);
MOutdwm(mmiobase, 0x1E6E0064, param->REG_MADJ);
MOutdwm(mmiobase, 0x1E6E0068, param->REG_SADJ);
usleep(10);
MOutdwm(mmiobase, 0x1E6E0064, param->REG_MADJ | 0xC0000);
usleep(10);
MOutdwm(mmiobase, 0x1E6E0004, param->DRAM_CONFIG);
MOutdwm(mmiobase, 0x1E6E0008, 0x90040f);
MOutdwm(mmiobase, 0x1E6E0010, param->REG_AC1);
MOutdwm(mmiobase, 0x1E6E0014, param->REG_AC2);
MOutdwm(mmiobase, 0x1E6E0020, param->REG_DQSIC);
MOutdwm(mmiobase, 0x1E6E0080, 0x00000000);
MOutdwm(mmiobase, 0x1E6E0084, 0x00FFFFFF);
MOutdwm(mmiobase, 0x1E6E0088, param->REG_DQIDLY);
MOutdwm(mmiobase, 0x1E6E0018, 0x4000A170);
MOutdwm(mmiobase, 0x1E6E0018, 0x00002370);
MOutdwm(mmiobase, 0x1E6E0038, 0x00000000);
MOutdwm(mmiobase, 0x1E6E0040, 0xFF444444);
MOutdwm(mmiobase, 0x1E6E0044, 0x22222222);
MOutdwm(mmiobase, 0x1E6E0048, 0x22222222);
MOutdwm(mmiobase, 0x1E6E004C, 0x00000002);
MOutdwm(mmiobase, 0x1E6E0050, 0x80000000);
MOutdwm(mmiobase, 0x1E6E0050, 0x00000000);
MOutdwm(mmiobase, 0x1E6E0054, 0);
MOutdwm(mmiobase, 0x1E6E0060, param->REG_DRV);