📄 osdupload.c
字号:
/*++
Copyright (c) 2001 Sunplus Technology Co., Ltd.
Module Name:
osdupload.c
Abstract:
Module related to OSD data upload functions
Environment:
Keil C51 Compiler
Revision History:
01/07/2002 YiChang created
--*/
//=============================================================================
//Header file
//=============================================================================
#include "general.h"
#include "main.h"
#include "quantdef.h"
#include "initio.h"
#include "uiflow.h"
//=============================================================================
//Symbol
//=============================================================================
//-----------------------------------------------------------------------------
//Constant
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//Variable
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//OSDtoDRAM
//-----------------------------------------------------------------------------
sfr RamPage = 0x9B;
void OSDtoDRAM(ULONG DramAddr, ULONG nbytes, UCHAR bank) USING_0
{
USHORT i;
//patch4.5@ada@improve power to shot performance begin
USHORT j;
//patch4.5@ada@improve power to shot performance end
UCHAR tmp0, tmp1, tmp2;
ULONG offset;
UCHAR cmp = 0;
//DbgPrint("Enter OSDtoDRAM\n");
tmp2 = RamPage;
tmp0 = XBYTE[0x2C00];
XBYTE[0x2c00] = tmp0 | 0x04;
RamPage = bank;
tmp1 = XBYTE[0x2C11];
for(offset = 0;offset <= nbytes;offset += 512)
{
XBYTE[0x2C11] = tmp1;
//patch4.5@ada@improve power to shot performance begin
for (i = 0x1c00, j = (0x8000 + offset); i < (0x1c00 + 512); i++, j++)
{
XBYTE[i] = XBYTE[j];
}
//for(i=0;i<512;i++)
// XBYTE[0x1c00 + i] = XBYTE[0x8000 + offset + i];
//patch4.5@ada@improve power to shot performance end
L2_SetSRAMDMA(0x0c00);
L2_SetDRAMDMA(DramAddr + offset/2);
L2_DoDMA(1, 0, 512, 0, 0);
XBYTE[0x2C11] = XBYTE[0x2C11] & 0x04;
}
XBYTE[0x2c00] = tmp0;
RamPage = tmp2;
//DbgPrint("Finish OSDtoDRAM\n");
}
//-----------------------------------------------------------------------------
//FOSDtoDRAM
//-----------------------------------------------------------------------------
UCHAR FOSDtoDRAM(UCHAR Startbank, UCHAR Bank_num, ULONG DramAddr) USING_0
{
UCHAR i;
for(i=0;i<Bank_num;i++)
OSDtoDRAM(DramAddr + 16384 * i, 32768, Startbank + 1 + i);
return L1K_SUCCESS;
}
//-----------------------------------------------------------------------------
//GOSDtoDRAM
//-----------------------------------------------------------------------------
UCHAR GOSDtoDRAM(USHORT OSDHsize, USHORT OSDVsize,UCHAR Startbank, UCHAR Bank_num, ULONG DramAddr) USING_0
{
UCHAR QIndex, i;
L2_ReadQTable(0, &QIndex, 0);
//patch5.0@richie@sdram mapping begin
//move 32k data to each bank
for(i=0;i<Bank_num;i++)
OSDtoDRAM(K_SDRAM_ImageCaptureBufAddr + 16384 * i, 32768, Startbank + 1 + i);
L2_WriteQTable(0x00, K_Q1, NULL); // parm2=0: Q=1;
L2_DeCompress(K_SDRAM_ImageCaptureBufAddr, OSDHsize, OSDVsize, DramAddr, 0x00, 0x00, 0);
L2_WriteQTable(0x01, QIndex, NULL); // parm2=0: Q=1;
//for(i=0;i<Bank_num;i++)
// OSDtoDRAM(K_SDRAM_FrameBufBAddr + 16384 * i, 32768, Startbank + 1 + i);
//L2_WriteQTable(0x00, K_Q1, NULL); // parm2=0: Q=1;
//L2_DeCompress(K_SDRAM_FrameBufBAddr, OSDHsize, OSDVsize, DramAddr, 0x00, 0x00, 0);
//L2_WriteQTable(0x01, QIndex, NULL); // parm2=0: Q=1;
//patch5.0@richie@sdram mapping end
return L1K_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -