コード例 #1
0
ファイル: disp_lcd.c プロジェクト: mantrid/linux-allwinner
__s32 Disp_lcdc_event_proc(void *parg)
#endif
{
    __u32  lcdc_flags;
    __u32 sel = (__u32)parg;

    lcdc_flags=LCDC_query_int(sel);

    if(lcdc_flags & LCDC_VBI_LCD)
    {
        LCDC_clear_int(sel,LCDC_VBI_LCD);
        LCD_vbi_event_proc(sel, 0);
    }
    if(lcdc_flags & LCDC_VBI_HD)
    {
        LCDC_clear_int(sel,LCDC_VBI_HD);
        LCD_vbi_event_proc(sel, 1);
    }
    if(lcdc_flags & LCDC_LTI_LCD_FLAG)
    {
        LCDC_clear_int(sel,LCDC_LTI_LCD_FLAG);
        LCD_line_event_proc(sel, 0);
    }
    if(lcdc_flags & LCDC_LTI_HD_FLAG)
    {
        LCDC_clear_int(sel,LCDC_LTI_HD_FLAG);
        LCD_line_event_proc(sel, 1);
    }

    return OSAL_IRQ_RETURN;
}
コード例 #2
0
ファイル: disp_lcd.c プロジェクト: mantrid/linux-allwinner
__s32 Disp_lcdc_event_proc(int irq, void *parg)
#endif
{
    __u8  lcdc_flags;
    __u32 sel = (__u32)parg;

    lcdc_flags=LCDC_query_int(sel);

    if(lcdc_flags & VBI_LCD)
    {
        LCDC_clear_int(sel,VBI_LCD);
        LCD_vbi_event_proc(sel);
    }
    if(lcdc_flags & VBI_HD)
    {
        LCDC_clear_int(sel,VBI_HD);
        LCD_vbi_event_proc(sel);
    }
    if(lcdc_flags & LINE_TRG_LCD)
    {
        LCDC_clear_int(sel,LINE_TRG_LCD);
        LCD_line_event_proc(sel);
    }
    if(lcdc_flags & LINE_TRG_HD)
    {
        LCDC_clear_int(sel,LINE_TRG_HD);
        LCD_line_event_proc(sel);
    }

    return OSAL_IRQ_RETURN;

}
コード例 #3
0
ファイル: disp_scaler.c プロジェクト: Aorjoa/bootloader
__s32 scaler_event_proc(void *parg)
#endif
{
	__u8 fe_intflags = 0, be_intflags = 0;
	__u32 scaler_index = (__u32)parg;

	if(gdisp.scaler[scaler_index].status & SCALER_USED) {
		fe_intflags = DE_SCAL_QueryINT(scaler_index);
		DE_SCAL_ClearINT(scaler_index,fe_intflags);
	}
	be_intflags = DE_BE_QueryINT(scaler_index);
	DE_BE_ClearINT(scaler_index,be_intflags);

	//DE_INF("scaler %d interrupt, scal_int_status:0x%x!\n", scaler_index, fe_intflags);

	if(be_intflags & DE_IMG_REG_LOAD_FINISH) {
		LCD_line_event_proc(scaler_index);
	}

	if((gdisp.scaler[scaler_index].status & SCALER_USED) && (fe_intflags & DE_WB_END_IE)) {
		DE_SCAL_DisableINT(scaler_index,DE_FE_INTEN_ALL);
#ifdef __LINUX_OSAL__
		if(gdisp.scaler[scaler_index].b_scaler_finished == 1 && (&gdisp.scaler[scaler_index].scaler_queue != NULL)) {
			gdisp.scaler[scaler_index].b_scaler_finished = 2;
			wake_up_interruptible(&(gdisp.scaler[scaler_index].scaler_queue));
		}	else {
			__wrn("not scaler %d begin in DRV_scaler_finish\n", scaler_index);
		}
#endif
	}

	return OSAL_IRQ_RETURN;
}