📄 app_dol2function.c
字号:
L2_ReadBYWindow((UCHAR)ArgBuf[0], &sstmp0);
break;
case 0x34:
L2_ConfigAFWindow((USHORT)ArgBuf[0], (USHORT)ArgBuf[1], (USHORT)ArgBuf[2],
(USHORT)ArgBuf[3]);
break;
case 0x35:
L2_ReadAFWindow(&stmp0);
break;
case 0x36:
L2_ConfigOB((USHORT)ArgBuf[0], (USHORT)ArgBuf[1], (UCHAR)ArgBuf[2],
(UCHAR)ArgBuf[3], (USHORT)ArgBuf[4]);
break;
case 0x37:
L2_ReadAutoOB(&stmp0);
break;
case 0x38:
L2_ConfigSPW((UCHAR)ArgBuf[0], (UCHAR)ArgBuf[1], (UCHAR)ArgBuf[2],
(UCHAR)ArgBuf[3], (UCHAR)ArgBuf[4], (UCHAR)ArgBuf[5],
(UCHAR)ArgBuf[6]);
break;
case 0x39:
L2_ReadSPW((UCHAR)ArgBuf[0], <mp0, &tmp0, &tmp1, &tmp2);
break;
//segament A
case 0xA0:
L2_InitCDSP((UCHAR)ArgBuf[0]);
break;
case 0xA1:
L2_DoCDSP((ULONG)ArgBuf[0], (USHORT)ArgBuf[1], (USHORT)ArgBuf[2],
(ULONG)ArgBuf[3], (USHORT)ArgBuf[4], (USHORT)ArgBuf[5],
(UCHAR)ArgBuf[6], (UCHAR)ArgBuf[7]);
break;
#ifdef TestModeEn
case 0xA2:
L2_TestCDSP((UCHAR)ArgBuf[0]);
break;
#endif
case 0xA3:
L2_SetSignalGen((UCHAR)ArgBuf[0], (UCHAR)ArgBuf[1]);
break;
case 0xA4:
L2_SetMenuBar((UCHAR)ArgBuf[0], (USHORT)ArgBuf[1], (USHORT)ArgBuf[2],
(USHORT)ArgBuf[3], (USHORT)ArgBuf[4]);
break;
case 0xA5:
L2_SetYlut((UCHAR)ArgBuf[0], (UCHAR)ArgBuf[1], (UCHAR)ArgBuf[2],
(UCHAR)ArgBuf[3], (UCHAR)ArgBuf[4], (UCHAR)ArgBuf[5],
(UCHAR)ArgBuf[6], (UCHAR)ArgBuf[7], (UCHAR)ArgBuf[8],
(UCHAR)ArgBuf[9], (UCHAR)ArgBuf[10], (UCHAR)ArgBuf[11],
(UCHAR)ArgBuf[12], (UCHAR)ArgBuf[13], (UCHAR)ArgBuf[14],
(UCHAR)ArgBuf[15], 0xfe);
break;
case 0xA6:
{
tmpfac[0] = 1;
tmpfac[1] = -1;
tmpfac[2] = 2;
tmpfac[3] = -2;
tmpfac[4] = 3;
tmpfac[5] = -3;
tmpfac[6] = 4;
tmpfac[7] = -4;
tmpfac[8] = -1;
tmpfac[9] = 1;
tmpfac[10] = -2;
tmpfac[11] = 2;
tmpfac[12] = -8;
tmpfac[13] = 3;
tmpfac[14] = -4;
tmpfac[15] = 4;
tmpfac[16] = 1;
tmpfac[17] = 16;
tmpfac[18] = 2;
tmpfac[19] = 2;
tmpfac[20] = 3;
tmpfac[21] = 3;
tmpfac[22] = 4;
tmpfac[23] = 4;
tmpfac[24] = -1;
L2_SetHorFilt(tmpfac, (UCHAR)ArgBuf[0]);
}
break;
case 0xA7:
{
tmpfac[0] = 1;
tmpfac[1] = 1;
tmpfac[2] = 2;
tmpfac[3] = 2;
tmpfac[4] = 3;
tmpfac[5] = 3;
tmpfac[6] = 4;
tmpfac[7] = 4;
tmpfac[8] = -1;
tmpfac[9] = -1;
tmpfac[10] = -8;
tmpfac[11] = -8;
tmpfac[12] = -16;
tmpfac[13] = -16;
tmpfac[14] = 16;
tmpfac[15] = 4;
tmpfac[16] = 1;
tmpfac[17] = -1;
tmpfac[18] = 2;
tmpfac[19] = -2;
tmpfac[20] = 3;
tmpfac[21] = -3;
tmpfac[22] = 4;
tmpfac[23] = -4;
tmpfac[24] = 1;
L2_SetVerFilt(tmpfac, (UCHAR)ArgBuf[0]);
}
break;
case 0xA8:
L2_DoCDSP2((ULONG)ArgBuf[0], (USHORT)ArgBuf[1], (USHORT)ArgBuf[2],
(ULONG)ArgBuf[3], (USHORT)ArgBuf[4], (USHORT)ArgBuf[5],
(UCHAR)ArgBuf[6], (UCHAR)ArgBuf[7], (ULONG)ArgBuf[8]);
break;
//segament F
case 0xF0: //read all Y windows
for(i=0;i<26;i++)
L2_ReadAEWindow(i, &tmp0);
break;
case 0xF1: //read all RY windows
for(i=0;i<26;i++)
L2_ReadRYWindow(i, &sstmp0);
break;
case 0xF2: //read all BY windows
for(i=0;i<26;i++)
L2_ReadBYWindow(i, &sstmp0);
break;
case 0xF3: //read all regions in the special window
for(i=0;i<4;i++)
L2_ReadSPW(i, <mp0, &tmp0, &tmp1, &tmp2);
break;
default:
break;
}
return L2K_SUCCESS;
}
//-----------------------------------------------------------------------------
//App_DoL2Function_FM
//-----------------------------------------------------------------------------
/*
routine description:
Do specified FM L2 Function (06)
arguments:
L2_FuncID - L2 Function ID
ArgBuf - Pointer to the argument buffer
return value:
0x00 - success
*/
UCHAR App_DoL2Function_FM(UCHAR L2_FuncID, ULONG *ArgBuf)
{
UCHAR ByteData;
#if (CFAIDE)
USHORT WordData;
#endif
//ULONG LongData;
switch (L2_FuncID)
{
case 0x00:
L2_FlashMode((UCHAR)ArgBuf[0], (UCHAR)ArgBuf[1], (UCHAR)ArgBuf[2]);
//PRINT_APP("L2 0600 finish\n");
break;
case 0x01:
L2_ReadECC((UCHAR)ArgBuf[0], &ByteData);
//PRINT_APP("L2 0601 finish\n");
break;
case 0x02:
L2_ClearECC();
//PRINT_APP("L2 0602 finish\n");
break;
case 0x03:
L2_ECCMode((UCHAR)ArgBuf[0]);
//PRINT_APP("L2 0603 finish\n");
break;
case 0x10:
L2_NANDInit((UCHAR)ArgBuf[0] , (UCHAR)ArgBuf[1]);
//PRINT_APP("L2 0610 finish\n");
break;
case 0x11:
L2_NANDSendCmd((UCHAR)ArgBuf[0]);
//PRINT_APP("L2 0611 finish\n");
break;
case 0x12:
L2_NANDSendAddr((UCHAR)ArgBuf[0],(ULONG)ArgBuf[1]);
//PRINT_APP("L2 0612 finish\n");
break;
case 0x13:
L2_NANDCheckRdy(&ByteData);
//PRINT_APP("L2 0613 finish\n");
break;
case 0x14:
L2_NANDWritePort((UCHAR)ArgBuf[0]);
//PRINT_APP("L2 0614 finish\n");
break;
case 0x15:
L2_NANDReadPort(&ByteData);
//PRINT_APP("L2 0615 finish\n");
break;
case 0x16:
L2_NANDCompleteOperation();
//PRINT_APP("L2 0616 finish\n");
break;
#if (CFA)
case 0x20:
L2_CFInit((UCHAR)ArgBuf[0], (UCHAR)ArgBuf[1], (UCHAR)ArgBuf[2]);
//PRINT_APP("L2 0620 finish\n");
break;
case 0x21:
L2_CardDetect(&ByteData);
//PRINT_APP("L2 0621 finish\n");
break;
case 0x22:
L2_CFReset((UCHAR)ArgBuf[0]);
//PRINT_APP("L2 0622 finish\n");
break;
case 0x23:
L2_CFCheckRdy(&ByteData);
//PRINT_APP("L2 0623 finish\n");
break;
#endif
#if (CFAMEM)
case 0x24:
L2_CFSetMemA((UCHAR)ArgBuf[0] ,(UCHAR)ArgBuf[1]);
//PRINT_APP("L2 0624 finish\n");
break;
case 0x25:
L2_CFAttrMemRd((UCHAR)ArgBuf[0],(UCHAR)ArgBuf[1],&ByteData);
//PRINT_APP("L2 0625 finish\n");
break;
case 0x26:
L2_CFAttrMemWr((UCHAR)ArgBuf[0],(UCHAR)ArgBuf[1],(UCHAR)ArgBuf[2]);
//PRINT_APP("L2 0626 finish\n");
break;
case 0x27:
L2_CFComMemRd((UCHAR)ArgBuf[0],(UCHAR)ArgBuf[1],&ByteData);
//PRINT_APP("L2 0627 finish\n");
break;
case 0x28:
L2_CFComMemWr((UCHAR)ArgBuf[0],(UCHAR)ArgBuf[1],(UCHAR)ArgBuf[2]);
//PRINT_APP("L2 0628 finish\n");
break;
#endif
#if (CFAIDE)
case 0x29:
L2_CFCheckIRQ((UCHAR)ArgBuf[0],&ByteData);
//PRINT_APP("L2 0629 finish\n");
break;
case 0x2a:
L2_CFSetCsA((UCHAR)ArgBuf[0]);
//PRINT_APP("L2 062A finish\n");
break;
case 0x2b:
L2_CFSetWordCsAWr((UCHAR)ArgBuf[0], (USHORT)ArgBuf[1]);
//PRINT_APP("L2 062B finish\n");
break;
case 0x2c:
L2_CFSetWordCsARd((UCHAR)ArgBuf[0], &WordData);
//PRINT_APP("L2 062C finish\n");
break;
#endif
#ifdef TestModeEn
L2_FMGPIOOe(0, 0);
L2_FMGPIOOutput(0, 0);
L2_FMGPIOInput(0, 0);
#if (SD)
case 0x30:
L2_SDInit();
L2_SDConfig(0 ,0 );
L2_SDReset();
L2_SDBlockSize(0);
L2_SDTxCommand(0);
L2_SDRxResponse(0, 0 );
L2_SDReadRspBuf(0 , 0);
L2_SDRspBufState(0);
L2_SDDataBufState(0);
L2_SDReadCRC7(0);
L2_SDCheckCRC16(0);
L2_SDCardCRCStat(0);
L2_SDTimeOut(0);
L2_SDTxData();
L2_SDRxData();
L2_SDRxCRC();
L2_SDTxDummy();
L2_SDWaitIdle();
L2_SDCheckDat0(0);
L2_SDReadPort(0);
L2_SDWritePort(0);
break;
#endif
#endif
#ifdef TestModeEn
case 0xff:
L2_TestFlash((UCHAR)ArgBuf[0]);
break;
#endif
default:
break;
}
return L2K_SUCCESS;
}
//-----------------------------------------------------------------------------
//App_DoL2Function_CPU
//-----------------------------------------------------------------------------
/*
routine description:
Do specified CPU L2 Function
arguments:
L2_FuncID - L2 Function ID (05)
ArgBuf - Pointer to the argument buffer
return value:
0x00 - success
*/
UCHAR App_DoL2Function_CPU(UCHAR L2_FuncID, ULONG *ArgBuf)
{
UCHAR ByteData;
USHORT WordData;
// ULONG LongData;
switch (L2_FuncID)
{
case 0x00:
L2_InitCPU((UCHAR)ArgBuf[0]);
//PRINT_APP("L2 0500 finish\n");
break;
case 0x01:
L2_Set4KSRAMMode((UCHAR)ArgBuf[0]);
//PRINT_APP("L2 0501 finish\n");
break;
case 0x02:
L2_4KSRAMBufIdx((UCHAR)ArgBuf[0],(USHORT)ArgBuf[1],&WordData,&WordData);
//PRINT_APP("L2 0502 finish\n");
break;
case 0x03:
L2_Write4KSRAMPort((UCHAR)ArgBuf[0]);
//PRINT_APP("L2 0503 finish\n");
break;
case 0x04:
L2_Read4KSRAMPort(&ByteData);
//PRINT_APP("L2 0504 finish\n");
break;
case 0x05:
L2_DownloadROM((USHORT)ArgBuf[0], (ULONG)ArgBuf[1], (USHORT)ArgBuf[2]);
//PRINT_APP("L2 0505 finish\n");
break;
#ifdef TestModeEn
case 0xff:
L2_TestCPU((UCHAR)ArgBuf[0]);
break;
#endif
default:
break;
}
return L2K_SUCCESS;
}
//-----------------------------------------------------------------------------
//App_DoL2Function_DMAC
//-----------------------------------------------------------------------------
/*
routine description:
Do specified DMAC L2 Function
arguments:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -