static bool sprdfb_mcu_panel_init(struct sprdfb_device *dev) { if(SPRDFB_MAINLCD_ID == dev->dev_id){ mcu_dispc_init_config(dev->panel); mcu_dispc_set_timing(dev, MCU_LCD_REGISTER_TIMING); } return true; }
int32_t autotst_dispc_init(int display_type) { int ret = 0; printk(KERN_INFO "autotst_dispc:[%s]\n",__FUNCTION__); //autotst_dsi_dump(); autotst_dispc_uninit(DISPLAY_TYPE_MIPI); ret = dispc_clk_init(); if(ret){ printk(KERN_WARNING "autotst_dispc: dispc_clk_init fail!\n"); return -1; } dispc_reset(); dispc_module_enable(); /*set bg color*/ dispc_set_bg_color(0xFFFFFFFF); /*enable dithering*/ dispc_dithering_enable(true); /*use MSBs as img exp mode*/ dispc_set_exp_mode(0x0); //enable DISPC Power Control dispc_pwr_enable(true); switch(display_type){ case DISPLAY_TYPE_MCU: autotst_panel = &lcd_dummy_mcu_spec; mcu_dispc_init_config(autotst_panel); mcu_dispc_set_timing(autotst_panel); break; case DISPLAY_TYPE_RGB: autotst_panel = &lcd_dummy_rgb_spec; rgb_dispc_init_config(autotst_panel); rgb_dispc_set_timing(autotst_panel); autotst_dispc_ctx.dispc_if = DISPC_IF_DPI; break; case DISPLAY_TYPE_MIPI: autotst_panel = &lcd_dummy_mipi_spec; mipi_dispc_init_config(autotst_panel); mipi_dispc_set_timing(autotst_panel); autotst_dsi_init(autotst_panel); break; default: printk("autotst_dispc:[%s] error display type (%d)\n", __FUNCTION__, display_type); } dispc_layer_init(autotst_panel); if(DISPC_IF_DPI == autotst_dispc_ctx.dispc_if){ if(1){ /*set dpi register update only with SW*/ dispc_set_bits(BIT(4), DISPC_DPI_CTRL); }else{ /*set dpi register update with SW & VSYNC*/ dispc_clear_bits(BIT(4), DISPC_DPI_CTRL); } /*enable dispc update done INT*/ //dispc_write((1<<4), DISPC_INT_EN); }else{ /* enable dispc DONE INT*/ //dispc_write((1<<0), DISPC_INT_EN); } //dispc_set_bits(BIT(2), DISPC_INT_EN); return 0; }
static void sprdfb_mcu_panel_after_refresh(struct sprdfb_device *dev) { mcu_dispc_set_timing(dev, MCU_LCD_REGISTER_TIMING); }
static void sprdfb_mcu_panel_before_refresh(struct sprdfb_device *dev) { mcu_dispc_set_timing(dev, MCU_LCD_GRAM_TIMING); }
static void sprdfb_mcu_panel_init(struct sprdfb_device *dev) { mcu_dispc_init_config(dev->panel); mcu_dispc_set_timing(dev, MCU_LCD_REGISTER_TIMING); }
static void sprdfb_mcu_panel_after_refresh(struct sprdfb_device *dev) { if(SPRDFB_MAINLCD_ID == dev->dev_id){ mcu_dispc_set_timing(dev, MCU_LCD_REGISTER_TIMING); } }
static void sprdfb_mcu_panel_before_refresh(struct sprdfb_device *dev) { if(SPRDFB_MAINLCD_ID == dev->dev_id){ mcu_dispc_set_timing(dev, MCU_LCD_GRAM_TIMING); } }