?? s3c6410_display_con.c
字號:
{
g_pDispConReg->W1KEYCON0 = KEYBLEN_DISABLE | KEYEN_F_ENABLE | uiKeyDir | COMPKEY(uiComparekey);
g_pDispConReg->W1KEYCON1 = COLVAL(uiColorKey);
}
else
{
g_pDispConReg->W1KEYCON0 = KEYBLEN_DISABLE | KEYEN_F_DISABLE;
}
break;
case DISP_WIN2:
if (bOnOff)
{
g_pDispConReg->W2KEYCON0 = KEYBLEN_DISABLE | KEYEN_F_ENABLE | uiKeyDir | COMPKEY(uiComparekey);
g_pDispConReg->W2KEYCON1 = COLVAL(uiColorKey);
}
else
{
g_pDispConReg->W2KEYCON0 = KEYBLEN_DISABLE | KEYEN_F_DISABLE;
}
break;
case DISP_WIN3:
if (bOnOff)
{
g_pDispConReg->W3KEYCON0 = KEYBLEN_DISABLE | KEYEN_F_ENABLE | uiKeyDir | COMPKEY(uiComparekey);
g_pDispConReg->W3KEYCON1 = COLVAL(uiColorKey);
}
else
{
g_pDispConReg->W3KEYCON0 = KEYBLEN_DISABLE | KEYEN_F_DISABLE;
}
break;
case DISP_WIN4:
if (bOnOff)
{
g_pDispConReg->W4KEYCON0 = KEYBLEN_DISABLE | KEYEN_F_ENABLE | uiKeyDir | COMPKEY(uiComparekey);
g_pDispConReg->W4KEYCON1 = COLVAL(uiColorKey);
}
else
{
g_pDispConReg->W4KEYCON0 = KEYBLEN_DISABLE | KEYEN_F_DISABLE;
}
break;
default:
DISP_ERR((_T("[DISP:ERR] Disp_set_color_key() : Unknown Window Number [%d]\n\r"), Win));
error = DISP_ERROR_ILLEGAL_PARAMETER;
break;
}
DISP_MSG((_T("[DISP]--Disp_set_color_key() : %d\n\r"), error));
return error;
}
DISP_ERROR Disp_set_alpha_blending(DISP_WINDOW Win, DISP_ALPHA_BLEND_METHOD Method, unsigned int uiAlphaSet0, unsigned int uiAlphaSet1)
{
DISP_ERROR error = DISP_SUCCESS;
unsigned int uiMethod;
DISP_MSG((_T("[DISP]++Disp_set_alpha_blending(%d, %d, 0x%08x, 0x%08x)\n\r"), Win, Method, uiAlphaSet0, uiAlphaSet1));
if (Method == DISP_ALPHA_PER_PLANE)
{
uiMethod = BLEND_PER_PLANE;
}
else
{
uiMethod = BLEND_PER_PIXEL;
}
switch(Win)
{
case DISP_WIN1:
g_pDispConReg->WINCON1 = (g_pDispConReg->WINCON1 & ~(BLEND_PER_PIXEL|ALPHASEL_ALPHA1)) | uiMethod;
g_pDispConReg->VIDOSD1C = ALPHA0_R(uiAlphaSet0) | ALPHA0_G(uiAlphaSet0) | ALPHA0_B(uiAlphaSet0)
| ALPHA1_R(uiAlphaSet1) | ALPHA1_G(uiAlphaSet1) | ALPHA1_B(uiAlphaSet1);
break;
case DISP_WIN2:
g_pDispConReg->WINCON2 = (g_pDispConReg->WINCON2 & ~(BLEND_PER_PIXEL|ALPHASEL_ALPHA1)) | uiMethod;
g_pDispConReg->VIDOSD2C = ALPHA0_R(uiAlphaSet0) | ALPHA0_G(uiAlphaSet0) | ALPHA0_B(uiAlphaSet0)
| ALPHA1_R(uiAlphaSet1) | ALPHA1_G(uiAlphaSet1) | ALPHA1_B(uiAlphaSet1);
break;
case DISP_WIN3:
g_pDispConReg->WINCON3 = (g_pDispConReg->WINCON3 & ~(BLEND_PER_PIXEL|ALPHASEL_ALPHA1)) | uiMethod;
g_pDispConReg->VIDOSD3C = ALPHA0_R(uiAlphaSet0) | ALPHA0_G(uiAlphaSet0) | ALPHA0_B(uiAlphaSet0)
| ALPHA1_R(uiAlphaSet1) | ALPHA1_G(uiAlphaSet1) | ALPHA1_B(uiAlphaSet1);
break;
case DISP_WIN4:
g_pDispConReg->WINCON4 = (g_pDispConReg->WINCON4 & ~(BLEND_PER_PIXEL|ALPHASEL_ALPHA1)) | uiMethod;
g_pDispConReg->VIDOSD4C = ALPHA0_R(uiAlphaSet0) | ALPHA0_G(uiAlphaSet0) | ALPHA0_B(uiAlphaSet0)
| ALPHA1_R(uiAlphaSet1) | ALPHA1_G(uiAlphaSet1) | ALPHA1_B(uiAlphaSet1);
break;
default:
DISP_ERR((_T("[DISP:ERR] Disp_set_alpha_blending() : Unknown Window Number [%d]\n\r"), Win));
error = DISP_ERROR_ILLEGAL_PARAMETER;
break;
}
DISP_MSG((_T("[DISP]--Disp_set_alpha_blending() : %d\n\r"), error));
return error;
}
DISP_ERROR Disp_set_frame_interrupt(DISP_FRAME_INTERRUPT FrameInt)
{
DISP_ERROR error = DISP_SUCCESS;
DISP_MSG((_T("[DISP]++Disp_set_frame_interrupt(%d)\n\r"), FrameInt));
g_pDispConReg->VIDINTCON0 &= ~FRAMEINT_MASK; // Clear Al Frame Interrupt Bit
switch(FrameInt)
{
case DISP_FRMINT_BACKPORCH:
g_pDispConReg->VIDINTCON0 |= FRAMESEL0_BACK;
break;
case DISP_FRMINT_VSYNC:
g_pDispConReg->VIDINTCON0 |= FRAMESEL0_VSYNC;
break;
case DISP_FRMINT_ACTIVE:
g_pDispConReg->VIDINTCON0 |= FRAMESEL0_ACTIVE;
break;
case DISP_FRMINT_FRONTPORCH:
g_pDispConReg->VIDINTCON0 |= FRAMESEL0_FRONT;
break;
default:
DISP_ERR((_T("[DISP:ERR] Disp_set_frame_interrupt() : Unknown Frame Interrupt [%d]\n\r"), FrameInt));
error = DISP_ERROR_ILLEGAL_PARAMETER;
break;
}
DISP_MSG((_T("[DISP]--Disp_set_frame_interrupt() : %d\n\r"), error));
return error;
}
DISP_ERROR Disp_enable_frame_interrupt(void)
{
DISP_ERROR error = DISP_SUCCESS;
DISP_MSG((_T("[DISP]++Disp_enable_frame_interrupt()\n\r")));
g_pDispConReg->VIDINTCON0 |= (INTFRMEN_ENABLE | INTEN_ENABLE);
DISP_MSG((_T("[DISP]--Disp_enable_frame_interrupt() : %d\n\r"), error));
return error;
}
DISP_ERROR Disp_disable_frame_interrupt(void)
{
DISP_ERROR error = DISP_SUCCESS;
DISP_MSG((_T("[DISP]++Disp_disable_frame_interrupt()\n\r")));
if (g_pDispConReg->VIDINTCON0 & INTFIFOEN_ENABLE)
{
// If FIFO Interrupt is enabled, Clear only Frame Interrupt Enable Bit
g_pDispConReg->VIDINTCON0 &= ~INTFRMEN_ENABLE;
}
else
{
g_pDispConReg->VIDINTCON0 &= ~(INTFRMEN_ENABLE | INTEN_ENABLE);
}
DISP_MSG((_T("[DISP]--Disp_disable_frame_interrupt() : %d\n\r"), error));
return error;
}
DISP_ERROR Disp_set_fifo_interrupt(DISP_WINDOW Win, DISP_FIFO_INTERRUPT_LEVEL Level)
{
DISP_ERROR error = DISP_SUCCESS;
DISP_MSG((_T("[DISP]++Disp_set_fifo_interrupt(%d, %d)\n\r"), Win, Level));
g_pDispConReg->VIDINTCON0 &= ~FIFOINT_MASK; // Clear Al FIFO Interrupt Bit
switch(Win)
{
case DISP_WIN0:
g_pDispConReg->VIDINTCON0 |= FIFOSEL_WIN0;
break;
case DISP_WIN1:
g_pDispConReg->VIDINTCON0 |= FIFOSEL_WIN1;
break;
case DISP_WIN2:
g_pDispConReg->VIDINTCON0 |= FIFOSEL_WIN2;
break;
case DISP_WIN3:
g_pDispConReg->VIDINTCON0 |= FIFOSEL_WIN3;
break;
case DISP_WIN4:
g_pDispConReg->VIDINTCON0 |= FIFOSEL_WIN4;
break;
default:
DISP_ERR((_T("[DISP:ERR] Disp_set_fifo_interrupt() : Unknown Window Number [%d]\n\r"), Win));
error = DISP_ERROR_ILLEGAL_PARAMETER;
break;
}
switch(Level)
{
case DISP_FIFO_0_25:
g_pDispConReg->VIDINTCON0 |= FIFOLEVEL_25;
break;
case DISP_FIFO_0_50:
g_pDispConReg->VIDINTCON0 |= FIFOLEVEL_50;
break;
case DISP_FIFO_0_75:
g_pDispConReg->VIDINTCON0 |= FIFOLEVEL_75;
break;
case DISP_FIFO_EMPTY:
g_pDispConReg->VIDINTCON0 |= FIFOLEVEL_EMPTY;
break;
case DISP_FIFO_FULL:
g_pDispConReg->VIDINTCON0 |= FIFOLEVEL_FULL;
break;
default:
DISP_ERR((_T("[DISP:ERR] Disp_set_fifo_interrupt() : Unknown FIFO Level [%d]\n\r"), Level));
error = DISP_ERROR_ILLEGAL_PARAMETER;
break;
}
DISP_MSG((_T("[DISP]--Disp_set_fifo_interrupt() : %d\n\r"), error));
return error;
}
DISP_ERROR Disp_enable_fifo_interrupt(void)
{
DISP_ERROR error = DISP_SUCCESS;
DISP_MSG((_T("[DISP]++Disp_enable_fifo_interrupt()\n\r")));
g_pDispConReg->VIDINTCON0 |= (INTFIFOEN_ENABLE | INTEN_ENABLE);
DISP_MSG((_T("[DISP]--Disp_enable_fifo_interrupt() : %d\n\r"), error));
return error;
}
DISP_ERROR Disp_disable_fifo_interrupt(void)
{
DISP_ERROR error = DISP_SUCCESS;
DISP_MSG((_T("[DISP]++Disp_disable_fifo_interrupt()\n\r")));
if (g_pDispConReg->VIDINTCON0 & INTFRMEN_ENABLE)
{
// If Frame Interrupt is enabled, Clear only FIFO Interrupt Enable Bit
g_pDispConReg->VIDINTCON0 &= ~INTFIFOEN_ENABLE;
}
else
{
g_pDispConReg->VIDINTCON0 &= ~(INTFIFOEN_ENABLE | INTEN_ENABLE);
}
DISP_MSG((_T("[DISP]--Disp_disable_fifo_interrupt() : %d\n\r"), error));
return error;
}
DISP_INTERRUPT Disp_clear_interrupt_pending(void)
{
DISP_INTERRUPT Interrupt = DISP_INT_NONE;
// Check Interrupt Source and Clear Pending
if (g_pDispConReg->VIDINTCON1 & INTFIFO_PEND)
{
g_pDispConReg->VIDINTCON1 = INTFIFO_PEND;
Interrupt = DISP_INT_FIFO;
}
else if (g_pDispConReg->VIDINTCON1 & INTFRM_PEND)
{
g_pDispConReg->VIDINTCON1 = INTFRM_PEND;
Interrupt = DISP_INT_FRAME;
}
else if (g_pDispConReg->VIDINTCON1 & INTSYSIF_PEND)
{
g_pDispConReg->VIDINTCON1 = INTSYSIF_PEND;
Interrupt = DISP_INT_I80;
}
return Interrupt;
}
unsigned int Disp_get_line_count(void)
{
unsigned int uiLineCnt;
DISP_MSG((_T("[DISP]++Disp_get_line_count()\n\r")));
uiLineCnt = ((g_pDispConReg->VIDCON1)>>16)&0x7ff;
DISP_MSG((_T("[DISP]--Disp_get_line_count() : Line Count = %d\n\r"), uiLineCnt));
return uiLineCnt;
}
DISP_VERTICAL_STATUS Disp_get_vertical_status(void)
{
unsigned int status;
DISP_MSG((_T("[DISP]++Disp_get_vertical_status()\n\r")));
status = ((g_pDispConReg->VIDCON1)>>13)&0x3;
DISP_MSG((_T("[DISP]--Disp_get_vertical_status() : Status = %d\n\r"), status));
return (DISP_VERTICAL_STATUS)status;
}
DISP_WINDOW Disp_get_win_num_from_win_mode(DISP_WINDOW_MODE Mode)
{
DISP_WINDOW win;
switch(Mode)
{
case DISP_WIN0_DMA:
case DISP_WIN0_POST_RGB:
case DISP_WIN0_POST_YUV:
win = DISP_WIN0;
break;
case DISP_WIN1_DMA:
case DISP_WIN1_TVSCALER_RGB:
case DISP_WIN1_TVSCALER_YUV:
case DISP_WIN1_CIPREVIEW_RGB:
case DISP_WIN1_CIPREVIEW_YUV:
win = DISP_WIN1;
break;
case DISP_WIN2_DMA:
case DISP_WIN2_TVSCALER_RGB:
case DISP_WIN2_TVSCALER_YUV:
case DISP_WIN2_CICODEC_RGB:
case DISP_WIN2_CICODEC_YUV:
win = DISP_WIN2;
break;
case DISP_WIN3_DMA:
win = DISP_WIN3;
break;
case DISP_WIN4_DMA:
win = DISP_WIN4;
break;
default:
win = -1;
break;
}
return win;
}
static DISP_ERROR Disp_initialize_port_RGBIF(DISP_RGBIFOUT_MODE RGBOutMode)
{
DISP_ERROR error = DISP_SUCCESS;
DISP_MSG((_T("[DISP]++Disp_initialize_port_RGBIF(%d)\n\r"), RGBOutMode));
// This code enable or disable VideoSignalLine mapped with GPIO
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -