static u32 mdss_mdp_res_init(struct mdss_data_type *mdata) { u32 rc = 0; rc = mdss_mdp_irq_clk_setup(mdata); if (rc) return rc; mdata->clk_ctrl_wq = create_singlethread_workqueue("mdp_clk_wq"); INIT_DELAYED_WORK(&mdata->clk_ctrl_worker, mdss_mdp_clk_ctrl_workqueue_handler); mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_ON, false); mdata->rev = MDSS_MDP_REG_READ(MDSS_REG_HW_VERSION); mdata->mdp_rev = MDSS_MDP_REG_READ(MDSS_MDP_REG_HW_VERSION); mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF, false); mdata->smp_mb_cnt = MDSS_MDP_SMP_MMB_BLOCKS; mdata->smp_mb_size = MDSS_MDP_SMP_MMB_SIZE; mdata->pipe_type_map = mdss_mdp_pipe_type_map; mdata->mixer_type_map = mdss_mdp_mixer_type_map; pr_info("mdss_revision=%x\n", mdata->rev); pr_info("mdp_hw_revision=%x\n", mdata->mdp_rev); mdata->res_init = true; mdata->timeout = HZ/20; mdata->clk_ena = false; mdata->irq_mask = MDSS_MDP_DEFAULT_INTR_MASK; mdata->suspend = false; mdata->prim_ptype = NO_PANEL; mdata->irq_ena = false; mdata->iclient = msm_ion_client_create(-1, mdata->pdev->name); if (IS_ERR_OR_NULL(mdata->iclient)) { pr_err("msm_ion_client_create() return error (%p)\n", mdata->iclient); mdata->iclient = NULL; } rc = mdss_iommu_init(); if (!IS_ERR_VALUE(rc)) mdss_iommu_attach(); rc = mdss_hw_init(mdata); return rc; }
void mdss_mdp_footswitch_ctrl_splash(int on) { struct mdss_data_type *mdata = mdss_mdp_get_mdata(); if (mdata != NULL) { if (on) { pr_debug("Enable MDP FS for splash.\n"); regulator_enable(mdata->fs); mdss_hw_init(mdata); } else { pr_debug("Disable MDP FS for splash.\n"); regulator_disable(mdata->fs); } } else { pr_warn("mdss mdata not initialized\n"); } }
static int mdss_mdp_resume(struct platform_device *pdev) { struct mdss_data_type *mdata = platform_get_drvdata(pdev); int ret = 0; if (!mdata) return -ENODEV; pr_debug("resume display"); mdss_mdp_footswitch_ctrl(true); mutex_lock(&mdp_suspend_mutex); mdss_res->suspend = false; mutex_unlock(&mdp_suspend_mutex); ret = mdss_fb_resume_all(); if (IS_ERR_VALUE(ret)) pr_err("Unable to resume all fb panels (%d)\n", ret); mdss_hw_init(mdata); return ret; }