static bool sprdfb_mipi_panel_init(struct sprdfb_device *dev)
{
	sprdfb_dsi_init(dev);

	mipi_dispc_init_config(dev->panel);
	mipi_dispc_set_timing(dev);
	return true;
}
Beispiel #2
0
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;
}