__s32 BSP_disp_exit(__u32 mode) { if(mode == DISP_EXIT_MODE_CLEAN_ALL) { BSP_disp_close(); Scaler_Exit(0); //Scaler_Exit(1); Image_exit(0); //Image_exit(1); Disp_lcdc_exit(0); //Disp_lcdc_exit(1); Disp_TVEC_Exit(0); //Disp_TVEC_Exit(1); Display_Hdmi_Exit(); } else if(mode == DISP_EXIT_MODE_CLEAN_PARTLY) { OSAL_InterruptDisable(INTC_IRQNO_LCDC0); OSAL_UnRegISR(INTC_IRQNO_LCDC0,Disp_lcdc_event_proc,(void*)0); //OSAL_InterruptDisable(INTC_IRQNO_LCDC1); //OSAL_UnRegISR(INTC_IRQNO_LCDC1,Disp_lcdc_event_proc,(void*)0); OSAL_InterruptDisable(INTC_IRQNO_SCALER0); OSAL_UnRegISR(INTC_IRQNO_SCALER0,Scaler_event_proc,(void*)0); //OSAL_InterruptDisable(INTC_IRQNO_SCALER1); //OSAL_UnRegISR(INTC_IRQNO_SCALER1,Scaler_event_proc,(void*)0); } return DIS_SUCCESS; }
s32 disp_lcd_exit(struct disp_lcd* lcd) { struct disp_lcd_private_data *lcdp = disp_lcd_get_priv(lcd); if((NULL == lcd) || (NULL == lcdp)) { DE_WRN("NULL hdl!\n"); return DIS_FAIL; } if(disp_al_query_lcd_mod(lcd->channel_id)) { OSAL_InterruptDisable(lcdp->irq_no); OSAL_UnRegISR(lcdp->irq_no, disp_lcd_event_proc,(void*)lcd->channel_id); } if(LCD_IF_DSI == lcdp->panel_info.lcd_if) { OSAL_InterruptDisable(lcdp->irq_no_dsi); OSAL_UnRegISR(lcdp->irq_no_dsi, disp_lcd_event_proc,(void*)lcd->channel_id); } else if(LCD_IF_EDP == lcdp->panel_info.lcd_if) { /* todo? register edp vint proc */ } disp_al_lcd_exit(lcd->channel_id); lcd_clk_exit(lcd); return 0; }
__s32 Scaler_Exit(__u32 scaler_index) { if(scaler_index == 0) { OSAL_InterruptDisable(gdisp.init_para.irq[DISP_MOD_FE0]); OSAL_UnRegISR(gdisp.init_para.irq[DISP_MOD_FE0],scaler_event_proc,(void*)scaler_index); } else if(scaler_index == 1) { OSAL_InterruptDisable(gdisp.init_para.irq[DISP_MOD_FE1]); OSAL_UnRegISR(gdisp.init_para.irq[DISP_MOD_FE1],scaler_event_proc,(void*)scaler_index); } DE_SCAL_DisableINT(scaler_index,DE_WB_END_IE); DE_SCAL_Reset(scaler_index); DE_SCAL_Disable(scaler_index); scaler_clk_off(scaler_index); return DIS_SUCCESS; }
__s32 Scaler_Exit(__u32 sel) { if(sel == 0) { OSAL_InterruptDisable(INTC_IRQNO_SCALER0); OSAL_UnRegISR(INTC_IRQNO_SCALER0,Scaler_event_proc,(void*)sel); } else if(sel == 1) { OSAL_InterruptDisable(INTC_IRQNO_SCALER1); OSAL_UnRegISR(INTC_IRQNO_SCALER1,Scaler_event_proc,(void*)sel); } DE_SCAL_DisableINT(sel,DE_WB_END_IE); DE_SCAL_Reset(sel); DE_SCAL_Disable(sel); scaler_clk_off(sel); return DIS_SUCCESS; }
__s32 Disp_lcdc_exit(__u32 sel) { if(sel == 0) { OSAL_InterruptDisable(INTC_IRQNO_LCDC0); OSAL_UnRegISR(INTC_IRQNO_LCDC0,Disp_lcdc_event_proc,(void*)sel); } else if(sel == 1) { OSAL_InterruptDisable(INTC_IRQNO_LCDC1); OSAL_UnRegISR(INTC_IRQNO_LCDC1,Disp_lcdc_event_proc,(void*)sel); } LCDC_exit(sel); lcdc_clk_exit(sel); return DIS_SUCCESS; }
s32 bsp_disp_exit(u32 mode) { u32 num_screens; u32 screen_id; u32 num_scalers; u32 scaler_id; struct disp_lcd *lcd; struct disp_manager *manager; num_screens = bsp_disp_feat_get_num_screens(); num_scalers = bsp_disp_feat_get_num_scalers(); if(mode == DISP_EXIT_MODE_CLEAN_ALL) { /* close all mod and unregister all irq */ for(scaler_id = 0; scaler_id < num_scalers; scaler_id++) { scaler_close(scaler_id); } scaler_exit(); for(screen_id = 0; screen_id < num_screens; screen_id++) { lcd = disp_get_lcd(screen_id); manager = disp_get_layer_manager(screen_id); manager->exit(manager); lcd->exit(lcd); } } else if(mode == DISP_EXIT_MODE_CLEAN_PARTLY) { /* unregister all irq */ // OSAL_InterruptDisable(AW_IRQ_DEBE0); // OSAL_UnRegISR(AW_IRQ_DEBE0, manager_event_proc, (void*)0); OSAL_InterruptDisable(AW_IRQ_LCD0); OSAL_UnRegISR(AW_IRQ_LCD0, disp_lcd_event_proc, (void*)0); // OSAL_InterruptDisable(AW_IRQ_DEBE1); // OSAL_UnRegISR(AW_IRQ_DEBE1, manager_event_proc, (void*)0); OSAL_InterruptDisable(AW_IRQ_LCD1); OSAL_UnRegISR(AW_IRQ_LCD1, disp_lcd_event_proc, (void*)0); } return DIS_SUCCESS; }