s32 bsp_disp_get_timming(u32 screen_id, disp_video_timing * tt) { //struct disp_hdmi* hdmi; memset(tt, 0, sizeof(disp_video_timing)); if(DISP_OUTPUT_TYPE_LCD == bsp_disp_get_output_type(screen_id)) { struct disp_lcd *lcd; lcd = disp_get_lcd(screen_id); if(!lcd) { DE_WRN("get lcd%d failed\n", screen_id); return DIS_FAIL; } if(lcd->get_timing) return lcd->get_timing(lcd, tt); } #if 0 else if(DISP_OUTPUT_TYPE_HDMI == bsp_disp_get_output_type(screen_id)) { //FIXME? hdmi = disp_get_hdmi(screen_id); if(!hdmi) { DE_WRN("get hdmi%d failed!\n", screen_id); return DIS_FAIL; } } #endif return 0; }
/*********************************************************** * * hdmi interface * ***********************************************************/ s32 bsp_disp_hdmi_enable(u32 screen_id) { struct disp_hdmi* hdmi; struct disp_manager *mgr; hdmi = disp_get_hdmi(screen_id); mgr = disp_get_layer_manager(screen_id); if(!hdmi || !mgr) { DE_WRN("get hdm%dor mgr%d failed!\n", screen_id, screen_id); return DIS_FAIL; } if(mgr->is_enabled && mgr->is_enabled(mgr)) { DE_WRN("manager %d is already enable\n", screen_id); return DIS_FAIL; } if(mgr->enable) mgr->enable(mgr); if(mgr->set_output_type) mgr->set_output_type(mgr, DISP_OUTPUT_TYPE_HDMI); if(hdmi->enable) { return hdmi->enable(hdmi); } return DIS_FAIL; }
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; }
s32 bsp_disp_hdmi_get_hpd_status(u32 screen_id) { struct disp_hdmi *hdmi; hdmi = disp_get_hdmi(screen_id); if (!hdmi) { DE_WRN("get hdmi%d failed!\n", screen_id); return DIS_FAIL; } if (hdmi->hdmi_get_HPD_status) return hdmi->hdmi_get_HPD_status(hdmi); return DIS_FAIL; }
s32 bsp_disp_hdmi_get_edid(u32 screen_id) { struct disp_hdmi *hdmi; hdmi = disp_get_hdmi(screen_id); if(!hdmi) { DE_INF("get hdmi%d failed!\n", screen_id); return DIS_FAIL; } if(hdmi->get_edid) return hdmi->get_edid(hdmi); return 0; }
s32 bsp_disp_hdmi_check_support_mode(u32 screen_id, u8 mode) { struct disp_hdmi *hdmi; hdmi = disp_get_hdmi(screen_id); if(!hdmi) { DE_WRN("get hdmi%d failed!\n", screen_id); return DIS_FAIL; } if(hdmi->check_support_mode) return hdmi->check_support_mode(hdmi, mode); return DIS_FAIL; }
s32 bsp_disp_hdmi_get_mode(u32 screen_id) { struct disp_hdmi *hdmi; hdmi = disp_get_hdmi(screen_id); if(!hdmi) { DE_WRN("get hdmi%d failed!\n", screen_id); return DIS_FAIL; } if(hdmi->get_mode) return hdmi->get_mode(hdmi); return DIS_FAIL; }
s32 bsp_disp_hdmi_get_vendor_id(u32 screen_id, __u8 *id) { struct disp_hdmi *hdmi; hdmi = disp_get_hdmi(screen_id); if(!hdmi) { DE_WRN("get hdmi%d failed!\n", screen_id); return DIS_FAIL; } if(hdmi->get_vendor_id) { __inf("bsp_disp_hdmi_get_vendor_id"); return hdmi->get_vendor_id(hdmi, id); } return DIS_FAIL; }
s32 bsp_disp_hdmi_set_mode(u32 screen_id, disp_tv_mode mode) { struct disp_hdmi *hdmi; hdmi = disp_get_hdmi(screen_id); if(!hdmi) { DE_WRN("get hdmi%d failed!\n", screen_id); return DIS_FAIL; } DE_INF("hdmi %d mode <-- %d\n", screen_id, mode); if(hdmi->set_mode) return hdmi->set_mode(hdmi, mode); return DIS_FAIL; }
s32 bsp_disp_hdmi_resume(u32 screen_id) { struct disp_hdmi* hdmi; hdmi = disp_get_hdmi(screen_id); if(!(bsp_disp_feat_get_supported_output_types(screen_id) & DISP_OUTPUT_TYPE_HDMI)) return 0; if(!hdmi) { DE_WRN("get hdmi%d failed!\n", screen_id); return DIS_FAIL; } if(hdmi->resume) { return hdmi->resume(hdmi); } return DIS_FAIL; }
s32 bsp_disp_set_hdmi_func(u32 screen_id, disp_hdmi_func * func) { struct disp_hdmi* hdmi; s32 ret = -1; hdmi = disp_get_hdmi(screen_id); if(!hdmi) { DE_INF("get hdmi%d failed!\n", screen_id); return DIS_FAIL; } gdisp.hdmi_registered = 1; if(hdmi->set_func) ret = hdmi->set_func(hdmi, func); if(gdisp.init_para.start_process) { DE_INF("gdisp.init_para.start_process\n"); gdisp.init_para.start_process(); } return ret; }
if(DISP_OUTPUT_TYPE_LCD == bsp_disp_get_output_type(screen_id)) { struct disp_lcd *lcd; lcd = disp_get_lcd(screen_id); if(!lcd) { DE_WRN("get lcd%d failed\n", screen_id); return DIS_FAIL; } if(lcd->get_timing) return lcd->get_timing(lcd, tt); } #if 0 struct disp_hdmi* hdmi; else if(DISP_OUTPUT_TYPE_HDMI == bsp_disp_get_output_type(screen_id)) { //todo? hdmi = disp_get_hdmi(screen_id); if(!hdmi) { DE_WRN("get hdmi%d failed!\n", screen_id); return DIS_FAIL; } } #endif return 0; } s32 bsp_disp_get_panel_info(u32 screen_id, disp_panel_para *info) { struct disp_lcd* lcd; lcd = disp_get_lcd(screen_id); if(!lcd)