📄 l1_system.c
字号:
L2_SetAFBSize(postCdspWidth, postCdspHeight);
L2_SetBFBSize(postCdspWidth, postCdspHeight);
//patch4.3@richie@zo marked
//L2_SetDisplaySrcImgSize(postCdspWidth, postCdspHeight, G_DisplayType);
//patch4.3@richie@zo
L1_DisplayZoomIn(G_ucZoomFactor);
//patch4.2@yichang@0520 for fix version4.1 bug of turning off display
//L2_TurnOnOffDisplay(1);
if ((XBYTE[0x2B00] & 0x01) == 0x00)
{
L2_SetCMOSPreview(); //set the CMOS sensor back to decimation mode
L2_WaitVD(0, 1);
}
L1_InitSPCA533(1);
//patch4.4@yichang@for valid signal begin
for(i=0;i<100;i++)
// DELAY_1ms();//wendy@2004/8/14
DELAY_10ms();
//patch5.04@Joe@2003.5.14 9:41 mask begin
/*
while(((XBYTE[0x2DA0] & 0x04) == 0x04))
{
L2_CtrlScreen(1);
}
*/
//patch5.04@Joe@2003.5.14 9:41 mask end
//patch4.4@yichang@for valid signal end
//patch4.2@yichang@0520 for fix version4.1 bug of turning off display
//patch5.03@Joe@2003.4.16 13:57 add begin
if (OnOff > 0)
L2_TurnOnOffDisplay2(1);
//patch5.03@Joe@2003.4.16 13:57 add end
//PRINT_L1(" L1_InitPreview: Exit.\n");
}
//-----------------------------------------------------------------------------
//L1_InitPCCam
//-----------------------------------------------------------------------------
//PC-CAM mode related settings those are not handled by L2_InitXXX
void L1_InitPCCam(void) USING_0
{
UCHAR revid;
//version4.0 richie@ps0503
//USHORT postJpegWidth;
//USHORT postJpegHeight;
//version4.0 richie@ps0503
//G_usPostJpegWidth = 320;
//G_usPostJpegHeight = 240;
//patch4.5@yichang@badpixel begin
#if (NANDF_OPTION == 1 && CARD_OPTION == 1)
//Reading badpixel coordinate for sub-sample mode
UCHAR blockNum, startBlock, pageNum, pageCnt;
ULONG addr;
USHORT badx, bady, tmp;
USHORT i;
USHORT offsetx, offsety;
//UI_SensorPowerOnOff(1);//hx@test
startBlock = 0;
blockNum = 1;
pageNum = 14;
pageCnt = 2;
offsetx = 45;
offsety = 7;
//patch5.0@richie@sdram mapping begin
for(i=startBlock;i<(blockNum + startBlock);i++)
{
addr = (K_SDRAM_PreviewBufAddrB + K_SDRAM_PreviewBufSizeB) + (ULONG)(i-startBlock)*(G_Card_BlockSize/2);
NANDF_AccessReserveBlock(K_NANDF_Reserve_FlashToDram, i, pageNum, pageCnt,addr );
}
L2_SetSRAMDMA(0x0C00);
L2_SetDRAMDMA(K_SDRAM_PreviewBufAddrB + K_SDRAM_PreviewBufSizeB);
L2_DoDMA(0,1,1024,0,0);
//patch5.0@richie@sdram mapping end
badx = bady = 0;
L2_SetCDSPBadPixelMode(2);
for(i=0;i<256;i++)
{
badx = XBYTE[0x1c00+i*4];
tmp = (USHORT)(XBYTE[0x1c00+i*4+1] << 8);
badx = tmp + badx;
bady = XBYTE[0x1c00+i*4+2];
tmp = (USHORT)(XBYTE[0x1c00+i*4+3] << 8);
bady = tmp + bady;
badx += offsetx;
bady += offsety;
L2_WriteCDSPBadPixel((UCHAR)i, badx, bady);
}
L2_SetCDSPBadPixelMode(1);
#endif
//patch4.5@yichang@badpixel end
#if Audio
#if EmbCodec
L2_EnableAudStream(0x02, 0x00);
#endif
#if AC97
#endif
#endif
printf("G_usPostJpegWidth = %d,G_usPostJpegHeight = %d\n",G_usPostJpegWidth,G_usPostJpegHeight);
printf("G_MHSize = %d,G_MVSize = %d\n",G_MHSize,G_MVSize);
XBYTE[0x21a6] = 1; // enable color brightness/contrast boost
//patch4.5@richie@hue
XBYTE[0x21ac] |= 0x01; // enable color saturation/hue boost
L2_ReadRevID(&revid);
//if (revid < 2) //Revision A/B did NOT support JPEG vertical scaling
// postJpegHeight = G_MVSize - 13;
L2_SetCamMode(0);
//patch4.3@richie@ra0603
L2_SetFrontImgOffsetm((K_PCCamera_Adjust_Width >> 2) << 1, (K_PCCamera_Adjust_Height >> 2) << 1);
//patch4.3@richie@ra0603
L2_SetFrontImgSizem((900 - K_PCCamera_Adjust_Width), (720 - K_PCCamera_Adjust_Height));
L2_SetCMOSPreview();
//Joe@2003.3.21 9:31 mask begin
//L2_TurnOnOffDisplay(0);
//Joe@2003.3.21 9:31 mask end
L2_SetDisplayMode(0, 0);
//version4.0 richie@ps0503 begin
//patch4.3@richie@ra0603
//patch5.0@richie@sdram mapping begin
//L2_SetCDSPScale(G_MHSize - K_PCCamera_Adjust_Width, G_usPostJpegWidth + 16);
L2_SetCDSPScale(900 - K_PCCamera_Adjust_Width, G_usPostJpegWidth);
//patch5.0@richie@sdram mapping end
L2_SetAFBAddr(K_SDRAM_PreviewBufAddrA);
L2_SetRFBAddr(K_SDRAM_PreviewBufAddrA);
//patch4.3@richie@ra0603
L2_SetAFBSize(G_usPostJpegWidth, (720 - K_PCCamera_Adjust_Height) - 13);
L2_SetRFBSize(G_usPostJpegWidth, (720 - K_PCCamera_Adjust_Height) - 13);
L2_SetACDSPWidth(G_usPostJpegWidth);
L2_SetRCDSPWidth(G_usPostJpegWidth);
//patch4.3@richie@ra0603
L2_SetJPEGVscale((720 - K_PCCamera_Adjust_Height) - 13, G_usPostJpegHeight);
//version4.0 richie@ps0503 end
//patch4.4.1@richie@noncompress begin
if (G_ucNonCompFlag == 0)
{
L2_SetImageType(5);
}
//patch4.4.1@richie@noncompress end
L1_InitSPCA533(4); //Call platform-independent L2 initialization
//DbgPrint("L2_TurnOnOffDisplay13=%bu\n",13);
// L2_SetGPIOBit(15,0); //hx@2003.4.28 for mito turn off lcd//wendy
// L2_SetGPIOBit(7,0); //hx@2003.4.28 for mito turn off lcd//wendy
}
//-----------------------------------------------------------------------------
//L1_InitVideoClip
//-----------------------------------------------------------------------------
//patch3.2@cytsai@0328
void L1_InitVideoClip(void) USING_0
{
USHORT i;
ULONG tmp0;
//UCHAR error;
//PRINT_L1(" L1_InitVideoClip: Enter.\n");
//version4.0@yichang@0513
//richie@ae0226 //cytsai@0328
XBYTE[0x21a6] = 0; // disable color brightness/contrast boost
//patch4.5@richie@hue
XBYTE[0x21ac] &= 0xFE; // disable color saturation boost
L2_InitSDRAM(3);
for(i=0;i<0x0200;i++) XBYTE[0x1C00+i] = AVIHeader[i];
//patch5.0@richie@avi size begin
XBYTE[0x1C40] = (UCHAR)(G_usVideoClip_Width); XBYTE[0x1C41] = (UCHAR)(G_usVideoClip_Width>>8);
XBYTE[0x1C44] = (UCHAR)(G_usVideoClip_Height); XBYTE[0x1C45] = (UCHAR)(G_usVideoClip_Height>>8);
XBYTE[0x1CA0] = (UCHAR)(G_usVideoClip_Width); XBYTE[0x1CA1] = (UCHAR)(G_usVideoClip_Width>>8);
XBYTE[0x1CA2] = (UCHAR)(G_usVideoClip_Height); XBYTE[0x1CA3] = (UCHAR)(G_usVideoClip_Height>>8);
XBYTE[0x1CB0] = (UCHAR)(G_usVideoClip_Width); XBYTE[0x1CB1] = (UCHAR)(G_usVideoClip_Width>>8);
XBYTE[0x1CB4] = (UCHAR)(G_usVideoClip_Height); XBYTE[0x1CB5] = (UCHAR)(G_usVideoClip_Height>>8);
tmp0 = (ULONG)G_usVideoClip_Width*G_usVideoClip_Height*3;
//patch5.0@richie@avi size end
XBYTE[0x1CC0] = (UCHAR)(tmp0); XBYTE[0x1CC1] = (UCHAR)(tmp0>>8);
XBYTE[0x1CC2] = (UCHAR)(tmp0>>16); XBYTE[0x1CC3] = (UCHAR)(tmp0>>24);
if(G_FrameRate == 10 || G_FrameRate == 20)
{
XBYTE[0x1C20] = 0xA0; XBYTE[0x1C21] = 0x86;
XBYTE[0x1C22] = 0x01; XBYTE[0x1C23] = 0x00;
XBYTE[0x1C80] = 0xA0; XBYTE[0x1C81] = 0x86;
XBYTE[0x1C82] = 0x01; XBYTE[0x1C83] = 0x00;
}
else if(G_FrameRate == 15 || G_FrameRate == 30)
{
XBYTE[0x1C20] = 0x6B; XBYTE[0x1C21] = 0x04;
XBYTE[0x1C22] = 0x01; XBYTE[0x1C23] = 0x00;
XBYTE[0x1C80] = 0x6B; XBYTE[0x1C81] = 0x04;
XBYTE[0x1C82] = 0x01; XBYTE[0x1C83] = 0x00;
}
L2_SetSRAMDMA(0x0C00);
//patch5.0@richie@sdram mapping begin
L2_SetDRAMDMA(K_SDRAM_AviCapHeaderBufAddr);
L2_DoDMA(1,0,0x0200,0,0);
for(i=0;i<0x0104;i++) XBYTE[0x1C00+i] = VideoHeader[i];
//patch5.0@richie@avi size begin
XBYTE[0x1CE8] = (UCHAR)(G_usVideoClip_Height>>8); XBYTE[0x1CE9] = (UCHAR)(G_usVideoClip_Height);
XBYTE[0x1CEA] = (UCHAR)(G_usVideoClip_Width>>8); XBYTE[0x1CEB] = (UCHAR)(G_usVideoClip_Width);
//patch5.0@richie@avi size end
L2_SetSRAMDMA(0x0C00); // fill A video clip buffer
L2_SetDRAMDMA(K_SDRAM_AviCapVLCBufAddrA);
L2_DoDMA(1,0,0x0104,0,0);
L2_SetSRAMDMA(0x0C00); // fill B video clip buffer
L2_SetDRAMDMA(K_SDRAM_AviCapVLCBufAddrB);
L2_DoDMA(1,0,0x0104,0,0);
//patch5.0@richie@sdram mapping end
//patch4.5@cytsai@AVI record begin
/*
// Video chunk 0x19E0 ~ 0x19EF
XBYTE[0x19E0] = 0x30; XBYTE[0x19E1] = 0x30;
XBYTE[0x19E2] = 0x64; XBYTE[0x19E3] = 0x63;
XBYTE[0x19E4] = 0x10; XBYTE[0x19E5] = 0x00;
XBYTE[0x19E6] = 0x00; XBYTE[0x19E7] = 0x00;
// Audio chunk 0x19D0 ~ 0x19DF
XBYTE[0x19D0] = 0x30; XBYTE[0x19D1] = 0x31;
XBYTE[0x19D2] = 0x77; XBYTE[0x19D3] = 0x62;
XBYTE[0x19D4] = 0x00; XBYTE[0x19D5] = 0x00;
XBYTE[0x19D6] = 0x00; XBYTE[0x19D7] = 0x00;
XBYTE[0x19DC] = 0x00; XBYTE[0x19DD] = 0x02;
XBYTE[0x19DE] = 0x00; XBYTE[0x19DF] = 0x00;
*/
//patch4.5@cytsai@AVI record end
//PRINT_L1(" L1_InitVideoClip: Exit.\n");
}
//-----------------------------------------------------------------------------
//L1_InitPowerOn
//-----------------------------------------------------------------------------
void L1_InitPowerOn(void) USING_0
{
//UCHAR error;
USHORT i;
UCHAR tmp;
//patch4.3@yichang@0611 for version B/C chip co-exist
tmp = MemStretch;
MemStretch = 0x01;
//PRINT_L1(" L1_InitPowerOn: Enter.\n");
//power control
//Joe@2003.2.27 15:01 mask begin
//XBYTE[0x2039] |= 0x80; //gpio14
//XBYTE[0x2031] |= 0x80; //gpio14
//Joe@2003.2.27 15:01 mask end
//Joe@2003.2.19 19:00 mask for don't on lcd power begin
//XBYTE[0x2032] |= 0x01; //gpio16
//Joe@2003.2.19 19:00 mask for don't on lcd power end
//Joe@2003.2.27 15:01 mask begin
//XBYTE[0x2039] |= 0x80; //cytsai@0201
//XBYTE[0x203A] |= 0x01; //gpio16
//Joe@2003.2.27 15:02 mask end
XBYTE[0x201C] = 0x00;
//Joe@2003.2.19 19:05 mask for this pin is Sensor reset begin
//Power On 15V
//XBYTE[0x2038] |= 0x80;
//XBYTE[0x2030] |= 0x80;
//Joe@2003.2.19 19:05 mask for this pin is Sensor reset end
//richie@0402
for (i = 0;i < 35535;i++)
;//delay
//TV hue and saturation adjustment
XBYTE[0X2D22]=0X40;
XBYTE[0X2D23]=0X02;
//patch4.5@ada@improve power to shot performance begin
//Set the address indices
//L2_SetDisplayType(G_DisplayType);
//L2_SetACDSPWidth(G_Hsize);
//L2_SetRCDSPWidth(G_Hsize);
//L2_SetBCDSPWidth(G_Hsize);
//L2_SetAFBSize(G_Hsize,G_Vsize);
//L2_SetBFBSize(G_Hsize,G_Vsize);
//L2_SetAFBAddr(K_SDRAM_FrameBufAAddr);
//L2_SetRFBAddr(K_SDRAM_FrameBufAAddr);
//L2_SetBFBAddr(K_SDRAM_FrameBufBAddr);
//L2_SetAVLCAddr(K_SDRAM_VideoVlcBufAAddr);
//L2_SetBVLCAddr(K_SDRAM_VideoVlcBufBAddr);
//patch4.5@ada@improve power to shot performance end
L2_SetFOSDAddr(K_SDRAM_CharFontBufAddr);
//patch4.5@ada@improve power to shot performance begin
//L2_SetDCTAddr(K_SDRAM_DcTermBufAddr);
//L2_WriteQTable(1, G_Image_QTableIndex, 0); //K_Q85
//Color Correction Matrix (add by Max according to CYWu's params)
//L2_SetColorC(0X04A,0X1FD,0X1F0, //A11,A12,A13
// 0X000,0X03B,0X1F8, //A21,A22,A23
// 0X000,0X1E0,0X04F); //A31,A32,A33
//Inital WB setting (Add by Max)
//L2_SetWB( 0X03, //ROffset
// 0X00, //GrOffset
// 0X02, //BOffset
// 0X00, //GbOffset
// 0X04C, //RGain
// 0X040, //GrGain
// 0X054, //BGain
// 0X040); //GbGain
//patch4.5@ada@improve power to shot performance end
L1_InitSPCA533(0); //Call platform-independent L2 initialization
//Joe@2003.2.27 15:22 modify begin
/*
// Setting the Real Time Clock
L2_WriteRTC(&G_DATEINFO);
*/
/*//wendy@2004/9/8
L3_ReadRTCData(0x20, &tmp);
if (tmp != 0x55)
{
L2_WriteRTC(&G_DATEINFO);
L3_WriteRTCData(0x20, 0x55);
}
*/
//Joe@2003.2.27 15:22 modify end
//patch4.3@yichang@0611 for version B/C chip co-exist
MemStretch = tmp;
// Load Bad Pixel Coordinates
//L1_UpLoadBadPxlCoor((USHORT)(&Badcoor[0]));
//yichang@patch4.3@0611 move to other place
//Load 2 banks of font-based OSD data
//FOSDtoDRAM(K_FOSD_Start_Bank, K_FOSD_Total_Bank, K_SDRAM_CharFontBufAddr);
//Load 3 banks of graphic-based OSD data
//GOSDtoDRAM(K_GRAFFONT_Width, K_GRAFFONT_Height, K_GOSD_Start_Bank, K_GOSD_Total_Bank, K_SDRAM_GrafFontBufAddr);
//ada@0207
/* //CFA initialization
#ifdef CFAIDE
L2_FlashMode(3,1,1);
L2_CFInit(1,0x07,0x00);
L2_CFReset(1);
#endif
#ifdef CFAMEM
L2_FlashMode(4,1,1);
L2_CFInit(0,0x07,0x00);
L2_CFReset(0);
#endif
#ifdef SD
if(L1_SDIdentification(512)!=0) error =1;
if(L1_SDCheckState()!=0) error =1;
if(L1_SDSetBusMode(1)!=0) error =1;
if(L1_SDEraseData(0 , 0x4000000)!=0) error =1;
#endif
*/
//PRINT_L1(" L1_InitPowerOn: Exit.\n");
}
//-----------------------------------------------------------------------------
//L1_InitPlayback
//-----------------------------------------------------------------------------
// Playback mode related settings those are not handled by L2_InitXXX
// display device TV / STNLCD
// JPEG image size : 1152x864
// Decompression to : 1152x864
// Scale down to : 240x160 (G_DSPHsize x G_DSPVsize)
// Display buffer index : B fram buffer index
void L1_InitPlayback(void) USING_0
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -