示例#1
0
void mipi_dsi_debugfs_init(struct platform_device *pdev,
	const char *sub_name)
{
	struct dentry *root;
	struct dentry *file;
	struct mipi_dsi_data *dsi_data;

	dsi_data = platform_get_drvdata(pdev);
	root = msm_fb_get_debugfs_root();
	if (root != NULL) {
		dsi_data->panel_driver_ic_dir =
			debugfs_create_dir(sub_name, root);

		if (IS_ERR(dsi_data->panel_driver_ic_dir) ||
			(dsi_data->panel_driver_ic_dir == NULL)) {
			dev_err(&pdev->dev,
				"debugfs_create_dir fail, error %ld\n",
				PTR_ERR(dsi_data->panel_driver_ic_dir));
		} else {
			file = debugfs_create_file("cmd_seq", 0444,
				dsi_data->panel_driver_ic_dir, dsi_data,
				&mipi_dsi_cmd_seq_fops);
			if (file == NULL)
				dev_err(&pdev->dev,
					"debugfs_create_file: index fail\n");
		}
	}
}
示例#2
0
static void mdp_drv_init(void)
{
	int i;

	for (i = 0; i < MDP_MAX_BLOCK; i++) {
		mdp_debug[i] = 0;
	}

	///////////////////////////////////////////////////////
	// initialize spin lock and workqueue
	///////////////////////////////////////////////////////
	spin_lock_init(&mdp_spin_lock);
	mdp_dma_wq = create_singlethread_workqueue("mdp_dma_wq");
	mdp_vsync_wq = create_singlethread_workqueue("mdp_vsync_wq");
	mdp_pipe_ctrl_wq = create_singlethread_workqueue("mdp_pipe_ctrl_wq");
	INIT_DELAYED_WORK(&mdp_pipe_ctrl_worker,
			  mdp_pipe_ctrl_workqueue_handler);

	///////////////////////////////////////////////////////
	// initialize semaphore
	///////////////////////////////////////////////////////
	init_completion(&mdp_ppp_comp);
	init_MUTEX(&mdp_ppp_mutex);
	init_MUTEX(&mdp_pipe_ctrl_mutex);

	dma2_data.busy = FALSE;
	dma2_data.waiting = FALSE;
	init_completion(&dma2_data.comp);
	init_MUTEX(&dma2_data.mutex);

	dma3_data.busy = FALSE;
	dma3_data.waiting = FALSE;
	init_completion(&dma3_data.comp);
	init_MUTEX(&dma3_data.mutex);

	dma_s_data.busy = FALSE;
	dma_s_data.waiting = FALSE;
	init_completion(&dma_s_data.comp);
	init_MUTEX(&dma_s_data.mutex);

	///////////////////////////////////////////////////////
	// initializing mdp power block counter to 0
	///////////////////////////////////////////////////////
	for (i = 0; i < MDP_MAX_BLOCK; i++) {
		mdp_block_power_cnt[i] = 0;
	}

	///////////////////////////////////////////////////////
	// initializing mdp hw
	///////////////////////////////////////////////////////
	mdp_hw_init();

#ifdef MSM_FB_ENABLE_DBGFS
	{
		struct dentry *root;
		char sub_name[] = "mdp";

		root = msm_fb_get_debugfs_root();
		if (root != NULL) {
			mdp_dir = debugfs_create_dir(sub_name, root);

			if (mdp_dir) {
				msm_fb_debugfs_file_create(mdp_dir,
							   "dma2_update_time_in_usec",
							   (u32 *) &
							   mdp_dma2_update_time_in_usec);
				msm_fb_debugfs_file_create(mdp_dir,
							   "vs_rdcnt_slow",
							   (u32 *) &
							   mdp_lcd_rd_cnt_offset_slow);
				msm_fb_debugfs_file_create(mdp_dir,
							   "vs_rdcnt_fast",
							   (u32 *) &
							   mdp_lcd_rd_cnt_offset_fast);
				msm_fb_debugfs_file_create(mdp_dir,
							   "mdp_usec_diff_threshold",
							   (u32 *) &
							   mdp_usec_diff_threshold);
				msm_fb_debugfs_file_create(mdp_dir,
							   "mdp_current_clk_on",
							   (u32 *) &
							   mdp_current_clk_on);
#ifdef CONFIG_FB_MSM_LCDC
				msm_fb_debugfs_file_create(mdp_dir,
							   "lcdc_start_x",
							   (u32 *) &
							   first_pixel_start_x);
				msm_fb_debugfs_file_create(mdp_dir,
							   "lcdc_start_y",
							   (u32 *) &
							   first_pixel_start_y);
				msm_fb_debugfs_file_create(mdp_dir,
							   "mdp_lcdc_pclk_clk_rate",
							   (u32 *) &
							   mdp_lcdc_pclk_clk_rate);
				msm_fb_debugfs_file_create(mdp_dir,
							   "mdp_lcdc_pad_pclk_clk_rate",
							   (u32 *) &
							   mdp_lcdc_pad_pclk_clk_rate);
#endif
			}
		}
	}
#endif
}