Beispiel #1
0
static int __init mipi_video_lgd_wvga_pt_init(void)
{
	int ret;

#ifdef CONFIG_FB_MSM_MIPI_PANEL_DETECT
	if (msm_fb_detect_client("mipi_video_lgd_wvga"))
		return 0;
#endif

	pinfo.xres = 480;
	pinfo.yres = 800;
	/*
	 *
	 * Panel's Horizontal input timing requirement is to
	 * include dummy(pad) data of 200 clk in addition to
	 * width and porch/sync width values
	 */

	pinfo.mipi.xres_pad = 0;
	pinfo.mipi.yres_pad = 0;

	pinfo.type = MIPI_VIDEO_PANEL;
	pinfo.pdest = DISPLAY_1;
	pinfo.wait_cycle = 0;
	pinfo.bpp = 24;
#if 0
	pinfo.lcdc.h_back_porch = 84;//32;
	pinfo.lcdc.h_front_porch = 74;//64;
	pinfo.lcdc.h_pulse_width = 20;//16;
	pinfo.lcdc.v_back_porch = 20;
	pinfo.lcdc.v_front_porch = 10;
	pinfo.lcdc.v_pulse_width = 8;
#else
#if defined(MIPI_CLOCK_370MBPS)
	pinfo.lcdc.h_back_porch = 106;
	pinfo.lcdc.h_front_porch = 12;//8->14
	pinfo.lcdc.h_pulse_width = 30;
	pinfo.lcdc.v_back_porch = 8;
	pinfo.lcdc.v_front_porch = 8;
	pinfo.lcdc.v_pulse_width = 2;
#else
	pinfo.lcdc.h_back_porch = 86;
	pinfo.lcdc.h_front_porch = 8;//8->14
	pinfo.lcdc.h_pulse_width = 20;
	pinfo.lcdc.v_back_porch = 8;
	pinfo.lcdc.v_front_porch = 8;
	pinfo.lcdc.v_pulse_width = 2;
#endif

#endif
	pinfo.lcdc.border_clr = 0;	/* blk */
	pinfo.lcdc.underflow_clr = 0xff;	/* blue */
	pinfo.lcdc.hsync_skew = 0;
	pinfo.bl_max = 16;
	pinfo.bl_min = 1;
	pinfo.fb_num = 2;
#if defined(MIPI_CLOCK_370MBPS)
    	pinfo.clk_rate = 370000000;
#elif defined(MIPI_CLOCK_350MBPS)
    	pinfo.clk_rate = 350000000;
#elif defined(MIPI_CLOCK_334MBPS)
    	pinfo.clk_rate = 334000000;
#elif defined(MIPI_CLOCK_330MBPS)
    	pinfo.clk_rate = 330000000;
#elif defined(MIPI_CLOCK_327MBPS)
    	pinfo.clk_rate = 327000000;
#elif defined(MIPI_CLOCK_328MBPS)
    	pinfo.clk_rate = 328000000;
#elif defined(MIPI_CLOCK_320MBPS)
    	pinfo.clk_rate = 320000000;
#else
    	pinfo.clk_rate = 300000000;
#endif
	pinfo.mipi.mode = DSI_VIDEO_MODE;    

	pinfo.mipi.pulse_mode_hsa_he = TRUE;
	pinfo.mipi.hfp_power_stop = FALSE;
	pinfo.mipi.hbp_power_stop = TRUE;  
	pinfo.mipi.hsa_power_stop = TRUE; 
	pinfo.mipi.eof_bllp_power_stop = TRUE; 
	pinfo.mipi.bllp_power_stop = TRUE;
	pinfo.mipi.traffic_mode = DSI_BURST_MODE;
	pinfo.mipi.dst_format = DSI_VIDEO_DST_FORMAT_RGB888;
	pinfo.mipi.vc = 0;
	pinfo.mipi.rgb_swap = DSI_RGB_SWAP_RGB;
	pinfo.mipi.data_lane0 = TRUE;
	pinfo.mipi.data_lane1 = TRUE;
#if defined(MIPI_CLOCK_350MBPS)
	pinfo.mipi.t_clk_post =0x21;
	pinfo.mipi.t_clk_pre =0x2e;
#elif defined(MIPI_CLOCK_370MBPS)
	pinfo.mipi.t_clk_post =0x21;
	pinfo.mipi.t_clk_pre =0x2e;
#elif defined(MIPI_CLOCK_334MBPS)
	pinfo.mipi.t_clk_post =0x21;
	pinfo.mipi.t_clk_pre =0x2e;
#elif defined(MIPI_CLOCK_330MBPS)
	pinfo.mipi.t_clk_post =0x21;
	pinfo.mipi.t_clk_pre =0x2e;
#elif defined(MIPI_CLOCK_327MBPS)
	pinfo.mipi.t_clk_post =0x21;
	pinfo.mipi.t_clk_pre =0x2d;
#elif defined(MIPI_CLOCK_328MBPS)
	pinfo.mipi.t_clk_post =0x21;
	pinfo.mipi.t_clk_pre =0x2d;
#elif defined(MIPI_CLOCK_320MBPS)
	pinfo.mipi.t_clk_post =0x21;
	pinfo.mipi.t_clk_pre =0x2d;
#else
    pinfo.mipi.t_clk_post =0x21;
	pinfo.mipi.t_clk_pre =0x2d;
#endif
	pinfo.mipi.stream = 0; /* dma_p */
	pinfo.mipi.mdp_trigger = 0;
	pinfo.mipi.dma_trigger = DSI_CMD_TRIGGER_SW;
//	pinfo.mipi.frame_rate = 60;
	pinfo.mipi.frame_rate = 56;
	pinfo.mipi.dsi_phy_db = &dsi_video_mode_phy_db;
	pinfo.mipi.tx_eot_append = TRUE;
	pinfo.mipi.force_clk_lane_hs = 1;

	ret = mipi_lgd_device_register(&pinfo, MIPI_DSI_PRIM,
						MIPI_DSI_PANEL_WVGA_PT);
	if (ret)
		printk(KERN_ERR "%s: failed to register device!\n", __func__);

	return ret;
}
Beispiel #2
0
static int __init mipi_video_lgd_wvga_pt_init(void)
{
	int ret;

#ifdef CONFIG_FB_MSM_MIPI_PANEL_DETECT
	if (msm_fb_detect_client("mipi_wvga_lgd_wvga"))
		return 0;
#endif
	pinfo.xres = 480;
	pinfo.yres = 800;
	pinfo.type = MIPI_VIDEO_PANEL;
	pinfo.pdest = DISPLAY_1;
	pinfo.wait_cycle = 0;
	pinfo.bpp = 24;
	pinfo.lcdc.h_back_porch = 64;//64;//80;//16;
	pinfo.lcdc.h_front_porch = 2;//48;//16;
	pinfo.lcdc.h_pulse_width = 1;//32;//10;
	pinfo.lcdc.v_back_porch = 15;//2;//8;
	pinfo.lcdc.v_front_porch = 5;//8;
	pinfo.lcdc.v_pulse_width = 3;//5;
	pinfo.lcdc.border_clr = 0;	/* blk */
	pinfo.lcdc.underflow_clr = 0xff;	/* blue */
	pinfo.lcdc.hsync_skew = 0;
	pinfo.bl_max = 128;
	pinfo.bl_min = 1;
	pinfo.fb_num = 1;

	pinfo.mipi.mode = DSI_VIDEO_MODE;
	pinfo.mipi.pulse_mode_hsa_he = FALSE;
	pinfo.mipi.hfp_power_stop = FALSE;
	pinfo.mipi.hbp_power_stop = FALSE;
	pinfo.mipi.hsa_power_stop = FALSE;
	pinfo.mipi.eof_bllp_power_stop = TRUE;
	pinfo.mipi.bllp_power_stop = FALSE;
	pinfo.mipi.traffic_mode = DSI_NON_BURST_SYNCH_EVENT;
	pinfo.mipi.dst_format = DSI_VIDEO_DST_FORMAT_RGB888;
	pinfo.mipi.vc = 0;
	pinfo.mipi.rgb_swap = DSI_RGB_SWAP_BGR;
	pinfo.mipi.data_lane0 = TRUE;
	pinfo.mipi.data_lane1 = TRUE;
	pinfo.mipi.data_lane2 = FALSE;
	pinfo.mipi.data_lane3 = FALSE;

	pinfo.mipi.t_clk_post = 34;//0x22;
	pinfo.mipi.t_clk_pre = 51;//0x32;//0x35
	pinfo.mipi.frame_rate = 62;
//	pinfo.clk_rate = 300000000;//285
	pinfo.clk_rate = 330000000;
//[LS840-ICS][BSP][changed to fix cts issue,in order to achieve display refresh rate of 60fps]
	pinfo.mipi.stream = 0; /* dma_p */
	pinfo.mipi.mdp_trigger = DSI_CMD_TRIGGER_SW;
	pinfo.mipi.dma_trigger = DSI_CMD_TRIGGER_SW;
//	pinfo.mipi.interleave_max = 1;
//	pinfo.mipi.wr_mem_continue = 0x3c;
//	pinfo.mipi.wr_mem_start = 0x2c;
	pinfo.mipi.dsi_phy_db = &dsi_video_mode_phy_db;

	ret = mipi_lgd_device_register(&pinfo, MIPI_DSI_PRIM,
						MIPI_DSI_PANEL_WVGA_PT);
	if (ret)
		printk(KERN_ERR "%s: failed to register device!\n", __func__);

	return ret;
}