void sync_event_proc(u32 screen_id) { u32 cur_line = 0, start_delay = 0; u32 num_scalers; #if defined(__LINUX_PLAT__) unsigned long flags; #endif if(screen_id < 2) { num_scalers = bsp_disp_feat_get_num_scalers(); cur_line = disp_al_lcd_get_cur_line(screen_id); start_delay = disp_al_lcd_get_start_delay(screen_id); if(cur_line > start_delay-4) { fcount_data.skip_count[screen_id] ++; return ; } } //fps proc fps_data[screen_id].counter++; if(fps_data[screen_id].counter == 100) { fps_data[screen_id].counter = 0; fps_data[screen_id].last_time = fps_data[screen_id].current_time; fps_data[screen_id].current_time = jiffies; } //capture sync event if(bsp_disp_capture_screen_finished(screen_id) == 1) gdisp.init_para.capture_event(screen_id); #if defined(__LINUX_PLAT__) spin_lock_irqsave(&gdisp.screen[screen_id].flag_lock, flags); #endif if(0 == bsp_disp_cfg_get(screen_id)) { gdisp.screen[screen_id].have_cfg_reg = true; #if defined(__LINUX_PLAT__) spin_unlock_irqrestore(&gdisp.screen[screen_id].flag_lock, flags); #endif disp_sync_all(screen_id); } else { #if defined(__LINUX_PLAT__) spin_unlock_irqrestore(&gdisp.screen[screen_id].flag_lock, flags); #endif } return ; }
void sync_event_proc(u32 disp) { //u32 cur_line = 0, start_delay = 0; #if defined(__LINUX_PLAT__) unsigned long flags; #endif /* if(disp < 2) { //FIXME cur_line = disp_al_lcd_get_cur_line(disp); start_delay = disp_al_lcd_get_start_delay(disp); if(cur_line > start_delay-4) { return ; } } */ #if defined(__LINUX_PLAT__) spin_lock_irqsave(&gdisp.screen[disp].flag_lock, flags); #endif if(0 == bsp_disp_cfg_get(disp)) { gdisp.screen[disp].have_cfg_reg = true; #if defined(__LINUX_PLAT__) spin_unlock_irqrestore(&gdisp.screen[disp].flag_lock, flags); #endif disp_sync_all(disp); gdisp.screen[disp].have_cfg_reg = false; if(gdisp.init_para.disp_int_process) gdisp.init_para.disp_int_process(disp); if(gdisp.screen[disp].vsync_event_en && gdisp.init_para.vsync_event) gdisp.init_para.vsync_event(disp); } else { #if defined(__LINUX_PLAT__) spin_unlock_irqrestore(&gdisp.screen[disp].flag_lock, flags); #endif } return ; }
void sync_event_proc(u32 screen_id) { u32 cur_line = 0, start_delay = 0; //u32 num_scalers; #if defined(__LINUX_PLAT__) unsigned long flags; #endif if(screen_id < 2) { //num_scalers = bsp_disp_feat_get_num_scalers(); cur_line = disp_al_lcd_get_cur_line(screen_id); start_delay = disp_al_lcd_get_start_delay(screen_id); if(cur_line > start_delay-4) { return ; } } #if defined(__LINUX_PLAT__) spin_lock_irqsave(&gdisp.screen[screen_id].flag_lock, flags); #endif if(0 == bsp_disp_cfg_get(screen_id)) { gdisp.screen[screen_id].have_cfg_reg = true; #if defined(__LINUX_PLAT__) spin_unlock_irqrestore(&gdisp.screen[screen_id].flag_lock, flags); #endif /* set ready of all mod, todo? */ disp_sync_all(screen_id); } else { #if defined(__LINUX_PLAT__) spin_unlock_irqrestore(&gdisp.screen[screen_id].flag_lock, flags); #endif } return ; }
void sync_event_proc(u32 screen_id) { u32 cur_line = 0, start_delay = 0; #if defined(__LINUX_PLAT__) unsigned long flags; #endif bsp_disp_layer_deinterlace_cfg(screen_id);//de-interlace reg-config #if defined(__LINUX_PLAT__) #ifdef CONFIG_DEVFREQ_DRAM_FREQ_IN_VSYNC if(bsp_disp_get_output_type(screen_id) == DISP_OUTPUT_TYPE_LCD) { struct disp_lcd* lcd = NULL; static disp_panel_para info; lcd = disp_get_lcd(screen_id); if(NULL != lcd) { memset(&info, 0, sizeof(disp_panel_para)); if(lcd->get_panel_info) lcd->get_panel_info(lcd, &info); if(LCD_IF_EDP == info.lcd_if) { gdisp.screen[screen_id].wait_count++; wake_up_interruptible(&gdisp.screen[screen_id].wait); } } } #endif #endif #if defined(CONFIG_ARCH_SUN9IW1P1) if(screen_id < 2) { cur_line = disp_al_lcd_get_cur_line(screen_id); start_delay = disp_al_lcd_get_start_delay(screen_id); if(cur_line > start_delay-4) { fcount_data.skip_count[screen_id] ++; return ; } } #else if(screen_id < 2) { if(disp_al_lcd_check_time(screen_id, 200)) { fcount_data.skip_count[screen_id] ++; return ; } } #endif #if defined(__LINUX_PLAT__) spin_lock_irqsave(&gdisp.screen[screen_id].flag_lock, flags); #endif if(0 == bsp_disp_cfg_get(screen_id)) { gdisp.screen[screen_id].have_cfg_reg = true; #if defined(__LINUX_PLAT__) spin_unlock_irqrestore(&gdisp.screen[screen_id].flag_lock, flags); #endif disp_sync_all(screen_id); } else { #if defined(__LINUX_PLAT__) spin_unlock_irqrestore(&gdisp.screen[screen_id].flag_lock, flags); #endif } if(bsp_disp_get_output_type(screen_id) == DISP_OUTPUT_TYPE_LCD) { struct disp_lcd* m_lcd = NULL; static disp_panel_para m_info; m_lcd = disp_get_lcd(screen_id); if(NULL != m_lcd) { memset(&m_info, 0, sizeof(disp_panel_para)); if(m_lcd->get_panel_info) m_lcd->get_panel_info(m_lcd, &m_info); if(LCD_IF_EDP != m_info.lcd_if) { cur_line = disp_al_lcd_get_cur_line(screen_id); start_delay = disp_al_lcd_get_start_delay(screen_id); if(cur_line >= (start_delay-1)) printk("LCD:%d\n", cur_line); } } } return ; }
static ssize_t disp_cfg_cnt_show(struct device *dev, struct device_attribute *attr, char *buf) { return sprintf(buf, "cfg_cnt=%d\n", bsp_disp_cfg_get(sel)); }