Re: [DPU PATCH v2 10/12] drm/msm/dpu: use runtime_pm calls in dpu_dbg
On Fri, May 11, 2018 at 08:19:36PM +0530, Rajesh Yadav wrote: > Currently, msm_drv was creating dpu_power_handle client > which was used by dpu_dbg module to enable power resources > before register debug dumping. > > Now since, the mdss core power resource handling is > implemented via runtime_pm and same has been removed > from dpu_power_handle. Remove dpu_power_handle dependency > from msm_drv and use pm_runtime_get/put_sync calls from > dpu_dbg module on dpu_mdss top level device for core, > ahb clock and power resource management (for register access). > > Changes in v2: > - resolved conflict in dpu_core_perf_init > - dropped (Reviewed-by: Sean Paul) due to above change Reviewed-by: Sean Paul > > Signed-off-by: Rajesh Yadav > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 7 --- > drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 4 > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 3 +-- > drivers/gpu/drm/msm/dpu_dbg.c | 18 +++--- > drivers/gpu/drm/msm/dpu_dbg.h | 13 ++--- > drivers/gpu/drm/msm/msm_drv.c | 27 > +-- > drivers/gpu/drm/msm/msm_drv.h | 1 - > 7 files changed, 11 insertions(+), 62 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c > b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c > index 5b79077..2cf3fca 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c > @@ -673,18 +673,11 @@ int dpu_core_perf_init(struct dpu_core_perf *perf, > struct drm_device *dev, > struct dpu_mdss_cfg *catalog, > struct dpu_power_handle *phandle, > - struct dpu_power_client *pclient, > struct dss_clk *core_clk) > { > - if (!pclient) { > - DPU_ERROR("invalid parameters\n"); > - return -EINVAL; > - } > - > perf->dev = dev; > perf->catalog = catalog; > perf->phandle = phandle; > - perf->pclient = pclient; > perf->core_clk = core_clk; > > perf->max_core_clk_rate = core_clk->max_rate; > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h > b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h > index 9c1a719..cde48df 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h > @@ -53,7 +53,6 @@ struct dpu_core_perf_tune { > * @debugfs_root: top level debug folder > * @catalog: Pointer to catalog configuration > * @phandle: Pointer to power handler > - * @pclient: Pointer to power client > * @core_clk: Pointer to core clock structure > * @core_clk_rate: current core clock rate > * @max_core_clk_rate: maximum allowable core clock rate > @@ -68,7 +67,6 @@ struct dpu_core_perf { > struct dentry *debugfs_root; > struct dpu_mdss_cfg *catalog; > struct dpu_power_handle *phandle; > - struct dpu_power_client *pclient; > struct dss_clk *core_clk; > u64 core_clk_rate; > u64 max_core_clk_rate; > @@ -115,14 +113,12 @@ void dpu_core_perf_crtc_update(struct drm_crtc *crtc, > * @dev: Pointer to drm device > * @catalog: Pointer to catalog > * @phandle: Pointer to power handle > - * @pclient: Pointer to power client > * @core_clk: pointer to core clock > */ > int dpu_core_perf_init(struct dpu_core_perf *perf, > struct drm_device *dev, > struct dpu_mdss_cfg *catalog, > struct dpu_power_handle *phandle, > - struct dpu_power_client *pclient, > struct dss_clk *core_clk); > > /** > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > index 349bda5..9c3b220 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > @@ -1721,8 +1721,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms) > #endif > > rc = dpu_core_perf_init(&dpu_kms->perf, dev, dpu_kms->catalog, > - &priv->phandle, priv->pclient, > - _dpu_kms_get_clk(dpu_kms, "core_clk")); > + &priv->phandle, _dpu_kms_get_clk(dpu_kms, "core_clk")); > if (rc) { > DPU_ERROR("failed to init perf %d\n", rc); > goto perf_err; > diff --git a/drivers/gpu/drm/msm/dpu_dbg.c b/drivers/gpu/drm/msm/dpu_dbg.c > index 4a39b82..27538bc 100644 > --- a/drivers/gpu/drm/msm/dpu_dbg.c > +++ b/drivers/gpu/drm/msm/dpu_dbg.c > @@ -20,6 +20,7 @@ > #include > #include > #include > +#include > > #include "dpu_dbg.h" > #include "disp/dpu1/dpu_hw_catalog.h" > @@ -167,7 +168,6 @@ struct dpu_dbg_vbif_debug_bus { > * @evtlog: event log instance > * @reg_base_list: list of register dumping regions > * @dev: device pointer > - * @power_ctrl: callback structure for enabling power for reading hw > registers > * @req_dump_blks: list of blocks requested for dumpi
[DPU PATCH v2 10/12] drm/msm/dpu: use runtime_pm calls in dpu_dbg
Currently, msm_drv was creating dpu_power_handle client which was used by dpu_dbg module to enable power resources before register debug dumping. Now since, the mdss core power resource handling is implemented via runtime_pm and same has been removed from dpu_power_handle. Remove dpu_power_handle dependency from msm_drv and use pm_runtime_get/put_sync calls from dpu_dbg module on dpu_mdss top level device for core, ahb clock and power resource management (for register access). Changes in v2: - resolved conflict in dpu_core_perf_init - dropped (Reviewed-by: Sean Paul) due to above change Signed-off-by: Rajesh Yadav --- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 7 --- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 4 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 3 +-- drivers/gpu/drm/msm/dpu_dbg.c | 18 +++--- drivers/gpu/drm/msm/dpu_dbg.h | 13 ++--- drivers/gpu/drm/msm/msm_drv.c | 27 +-- drivers/gpu/drm/msm/msm_drv.h | 1 - 7 files changed, 11 insertions(+), 62 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c index 5b79077..2cf3fca 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c @@ -673,18 +673,11 @@ int dpu_core_perf_init(struct dpu_core_perf *perf, struct drm_device *dev, struct dpu_mdss_cfg *catalog, struct dpu_power_handle *phandle, - struct dpu_power_client *pclient, struct dss_clk *core_clk) { - if (!pclient) { - DPU_ERROR("invalid parameters\n"); - return -EINVAL; - } - perf->dev = dev; perf->catalog = catalog; perf->phandle = phandle; - perf->pclient = pclient; perf->core_clk = core_clk; perf->max_core_clk_rate = core_clk->max_rate; diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h index 9c1a719..cde48df 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h @@ -53,7 +53,6 @@ struct dpu_core_perf_tune { * @debugfs_root: top level debug folder * @catalog: Pointer to catalog configuration * @phandle: Pointer to power handler - * @pclient: Pointer to power client * @core_clk: Pointer to core clock structure * @core_clk_rate: current core clock rate * @max_core_clk_rate: maximum allowable core clock rate @@ -68,7 +67,6 @@ struct dpu_core_perf { struct dentry *debugfs_root; struct dpu_mdss_cfg *catalog; struct dpu_power_handle *phandle; - struct dpu_power_client *pclient; struct dss_clk *core_clk; u64 core_clk_rate; u64 max_core_clk_rate; @@ -115,14 +113,12 @@ void dpu_core_perf_crtc_update(struct drm_crtc *crtc, * @dev: Pointer to drm device * @catalog: Pointer to catalog * @phandle: Pointer to power handle - * @pclient: Pointer to power client * @core_clk: pointer to core clock */ int dpu_core_perf_init(struct dpu_core_perf *perf, struct drm_device *dev, struct dpu_mdss_cfg *catalog, struct dpu_power_handle *phandle, - struct dpu_power_client *pclient, struct dss_clk *core_clk); /** diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c index 349bda5..9c3b220 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -1721,8 +1721,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms) #endif rc = dpu_core_perf_init(&dpu_kms->perf, dev, dpu_kms->catalog, - &priv->phandle, priv->pclient, - _dpu_kms_get_clk(dpu_kms, "core_clk")); + &priv->phandle, _dpu_kms_get_clk(dpu_kms, "core_clk")); if (rc) { DPU_ERROR("failed to init perf %d\n", rc); goto perf_err; diff --git a/drivers/gpu/drm/msm/dpu_dbg.c b/drivers/gpu/drm/msm/dpu_dbg.c index 4a39b82..27538bc 100644 --- a/drivers/gpu/drm/msm/dpu_dbg.c +++ b/drivers/gpu/drm/msm/dpu_dbg.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "dpu_dbg.h" #include "disp/dpu1/dpu_hw_catalog.h" @@ -167,7 +168,6 @@ struct dpu_dbg_vbif_debug_bus { * @evtlog: event log instance * @reg_base_list: list of register dumping regions * @dev: device pointer - * @power_ctrl: callback structure for enabling power for reading hw registers * @req_dump_blks: list of blocks requested for dumping * @panic_on_err: whether to kernel panic after triggering dump via debugfs * @dump_work: work struct for deferring register dump work to separate thread @@ -182,7 +182,6 @@ struct dpu_dbg_vbif_debug_bus { struct dpu_dbg_evtlog *evtlog; s