__s32 Disp_lcdc_init(__u32 sel) { lcdc_clk_init(sel); lcdc_clk_on(sel); //??need to be open LCDC_init(sel); lcdc_clk_off(sel); Disp_pwm_cfg(sel); if(sel == 0) { LCD_get_panel_funs_0(&lcd_panel_fun[sel]); OSAL_RegISR(INTC_IRQNO_LCDC0,0,Disp_lcdc_event_proc,(void*)sel,0,0); //OSAL_InterruptEnable(INTC_IRQNO_LCDC0); } else { LCD_get_panel_funs_1(&lcd_panel_fun[sel]); OSAL_RegISR(INTC_IRQNO_LCDC1,0,Disp_lcdc_event_proc,(void*)sel,0,0); //OSAL_InterruptEnable(INTC_IRQNO_LCDC1); } lcd_panel_fun[sel].cfg_panel_info(&gpanel_info[sel]); return DIS_SUCCESS; }
static int lcd_init(void) { static __lcd_panel_fun_t lcd0_cfg; static __lcd_panel_fun_t lcd1_cfg; LCD_get_panel_funs_generic(&lcd0_cfg); LCD_get_panel_funs_generic(&lcd1_cfg); LCD_get_panel_funs_0(&lcd0_cfg); LCD_get_panel_funs_1(&lcd1_cfg); LCD_set_panel_funs(&lcd0_cfg, &lcd1_cfg); Fb_Init(SUNXI_LCD); return 0; }
int lcd_init(void) { static __lcd_panel_fun_t lcd0_cfg; static __lcd_panel_fun_t lcd1_cfg; memset(&lcd0_cfg, 0, sizeof(__lcd_panel_fun_t)); memset(&lcd1_cfg, 0, sizeof(__lcd_panel_fun_t)); LCD_get_panel_funs_0(&lcd0_cfg); LCD_get_panel_funs_1(&lcd1_cfg); LCD_set_panel_funs(&lcd0_cfg, &lcd1_cfg); DRV_DISP_Init(); Fb_Init(0); return 0; }
__s32 Disp_lcdc_init(__u32 sel) { LCD_get_sys_config(sel, &(gdisp.screen[sel].lcd_cfg)); lcdc_clk_init(sel); lvds_clk_init(); lcdc_clk_on(sel); //??need to be open LCDC_init(sel); lcdc_clk_off(sel); if(sel == 0) { OSAL_RegISR(INTC_IRQNO_LCDC0,0,Disp_lcdc_event_proc,(void*)sel,0,0); #ifndef __LINUX_OSAL__ OSAL_InterruptEnable(INTC_IRQNO_LCDC0); LCD_get_panel_funs_0(&lcd_panel_fun[sel]); #endif } else { OSAL_RegISR(INTC_IRQNO_LCDC1,0,Disp_lcdc_event_proc,(void*)sel,0,0); #ifndef __LINUX_OSAL__ OSAL_InterruptEnable(INTC_IRQNO_LCDC1); LCD_get_panel_funs_1(&lcd_panel_fun[sel]); #endif } if(gdisp.screen[sel].lcd_cfg.lcd_used) { if(lcd_panel_fun[sel].cfg_panel_info) { lcd_panel_fun[sel].cfg_panel_info(&gpanel_info[sel]); } else { LCD_get_panel_para(sel, &gpanel_info[sel]); } gpanel_info[sel].tcon_index = 0; if((OSAL_sw_get_ic_ver() != 0xA) && (gpanel_info[sel].lcd_pwm_not_used == 0)) { __pwm_info_t pwm_info; pwm_info.enable = 0; pwm_info.active_state = 1; pwm_info.period_ns = 1000000 / gpanel_info[sel].lcd_pwm_freq; if(gpanel_info[sel].lcd_pwm_pol == 0) { pwm_info.duty_ns = (192 * pwm_info.period_ns) / 256; } else { pwm_info.duty_ns = ((256 - 192) * pwm_info.period_ns) / 256; } pwm_set_para(gpanel_info[sel].lcd_pwm_ch, &pwm_info); } LCD_GPIO_init(sel); } return DIS_SUCCESS; }