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"); } } }
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 }