Beispiel #1
0
static s32 disp_vdevice_event_proc(void *parg)
#endif
{
	u32 disp = (u32)parg;

	struct disp_device *vdevice = (struct disp_device*)parg;
	struct disp_manager *mgr = NULL;

	if(NULL == vdevice)
		return DISP_IRQ_RETURN;

	disp = vdevice->disp;

	if(disp_al_device_query_irq(disp)) {
		int cur_line = disp_al_device_get_cur_line(disp);
		int start_delay = disp_al_device_get_start_delay(disp);

		mgr = vdevice->manager;
		if(NULL == mgr)
			return DISP_IRQ_RETURN;

		if(cur_line <= (start_delay-4)) {
			sync_event_proc(mgr->disp, false);
		} else {
			sync_event_proc(mgr->disp, false);
		}
	}

	return DISP_IRQ_RETURN;
}
Beispiel #2
0
static s32 disp_hdmi_event_proc(void *parg)
#endif
{
	u32 disp = (u32)parg;
	struct disp_device *hdmi = disp_get_hdmi(disp);
	struct disp_manager *mgr = NULL;

	if(disp_al_device_query_irq(disp)) {
		int cur_line = disp_al_device_get_cur_line(disp);
		int start_delay = disp_al_device_get_start_delay(disp);

		if(NULL == hdmi)
			return DISP_IRQ_RETURN;
		mgr = hdmi->manager;
		if(NULL == mgr)
			return DISP_IRQ_RETURN;

		if(cur_line <= (start_delay-4)) {
			sync_event_proc(mgr->disp);
		} else {
			/* skip a frame */
		}
	}

	return DISP_IRQ_RETURN;
}
Beispiel #3
0
static s32 disp_tv_event_proc(void *parg)
#endif
{
	u32 disp = (u32)parg;
	struct disp_device *ptv = disp_get_tv(disp);
	struct disp_manager *mgr = NULL;

	mgr = ptv->manager;
	if(disp_al_device_query_irq(disp)) {		//modify
		int cur_line = disp_al_device_get_cur_line(disp);
		int start_delay = disp_al_device_get_start_delay(disp);
		if((NULL == ptv) || (NULL == mgr))
			return DISP_IRQ_RETURN;

		if(cur_line <= (start_delay-4)) {
			sync_event_proc(mgr->disp);
		} else {
			//skip a frame
		}
	}

	return DISP_IRQ_RETURN;
}