s32 disp_init_connections(void) { u32 disp = 0; u32 num_screens = 0; u32 num_layers = 0,layer_id = 0; DE_INF("disp_init_connections\n"); num_screens = bsp_disp_feat_get_num_screens(); for(disp=0; disp<num_screens; disp++) { struct disp_manager *mgr; struct disp_layer *lyr; struct disp_device *lcd = NULL; struct disp_enhance *enhance = NULL; struct disp_smbl *smbl = NULL; struct disp_capture *cptr = NULL; mgr = disp_get_layer_manager(disp); if(!mgr) continue; /* connect layer & it's manager */ num_layers = bsp_disp_feat_get_num_layers(disp); for(layer_id=0; layer_id<num_layers; layer_id++) { lyr = disp_get_layer_1(disp, layer_id); if(NULL != lyr) { lyr->set_manager(lyr, mgr); } } /* connect device & it's manager */ if(bsp_disp_feat_is_supported_output_types(disp, DISP_OUTPUT_TYPE_LCD)) { lcd = disp_get_lcd(disp); if((lcd) && (lcd->set_manager)) lcd->set_manager(lcd, mgr); } else { //other device } enhance = disp_get_enhance(disp); if(enhance && (enhance->set_manager)) { enhance->set_manager(enhance, mgr); } smbl = disp_get_smbl(disp); if(smbl && (smbl->set_manager)) { smbl->set_manager(smbl, mgr); } cptr = disp_get_capture(disp); if(cptr && (cptr->set_manager)) { cptr->set_manager(cptr, mgr); } } return 0; }
static s32 disp_sync_all(u32 screen_id) { struct disp_manager *mgr; struct disp_smbl *smbl; struct disp_capture *capture; struct disp_smcl *smcl; #if defined(CONFIG_ARCH_SUN9IW1P1) struct disp_cursor *cursor; #endif mgr = disp_get_layer_manager(screen_id); if(!mgr) { //DE_WRN("get mgr%d fail\n", screen_id); } else { if(mgr->sync) mgr->sync(mgr); } smbl = disp_get_smbl(screen_id); if(!smbl) { //DE_WRN("get smbl%d fail\n", screen_id); } else { if(smbl->sync) smbl->sync(smbl); } capture = disp_get_capture(screen_id); if(!capture) { //DE_WRN("get capture%d fail\n", screen_id); } else { if(capture->sync) capture->sync(capture); } smcl = disp_get_smcl(screen_id); if(!smcl) { //DE_WRN("get smcl %d fail\n", screen_id); } else { if(smcl->sync) smcl->sync(smcl); } #if defined(CONFIG_ARCH_SUN9IW1P1) cursor = disp_get_cursor(screen_id); if(!cursor) { //DE_WRN("get cursor%d fail\n", screen_id); } else { if(cursor->sync) cursor->sync(cursor); } #endif return 0; }
s32 bsp_disp_capture_screen_finished(u32 screen_id) { struct disp_capture *capture; capture = disp_get_capture(screen_id); if(!capture) { //DE_WRN("get capture %d fail!\n", screen_id); return DIS_FAIL; } if(capture->capture_screen_get_buffer_id) { return capture->capture_screen_finished(capture); } return DIS_FAIL; }
s32 bsp_disp_capture_screen_stop(u32 screen_id) { struct disp_capture *capture; capture = disp_get_capture(screen_id); if(!capture) { DE_WRN("get capture %d fail!\n", screen_id); return DIS_FAIL; } if(capture->capture_screen_stop) { return capture->capture_screen_stop(capture); } return DIS_FAIL; }
/*********************************************************** * * capture interface * ***********************************************************/ s32 bsp_disp_capture_screen(u32 screen_id, disp_capture_para *para) { struct disp_capture *capture; capture = disp_get_capture(screen_id); if(!capture) { DE_WRN("get capture %d fail!\n", screen_id); return DIS_FAIL; } if(capture->capture_screen) { return capture->capture_screen(capture, para); } return DIS_FAIL; }
s32 disp_init_connections(void) { u32 screen_id = 0; u32 num_screens = 0; DE_INF("disp_init_connections\n"); num_screens = bsp_disp_feat_get_num_screens(); for(screen_id=0; screen_id<num_screens; screen_id++) { struct disp_manager *mgr; struct disp_smbl *smbl; struct disp_capture *capture; struct disp_smcl *smcl; #if defined(CONFIG_ARCH_SUN9IW1P1) struct disp_cursor *cursor; #endif u32 num_layers, layer_id; num_layers = bsp_disp_feat_get_num_layers(screen_id); mgr = disp_get_layer_manager(screen_id); if(!mgr) continue; for(layer_id=0; layer_id<num_layers; layer_id++) { struct disp_layer *lyr; lyr = disp_get_layer(screen_id, layer_id); if(!lyr) continue; if(mgr->add_layer) mgr->add_layer(mgr, lyr); else DE_INF("mgr's add_layer is NULL\n"); if(lyr->set_manager) lyr->set_manager(lyr, mgr); else DE_INF("lyr's set_manager is NULL\n"); } smbl = disp_get_smbl(screen_id); if(smbl && smbl->set_manager) smbl->set_manager(smbl, mgr); else DE_INF("smbl's set manager is NULL\n"); capture = disp_get_capture(screen_id); if(capture && capture->set_manager) capture->set_manager(capture, mgr); else DE_INF("capture's set manager is NULL\n"); smcl = disp_get_smcl(screen_id); if(smcl && smcl->set_manager) smcl->set_manager(smcl, mgr); else DE_INF("smcl's set manager is NULL\n"); #if defined(CONFIG_ARCH_SUN9IW1P1) cursor = disp_get_cursor(screen_id); if(cursor && cursor->set_manager) cursor->set_manager(cursor, mgr); else DE_INF("cursor's set manager is NULL\n"); #endif } return 0; }