[Freedreno] [PATCH v2] drm/msm/adreno: Add missing MODULE_FIRMWARE macros
The driver references some firmware files that don't have corresponding MODULE_FIRMWARE macros and thus won't be listed via modinfo. Fix that. Signed-off-by: Juerg Haefliger --- v2: - Drop addition and removal of zap files (needs more discussion) - Add new a690_gmu.bin - Update commit subject and message accordingly --- drivers/gpu/drm/msm/adreno/adreno_device.c | 11 +++ 1 file changed, 11 insertions(+) diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/msm/adreno/adreno_device.c index cb94cfd137a8..7c1f9a844009 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_device.c +++ b/drivers/gpu/drm/msm/adreno/adreno_device.c @@ -397,10 +397,21 @@ MODULE_FIRMWARE("qcom/a530_zap.mdt"); MODULE_FIRMWARE("qcom/a530_zap.b00"); MODULE_FIRMWARE("qcom/a530_zap.b01"); MODULE_FIRMWARE("qcom/a530_zap.b02"); +MODULE_FIRMWARE("qcom/a540_gpmu.fw2"); MODULE_FIRMWARE("qcom/a619_gmu.bin"); MODULE_FIRMWARE("qcom/a630_sqe.fw"); MODULE_FIRMWARE("qcom/a630_gmu.bin"); MODULE_FIRMWARE("qcom/a630_zap.mbn"); +MODULE_FIRMWARE("qcom/a640_gmu.bin"); +MODULE_FIRMWARE("qcom/a650_gmu.bin"); +MODULE_FIRMWARE("qcom/a650_sqe.fw"); +MODULE_FIRMWARE("qcom/a660_gmu.bin"); +MODULE_FIRMWARE("qcom/a660_sqe.fw"); +MODULE_FIRMWARE("qcom/a690_gmu.bin"); +MODULE_FIRMWARE("qcom/leia_pfp_470.fw"); +MODULE_FIRMWARE("qcom/leia_pm4_470.fw"); +MODULE_FIRMWARE("qcom/yamato_pfp.fw"); +MODULE_FIRMWARE("qcom/yamato_pm4.fw"); static inline bool _rev_match(uint8_t entry, uint8_t id) { -- 2.37.2
Re: [Freedreno] [PATCH] drm/msm/adreno: Update MODULE_FIRMWARE macros
On Fri, 16 Jun 2023 21:25:01 +0530 Akhil P Oommen wrote: > On Fri, Jun 16, 2023 at 02:28:15PM +0200, Juerg Haefliger wrote: > > > > Add missing MODULE_FIRMWARE macros and remove some for firmwares that > > the driver no longer references. > > > > Signed-off-by: Juerg Haefliger > > --- > > drivers/gpu/drm/msm/adreno/adreno_device.c | 23 ++ > > 1 file changed, 19 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c > > b/drivers/gpu/drm/msm/adreno/adreno_device.c > > index 8cff86e9d35c..9f70d7c1a72a 100644 > > --- a/drivers/gpu/drm/msm/adreno/adreno_device.c > > +++ b/drivers/gpu/drm/msm/adreno/adreno_device.c > > @@ -364,17 +364,32 @@ MODULE_FIRMWARE("qcom/a330_pm4.fw"); > > MODULE_FIRMWARE("qcom/a330_pfp.fw"); > > MODULE_FIRMWARE("qcom/a420_pm4.fw"); > > MODULE_FIRMWARE("qcom/a420_pfp.fw"); > > +MODULE_FIRMWARE("qcom/a506_zap.mdt"); > > +MODULE_FIRMWARE("qcom/a508_zap.mdt"); > > +MODULE_FIRMWARE("qcom/a512_zap.mdt"); > > MODULE_FIRMWARE("qcom/a530_pm4.fw"); > > MODULE_FIRMWARE("qcom/a530_pfp.fw"); > > MODULE_FIRMWARE("qcom/a530v3_gpmu.fw2"); > > MODULE_FIRMWARE("qcom/a530_zap.mdt"); > > -MODULE_FIRMWARE("qcom/a530_zap.b00"); > > -MODULE_FIRMWARE("qcom/a530_zap.b01"); > > -MODULE_FIRMWARE("qcom/a530_zap.b02"); > Why are these not required when "qcom/a530_zap.mdt" is present? > > mdt & b0* binaries are different partitions of the same secure > firmware. Even though we specify only the .mdt file here, the PIL driver > will load the *.b0* file automatically. OTOH, "*.mbn" is a standalone > unified binary format. Ah thanks for the clarification. > If the requirement is to ensure that all necessary firmwares are part of > your distribution, you should include the *.b0* files too here. I'll look into that. IMO, everything that the drivers can load should be listed for completeness. ...Juerg > -Akhil > > > +MODULE_FIRMWARE("qcom/a540_gpmu.fw2"); > > +MODULE_FIRMWARE("qcom/a540_zap.mdt"); > > +MODULE_FIRMWARE("qcom/a615_zap.mdt"); > > MODULE_FIRMWARE("qcom/a619_gmu.bin"); > > MODULE_FIRMWARE("qcom/a630_sqe.fw"); > > MODULE_FIRMWARE("qcom/a630_gmu.bin"); > > -MODULE_FIRMWARE("qcom/a630_zap.mbn"); > > +MODULE_FIRMWARE("qcom/a630_zap.mdt"); > > +MODULE_FIRMWARE("qcom/a640_gmu.bin"); > > +MODULE_FIRMWARE("qcom/a640_zap.mdt"); > > +MODULE_FIRMWARE("qcom/a650_gmu.bin"); > > +MODULE_FIRMWARE("qcom/a650_sqe.fw"); > > +MODULE_FIRMWARE("qcom/a650_zap.mdt"); > > +MODULE_FIRMWARE("qcom/a660_gmu.bin"); > > +MODULE_FIRMWARE("qcom/a660_sqe.fw"); > > +MODULE_FIRMWARE("qcom/a660_zap.mdt"); > > +MODULE_FIRMWARE("qcom/leia_pfp_470.fw"); > > +MODULE_FIRMWARE("qcom/leia_pm4_470.fw"); > > +MODULE_FIRMWARE("qcom/yamato_pfp.fw"); > > +MODULE_FIRMWARE("qcom/yamato_pm4.fw"); > > > > static inline bool _rev_match(uint8_t entry, uint8_t id) > > { > > -- > > 2.37.2 > > pgpGx14lcujkj.pgp Description: OpenPGP digital signature
[Freedreno] [PATCH 7/8] drm/msm/dpu: drop dpu_core_perf_destroy()
This function does nothing, just clears several data pointers. Drop it now. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 12 drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 6 -- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 1 - 3 files changed, 19 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 78a7e3ea27a4..f779ad544347 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c @@ -394,18 +394,6 @@ int dpu_core_perf_debugfs_init(struct dpu_kms *dpu_kms, struct dentry *parent) } #endif -void dpu_core_perf_destroy(struct dpu_core_perf *perf) -{ - if (!perf) { - DPU_ERROR("invalid parameters\n"); - return; - } - - perf->max_core_clk_rate = 0; - perf->core_clk = NULL; - perf->dev = NULL; -} - int dpu_core_perf_init(struct dpu_core_perf *perf, struct drm_device *dev, const struct dpu_perf_cfg *perf_cfg, 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 e8a7916b6f71..e1198c104b5e 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h @@ -69,12 +69,6 @@ int dpu_core_perf_crtc_update(struct drm_crtc *crtc, */ void dpu_core_perf_crtc_release_bw(struct drm_crtc *crtc); -/** - * dpu_core_perf_destroy - destroy the given core performance context - * @perf: Pointer to core performance context - */ -void dpu_core_perf_destroy(struct dpu_core_perf *perf); - /** * dpu_core_perf_init - initialize the given core performance context * @perf: Pointer to core performance context diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c index 6e62606e32de..4439147d2c35 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -1162,7 +1162,6 @@ static int dpu_kms_hw_init(struct msm_kms *kms) return 0; drm_obj_init_err: - dpu_core_perf_destroy(_kms->perf); hw_intr_init_err: perf_err: power_error: -- 2.39.2
[Freedreno] [PATCH 4/8] drm/msm/dpu: rework indentation in dpu_core_perf
dpu_core_perf.c contains several multi-line conditions which are hard to comprehent because of the indentation. Rework the identation of these conditions to make it easier to understand them. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 13 + 1 file changed, 5 insertions(+), 8 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 ba146af73bc5..f8d5c87d0915 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c @@ -148,8 +148,8 @@ int dpu_core_perf_crtc_check(struct drm_crtc *crtc, drm_for_each_crtc(tmp_crtc, crtc->dev) { if (tmp_crtc->enabled && - (dpu_crtc_get_client_type(tmp_crtc) == - curr_client_type) && (tmp_crtc != crtc)) { + dpu_crtc_get_client_type(tmp_crtc) == curr_client_type && + tmp_crtc != crtc) { struct dpu_crtc_state *tmp_cstate = to_dpu_crtc_state(tmp_crtc->state); @@ -194,8 +194,7 @@ static int _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms, drm_for_each_crtc(tmp_crtc, crtc->dev) { if (tmp_crtc->enabled && - curr_client_type == - dpu_crtc_get_client_type(tmp_crtc)) { + curr_client_type == dpu_crtc_get_client_type(tmp_crtc)) { dpu_cstate = to_dpu_crtc_state(tmp_crtc->state); perf.bw_ctl += dpu_cstate->new_perf.bw_ctl; @@ -325,10 +324,8 @@ int dpu_core_perf_crtc_update(struct drm_crtc *crtc, update_bus = true; } - if ((params_changed && - (new->core_clk_rate > old->core_clk_rate)) || - (!params_changed && - (new->core_clk_rate < old->core_clk_rate))) { + if ((params_changed && new->core_clk_rate > old->core_clk_rate) || + (!params_changed && new->core_clk_rate < old->core_clk_rate)) { old->core_clk_rate = new->core_clk_rate; update_clk = true; } -- 2.39.2
[Freedreno] [PATCH 6/8] drm/msm/dpu: use dpu_perf_cfg in DPU core_perf code
Simplify dpu_core_perf code by using only dpu_perf_cfg instead of using full-featured catalog data. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 52 --- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 8 +-- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 2 +- 3 files changed, 27 insertions(+), 35 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 773e641eab28..78a7e3ea27a4 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c @@ -19,11 +19,11 @@ /** * _dpu_core_perf_calc_bw() - to calculate BW per crtc - * @kms: pointer to the dpu_kms + * @perf_cfg: performance configuration * @crtc: pointer to a crtc * Return: returns aggregated BW for all planes in crtc. */ -static u64 _dpu_core_perf_calc_bw(struct dpu_kms *kms, +static u64 _dpu_core_perf_calc_bw(const struct dpu_perf_cfg *perf_cfg, struct drm_crtc *crtc) { struct drm_plane *plane; @@ -39,7 +39,7 @@ static u64 _dpu_core_perf_calc_bw(struct dpu_kms *kms, crtc_plane_bw += pstate->plane_fetch_bw; } - bw_factor = kms->catalog->perf->bw_inefficiency_factor; + bw_factor = perf_cfg->bw_inefficiency_factor; if (bw_factor) { crtc_plane_bw *= bw_factor; do_div(crtc_plane_bw, 100); @@ -50,12 +50,12 @@ static u64 _dpu_core_perf_calc_bw(struct dpu_kms *kms, /** * _dpu_core_perf_calc_clk() - to calculate clock per crtc - * @kms: pointer to the dpu_kms + * @perf_cfg: performance configuration * @crtc: pointer to a crtc * @state: pointer to a crtc state * Return: returns max clk for all planes in crtc. */ -static u64 _dpu_core_perf_calc_clk(struct dpu_kms *kms, +static u64 _dpu_core_perf_calc_clk(const struct dpu_perf_cfg *perf_cfg, struct drm_crtc *crtc, struct drm_crtc_state *state) { struct drm_plane *plane; @@ -76,7 +76,7 @@ static u64 _dpu_core_perf_calc_clk(struct dpu_kms *kms, crtc_clk = max(pstate->plane_clk, crtc_clk); } - clk_factor = kms->catalog->perf->clk_inefficiency_factor; + clk_factor = perf_cfg->clk_inefficiency_factor; if (clk_factor) { crtc_clk *= clk_factor; do_div(crtc_clk, 100); @@ -92,20 +92,20 @@ static struct dpu_kms *_dpu_crtc_get_kms(struct drm_crtc *crtc) return to_dpu_kms(priv->kms); } -static void _dpu_core_perf_calc_crtc(struct dpu_kms *kms, +static void _dpu_core_perf_calc_crtc(const struct dpu_perf_cfg *perf_cfg, struct drm_crtc *crtc, struct drm_crtc_state *state, struct dpu_core_perf_params *perf) { - if (!kms || !kms->catalog || !crtc || !state || !perf) { + if (!perf_cfg || !crtc || !state || !perf) { DPU_ERROR("invalid parameters\n"); return; } memset(perf, 0, sizeof(struct dpu_core_perf_params)); - perf->bw_ctl = _dpu_core_perf_calc_bw(kms, crtc); - perf->core_clk_rate = _dpu_core_perf_calc_clk(kms, crtc, state); + perf->bw_ctl = _dpu_core_perf_calc_bw(perf_cfg, crtc); + perf->core_clk_rate = _dpu_core_perf_calc_clk(perf_cfg, crtc, state); DRM_DEBUG_ATOMIC( "crtc=%d clk_rate=%llu core_ab=%llu\n", @@ -122,6 +122,7 @@ int dpu_core_perf_crtc_check(struct drm_crtc *crtc, struct dpu_crtc_state *dpu_cstate; struct drm_crtc *tmp_crtc; struct dpu_kms *kms; + const struct dpu_perf_cfg *perf_cfg; if (!crtc || !state) { DPU_ERROR("invalid crtc\n"); @@ -129,10 +130,7 @@ int dpu_core_perf_crtc_check(struct drm_crtc *crtc, } kms = _dpu_crtc_get_kms(crtc); - if (!kms->catalog) { - DPU_ERROR("invalid parameters\n"); - return 0; - } + perf_cfg = kms->perf.perf_cfg; /* we only need bandwidth check on real-time clients (interfaces) */ if (dpu_crtc_get_client_type(crtc) == NRT_CLIENT) @@ -141,7 +139,7 @@ int dpu_core_perf_crtc_check(struct drm_crtc *crtc, dpu_cstate = to_dpu_crtc_state(state); /* obtain new values */ - _dpu_core_perf_calc_crtc(kms, crtc, state, _cstate->new_perf); + _dpu_core_perf_calc_crtc(perf_cfg, crtc, state, _cstate->new_perf); bw_sum_of_intfs = dpu_cstate->new_perf.bw_ctl; curr_client_type = dpu_crtc_get_client_type(crtc); @@ -164,7 +162,7 @@ int dpu_core_perf_crtc_check(struct drm_crtc *crtc, bw = DIV_ROUND_UP_ULL(bw_sum_of_intfs, 1000); DRM_DEBUG_ATOMIC("calculated bandwidth=%uk\n", bw); - threshold = kms->catalog->perf->max_bw_high; + threshold = perf_cfg->max_bw_high; DRM_DEBUG_ATOMIC("final threshold bw limit = %d\n", threshold); @@ -212,7 +210,7 @@ static int
[Freedreno] [PATCH 8/8] drm/msm/dpu: remove unused fields from struct dpu_core_perf
Remove dpu_core_perf::dev and dpu_core_perf::debugfs_root fields, they are not used by the code. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 2 -- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 4 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 2 +- 3 files changed, 1 insertion(+), 7 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 f779ad544347..7f110d15b101 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c @@ -395,11 +395,9 @@ int dpu_core_perf_debugfs_init(struct dpu_kms *dpu_kms, struct dentry *parent) #endif int dpu_core_perf_init(struct dpu_core_perf *perf, - struct drm_device *dev, const struct dpu_perf_cfg *perf_cfg, struct clk *core_clk) { - perf->dev = dev; perf->perf_cfg = perf_cfg; perf->core_clk = core_clk; 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 e1198c104b5e..623e2d058695 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h @@ -27,7 +27,6 @@ struct dpu_core_perf_params { /** * struct dpu_core_perf - definition of core performance context * @dev: Pointer to drm device - * @debugfs_root: top level debug folder * @perf_cfg: Platform-specific performance configuration * @core_clk: Pointer to the core clock * @core_clk_rate: current core clock rate @@ -36,8 +35,6 @@ struct dpu_core_perf_params { * @enable_bw_release: debug control for bandwidth release */ struct dpu_core_perf { - struct drm_device *dev; - struct dentry *debugfs_root; const struct dpu_perf_cfg *perf_cfg; struct clk *core_clk; u64 core_clk_rate; @@ -77,7 +74,6 @@ void dpu_core_perf_crtc_release_bw(struct drm_crtc *crtc); * @core_clk: pointer to core clock */ int dpu_core_perf_init(struct dpu_core_perf *perf, - struct drm_device *dev, const struct dpu_perf_cfg *perf_cfg, struct 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 4439147d2c35..5297cec68c9c 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -1115,7 +1115,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms) dpu_kms->hw_vbif[vbif->id] = hw; } - rc = dpu_core_perf_init(_kms->perf, dev, dpu_kms->catalog->perf, + rc = dpu_core_perf_init(_kms->perf, dpu_kms->catalog->perf, msm_clk_bulk_get_clock(dpu_kms->clocks, dpu_kms->num_clocks, "core")); if (rc) { DPU_ERROR("failed to init perf %d\n", rc); -- 2.39.2
[Freedreno] [PATCH 5/8] drm/msm/dpu: drop the dpu_core_perf_crtc_update()'s stop_req param
The stop_req is true only in the dpu_crtc_disable() case, when crtc->enable has already been set to false. This renders the stop_req argument useless. Remove it completely. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 12 ++-- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 3 +-- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 6 +++--- 3 files changed, 10 insertions(+), 11 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 f8d5c87d0915..773e641eab28 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c @@ -277,7 +277,7 @@ static u64 _dpu_core_perf_get_core_clk_rate(struct dpu_kms *kms) } int dpu_core_perf_crtc_update(struct drm_crtc *crtc, - int params_changed, bool stop_req) + int params_changed) { struct dpu_core_perf_params *new, *old; bool update_bus = false, update_clk = false; @@ -301,13 +301,13 @@ int dpu_core_perf_crtc_update(struct drm_crtc *crtc, dpu_crtc = to_dpu_crtc(crtc); dpu_cstate = to_dpu_crtc_state(crtc->state); - DRM_DEBUG_ATOMIC("crtc:%d stop_req:%d core_clk:%llu\n", - crtc->base.id, stop_req, kms->perf.core_clk_rate); + DRM_DEBUG_ATOMIC("crtc:%d enabled:%d core_clk:%llu\n", + crtc->base.id, crtc->enabled, kms->perf.core_clk_rate); old = _crtc->cur_perf; new = _cstate->new_perf; - if (crtc->enabled && !stop_req) { + if (crtc->enabled) { /* * cases for bus bandwidth update. * 1. new bandwidth vote - "ab or ib vote" is higher @@ -337,7 +337,7 @@ int dpu_core_perf_crtc_update(struct drm_crtc *crtc, } trace_dpu_perf_crtc_update(crtc->base.id, new->bw_ctl, - new->core_clk_rate, stop_req, update_bus, update_clk); + new->core_clk_rate, !crtc->enabled, update_bus, update_clk); if (update_bus) { ret = _dpu_core_perf_crtc_update_bus(kms, crtc); @@ -355,7 +355,7 @@ int dpu_core_perf_crtc_update(struct drm_crtc *crtc, if (update_clk) { clk_rate = _dpu_core_perf_get_core_clk_rate(kms); - trace_dpu_core_perf_update_clk(kms->dev, stop_req, clk_rate); + trace_dpu_core_perf_update_clk(kms->dev, !crtc->enabled, clk_rate); clk_rate = min(clk_rate, kms->perf.max_core_clk_rate); ret = dev_pm_opp_set_rate(>pdev->dev, clk_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 2bf7836f79bb..c29ec72984b8 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h @@ -58,11 +58,10 @@ int dpu_core_perf_crtc_check(struct drm_crtc *crtc, * dpu_core_perf_crtc_update - update performance of the given crtc * @crtc: Pointer to crtc * @params_changed: true if crtc parameters are modified - * @stop_req: true if this is a stop request * return: zero if success, or error code otherwise */ int dpu_core_perf_crtc_update(struct drm_crtc *crtc, - int params_changed, bool stop_req); + int params_changed); /** * dpu_core_perf_crtc_release_bw - release bandwidth of the given crtc diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c index ff5d306b95ed..214229d11e3e 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -718,7 +718,7 @@ static void dpu_crtc_frame_event_cb(void *data, u32 event) void dpu_crtc_complete_commit(struct drm_crtc *crtc) { trace_dpu_crtc_complete_commit(DRMID(crtc)); - dpu_core_perf_crtc_update(crtc, 0, false); + dpu_core_perf_crtc_update(crtc, 0); _dpu_crtc_complete_flip(crtc); } @@ -884,7 +884,7 @@ static void dpu_crtc_atomic_flush(struct drm_crtc *crtc, return; /* update performance setting before crtc kickoff */ - dpu_core_perf_crtc_update(crtc, 1, false); + dpu_core_perf_crtc_update(crtc, 1); /* * Final plane updates: Give each plane a chance to complete all @@ -1100,7 +1100,7 @@ static void dpu_crtc_disable(struct drm_crtc *crtc, atomic_set(_crtc->frame_pending, 0); } - dpu_core_perf_crtc_update(crtc, 0, true); + dpu_core_perf_crtc_update(crtc, 0); drm_for_each_encoder_mask(encoder, crtc->dev, crtc->state->encoder_mask) dpu_encoder_register_frame_event_callback(encoder, NULL, NULL); -- 2.39.2
[Freedreno] [PATCH 3/8] drm/msm/dpu: drop dpu_core_perf_params::max_per_pipe_ib
The max_per_pipe_ib is a constant across all CRTCs and is read from the catalog. Drop corresponding calculations and read the value directly at icc_set_bw() time. Suggested-by: Konrad Dybcio Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 17 + drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 2 -- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 2 -- 3 files changed, 5 insertions(+), 16 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 9902febc72c0..ba146af73bc5 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c @@ -105,13 +105,12 @@ static void _dpu_core_perf_calc_crtc(struct dpu_kms *kms, memset(perf, 0, sizeof(struct dpu_core_perf_params)); perf->bw_ctl = _dpu_core_perf_calc_bw(kms, crtc); - perf->max_per_pipe_ib = kms->catalog->perf->min_dram_ib; perf->core_clk_rate = _dpu_core_perf_calc_clk(kms, crtc, state); DRM_DEBUG_ATOMIC( - "crtc=%d clk_rate=%llu core_ib=%llu core_ab=%llu\n", + "crtc=%d clk_rate=%llu core_ab=%llu\n", crtc->base.id, perf->core_clk_rate, - perf->max_per_pipe_ib, perf->bw_ctl); + perf->bw_ctl); } int dpu_core_perf_crtc_check(struct drm_crtc *crtc, @@ -199,9 +198,6 @@ static int _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms, dpu_crtc_get_client_type(tmp_crtc)) { dpu_cstate = to_dpu_crtc_state(tmp_crtc->state); - perf.max_per_pipe_ib = max(perf.max_per_pipe_ib, - dpu_cstate->new_perf.max_per_pipe_ib); - perf.bw_ctl += dpu_cstate->new_perf.bw_ctl; DRM_DEBUG_ATOMIC("crtc=%d bw=%llu paths:%d\n", @@ -217,7 +213,7 @@ static int _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms, do_div(avg_bw, (kms->num_paths * 1000)); /*Bps_to_icc*/ for (i = 0; i < kms->num_paths; i++) - icc_set_bw(kms->path[i], avg_bw, perf.max_per_pipe_ib); + icc_set_bw(kms->path[i], avg_bw, kms->catalog->perf->min_dram_ib); return ret; } @@ -320,15 +316,12 @@ int dpu_core_perf_crtc_update(struct drm_crtc *crtc, * 2. new bandwidth vote - "ab or ib vote" is lower *than current vote at end of commit or stop. */ - if ((params_changed && ((new->bw_ctl > old->bw_ctl) || - (new->max_per_pipe_ib > old->max_per_pipe_ib))) || - (!params_changed && ((new->bw_ctl < old->bw_ctl) || - (new->max_per_pipe_ib < old->max_per_pipe_ib { + if ((params_changed && new->bw_ctl > old->bw_ctl) || + (!params_changed && new->bw_ctl < old->bw_ctl)) { DRM_DEBUG_ATOMIC("crtc=%d p=%d new_bw=%llu,old_bw=%llu\n", crtc->base.id, params_changed, new->bw_ctl, old->bw_ctl); old->bw_ctl = new->bw_ctl; - old->max_per_pipe_ib = new->max_per_pipe_ib; update_bus = true; } 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 e02cc2324af2..2bf7836f79bb 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h @@ -16,12 +16,10 @@ /** * struct dpu_core_perf_params - definition of performance parameters - * @max_per_pipe_ib: maximum instantaneous bandwidth request * @bw_ctl: arbitrated bandwidth request * @core_clk_rate: core clock rate request */ struct dpu_core_perf_params { - u64 max_per_pipe_ib; u64 bw_ctl; u64 core_clk_rate; }; diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c index 1edf2b6b0a26..ff5d306b95ed 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -1400,8 +1400,6 @@ static int dpu_crtc_debugfs_state_show(struct seq_file *s, void *v) seq_printf(s, "core_clk_rate: %llu\n", dpu_crtc->cur_perf.core_clk_rate); seq_printf(s, "bw_ctl: %llu\n", dpu_crtc->cur_perf.bw_ctl); - seq_printf(s, "max_per_pipe_ib: %llu\n", - dpu_crtc->cur_perf.max_per_pipe_ib); return 0; } -- 2.39.2
[Freedreno] [PATCH 2/8] drm/msm/dpu: drop performance tuning modes
DPU performance module contains code to change performance state calculations. In addition to normal (sum plane and CRTC requirements), it can work in 'minimal' or 'fixed' modes. Both modes are impractical, since they can easily end up with the display underruns. Userspace also should not depend on these modes availability, since they are tuned through debugfs, which might not be available. Drop relevant code to simplify performance state calculations. Suggested-by: Konrad Dybcio Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 99 +-- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 19 2 files changed, 4 insertions(+), 114 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 1d9d83d7b99e..9902febc72c0 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c @@ -17,20 +17,6 @@ #include "dpu_crtc.h" #include "dpu_core_perf.h" -/** - * enum dpu_perf_mode - performance tuning mode - * @DPU_PERF_MODE_NORMAL: performance controlled by user mode client - * @DPU_PERF_MODE_MINIMUM: performance bounded by minimum setting - * @DPU_PERF_MODE_FIXED: performance bounded by fixed setting - * @DPU_PERF_MODE_MAX: maximum value, used for error checking - */ -enum dpu_perf_mode { - DPU_PERF_MODE_NORMAL, - DPU_PERF_MODE_MINIMUM, - DPU_PERF_MODE_FIXED, - DPU_PERF_MODE_MAX -}; - /** * _dpu_core_perf_calc_bw() - to calculate BW per crtc * @kms: pointer to the dpu_kms @@ -118,19 +104,9 @@ static void _dpu_core_perf_calc_crtc(struct dpu_kms *kms, memset(perf, 0, sizeof(struct dpu_core_perf_params)); - if (kms->perf.perf_tune.mode == DPU_PERF_MODE_MINIMUM) { - perf->bw_ctl = 0; - perf->max_per_pipe_ib = 0; - perf->core_clk_rate = 0; - } else if (kms->perf.perf_tune.mode == DPU_PERF_MODE_FIXED) { - perf->bw_ctl = kms->perf.fix_core_ab_vote; - perf->max_per_pipe_ib = kms->perf.fix_core_ib_vote; - perf->core_clk_rate = kms->perf.fix_core_clk_rate; - } else { - perf->bw_ctl = _dpu_core_perf_calc_bw(kms, crtc); - perf->max_per_pipe_ib = kms->catalog->perf->min_dram_ib; - perf->core_clk_rate = _dpu_core_perf_calc_clk(kms, crtc, state); - } + perf->bw_ctl = _dpu_core_perf_calc_bw(kms, crtc); + perf->max_per_pipe_ib = kms->catalog->perf->min_dram_ib; + perf->core_clk_rate = _dpu_core_perf_calc_clk(kms, crtc, state); DRM_DEBUG_ATOMIC( "crtc=%d clk_rate=%llu core_ib=%llu core_ab=%llu\n", @@ -286,7 +262,7 @@ void dpu_core_perf_crtc_release_bw(struct drm_crtc *crtc) static u64 _dpu_core_perf_get_core_clk_rate(struct dpu_kms *kms) { - u64 clk_rate = kms->perf.perf_tune.min_core_clk; + u64 clk_rate = 0; struct drm_crtc *crtc; struct dpu_crtc_state *dpu_cstate; @@ -300,9 +276,6 @@ static u64 _dpu_core_perf_get_core_clk_rate(struct dpu_kms *kms) } } - if (kms->perf.perf_tune.mode == DPU_PERF_MODE_FIXED) - clk_rate = kms->perf.fix_core_clk_rate; - DRM_DEBUG_ATOMIC("clk:%llu\n", clk_rate); return clk_rate; @@ -409,62 +382,6 @@ int dpu_core_perf_crtc_update(struct drm_crtc *crtc, #ifdef CONFIG_DEBUG_FS -static ssize_t _dpu_core_perf_mode_write(struct file *file, - const char __user *user_buf, size_t count, loff_t *ppos) -{ - struct dpu_core_perf *perf = file->private_data; - const struct dpu_perf_cfg *cfg = perf->catalog->perf; - u32 perf_mode = 0; - int ret; - - ret = kstrtouint_from_user(user_buf, count, 0, _mode); - if (ret) - return ret; - - if (perf_mode >= DPU_PERF_MODE_MAX) - return -EINVAL; - - if (perf_mode == DPU_PERF_MODE_FIXED) { - DRM_INFO("fix performance mode\n"); - } else if (perf_mode == DPU_PERF_MODE_MINIMUM) { - /* run the driver with max clk and BW vote */ - perf->perf_tune.min_core_clk = perf->max_core_clk_rate; - perf->perf_tune.min_bus_vote = - (u64) cfg->max_bw_high * 1000; - DRM_INFO("minimum performance mode\n"); - } else if (perf_mode == DPU_PERF_MODE_NORMAL) { - /* reset the perf tune params to 0 */ - perf->perf_tune.min_core_clk = 0; - perf->perf_tune.min_bus_vote = 0; - DRM_INFO("normal performance mode\n"); - } - perf->perf_tune.mode = perf_mode; - - return count; -} - -static ssize_t _dpu_core_perf_mode_read(struct file *file, - char __user *buff, size_t count, loff_t *ppos) -{ - struct dpu_core_perf *perf = file->private_data; - int len; - char buf[128]; - - len =
[Freedreno] [PATCH 1/8] drm/msm/dpu: drop enum dpu_core_perf_data_bus_id
Drop the leftover of bus-client -> interconnect conversion, the enum dpu_core_perf_data_bus_id. Fixes: cb88482e2570 ("drm/msm/dpu: clean up references of DPU custom bus scaling") Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 13 - 1 file changed, 13 deletions(-) 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 e3795995e145..29bb8ee2bc26 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h @@ -14,19 +14,6 @@ #defineDPU_PERF_DEFAULT_MAX_CORE_CLK_RATE 41250 -/** - * enum dpu_core_perf_data_bus_id - data bus identifier - * @DPU_CORE_PERF_DATA_BUS_ID_MNOC: DPU/MNOC data bus - * @DPU_CORE_PERF_DATA_BUS_ID_LLCC: MNOC/LLCC data bus - * @DPU_CORE_PERF_DATA_BUS_ID_EBI: LLCC/EBI data bus - */ -enum dpu_core_perf_data_bus_id { - DPU_CORE_PERF_DATA_BUS_ID_MNOC, - DPU_CORE_PERF_DATA_BUS_ID_LLCC, - DPU_CORE_PERF_DATA_BUS_ID_EBI, - DPU_CORE_PERF_DATA_BUS_ID_MAX, -}; - /** * struct dpu_core_perf_params - definition of performance parameters * @max_per_pipe_ib: maximum instantaneous bandwidth request -- 2.39.2
[Freedreno] [PATCH 0/8] drm/msm/dpu: cleanup dpu_core_perf module
Apply several cleanups to the DPU's core_perf module. Dmitry Baryshkov (8): drm/msm/dpu: drop enum dpu_core_perf_data_bus_id drm/msm/dpu: drop performance tuning modes drm/msm/dpu: drop dpu_core_perf_params::max_per_pipe_ib drm/msm/dpu: rework indentation in dpu_core_perf drm/msm/dpu: drop the dpu_core_perf_crtc_update()'s stop_req param drm/msm/dpu: use dpu_perf_cfg in DPU core_perf code drm/msm/dpu: drop dpu_core_perf_destroy() drm/msm/dpu: remove unused fields from struct dpu_core_perf drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 199 -- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 55 + drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 8 +- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 3 +- 4 files changed, 47 insertions(+), 218 deletions(-) -- 2.39.2
Re: [Freedreno] [PATCH] drm/msm: Fix typo in comment
On 18/06/2023 17:54, zhumao...@208suo.com wrote: Fix typo in comment of msm_gem.c. Signed-off-by: Zhu Mao --- drivers/gpu/drm/msm/msm_gem.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) This patch doesn't apply. Please use git send-email to send patches. -- With best wishes Dmitry
Re: [Freedreno] [PATCH v3 2/2] drm/msm/dpu: remove struct drm_dsc_config from struct msm_display_info
On 14/06/2023 01:19, Kuogee Hsieh wrote: ince struct drm_dsc_config is stored at atomic_enable() instead of display setup time during boot up, saving struct drm_dsc_config at struct msm_display_info is not necessary. Lets drop the dsc member from struct msm_display_info. With the 'S' in 'Since' brought back in place: Reviewed-by: Dmitry Baryshkov Signed-off-by: Kuogee Hsieh --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 2 -- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h | 2 -- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 2 -- 3 files changed, 6 deletions(-) -- With best wishes Dmitry
Re: [Freedreno] [PATCH v3 1/2] drm/msm/dpu: retrieve DSI DSC struct through priv->dsi[0]
On 14/06/2023 01:19, Kuogee Hsieh wrote: Currently struct drm_dsc_config for DSI is populated at display setup during system boot up. This mechanism works fine with embedded display but not for pluggable displays as the struct drm_dsc_config will become stale once external display is unplugged. Move storing of DSI DSC struct to atomic_enable() so that same mechanism will work for both embedded display and pluggable displays. Signed-off-by: Kuogee Hsieh --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 42 - 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c index 2e1873d..e00cd39 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -543,11 +543,24 @@ bool dpu_encoder_use_dsc_merge(struct drm_encoder *drm_enc) return (num_dsc > 0) && (num_dsc > intf_count); } +static struct drm_dsc_config *dpu_encoder_get_dsc_config(struct drm_encoder *drm_enc) +{ + struct msm_drm_private *priv = drm_enc->dev->dev_private; + struct dpu_encoder_virt *dpu_enc = to_dpu_encoder_virt(drm_enc); + int index = dpu_enc->disp_info.h_tile_instance[0]; + +if (dpu_enc->disp_info.intf_type == INTF_DSI) + return msm_dsi_get_dsc_config(priv->dsi[index]); Wrong indentation. + + return NULL; +} + A string of 4 tabs causes checkpatch.pl to report an error. static struct msm_display_topology dpu_encoder_get_topology( struct dpu_encoder_virt *dpu_enc, struct dpu_kms *dpu_kms, struct drm_display_mode *mode, - struct drm_crtc_state *crtc_state) + struct drm_crtc_state *crtc_state, + struct drm_dsc_config *dsc) { struct msm_display_topology topology = {0}; int i, intf_count = 0; @@ -579,7 +592,7 @@ static struct msm_display_topology dpu_encoder_get_topology( topology.num_intf = intf_count; - if (dpu_enc->dsc) { + if (dsc) { /* * In case of Display Stream Compression (DSC), we would use * 2 DSC encoders, 2 layer mixers and 1 interface @@ -605,6 +618,7 @@ static int dpu_encoder_virt_atomic_check( struct drm_display_mode *adj_mode; struct msm_display_topology topology; struct dpu_global_state *global_state; + struct drm_dsc_config *dsc; int i = 0; int ret = 0; @@ -640,7 +654,9 @@ static int dpu_encoder_virt_atomic_check( } } - topology = dpu_encoder_get_topology(dpu_enc, dpu_kms, adj_mode, crtc_state); + dsc = dpu_encoder_get_dsc_config(drm_enc); + + topology = dpu_encoder_get_topology(dpu_enc, dpu_kms, adj_mode, crtc_state, dsc); /* * Release and Allocate resources on every modeset @@ -1072,14 +1088,12 @@ static void dpu_encoder_virt_atomic_mode_set(struct drm_encoder *drm_enc, dpu_enc->hw_pp[i] = i < num_pp ? to_dpu_hw_pingpong(hw_pp[i]) : NULL; - if (dpu_enc->dsc) { - num_dsc = dpu_rm_get_assigned_resources(_kms->rm, global_state, - drm_enc->base.id, DPU_HW_BLK_DSC, - hw_dsc, ARRAY_SIZE(hw_dsc)); - for (i = 0; i < num_dsc; i++) { - dpu_enc->hw_dsc[i] = to_dpu_hw_dsc(hw_dsc[i]); - dsc_mask |= BIT(dpu_enc->hw_dsc[i]->idx - DSC_0); - } + num_dsc = dpu_rm_get_assigned_resources(_kms->rm, global_state, + drm_enc->base.id, DPU_HW_BLK_DSC, + hw_dsc, ARRAY_SIZE(hw_dsc)); + for (i = 0; i < num_dsc; i++) { + dpu_enc->hw_dsc[i] = to_dpu_hw_dsc(hw_dsc[i]); + dsc_mask |= BIT(dpu_enc->hw_dsc[i]->idx - DSC_0); } dpu_enc->dsc_mask = dsc_mask; @@ -1187,6 +1201,8 @@ static void dpu_encoder_virt_atomic_enable(struct drm_encoder *drm_enc, dpu_enc = to_dpu_encoder_virt(drm_enc); + dpu_enc->dsc = dpu_encoder_get_dsc_config(drm_enc); + mutex_lock(_enc->enc_lock); cur_mode = _enc->base.crtc->state->adjusted_mode; @@ -2109,8 +2125,10 @@ void dpu_encoder_helper_phys_cleanup(struct dpu_encoder_phys *phys_enc) phys_enc->hw_pp->merge_3d->idx); } - if (dpu_enc->dsc) + if (dpu_enc->dsc) { dpu_encoder_unprep_dsc(dpu_enc); + dpu_enc->dsc = NULL; + } intf_cfg.stream_sel = 0; /* Don't care value for video mode */ intf_cfg.mode_3d = dpu_encoder_helper_get_3d_blend_mode(phys_enc); -- With best wishes Dmitry
[Freedreno] [PATCH v4 17/19] drm/msm/dpu: inline INTF_BLK and INTF_BLK_DSI_TE macros
To simplify making changes to the hardware block definitions, expand corresponding macros. This way making all the changes are more obvious and visible in the source files. Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- .../msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 52 ++-- .../msm/disp/dpu1/catalog/dpu_4_0_sdm845.h| 53 ++-- .../msm/disp/dpu1/catalog/dpu_5_0_sm8150.h| 55 ++-- .../msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 82 +--- .../msm/disp/dpu1/catalog/dpu_6_0_sm8250.h| 55 ++-- .../msm/disp/dpu1/catalog/dpu_6_2_sc7180.h| 28 +++- .../msm/disp/dpu1/catalog/dpu_6_3_sm6115.h| 15 ++- .../msm/disp/dpu1/catalog/dpu_6_4_sm6350.h| 28 +++- .../msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 15 ++- .../msm/disp/dpu1/catalog/dpu_6_9_sm6375.h| 15 ++- .../msm/disp/dpu1/catalog/dpu_7_0_sm8350.h| 55 ++-- .../msm/disp/dpu1/catalog/dpu_7_2_sc7280.h| 41 -- .../msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 120 +- .../msm/disp/dpu1/catalog/dpu_8_1_sm8450.h| 55 ++-- .../msm/disp/dpu1/catalog/dpu_9_0_sm8550.h| 55 ++-- .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c| 30 - 16 files changed, 545 insertions(+), 209 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index 9181d3ef8013..4ce25ed4e36f 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -241,18 +241,46 @@ static const struct dpu_dspp_cfg msm8998_dspp[] = { }; static const struct dpu_intf_cfg msm8998_intf[] = { - INTF_BLK("intf_0", INTF_0, 0x6a000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 21, INTF_SDM845_MASK, - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 24), - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 25)), - INTF_BLK("intf_1", INTF_1, 0x6a800, 0x280, INTF_DSI, MSM_DSI_CONTROLLER_0, 21, INTF_SDM845_MASK, - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 26), - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 27)), - INTF_BLK("intf_2", INTF_2, 0x6b000, 0x280, INTF_DSI, MSM_DSI_CONTROLLER_1, 21, INTF_SDM845_MASK, - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 28), - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 29)), - INTF_BLK("intf_3", INTF_3, 0x6b800, 0x280, INTF_HDMI, 0, 21, INTF_SDM845_MASK, - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 30), - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 31)), + { + .name = "intf_0", .id = INTF_0, + .base = 0x6a000, .len = 0x280, + .features = INTF_SDM845_MASK, + .type = INTF_DP, + .controller_id = MSM_DP_CONTROLLER_0, + .prog_fetch_lines_worst_case = 21, + .intr_underrun = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 24), + .intr_vsync = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 25), + .intr_tear_rd_ptr = -1, + }, { + .name = "intf_1", .id = INTF_1, + .base = 0x6a800, .len = 0x280, + .features = INTF_SDM845_MASK, + .type = INTF_DSI, + .controller_id = MSM_DSI_CONTROLLER_0, + .prog_fetch_lines_worst_case = 21, + .intr_underrun = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 26), + .intr_vsync = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 27), + .intr_tear_rd_ptr = -1, + }, { + .name = "intf_2", .id = INTF_2, + .base = 0x6b000, .len = 0x280, + .features = INTF_SDM845_MASK, + .type = INTF_DSI, + .controller_id = MSM_DSI_CONTROLLER_1, + .prog_fetch_lines_worst_case = 21, + .intr_underrun = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 28), + .intr_vsync = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 29), + .intr_tear_rd_ptr = -1, + }, { + .name = "intf_3", .id = INTF_3, + .base = 0x6b800, .len = 0x280, + .features = INTF_SDM845_MASK, + .type = INTF_HDMI, + .prog_fetch_lines_worst_case = 21, + .intr_underrun = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 30), + .intr_vsync = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 31), + .intr_tear_rd_ptr = -1, + }, }; static const struct dpu_perf_cfg msm8998_perf_data = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index 8119a81ff260..5ad82b109ebb 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -257,18 +257,47 @@ static const struct dpu_dsc_cfg sdm845_dsc[] = { }; static const struct dpu_intf_cfg sdm845_intf[] = { - INTF_BLK("intf_0", INTF_0, 0x6a000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24,
[Freedreno] [PATCH v4 16/19] drm/msm/dpu: inline WB_BLK macros
To simplify making changes to the hardware block definitions, expand corresponding macros. This way making all the changes are more obvious and visible in the source files. Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- .../drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h | 14 -- .../drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h | 14 -- .../drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h | 14 -- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 18 -- 4 files changed, 36 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h index c8f4c6326a1a..9148d7da62e4 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h @@ -323,8 +323,18 @@ static const struct dpu_intf_cfg sm8250_intf[] = { }; static const struct dpu_wb_cfg sm8250_wb[] = { - WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, - VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4), + { + .name = "wb_2", .id = WB_2, + .base = 0x65000, .len = 0x2c8, + .features = WB_SM8250_MASK, + .format_list = wb2_formats, + .num_formats = ARRAY_SIZE(wb2_formats), + .clk_ctrl = DPU_CLK_CTRL_WB2, + .xin_id = 6, + .vbif_idx = VBIF_RT, + .maxlinewidth = 4096, + .intr_wb_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 4), + }, }; static const struct dpu_perf_cfg sm8250_perf_data = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h index d7d117e3af36..904c758a60df 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h @@ -148,8 +148,18 @@ static const struct dpu_intf_cfg sc7180_intf[] = { }; static const struct dpu_wb_cfg sc7180_wb[] = { - WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, - VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4), + { + .name = "wb_2", .id = WB_2, + .base = 0x65000, .len = 0x2c8, + .features = WB_SM8250_MASK, + .format_list = wb2_formats, + .num_formats = ARRAY_SIZE(wb2_formats), + .clk_ctrl = DPU_CLK_CTRL_WB2, + .xin_id = 6, + .vbif_idx = VBIF_RT, + .maxlinewidth = 4096, + .intr_wb_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 4), + }, }; static const struct dpu_perf_cfg sc7180_perf_data = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h index 3b67010f336b..7b5c9a77b102 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h @@ -176,8 +176,18 @@ static const struct dpu_dsc_cfg sc7280_dsc[] = { }; static const struct dpu_wb_cfg sc7280_wb[] = { - WB_BLK("wb_2", WB_2, 0x65000, WB_SM8250_MASK, DPU_CLK_CTRL_WB2, 6, - VBIF_RT, MDP_SSPP_TOP0_INTR, 4096, 4), + { + .name = "wb_2", .id = WB_2, + .base = 0x65000, .len = 0x2c8, + .features = WB_SM8250_MASK, + .format_list = wb2_formats, + .num_formats = ARRAY_SIZE(wb2_formats), + .clk_ctrl = DPU_CLK_CTRL_WB2, + .xin_id = 6, + .vbif_idx = VBIF_RT, + .maxlinewidth = 4096, + .intr_wb_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 4), + }, }; static const struct dpu_intf_cfg sc7280_intf[] = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c index 3ea63ca358a4..d2bca1ec0e63 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c @@ -493,24 +493,6 @@ static const struct dpu_dsc_sub_blks dsc_sblk_1 = { .intr_tear_rd_ptr = _tear_rd_ptr, \ } -/* - * Writeback blocks config - */ -#define WB_BLK(_name, _id, _base, _features, _clk_ctrl, \ - __xin_id, vbif_id, _reg, _max_linewidth, _wb_done_bit) \ - { \ - .name = _name, .id = _id, \ - .base = _base, .len = 0x2c8, \ - .features = _features, \ - .format_list = wb2_formats, \ - .num_formats = ARRAY_SIZE(wb2_formats), \ - .clk_ctrl = _clk_ctrl, \ - .xin_id = __xin_id, \ - .vbif_idx = vbif_id, \ - .maxlinewidth = _max_linewidth, \ - .intr_wb_done = DPU_IRQ_IDX(_reg, _wb_done_bit) \ - } - /* * VBIF sub blocks
[Freedreno] [PATCH v4 14/19] drm/msm/dpu: inline MERGE_3D_BLK macros
To simplify making changes to the hardware block definitions, expand corresponding macros. This way making all the changes are more obvious and visible in the source files. Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- .../msm/disp/dpu1/catalog/dpu_5_0_sm8150.h| 16 +++--- .../msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 16 +++--- .../msm/disp/dpu1/catalog/dpu_6_0_sm8250.h| 16 +++--- .../msm/disp/dpu1/catalog/dpu_7_0_sm8350.h| 16 +++--- .../msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 16 +++--- .../msm/disp/dpu1/catalog/dpu_8_1_sm8450.h| 21 +++ .../msm/disp/dpu1/catalog/dpu_9_0_sm8550.h| 21 +++ .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c| 11 -- 8 files changed, 99 insertions(+), 34 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h index 9b2de5986e82..0e09e759dc99 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h @@ -239,9 +239,19 @@ static const struct dpu_pingpong_cfg sm8150_pp[] = { }; static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { - MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000), - MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100), - MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), + { + .name = "merge_3d_0", .id = MERGE_3D_0, + .base = 0x83000, .len = 0x8, + .features = MERGE_3D_SM8150_MASK, + }, { + .name = "merge_3d_1", .id = MERGE_3D_1, + .base = 0x83100, .len = 0x8, + .features = MERGE_3D_SM8150_MASK, + }, { + .name = "merge_3d_2", .id = MERGE_3D_2, + .base = 0x83200, .len = 0x8, + .features = MERGE_3D_SM8150_MASK, + }, }; static const struct dpu_dsc_cfg sm8150_dsc[] = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h index 683602e54c0e..4d2b0409a244 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h @@ -238,9 +238,19 @@ static const struct dpu_pingpong_cfg sc8180x_pp[] = { }; static const struct dpu_merge_3d_cfg sc8180x_merge_3d[] = { - MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000), - MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100), - MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), + { + .name = "merge_3d_0", .id = MERGE_3D_0, + .base = 0x83000, .len = 0x8, + .features = MERGE_3D_SM8150_MASK, + }, { + .name = "merge_3d_1", .id = MERGE_3D_1, + .base = 0x83100, .len = 0x8, + .features = MERGE_3D_SM8150_MASK, + }, { + .name = "merge_3d_2", .id = MERGE_3D_2, + .base = 0x83200, .len = 0x8, + .features = MERGE_3D_SM8150_MASK, + }, }; static const struct dpu_dsc_cfg sc8180x_dsc[] = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h index a98d63f6c47c..50f857565dbf 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h @@ -239,9 +239,19 @@ static const struct dpu_pingpong_cfg sm8250_pp[] = { }; static const struct dpu_merge_3d_cfg sm8250_merge_3d[] = { - MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x83000), - MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x83100), - MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x83200), + { + .name = "merge_3d_0", .id = MERGE_3D_0, + .base = 0x83000, .len = 0x8, + .features = MERGE_3D_SM8150_MASK, + }, { + .name = "merge_3d_1", .id = MERGE_3D_1, + .base = 0x83100, .len = 0x8, + .features = MERGE_3D_SM8150_MASK, + }, { + .name = "merge_3d_2", .id = MERGE_3D_2, + .base = 0x83200, .len = 0x8, + .features = MERGE_3D_SM8150_MASK, + }, }; static const struct dpu_dsc_cfg sm8250_dsc[] = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h index 8a9bfc4af72a..0added438239 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h @@ -237,9 +237,19 @@ static const struct dpu_pingpong_cfg sm8350_pp[] = { }; static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = { - MERGE_3D_BLK("merge_3d_0", MERGE_3D_0, 0x4e000), - MERGE_3D_BLK("merge_3d_1", MERGE_3D_1, 0x4f000), - MERGE_3D_BLK("merge_3d_2", MERGE_3D_2, 0x5), + { + .name = "merge_3d_0", .id = MERGE_3D_0, + .base =
[Freedreno] [PATCH v4 13/19] drm/msm/dpu: inline DSC_BLK and DSC_BLK_1_2 macros
To simplify making changes to the hardware block definitions, expand corresponding macros. This way making all the changes are more obvious and visible in the source files. Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- .../msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 9 - .../msm/disp/dpu1/catalog/dpu_4_0_sdm845.h| 17 +++-- .../msm/disp/dpu1/catalog/dpu_5_0_sm8150.h| 21 +-- .../msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 31 +--- .../msm/disp/dpu1/catalog/dpu_6_0_sm8250.h| 21 +-- .../msm/disp/dpu1/catalog/dpu_6_4_sm6350.h| 6 ++- .../msm/disp/dpu1/catalog/dpu_6_9_sm6375.h| 6 ++- .../msm/disp/dpu1/catalog/dpu_7_0_sm8350.h| 25 +++-- .../msm/disp/dpu1/catalog/dpu_7_2_sc7280.h| 7 +++- .../msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 37 --- .../msm/disp/dpu1/catalog/dpu_8_1_sm8450.h| 25 +++-- .../msm/disp/dpu1/catalog/dpu_9_0_sm8550.h| 25 +++-- .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c| 15 13 files changed, 189 insertions(+), 56 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index a07c68744b29..d5111f3782a2 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -200,8 +200,13 @@ static const struct dpu_pingpong_cfg msm8998_pp[] = { }; static const struct dpu_dsc_cfg msm8998_dsc[] = { - DSC_BLK("dsc_0", DSC_0, 0x8, 0), - DSC_BLK("dsc_1", DSC_1, 0x80400, 0), + { + .name = "dsc_0", .id = DSC_0, + .base = 0x8, .len = 0x140, + }, { + .name = "dsc_1", .id = DSC_1, + .base = 0x80400, .len = 0x140, + }, }; static const struct dpu_dspp_cfg msm8998_dspp[] = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index 786263ed1ef2..b6f52b3864ce 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -224,10 +224,19 @@ static const struct dpu_pingpong_cfg sdm845_pp[] = { }; static const struct dpu_dsc_cfg sdm845_dsc[] = { - DSC_BLK("dsc_0", DSC_0, 0x8, 0), - DSC_BLK("dsc_1", DSC_1, 0x80400, 0), - DSC_BLK("dsc_2", DSC_2, 0x80800, 0), - DSC_BLK("dsc_3", DSC_3, 0x80c00, 0), + { + .name = "dsc_0", .id = DSC_0, + .base = 0x8, .len = 0x140, + }, { + .name = "dsc_1", .id = DSC_1, + .base = 0x80400, .len = 0x140, + }, { + .name = "dsc_2", .id = DSC_2, + .base = 0x80800, .len = 0x140, + }, { + .name = "dsc_3", .id = DSC_3, + .base = 0x80c00, .len = 0x140, + }, }; static const struct dpu_intf_cfg sdm845_intf[] = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h index 6b9bfeac6e0a..9b2de5986e82 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h @@ -245,10 +245,23 @@ static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { }; static const struct dpu_dsc_cfg sm8150_dsc[] = { - DSC_BLK("dsc_0", DSC_0, 0x8, BIT(DPU_DSC_OUTPUT_CTRL)), - DSC_BLK("dsc_1", DSC_1, 0x80400, BIT(DPU_DSC_OUTPUT_CTRL)), - DSC_BLK("dsc_2", DSC_2, 0x80800, BIT(DPU_DSC_OUTPUT_CTRL)), - DSC_BLK("dsc_3", DSC_3, 0x80c00, BIT(DPU_DSC_OUTPUT_CTRL)), + { + .name = "dsc_0", .id = DSC_0, + .base = 0x8, .len = 0x140, + .features = BIT(DPU_DSC_OUTPUT_CTRL), + }, { + .name = "dsc_1", .id = DSC_1, + .base = 0x80400, .len = 0x140, + .features = BIT(DPU_DSC_OUTPUT_CTRL), + }, { + .name = "dsc_2", .id = DSC_2, + .base = 0x80800, .len = 0x140, + .features = BIT(DPU_DSC_OUTPUT_CTRL), + }, { + .name = "dsc_3", .id = DSC_3, + .base = 0x80c00, .len = 0x140, + .features = BIT(DPU_DSC_OUTPUT_CTRL), + }, }; static const struct dpu_intf_cfg sm8150_intf[] = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h index 414f0db3306c..683602e54c0e 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h @@ -244,12 +244,31 @@ static const struct dpu_merge_3d_cfg sc8180x_merge_3d[] = { }; static const struct dpu_dsc_cfg sc8180x_dsc[] = { - DSC_BLK("dsc_0", DSC_0, 0x8, BIT(DPU_DSC_OUTPUT_CTRL)), - DSC_BLK("dsc_1", DSC_1, 0x80400, BIT(DPU_DSC_OUTPUT_CTRL)), - DSC_BLK("dsc_2", DSC_2,
[Freedreno] [PATCH v4 19/19] drm/msm/dpu: drop empty features mask INTF_SDM845_MASK
The INTF_SDM845_MASK features mask is zero. Drop it completely. Reviewed-by: Marijn Suijten Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 4 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h | 4 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 2 -- 3 files changed, 10 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index 4ce25ed4e36f..7d87dc2d7b1b 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -244,7 +244,6 @@ static const struct dpu_intf_cfg msm8998_intf[] = { { .name = "intf_0", .id = INTF_0, .base = 0x6a000, .len = 0x280, - .features = INTF_SDM845_MASK, .type = INTF_DP, .controller_id = MSM_DP_CONTROLLER_0, .prog_fetch_lines_worst_case = 21, @@ -254,7 +253,6 @@ static const struct dpu_intf_cfg msm8998_intf[] = { }, { .name = "intf_1", .id = INTF_1, .base = 0x6a800, .len = 0x280, - .features = INTF_SDM845_MASK, .type = INTF_DSI, .controller_id = MSM_DSI_CONTROLLER_0, .prog_fetch_lines_worst_case = 21, @@ -264,7 +262,6 @@ static const struct dpu_intf_cfg msm8998_intf[] = { }, { .name = "intf_2", .id = INTF_2, .base = 0x6b000, .len = 0x280, - .features = INTF_SDM845_MASK, .type = INTF_DSI, .controller_id = MSM_DSI_CONTROLLER_1, .prog_fetch_lines_worst_case = 21, @@ -274,7 +271,6 @@ static const struct dpu_intf_cfg msm8998_intf[] = { }, { .name = "intf_3", .id = INTF_3, .base = 0x6b800, .len = 0x280, - .features = INTF_SDM845_MASK, .type = INTF_HDMI, .prog_fetch_lines_worst_case = 21, .intr_underrun = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 30), diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index 5ad82b109ebb..66e3573eb613 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -260,7 +260,6 @@ static const struct dpu_intf_cfg sdm845_intf[] = { { .name = "intf_0", .id = INTF_0, .base = 0x6a000, .len = 0x280, - .features = INTF_SDM845_MASK, .type = INTF_DP, .controller_id = MSM_DP_CONTROLLER_0, .prog_fetch_lines_worst_case = 24, @@ -270,7 +269,6 @@ static const struct dpu_intf_cfg sdm845_intf[] = { }, { .name = "intf_1", .id = INTF_1, .base = 0x6a800, .len = 0x280, - .features = INTF_SDM845_MASK, .type = INTF_DSI, .controller_id = MSM_DSI_CONTROLLER_0, .prog_fetch_lines_worst_case = 24, @@ -280,7 +278,6 @@ static const struct dpu_intf_cfg sdm845_intf[] = { }, { .name = "intf_2", .id = INTF_2, .base = 0x6b000, .len = 0x280, - .features = INTF_SDM845_MASK, .type = INTF_DSI, .controller_id = MSM_DSI_CONTROLLER_1, .prog_fetch_lines_worst_case = 24, @@ -290,7 +287,6 @@ static const struct dpu_intf_cfg sdm845_intf[] = { }, { .name = "intf_3", .id = INTF_3, .base = 0x6b800, .len = 0x280, - .features = INTF_SDM845_MASK, .type = INTF_DP, .controller_id = MSM_DP_CONTROLLER_1, .prog_fetch_lines_worst_case = 24, diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c index 4a18fc66a412..3efa22429e5f 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c @@ -95,8 +95,6 @@ #define DSPP_SC7180_MASK BIT(DPU_DSPP_PCC) -#define INTF_SDM845_MASK (0) - #define INTF_SC7180_MASK \ (BIT(DPU_INTF_INPUT_CTRL) | \ BIT(DPU_INTF_TE) | \ -- 2.39.2
[Freedreno] [PATCH v4 15/19] drm/msm/dpu: inline various PP_BLK_* macros
To simplify making changes to the hardware block definitions, expand corresponding macros. This way making all the changes are more obvious and visible in the source files. Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- .../msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 41 ++--- .../msm/disp/dpu1/catalog/dpu_4_0_sdm845.h| 41 ++--- .../msm/disp/dpu1/catalog/dpu_5_0_sm8150.h| 67 ++ .../msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 67 ++ .../msm/disp/dpu1/catalog/dpu_6_0_sm8250.h| 67 ++ .../msm/disp/dpu1/catalog/dpu_6_2_sc7180.h| 23 +++-- .../msm/disp/dpu1/catalog/dpu_6_3_sm6115.h| 12 ++- .../msm/disp/dpu1/catalog/dpu_6_4_sm6350.h| 23 +++-- .../msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 12 ++- .../msm/disp/dpu1/catalog/dpu_6_9_sm6375.h| 12 ++- .../msm/disp/dpu1/catalog/dpu_7_0_sm8350.h| 67 ++ .../msm/disp/dpu1/catalog/dpu_7_2_sc7280.h| 45 +++--- .../msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 61 ++--- .../msm/disp/dpu1/catalog/dpu_8_1_sm8450.h| 89 ++- .../msm/disp/dpu1/catalog/dpu_9_0_sm8550.h| 89 ++- .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c| 21 - 16 files changed, 527 insertions(+), 210 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index d5111f3782a2..9181d3ef8013 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -185,18 +185,35 @@ static const struct dpu_lm_cfg msm8998_lm[] = { }; static const struct dpu_pingpong_cfg msm8998_pp[] = { - PP_BLK("pingpong_0", PINGPONG_0, 0x7, PINGPONG_SDM845_TE2_MASK, 0, sdm845_pp_sblk_te, - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), - PP_BLK("pingpong_1", PINGPONG_1, 0x70800, PINGPONG_SDM845_TE2_MASK, 0, sdm845_pp_sblk_te, - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), - PP_BLK("pingpong_2", PINGPONG_2, 0x71000, PINGPONG_SDM845_MASK, 0, sdm845_pp_sblk, - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14)), - PP_BLK("pingpong_3", PINGPONG_3, 0x71800, PINGPONG_SDM845_MASK, 0, sdm845_pp_sblk, - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15)), + { + .name = "pingpong_0", .id = PINGPONG_0, + .base = 0x7, .len = 0xd4, + .features = PINGPONG_SDM845_TE2_MASK, + .sblk = _pp_sblk_te, + .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), + .intr_rdptr = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12), + }, { + .name = "pingpong_1", .id = PINGPONG_1, + .base = 0x70800, .len = 0xd4, + .features = PINGPONG_SDM845_TE2_MASK, + .sblk = _pp_sblk_te, + .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), + .intr_rdptr = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13), + }, { + .name = "pingpong_2", .id = PINGPONG_2, + .base = 0x71000, .len = 0xd4, + .features = PINGPONG_SDM845_MASK, + .sblk = _pp_sblk, + .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 10), + .intr_rdptr = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 14), + }, { + .name = "pingpong_3", .id = PINGPONG_3, + .base = 0x71800, .len = 0xd4, + .features = PINGPONG_SDM845_MASK, + .sblk = _pp_sblk, + .intr_done = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 11), + .intr_rdptr = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 15), + }, }; static const struct dpu_dsc_cfg msm8998_dsc[] = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index b6f52b3864ce..8119a81ff260 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -209,18 +209,35 @@ static const struct dpu_dspp_cfg sdm845_dspp[] = { }; static const struct dpu_pingpong_cfg sdm845_pp[] = { - PP_BLK("pingpong_0", PINGPONG_0, 0x7, PINGPONG_SDM845_TE2_MASK, 0, sdm845_pp_sblk_te, - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 8), - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 12)), - PP_BLK("pingpong_1", PINGPONG_1, 0x70800, PINGPONG_SDM845_TE2_MASK, 0, sdm845_pp_sblk_te, - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 9), - DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 13)), - PP_BLK("pingpong_2", PINGPONG_2, 0x71000, PINGPONG_SDM845_MASK, 0, sdm845_pp_sblk, -
[Freedreno] [PATCH v4 18/19] drm/msm/dpu: drop empty features mask MERGE_3D_SM8150_MASK
The MERGE_3D_SM8150_MASK features mask is zero. Drop it completely. Reviewed-by: Marijn Suijten Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h | 3 --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 3 --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h | 3 --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h | 3 --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 3 --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h | 4 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h | 4 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 2 -- 8 files changed, 25 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h index 341ab9b84d20..e6d4a2bfc2be 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h @@ -273,15 +273,12 @@ static const struct dpu_merge_3d_cfg sm8150_merge_3d[] = { { .name = "merge_3d_0", .id = MERGE_3D_0, .base = 0x83000, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, { .name = "merge_3d_1", .id = MERGE_3D_1, .base = 0x83100, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, { .name = "merge_3d_2", .id = MERGE_3D_2, .base = 0x83200, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, }; diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h index 8dd36a85b685..b4baf6707018 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h @@ -272,15 +272,12 @@ static const struct dpu_merge_3d_cfg sc8180x_merge_3d[] = { { .name = "merge_3d_0", .id = MERGE_3D_0, .base = 0x83000, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, { .name = "merge_3d_1", .id = MERGE_3D_1, .base = 0x83100, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, { .name = "merge_3d_2", .id = MERGE_3D_2, .base = 0x83200, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, }; diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h index e16ffade5aca..265d88b288b6 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h @@ -273,15 +273,12 @@ static const struct dpu_merge_3d_cfg sm8250_merge_3d[] = { { .name = "merge_3d_0", .id = MERGE_3D_0, .base = 0x83000, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, { .name = "merge_3d_1", .id = MERGE_3D_1, .base = 0x83100, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, { .name = "merge_3d_2", .id = MERGE_3D_2, .base = 0x83200, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, }; diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h index d5191a663ae1..59a96a4b250c 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h @@ -271,15 +271,12 @@ static const struct dpu_merge_3d_cfg sm8350_merge_3d[] = { { .name = "merge_3d_0", .id = MERGE_3D_0, .base = 0x4e000, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, { .name = "merge_3d_1", .id = MERGE_3D_1, .base = 0x4f000, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, { .name = "merge_3d_2", .id = MERGE_3D_2, .base = 0x5, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, }; diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h index 9f94cc6369dd..7110caae7251 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h @@ -275,15 +275,12 @@ static const struct dpu_merge_3d_cfg sc8280xp_merge_3d[] = { { .name = "merge_3d_0", .id = MERGE_3D_0, .base = 0x4e000, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, { .name = "merge_3d_1", .id = MERGE_3D_1, .base = 0x4f000, .len = 0x8, - .features = MERGE_3D_SM8150_MASK, }, { .name = "merge_3d_2", .id =
[Freedreno] [PATCH v4 11/19] drm/msm/dpu: inline DSPP_BLK macros
To simplify making changes to the hardware block definitions, expand corresponding macros. This way making all the changes are more obvious and visible in the source files. Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- .../msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 15 +++--- .../msm/disp/dpu1/catalog/dpu_4_0_sdm845.h| 29 ++- .../msm/disp/dpu1/catalog/dpu_5_0_sm8150.h| 29 ++- .../msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 29 ++- .../msm/disp/dpu1/catalog/dpu_6_0_sm8250.h| 29 ++- .../msm/disp/dpu1/catalog/dpu_6_2_sc7180.h| 8 +++-- .../msm/disp/dpu1/catalog/dpu_6_3_sm6115.h| 8 +++-- .../msm/disp/dpu1/catalog/dpu_6_4_sm6350.h| 8 +++-- .../msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 8 +++-- .../msm/disp/dpu1/catalog/dpu_6_9_sm6375.h| 8 +++-- .../msm/disp/dpu1/catalog/dpu_7_0_sm8350.h| 29 ++- .../msm/disp/dpu1/catalog/dpu_7_2_sc7280.h| 8 +++-- .../msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 29 ++- .../msm/disp/dpu1/catalog/dpu_8_1_sm8450.h| 29 ++- .../msm/disp/dpu1/catalog/dpu_9_0_sm8550.h| 29 ++- .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c| 8 - 16 files changed, 215 insertions(+), 88 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index fd0081469a82..6b254753774c 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -174,10 +174,17 @@ static const struct dpu_dsc_cfg msm8998_dsc[] = { }; static const struct dpu_dspp_cfg msm8998_dspp[] = { - DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, -_dspp_sblk), - DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK, -_dspp_sblk), + { + .name = "dspp_0", .id = DSPP_0, + .base = 0x54000, .len = 0x1800, + .features = DSPP_SC7180_MASK, + .sblk = _dspp_sblk, + }, { + .name = "dspp_1", .id = DSPP_1, + .base = 0x56000, .len = 0x1800, + .features = DSPP_SC7180_MASK, + .sblk = _dspp_sblk, + }, }; static const struct dpu_intf_cfg msm8998_intf[] = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index 7ba99060d13d..8661ef2f45e0 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -152,14 +152,27 @@ static const struct dpu_lm_cfg sdm845_lm[] = { }; static const struct dpu_dspp_cfg sdm845_dspp[] = { - DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, -_dspp_sblk), - DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK, -_dspp_sblk), - DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK, -_dspp_sblk), - DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK, -_dspp_sblk), + { + .name = "dspp_0", .id = DSPP_0, + .base = 0x54000, .len = 0x1800, + .features = DSPP_SC7180_MASK, + .sblk = _dspp_sblk, + }, { + .name = "dspp_1", .id = DSPP_1, + .base = 0x56000, .len = 0x1800, + .features = DSPP_SC7180_MASK, + .sblk = _dspp_sblk, + }, { + .name = "dspp_2", .id = DSPP_2, + .base = 0x58000, .len = 0x1800, + .features = DSPP_SC7180_MASK, + .sblk = _dspp_sblk, + }, { + .name = "dspp_3", .id = DSPP_3, + .base = 0x5a000, .len = 0x1800, + .features = DSPP_SC7180_MASK, + .sblk = _dspp_sblk, + }, }; static const struct dpu_pingpong_cfg sdm845_pp[] = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h index 13d86229219e..ab933b5a4806 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h @@ -161,14 +161,27 @@ static const struct dpu_lm_cfg sm8150_lm[] = { }; static const struct dpu_dspp_cfg sm8150_dspp[] = { - DSPP_BLK("dspp_0", DSPP_0, 0x54000, DSPP_SC7180_MASK, -_dspp_sblk), - DSPP_BLK("dspp_1", DSPP_1, 0x56000, DSPP_SC7180_MASK, -_dspp_sblk), - DSPP_BLK("dspp_2", DSPP_2, 0x58000, DSPP_SC7180_MASK, -_dspp_sblk), - DSPP_BLK("dspp_3", DSPP_3, 0x5a000, DSPP_SC7180_MASK, -_dspp_sblk), + { + .name = "dspp_0", .id = DSPP_0, + .base = 0x54000, .len = 0x1800, + .features = DSPP_SC7180_MASK, + .sblk = _dspp_sblk, + }, { +
[Freedreno] [PATCH v4 12/19] drm/msm/dpu: inline LM_BLK macros
To simplify making changes to the hardware block definitions, expand corresponding macros. This way making all the changes are more obvious and visible in the source files. Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- .../msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 55 + .../msm/disp/dpu1/catalog/dpu_4_0_sdm845.h| 57 ++ .../msm/disp/dpu1/catalog/dpu_5_0_sm8150.h| 57 ++ .../msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 57 ++ .../msm/disp/dpu1/catalog/dpu_6_0_sm8250.h| 57 ++ .../msm/disp/dpu1/catalog/dpu_6_2_sc7180.h| 20 +-- .../msm/disp/dpu1/catalog/dpu_6_3_sm6115.h| 10 +++- .../msm/disp/dpu1/catalog/dpu_6_4_sm6350.h| 21 +-- .../msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 10 +++- .../msm/disp/dpu1/catalog/dpu_6_9_sm6375.h| 11 +++- .../msm/disp/dpu1/catalog/dpu_7_0_sm8350.h| 57 ++ .../msm/disp/dpu1/catalog/dpu_7_2_sc7280.h| 28 +++-- .../msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 53 +++-- .../msm/disp/dpu1/catalog/dpu_8_1_sm8450.h| 59 +++ .../msm/disp/dpu1/catalog/dpu_9_0_sm8550.h| 57 ++ .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c| 11 16 files changed, 487 insertions(+), 133 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index 6b254753774c..a07c68744b29 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -139,18 +139,49 @@ static const struct dpu_sspp_cfg msm8998_sspp[] = { }; static const struct dpu_lm_cfg msm8998_lm[] = { - LM_BLK("lm_0", LM_0, 0x44000, MIXER_MSM8998_MASK, - _lm_sblk, PINGPONG_0, LM_1, DSPP_0), - LM_BLK("lm_1", LM_1, 0x45000, MIXER_MSM8998_MASK, - _lm_sblk, PINGPONG_1, LM_0, DSPP_1), - LM_BLK("lm_2", LM_2, 0x46000, MIXER_MSM8998_MASK, - _lm_sblk, PINGPONG_2, LM_5, 0), - LM_BLK("lm_3", LM_3, 0x47000, MIXER_MSM8998_MASK, - _lm_sblk, PINGPONG_NONE, 0, 0), - LM_BLK("lm_4", LM_4, 0x48000, MIXER_MSM8998_MASK, - _lm_sblk, PINGPONG_NONE, 0, 0), - LM_BLK("lm_5", LM_5, 0x49000, MIXER_MSM8998_MASK, - _lm_sblk, PINGPONG_3, LM_2, 0), + { + .name = "lm_0", .id = LM_0, + .base = 0x44000, .len = 0x320, + .features = MIXER_MSM8998_MASK, + .sblk = _lm_sblk, + .lm_pair = LM_1, + .pingpong = PINGPONG_0, + .dspp = DSPP_0, + }, { + .name = "lm_1", .id = LM_1, + .base = 0x45000, .len = 0x320, + .features = MIXER_MSM8998_MASK, + .sblk = _lm_sblk, + .lm_pair = LM_0, + .pingpong = PINGPONG_1, + .dspp = DSPP_1, + }, { + .name = "lm_2", .id = LM_2, + .base = 0x46000, .len = 0x320, + .features = MIXER_MSM8998_MASK, + .sblk = _lm_sblk, + .lm_pair = LM_5, + .pingpong = PINGPONG_2, + }, { + .name = "lm_3", .id = LM_3, + .base = 0x47000, .len = 0x320, + .features = MIXER_MSM8998_MASK, + .sblk = _lm_sblk, + .pingpong = PINGPONG_NONE, + }, { + .name = "lm_4", .id = LM_4, + .base = 0x48000, .len = 0x320, + .features = MIXER_MSM8998_MASK, + .sblk = _lm_sblk, + .pingpong = PINGPONG_NONE, + }, { + .name = "lm_5", .id = LM_5, + .base = 0x49000, .len = 0x320, + .features = MIXER_MSM8998_MASK, + .sblk = _lm_sblk, + .lm_pair = LM_2, + .pingpong = PINGPONG_3, + }, }; static const struct dpu_pingpong_cfg msm8998_pp[] = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index 8661ef2f45e0..786263ed1ef2 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -137,18 +137,51 @@ static const struct dpu_sspp_cfg sdm845_sspp[] = { }; static const struct dpu_lm_cfg sdm845_lm[] = { - LM_BLK("lm_0", LM_0, 0x44000, MIXER_SDM845_MASK, - _lm_sblk, PINGPONG_0, LM_1, DSPP_0), - LM_BLK("lm_1", LM_1, 0x45000, MIXER_SDM845_MASK, - _lm_sblk, PINGPONG_1, LM_0, DSPP_1), - LM_BLK("lm_2", LM_2, 0x46000, MIXER_SDM845_MASK, - _lm_sblk, PINGPONG_2, LM_5, DSPP_2), - LM_BLK("lm_3", LM_3, 0x0, MIXER_SDM845_MASK, - _lm_sblk, PINGPONG_NONE, 0, DSPP_3), - LM_BLK("lm_4", LM_4, 0x0, MIXER_SDM845_MASK, - _lm_sblk, PINGPONG_NONE, 0, 0), -
[Freedreno] [PATCH v4 05/19] drm/msm/dpu: drop enum dpu_mdp and MDP_TOP value
Since there is always just a single MDP_TOP instance, drop the enum dpu_mdp and corresponding index value. Reviewed-by: Marijn Suijten Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h | 5 - drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c | 1 - drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h | 1 - 18 files changed, 15 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index e0d2ee48d733..30565b245b29 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -27,7 +27,7 @@ static const struct dpu_ubwc_cfg msm8998_ubwc_cfg = { }; static const struct dpu_mdp_cfg msm8998_mdp = { - .name = "top_0", .id = MDP_TOP, + .name = "top_0", .base = 0x0, .len = 0x458, .features = BIT(DPU_MDP_VSYNC_SEL), .clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index 72295d5a10dc..35c495bdcbe9 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -27,7 +27,7 @@ static const struct dpu_ubwc_cfg sdm845_ubwc_cfg = { }; static const struct dpu_mdp_cfg sdm845_mdp = { - .name = "top_0", .id = MDP_TOP, + .name = "top_0", .base = 0x0, .len = 0x45c, .features = BIT(DPU_MDP_AUDIO_SELECT) | BIT(DPU_MDP_VSYNC_SEL), .clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h index 418312b164b8..cb2716715e3d 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h @@ -27,7 +27,7 @@ static const struct dpu_ubwc_cfg sm8150_ubwc_cfg = { }; static const struct dpu_mdp_cfg sm8150_mdp = { - .name = "top_0", .id = MDP_TOP, + .name = "top_0", .base = 0x0, .len = 0x45c, .features = BIT(DPU_MDP_AUDIO_SELECT), .clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h index ffacf29926b3..a655e84cf147 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h @@ -27,7 +27,7 @@ static const struct dpu_ubwc_cfg sc8180x_ubwc_cfg = { }; static const struct dpu_mdp_cfg sc8180x_mdp = { - .name = "top_0", .id = MDP_TOP, + .name = "top_0", .base = 0x0, .len = 0x45c, .features = BIT(DPU_MDP_AUDIO_SELECT), .clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h index 86dfc5745630..90e561d086e0 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h @@ -26,7 +26,7 @@ static const struct dpu_ubwc_cfg sm8250_ubwc_cfg = { }; static const struct dpu_mdp_cfg sm8250_mdp = { - .name = "top_0", .id = MDP_TOP, + .name = "top_0", .base = 0x0, .len = 0x494, .features = 0, .clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h index f42f27707453..3aafe4dfb663 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h @@ -23,7 +23,7 @@ static const struct dpu_ubwc_cfg sc7180_ubwc_cfg = { }; static const
[Freedreno] [PATCH v4 04/19] drm/msm/dpu: drop dpu_mdss_cfg::mdp_count field
There is always a single MDP TOP block. Drop the mdp_count field and stop declaring dpu_mdp_cfg instances as arrays. Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- .../msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 7 +--- .../msm/disp/dpu1/catalog/dpu_4_0_sdm845.h| 7 +--- .../msm/disp/dpu1/catalog/dpu_5_0_sm8150.h| 7 +--- .../msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 7 +--- .../msm/disp/dpu1/catalog/dpu_6_0_sm8250.h| 7 +--- .../msm/disp/dpu1/catalog/dpu_6_2_sc7180.h| 7 +--- .../msm/disp/dpu1/catalog/dpu_6_3_sm6115.h| 7 +--- .../msm/disp/dpu1/catalog/dpu_6_4_sm6350.h| 7 +--- .../msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 7 +--- .../msm/disp/dpu1/catalog/dpu_6_9_sm6375.h| 7 +--- .../msm/disp/dpu1/catalog/dpu_7_0_sm8350.h| 7 +--- .../msm/disp/dpu1/catalog/dpu_7_2_sc7280.h| 7 +--- .../msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 7 +--- .../msm/disp/dpu1/catalog/dpu_8_1_sm8450.h| 7 +--- .../msm/disp/dpu1/catalog/dpu_9_0_sm8550.h| 7 +--- .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h| 1 - drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c| 38 +++ drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h| 8 ++-- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 4 +- 19 files changed, 41 insertions(+), 115 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index be0514bf27ec..e0d2ee48d733 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -26,8 +26,7 @@ static const struct dpu_ubwc_cfg msm8998_ubwc_cfg = { .highest_bank_bit = 0x2, }; -static const struct dpu_mdp_cfg msm8998_mdp[] = { - { +static const struct dpu_mdp_cfg msm8998_mdp = { .name = "top_0", .id = MDP_TOP, .base = 0x0, .len = 0x458, .features = BIT(DPU_MDP_VSYNC_SEL), @@ -41,7 +40,6 @@ static const struct dpu_mdp_cfg msm8998_mdp[] = { .clk_ctrls[DPU_CLK_CTRL_DMA3] = { .reg_off = 0x2c4, .bit_off = 12 }, .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { .reg_off = 0x3a8, .bit_off = 16 }, .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { .reg_off = 0x3b0, .bit_off = 16 }, - }, }; static const struct dpu_ctl_cfg msm8998_ctl[] = { @@ -192,8 +190,7 @@ static const struct dpu_perf_cfg msm8998_perf_data = { const struct dpu_mdss_cfg dpu_msm8998_cfg = { .caps = _dpu_caps, .ubwc = _ubwc_cfg, - .mdp_count = ARRAY_SIZE(msm8998_mdp), - .mdp = msm8998_mdp, + .mdp = _mdp, .ctl_count = ARRAY_SIZE(msm8998_ctl), .ctl = msm8998_ctl, .sspp_count = ARRAY_SIZE(msm8998_sspp), diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index b33472625fcb..72295d5a10dc 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -26,8 +26,7 @@ static const struct dpu_ubwc_cfg sdm845_ubwc_cfg = { .highest_bank_bit = 0x2, }; -static const struct dpu_mdp_cfg sdm845_mdp[] = { - { +static const struct dpu_mdp_cfg sdm845_mdp = { .name = "top_0", .id = MDP_TOP, .base = 0x0, .len = 0x45c, .features = BIT(DPU_MDP_AUDIO_SELECT) | BIT(DPU_MDP_VSYNC_SEL), @@ -39,7 +38,6 @@ static const struct dpu_mdp_cfg sdm845_mdp[] = { .clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8 }, .clk_ctrls[DPU_CLK_CTRL_DMA2] = { .reg_off = 0x2bc, .bit_off = 8 }, .clk_ctrls[DPU_CLK_CTRL_DMA3] = { .reg_off = 0x2c4, .bit_off = 8 }, - }, }; static const struct dpu_ctl_cfg sdm845_ctl[] = { @@ -196,8 +194,7 @@ static const struct dpu_perf_cfg sdm845_perf_data = { const struct dpu_mdss_cfg dpu_sdm845_cfg = { .caps = _dpu_caps, .ubwc = _ubwc_cfg, - .mdp_count = ARRAY_SIZE(sdm845_mdp), - .mdp = sdm845_mdp, + .mdp = _mdp, .ctl_count = ARRAY_SIZE(sdm845_ctl), .ctl = sdm845_ctl, .sspp_count = ARRAY_SIZE(sdm845_sspp), diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h index 64ed10da1b73..418312b164b8 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h @@ -26,8 +26,7 @@ static const struct dpu_ubwc_cfg sm8150_ubwc_cfg = { .highest_bank_bit = 0x2, }; -static const struct dpu_mdp_cfg sm8150_mdp[] = { - { +static const struct dpu_mdp_cfg sm8150_mdp = { .name = "top_0", .id = MDP_TOP, .base = 0x0, .len = 0x45c, .features = BIT(DPU_MDP_AUDIO_SELECT), @@ -39,7 +38,6 @@ static const struct dpu_mdp_cfg sm8150_mdp[] = { .clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8 }, .clk_ctrls[DPU_CLK_CTRL_DMA2] = { .reg_off = 0x2bc, .bit_off = 8 },
[Freedreno] [PATCH v4 08/19] drm/msm/dpu: drop zero features from dpu_ctl_cfg data
Drop useless zero assignments to the dpu_ctl_cfg::features field. Reviewed-by: Marijn Suijten Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 3 --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h | 3 --- 2 files changed, 6 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index 757ac648a692..e0cc1ce3f3e2 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -54,7 +54,6 @@ static const struct dpu_ctl_cfg msm8998_ctl[] = { { .name = "ctl_1", .id = CTL_1, .base = 0x1200, .len = 0x94, - .features = 0, .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), }, { @@ -66,13 +65,11 @@ static const struct dpu_ctl_cfg msm8998_ctl[] = { { .name = "ctl_3", .id = CTL_3, .base = 0x1600, .len = 0x94, - .features = 0, .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), }, { .name = "ctl_4", .id = CTL_4, .base = 0x1800, .len = 0x94, - .features = 0, .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), }, }; diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index 9fb8ef21c7f0..f52e1fa27e2c 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -58,19 +58,16 @@ static const struct dpu_ctl_cfg sdm845_ctl[] = { { .name = "ctl_2", .id = CTL_2, .base = 0x1400, .len = 0xe4, - .features = 0, .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), }, { .name = "ctl_3", .id = CTL_3, .base = 0x1600, .len = 0xe4, - .features = 0, .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), }, { .name = "ctl_4", .id = CTL_4, .base = 0x1800, .len = 0xe4, - .features = 0, .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), }, }; -- 2.39.2
[Freedreno] [PATCH v4 09/19] drm/msm/dpu: correct indentation for CTL definitions
Shift dpu_ctl_cfg contents to correct the indentation of CTL blocks. This is done in preparation to expanding the rest of hardware block defines, so that all blocks have similar indentation. Reviewed-by: Marijn Suijten Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- .../msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 46 +++--- .../msm/disp/dpu1/catalog/dpu_4_0_sdm845.h| 46 +++--- .../msm/disp/dpu1/catalog/dpu_5_0_sm8150.h| 63 +-- .../msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 63 +-- .../msm/disp/dpu1/catalog/dpu_6_0_sm8250.h| 63 +-- .../msm/disp/dpu1/catalog/dpu_6_2_sc7180.h| 30 + .../msm/disp/dpu1/catalog/dpu_6_3_sm6115.h| 8 +-- .../msm/disp/dpu1/catalog/dpu_6_4_sm6350.h| 41 ++-- .../msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 8 +-- .../msm/disp/dpu1/catalog/dpu_6_9_sm6375.h| 8 +-- .../msm/disp/dpu1/catalog/dpu_7_0_sm8350.h| 63 +-- .../msm/disp/dpu1/catalog/dpu_7_2_sc7280.h| 41 ++-- .../msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 63 +-- .../msm/disp/dpu1/catalog/dpu_8_1_sm8450.h| 63 +-- .../msm/disp/dpu1/catalog/dpu_9_0_sm8550.h| 63 +-- 15 files changed, 309 insertions(+), 360 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index e0cc1ce3f3e2..6660a55909e7 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -46,31 +46,27 @@ static const struct dpu_mdp_cfg msm8998_mdp = { static const struct dpu_ctl_cfg msm8998_ctl[] = { { - .name = "ctl_0", .id = CTL_0, - .base = 0x1000, .len = 0x94, - .features = BIT(DPU_CTL_SPLIT_DISPLAY), - .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), - }, - { - .name = "ctl_1", .id = CTL_1, - .base = 0x1200, .len = 0x94, - .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), - }, - { - .name = "ctl_2", .id = CTL_2, - .base = 0x1400, .len = 0x94, - .features = BIT(DPU_CTL_SPLIT_DISPLAY), - .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), - }, - { - .name = "ctl_3", .id = CTL_3, - .base = 0x1600, .len = 0x94, - .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), - }, - { - .name = "ctl_4", .id = CTL_4, - .base = 0x1800, .len = 0x94, - .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), + .name = "ctl_0", .id = CTL_0, + .base = 0x1000, .len = 0x94, + .features = BIT(DPU_CTL_SPLIT_DISPLAY), + .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), + }, { + .name = "ctl_1", .id = CTL_1, + .base = 0x1200, .len = 0x94, + .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), + }, { + .name = "ctl_2", .id = CTL_2, + .base = 0x1400, .len = 0x94, + .features = BIT(DPU_CTL_SPLIT_DISPLAY), + .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), + }, { + .name = "ctl_3", .id = CTL_3, + .base = 0x1600, .len = 0x94, + .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), + }, { + .name = "ctl_4", .id = CTL_4, + .base = 0x1800, .len = 0x94, + .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), }, }; diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index f52e1fa27e2c..8f96a9e4ee4c 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -44,31 +44,27 @@ static const struct dpu_mdp_cfg sdm845_mdp = { static const struct dpu_ctl_cfg sdm845_ctl[] = { { - .name = "ctl_0", .id = CTL_0, - .base = 0x1000, .len = 0xe4, - .features = BIT(DPU_CTL_SPLIT_DISPLAY), - .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 9), - }, - { - .name = "ctl_1", .id = CTL_1, - .base = 0x1200, .len = 0xe4, - .features = BIT(DPU_CTL_SPLIT_DISPLAY), - .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 10), - }, - { - .name = "ctl_2", .id = CTL_2, - .base = 0x1400, .len = 0xe4, - .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 11), - }, - { - .name = "ctl_3", .id = CTL_3, - .base = 0x1600, .len = 0xe4, - .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 12), - }, - { - .name = "ctl_4", .id = CTL_4, - .base = 0x1800, .len = 0xe4, - .intr_start = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR2, 13), + .name = "ctl_0", .id = CTL_0, + .base = 0x1000, .len = 0xe4, + .features =
[Freedreno] [PATCH v4 10/19] drm/msm/dpu: inline SSPP_BLK macros
To simplify making changes to the hardware block definitions, expand corresponding macros. This way making all the changes are more obvious and visible in the source files. Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- .../msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 81 +++--- .../msm/disp/dpu1/catalog/dpu_4_0_sdm845.h| 81 +++--- .../msm/disp/dpu1/catalog/dpu_5_0_sm8150.h| 81 +++--- .../msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 81 +++--- .../msm/disp/dpu1/catalog/dpu_6_0_sm8250.h| 81 +++--- .../msm/disp/dpu1/catalog/dpu_6_2_sc7180.h| 41 +-- .../msm/disp/dpu1/catalog/dpu_6_3_sm6115.h| 21 +++- .../msm/disp/dpu1/catalog/dpu_6_4_sm6350.h| 41 +-- .../msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 21 +++- .../msm/disp/dpu1/catalog/dpu_6_9_sm6375.h| 21 +++- .../msm/disp/dpu1/catalog/dpu_7_0_sm8350.h| 81 +++--- .../msm/disp/dpu1/catalog/dpu_7_2_sc7280.h| 41 +-- .../msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 81 +++--- .../msm/disp/dpu1/catalog/dpu_8_1_sm8450.h| 81 +++--- .../msm/disp/dpu1/catalog/dpu_9_0_sm8550.h| 101 ++ .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c| 12 --- 16 files changed, 751 insertions(+), 196 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index 6660a55909e7..fd0081469a82 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -71,22 +71,71 @@ static const struct dpu_ctl_cfg msm8998_ctl[] = { }; static const struct dpu_sspp_cfg msm8998_sspp[] = { - SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, 0x1ac, VIG_MSM8998_MASK, - msm8998_vig_sblk_0, 0, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG0), - SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, 0x1ac, VIG_MSM8998_MASK, - msm8998_vig_sblk_1, 4, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG1), - SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, 0x1ac, VIG_MSM8998_MASK, - msm8998_vig_sblk_2, 8, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG2), - SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, 0x1ac, VIG_MSM8998_MASK, - msm8998_vig_sblk_3, 12, SSPP_TYPE_VIG, DPU_CLK_CTRL_VIG3), - SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, 0x1ac, DMA_MSM8998_MASK, - sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA0), - SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, 0x1ac, DMA_MSM8998_MASK, - sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA1), - SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, 0x1ac, DMA_CURSOR_MSM8998_MASK, - sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA2), - SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000, 0x1ac, DMA_CURSOR_MSM8998_MASK, - sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA, DPU_CLK_CTRL_DMA3), + { + .name = "sspp_0", .id = SSPP_VIG0, + .base = 0x4000, .len = 0x1ac, + .features = VIG_MSM8998_MASK, + .sblk = _vig_sblk_0, + .xin_id = 0, + .type = SSPP_TYPE_VIG, + .clk_ctrl = DPU_CLK_CTRL_VIG0, + }, { + .name = "sspp_1", .id = SSPP_VIG1, + .base = 0x6000, .len = 0x1ac, + .features = VIG_MSM8998_MASK, + .sblk = _vig_sblk_1, + .xin_id = 4, + .type = SSPP_TYPE_VIG, + .clk_ctrl = DPU_CLK_CTRL_VIG1, + }, { + .name = "sspp_2", .id = SSPP_VIG2, + .base = 0x8000, .len = 0x1ac, + .features = VIG_MSM8998_MASK, + .sblk = _vig_sblk_2, + .xin_id = 8, + .type = SSPP_TYPE_VIG, + .clk_ctrl = DPU_CLK_CTRL_VIG2, + }, { + .name = "sspp_3", .id = SSPP_VIG3, + .base = 0xa000, .len = 0x1ac, + .features = VIG_MSM8998_MASK, + .sblk = _vig_sblk_3, + .xin_id = 12, + .type = SSPP_TYPE_VIG, + .clk_ctrl = DPU_CLK_CTRL_VIG3, + }, { + .name = "sspp_8", .id = SSPP_DMA0, + .base = 0x24000, .len = 0x1ac, + .features = DMA_MSM8998_MASK, + .sblk = _dma_sblk_0, + .xin_id = 1, + .type = SSPP_TYPE_DMA, + .clk_ctrl = DPU_CLK_CTRL_DMA0, + }, { + .name = "sspp_9", .id = SSPP_DMA1, + .base = 0x26000, .len = 0x1ac, + .features = DMA_MSM8998_MASK, + .sblk = _dma_sblk_1, + .xin_id = 5, + .type = SSPP_TYPE_DMA, + .clk_ctrl = DPU_CLK_CTRL_DMA1, + }, { + .name = "sspp_10", .id = SSPP_DMA2, + .base = 0x28000, .len = 0x1ac, + .features = DMA_CURSOR_MSM8998_MASK, + .sblk = _dma_sblk_2, + .xin_id =
[Freedreno] [PATCH v4 06/19] drm/msm/dpu: expand .clk_ctrls definitions
Use more standard initialisation for .clk_ctrls definitions. Define a single .clk_ctrls field and use array init inside. Reviewed-by: Marijn Suijten Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- .../msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 22 + .../msm/disp/dpu1/catalog/dpu_4_0_sdm845.h| 18 +++--- .../msm/disp/dpu1/catalog/dpu_5_0_sm8150.h| 18 +++--- .../msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 18 +++--- .../msm/disp/dpu1/catalog/dpu_6_0_sm8250.h| 22 + .../msm/disp/dpu1/catalog/dpu_6_2_sc7180.h| 12 ++ .../msm/disp/dpu1/catalog/dpu_6_3_sm6115.h| 6 +++-- .../msm/disp/dpu1/catalog/dpu_6_4_sm6350.h| 12 ++ .../msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 6 +++-- .../msm/disp/dpu1/catalog/dpu_6_9_sm6375.h| 6 +++-- .../msm/disp/dpu1/catalog/dpu_7_0_sm8350.h| 20 +--- .../msm/disp/dpu1/catalog/dpu_7_2_sc7280.h| 12 ++ .../msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 20 +--- .../msm/disp/dpu1/catalog/dpu_8_1_sm8450.h| 20 +--- .../msm/disp/dpu1/catalog/dpu_9_0_sm8550.h| 24 ++- 15 files changed, 133 insertions(+), 103 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index 30565b245b29..757ac648a692 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -30,16 +30,18 @@ static const struct dpu_mdp_cfg msm8998_mdp = { .name = "top_0", .base = 0x0, .len = 0x458, .features = BIT(DPU_MDP_VSYNC_SEL), - .clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, - .clk_ctrls[DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0 }, - .clk_ctrls[DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0 }, - .clk_ctrls[DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0 }, - .clk_ctrls[DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8 }, - .clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8 }, - .clk_ctrls[DPU_CLK_CTRL_DMA2] = { .reg_off = 0x2c4, .bit_off = 8 }, - .clk_ctrls[DPU_CLK_CTRL_DMA3] = { .reg_off = 0x2c4, .bit_off = 12 }, - .clk_ctrls[DPU_CLK_CTRL_CURSOR0] = { .reg_off = 0x3a8, .bit_off = 16 }, - .clk_ctrls[DPU_CLK_CTRL_CURSOR1] = { .reg_off = 0x3b0, .bit_off = 16 }, + .clk_ctrls = { + [DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, + [DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0 }, + [DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0 }, + [DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0 }, + [DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8 }, + [DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8 }, + [DPU_CLK_CTRL_DMA2] = { .reg_off = 0x2c4, .bit_off = 8 }, + [DPU_CLK_CTRL_DMA3] = { .reg_off = 0x2c4, .bit_off = 12 }, + [DPU_CLK_CTRL_CURSOR0] = { .reg_off = 0x3a8, .bit_off = 16 }, + [DPU_CLK_CTRL_CURSOR1] = { .reg_off = 0x3b0, .bit_off = 16 }, + }, }; static const struct dpu_ctl_cfg msm8998_ctl[] = { diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index 35c495bdcbe9..9fb8ef21c7f0 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -30,14 +30,16 @@ static const struct dpu_mdp_cfg sdm845_mdp = { .name = "top_0", .base = 0x0, .len = 0x45c, .features = BIT(DPU_MDP_AUDIO_SELECT) | BIT(DPU_MDP_VSYNC_SEL), - .clk_ctrls[DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, - .clk_ctrls[DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0 }, - .clk_ctrls[DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0 }, - .clk_ctrls[DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0 }, - .clk_ctrls[DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8 }, - .clk_ctrls[DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8 }, - .clk_ctrls[DPU_CLK_CTRL_DMA2] = { .reg_off = 0x2bc, .bit_off = 8 }, - .clk_ctrls[DPU_CLK_CTRL_DMA3] = { .reg_off = 0x2c4, .bit_off = 8 }, + .clk_ctrls = { + [DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, + [DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0 }, + [DPU_CLK_CTRL_VIG2] = { .reg_off = 0x2bc, .bit_off = 0 }, + [DPU_CLK_CTRL_VIG3] = { .reg_off = 0x2c4, .bit_off = 0 }, + [DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8 }, + [DPU_CLK_CTRL_DMA1] = { .reg_off = 0x2b4, .bit_off = 8 }, + [DPU_CLK_CTRL_DMA2] = { .reg_off = 0x2bc, .bit_off = 8 }, + [DPU_CLK_CTRL_DMA3]
[Freedreno] [PATCH v4 07/19] drm/msm/dpu: drop zero features from dpu_mdp_cfg data
Drop useless zero assignments to the dpu_mdp_cfg::features field. Reviewed-by: Marijn Suijten Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h | 1 - drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h | 1 - 7 files changed, 7 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h index ab1820f1ac54..e321cc0a80ee 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h @@ -28,7 +28,6 @@ static const struct dpu_ubwc_cfg sm8250_ubwc_cfg = { static const struct dpu_mdp_cfg sm8250_mdp = { .name = "top_0", .base = 0x0, .len = 0x494, - .features = 0, .clk_ctrls = { [DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, [DPU_CLK_CTRL_VIG1] = { .reg_off = 0x2b4, .bit_off = 0 }, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h index 2df9a00728c0..1919ee487e68 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h @@ -25,7 +25,6 @@ static const struct dpu_ubwc_cfg sc7180_ubwc_cfg = { static const struct dpu_mdp_cfg sc7180_mdp = { .name = "top_0", .base = 0x0, .len = 0x494, - .features = 0, .clk_ctrls = { [DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, [DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8 }, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h index 1982654e74a0..0252fe9590e7 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h @@ -26,7 +26,6 @@ static const struct dpu_ubwc_cfg sm6115_ubwc_cfg = { static const struct dpu_mdp_cfg sm6115_mdp = { .name = "top_0", .base = 0x0, .len = 0x494, - .features = 0, .clk_ctrls = { [DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, [DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8 }, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h index ac237c3197cf..3c2083760294 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h @@ -28,7 +28,6 @@ static const struct dpu_ubwc_cfg sm6350_ubwc_cfg = { static const struct dpu_mdp_cfg sm6350_mdp = { .name = "top_0", .base = 0x0, .len = 0x494, - .features = 0, .clk_ctrls = { [DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, [DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8 }, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h index 24c4536e7981..54cc6ad8ee36 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h @@ -23,7 +23,6 @@ static const struct dpu_ubwc_cfg qcm2290_ubwc_cfg = { static const struct dpu_mdp_cfg qcm2290_mdp = { .name = "top_0", .base = 0x0, .len = 0x494, - .features = 0, .clk_ctrls = { [DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, [DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8 }, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h index 099b74be3fd2..f0f6f2d801b4 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h @@ -27,7 +27,6 @@ static const struct dpu_ubwc_cfg sm6375_ubwc_cfg = { static const struct dpu_mdp_cfg sm6375_mdp = { .name = "top_0", .base = 0x0, .len = 0x494, - .features = 0, .clk_ctrls = { [DPU_CLK_CTRL_VIG0] = { .reg_off = 0x2ac, .bit_off = 0 }, [DPU_CLK_CTRL_DMA0] = { .reg_off = 0x2ac, .bit_off = 8 }, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h index 7db3a6969189..318bed612da5 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h @@ -27,7 +27,6 @@ static const struct dpu_ubwc_cfg sm8350_ubwc_cfg = { static const struct dpu_mdp_cfg
[Freedreno] [PATCH v4 02/19] drm/msm/dpu: always use MSM_DP/DSI_CONTROLLER_n
In several catalog entries we did not use existing MSM_DP_CONTROLLER_n constants. Fill them in. Also use freshly defined MSM_DSI_CONTROLLER_n for DSI interfaces. Reviewed-by: Marijn Suijten Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 6 +++--- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h | 8 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h | 8 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 4 ++-- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h | 8 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_4_sm6350.h | 4 ++-- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_9_sm6375.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h | 4 ++-- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h | 2 +- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 4 ++-- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h | 4 ++-- drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h | 4 ++-- 15 files changed, 32 insertions(+), 32 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h index 7d0d0e74c3b0..be0514bf27ec 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_3_0_msm8998.h @@ -139,13 +139,13 @@ static const struct dpu_dspp_cfg msm8998_dspp[] = { }; static const struct dpu_intf_cfg msm8998_intf[] = { - INTF_BLK("intf_0", INTF_0, 0x6a000, 0x280, INTF_DP, 0, 21, INTF_SDM845_MASK, + INTF_BLK("intf_0", INTF_0, 0x6a000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 21, INTF_SDM845_MASK, DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 24), DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 25)), - INTF_BLK("intf_1", INTF_1, 0x6a800, 0x280, INTF_DSI, 0, 21, INTF_SDM845_MASK, + INTF_BLK("intf_1", INTF_1, 0x6a800, 0x280, INTF_DSI, MSM_DSI_CONTROLLER_0, 21, INTF_SDM845_MASK, DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 26), DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 27)), - INTF_BLK("intf_2", INTF_2, 0x6b000, 0x280, INTF_DSI, 1, 21, INTF_SDM845_MASK, + INTF_BLK("intf_2", INTF_2, 0x6b000, 0x280, INTF_DSI, MSM_DSI_CONTROLLER_1, 21, INTF_SDM845_MASK, DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 28), DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 29)), INTF_BLK("intf_3", INTF_3, 0x6b800, 0x280, INTF_HDMI, 0, 21, INTF_SDM845_MASK, diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h index b6098141bb9b..b33472625fcb 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_4_0_sdm845.h @@ -143,16 +143,16 @@ static const struct dpu_dsc_cfg sdm845_dsc[] = { }; static const struct dpu_intf_cfg sdm845_intf[] = { - INTF_BLK("intf_0", INTF_0, 0x6a000, 0x280, INTF_DP, 0, 24, INTF_SDM845_MASK, + INTF_BLK("intf_0", INTF_0, 0x6a000, 0x280, INTF_DP, MSM_DP_CONTROLLER_0, 24, INTF_SDM845_MASK, DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 24), DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 25)), - INTF_BLK("intf_1", INTF_1, 0x6a800, 0x280, INTF_DSI, 0, 24, INTF_SDM845_MASK, + INTF_BLK("intf_1", INTF_1, 0x6a800, 0x280, INTF_DSI, MSM_DSI_CONTROLLER_0, 24, INTF_SDM845_MASK, DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 26), DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 27)), - INTF_BLK("intf_2", INTF_2, 0x6b000, 0x280, INTF_DSI, 1, 24, INTF_SDM845_MASK, + INTF_BLK("intf_2", INTF_2, 0x6b000, 0x280, INTF_DSI, MSM_DSI_CONTROLLER_1, 24, INTF_SDM845_MASK, DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 28), DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 29)), - INTF_BLK("intf_3", INTF_3, 0x6b800, 0x280, INTF_DP, 1, 24, INTF_SDM845_MASK, + INTF_BLK("intf_3", INTF_3, 0x6b800, 0x280, INTF_DP, MSM_DP_CONTROLLER_1, 24, INTF_SDM845_MASK, DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 30), DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 31)), }; diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h index b5f751354267..64ed10da1b73 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h +++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h @@ -162,18 +162,18 @@ static const struct dpu_dsc_cfg sm8150_dsc[] = { }; static const struct dpu_intf_cfg sm8150_intf[] = { - INTF_BLK("intf_0", INTF_0, 0x6a000, 0x280, INTF_DP, 0, 24, INTF_SC7180_MASK, + INTF_BLK("intf_0", INTF_0,
[Freedreno] [PATCH v4 03/19] drm/msm/dpu: simplify peer LM handling
For each LM there is at max 1 peer LM which can be driven by the same CTL, so there no need to have a mask instead of just an ID of the peer LM. Reviewed-by: Marijn Suijten Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c| 2 +- .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h| 4 +-- drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c| 34 +++ 3 files changed, 15 insertions(+), 25 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c index 0de507d4d7b7..30fb5b1f3966 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c @@ -394,7 +394,7 @@ static const struct dpu_sspp_sub_blks qcm2290_dma_sblk_0 = _DMA_SBLK("8", 1); .features = _fmask, \ .sblk = _sblk, \ .pingpong = _pp, \ - .lm_pair_mask = (1 << _lmpair), \ + .lm_pair = _lmpair, \ .dspp = _dspp \ } diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h index b860784ade72..b07caa4b867e 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h @@ -554,14 +554,14 @@ struct dpu_sspp_cfg { * @features bit mask identifying sub-blocks/features * @sblk: LM Sub-blocks information * @pingpong: ID of connected PingPong, PINGPONG_NONE if unsupported - * @lm_pair_mask: Bitmask of LMs that can be controlled by same CTL + * @lm_pair: ID of LM that can be controlled by same CTL */ struct dpu_lm_cfg { DPU_HW_BLK_INFO; const struct dpu_lm_sub_blks *sblk; u32 pingpong; u32 dspp; - unsigned long lm_pair_mask; + unsigned long lm_pair; }; /** diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c index 471842bbb950..e333f4eeafc1 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c @@ -253,28 +253,19 @@ static bool _dpu_rm_needs_split_display(const struct msm_display_topology *top) } /** - * _dpu_rm_check_lm_peer - check if a mixer is a peer of the primary + * _dpu_rm_get_lm_peer - get the id of a mixer which is a peer of the primary * @rm: dpu resource manager handle * @primary_idx: index of primary mixer in rm->mixer_blks[] - * @peer_idx: index of other mixer in rm->mixer_blks[] - * Return: true if rm->mixer_blks[peer_idx] is a peer of - * rm->mixer_blks[primary_idx] */ -static bool _dpu_rm_check_lm_peer(struct dpu_rm *rm, int primary_idx, - int peer_idx) +static int _dpu_rm_get_lm_peer(struct dpu_rm *rm, int primary_idx) { const struct dpu_lm_cfg *prim_lm_cfg; - const struct dpu_lm_cfg *peer_cfg; prim_lm_cfg = to_dpu_hw_mixer(rm->mixer_blks[primary_idx])->cap; - peer_cfg = to_dpu_hw_mixer(rm->mixer_blks[peer_idx])->cap; - if (!test_bit(peer_cfg->id, _lm_cfg->lm_pair_mask)) { - DPU_DEBUG("lm %d not peer of lm %d\n", peer_cfg->id, - peer_cfg->id); - return false; - } - return true; + if (prim_lm_cfg->lm_pair >= LM_0 && prim_lm_cfg->lm_pair < LM_MAX) + return prim_lm_cfg->lm_pair - LM_0; + return -EINVAL; } /** @@ -351,7 +342,7 @@ static int _dpu_rm_reserve_lms(struct dpu_rm *rm, int lm_idx[MAX_BLOCKS]; int pp_idx[MAX_BLOCKS]; int dspp_idx[MAX_BLOCKS] = {0}; - int i, j, lm_count = 0; + int i, lm_count = 0; if (!reqs->topology.num_lm) { DPU_ERROR("invalid number of lm: %d\n", reqs->topology.num_lm); @@ -376,16 +367,15 @@ static int _dpu_rm_reserve_lms(struct dpu_rm *rm, ++lm_count; /* Valid primary mixer found, find matching peers */ - for (j = i + 1; j < ARRAY_SIZE(rm->mixer_blks) && - lm_count < reqs->topology.num_lm; j++) { - if (!rm->mixer_blks[j]) + if (lm_count < reqs->topology.num_lm) { + int j = _dpu_rm_get_lm_peer(rm, i); + + /* ignore the peer if there is an error or if the peer was already processed */ + if (j < 0 || j < i) continue; - if (!_dpu_rm_check_lm_peer(rm, i, j)) { - DPU_DEBUG("lm %d not peer of lm %d\n", LM_0 + j, - LM_0 + i); + if (!rm->mixer_blks[j]) continue; - } if (!_dpu_rm_check_lm_and_get_connected_blks(rm, global_state, enc_id, j, -- 2.39.2
[Freedreno] [PATCH v4 00/19] drm/msm/dpu: another catalog rework
Having a macro with 10 arguments doesn't seem like a good idea. It makes it inherently harder to compare the actual structure values. Also this leads to adding macros covering varieties of the block. As it was previously discussed, inline all foo_BLK macros in order to ease performing changes to the catalog data. Major part of the conversion was performed using vim script found at [1]. Then some manual cleanups were applied, like dropping fields set to 0. Dependencies: msm-next-lumag. Changes since v3: - Fixed DSC 1.1 block length to 0x140 (Marijn) - Fixed mdp->caps assignment in dpu_hw_mdptop_init() (Marijn) Changes since v2: - Rebased on top of msm-next-lumag - Fixed MSM_DP/DSI_CONTROLLER_n usage in sm6350 and sm6375 catalog data (Abhinav, Marijn). Changes since v1: - Rebased on top of msm-next - Dropped dependency on interrupt rework [1] https://pastebin.ubuntu.com/p/K6vkjmxZdd/ Dmitry Baryshkov (19): drm/msm: enumerate DSI interfaces drm/msm/dpu: always use MSM_DP/DSI_CONTROLLER_n drm/msm/dpu: simplify peer LM handling drm/msm/dpu: drop dpu_mdss_cfg::mdp_count field drm/msm/dpu: drop enum dpu_mdp and MDP_TOP value drm/msm/dpu: expand .clk_ctrls definitions drm/msm/dpu: drop zero features from dpu_mdp_cfg data drm/msm/dpu: drop zero features from dpu_ctl_cfg data drm/msm/dpu: correct indentation for CTL definitions drm/msm/dpu: inline SSPP_BLK macros drm/msm/dpu: inline DSPP_BLK macros drm/msm/dpu: inline LM_BLK macros drm/msm/dpu: inline DSC_BLK and DSC_BLK_1_2 macros drm/msm/dpu: inline MERGE_3D_BLK macros drm/msm/dpu: inline various PP_BLK_* macros drm/msm/dpu: inline WB_BLK macros drm/msm/dpu: inline INTF_BLK and INTF_BLK_DSI_TE macros drm/msm/dpu: drop empty features mask MERGE_3D_SM8150_MASK drm/msm/dpu: drop empty features mask INTF_SDM845_MASK .../msm/disp/dpu1/catalog/dpu_3_0_msm8998.h | 327 .../msm/disp/dpu1/catalog/dpu_4_0_sdm845.h| 348 + .../msm/disp/dpu1/catalog/dpu_5_0_sm8150.h| 411 ++- .../msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 448 +++- .../msm/disp/dpu1/catalog/dpu_6_0_sm8250.h| 430 +++- .../msm/disp/dpu1/catalog/dpu_6_2_sc7180.h| 184 +-- .../msm/disp/dpu1/catalog/dpu_6_3_sm6115.h| 88 +++- .../msm/disp/dpu1/catalog/dpu_6_4_sm6350.h| 188 --- .../msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 88 +++- .../msm/disp/dpu1/catalog/dpu_6_9_sm6375.h| 95 +++- .../msm/disp/dpu1/catalog/dpu_7_0_sm8350.h| 418 ++- .../msm/disp/dpu1/catalog/dpu_7_2_sc7280.h| 244 ++--- .../msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 484 +- .../msm/disp/dpu1/catalog/dpu_8_1_sm8450.h| 445 +++- .../msm/disp/dpu1/catalog/dpu_9_0_sm8550.h| 467 - .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c| 130 - .../gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h| 5 +- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_mdss.h | 5 - drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.c| 37 +- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_top.h| 9 +- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 4 +- drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c| 34 +- drivers/gpu/drm/msm/msm_drv.h | 8 +- 23 files changed, 3321 insertions(+), 1576 deletions(-) -- 2.39.2
[Freedreno] [PATCH v4 01/19] drm/msm: enumerate DSI interfaces
Follow the DP example and define MSM_DSI_CONTROLLER_n enumeration. Reviewed-by: Abhinav Kumar Reviewed-by: Marijn Suijten Tested-by: Marijn Suijten Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_drv.h | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index e13a8cbd61c9..ad4fad2bcdc8 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -65,6 +65,12 @@ enum msm_dp_controller { MSM_DP_CONTROLLER_COUNT, }; +enum msm_dsi_controller { + MSM_DSI_CONTROLLER_0, + MSM_DSI_CONTROLLER_1, + MSM_DSI_CONTROLLER_COUNT, +}; + #define MSM_GPU_MAX_RINGS 4 #define MAX_H_TILES_PER_DISPLAY 2 @@ -117,7 +123,7 @@ struct msm_drm_private { struct hdmi *hdmi; /* DSI is shared by mdp4 and mdp5 */ - struct msm_dsi *dsi[2]; + struct msm_dsi *dsi[MSM_DSI_CONTROLLER_COUNT]; struct msm_dp *dp[MSM_DP_CONTROLLER_COUNT]; -- 2.39.2
[Freedreno] [PATCH v2] drm/msm/dsi: Document DSC related pclk_rate and hdisplay calculations
Provide actual documentation for the pclk and hdisplay calculations in the case of DSC compression being used. Signed-off-by: Dmitry Baryshkov --- Changes since v1: - Converted dsi_adjust_pclk_for_compression() into kerneldoc (Marijn) - Added a pointer from dsi_timing_setup() docs to dsi_adjust_pclk_for_compression() (Marijn) - Fixed two typo (Marijn) --- drivers/gpu/drm/msm/dsi/dsi_host.c | 40 -- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index 3f6dfb4f9d5a..a8a31c3dd168 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -528,6 +528,25 @@ void dsi_link_clk_disable_v2(struct msm_dsi_host *msm_host) clk_disable_unprepare(msm_host->byte_clk); } +/** + * dsi_adjust_pclk_for_compression() - Adjust the pclk rate for compression case + * @mode: the selected mode for the DSI output + * @dsc: DRM DSC configuration for this DSI output + * + * Adjust the pclk rate by calculating a new hdisplay proportional to + * the compression ratio such that: + * new_hdisplay = old_hdisplay * compressed_bpp / uncompressed_bpp + * + * Porches do not need to be adjusted: + * - For the VIDEO mode they are not compressed by DSC and are passed as is. + * - For the CMD mode there are no actual porches. Instead these fields + * currently represent the overhead to the image data transfer. As such, they + * are calculated for the final mode parameters (after the compression) and + * are not to be adjusted too. + * + * FIXME: Reconsider this if/when CMD mode handling is rewritten to use + * refresh rate and data overhead as a starting point of the calculations. + */ static unsigned long dsi_adjust_pclk_for_compression(const struct drm_display_mode *mode, const struct drm_dsc_config *dsc) { @@ -926,8 +945,25 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) if (ret) return; - /* Divide the display by 3 but keep back/font porch and -* pulse width same + /* +* DPU sends 3 bytes per pclk cycle to DSI. If compression is +* not used, a single pixel is transferred at each pulse, no +* matter what bpp or pixel format is used. In case of DSC +* compression this results (due to data alignment +* requirements) in a transfer of 3 compressed pixel per pclk +* cycle. +* +* If widebus is enabled, bus width is extended to 6 bytes. +* This way the DPU can transfer 6 compressed pixels with bpp +* less or equal to 8 or 3 compressed pixels in case bpp is +* greater than 8. +* +* The back/font porch and pulse width are kept intact. They +* represent timing parameters rather than actual data +* transfer. See the documentation of +* dsi_adjust_pclk_for_compression(). +* +* XXX: widebus is not supported by the driver (yet). */ h_total -= hdisplay; hdisplay = DIV_ROUND_UP(msm_dsc_get_bytes_per_line(msm_host->dsc), 3); -- 2.39.2
Re: [Freedreno] [PATCH] drm/msm/dsi: Document DSC related pclk_rate and hdisplay calculations
On 16/06/2023 15:25, Marijn Suijten wrote: On 2023-06-16 12:41:52, Dmitry Baryshkov wrote: Provide actual documentation for the pclk and hdisplay calculations in the case of DSC compression being used. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dsi/dsi_host.c | 35 -- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index 3f6dfb4f9d5a..72c377c9c7be 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -528,6 +528,21 @@ void dsi_link_clk_disable_v2(struct msm_dsi_host *msm_host) clk_disable_unprepare(msm_host->byte_clk); } +/* + * Adjust the pclk rate by calculating a new hdisplay proportional to Make this a kerneldoc with: Ack /** * dsi_adjust_pclk_for_compression() - Adjust ... + * the compression ratio such that: + * new_hdisplay = old_hdisplay * compressed_bpp / uncompressed_bpp + * + * Porches do not need to be adjusted: + * - For the VIDEO mode they are not compressed by DSC and are passed as is. as-is Cambridge dictionary gives this "as is", without dash. Though this was never tested nor confirmed by QUIC, but we can assume it is the case for now? + * - For the CMD mode the are no actual porches. Instead they represent the the are no -> these are not they currently* represent. Ack Let's make sure that folks read the FIXME below by perhaps rewording it right into this entry? I kept it separately, so that the FIXME can be removed once CMD handling is reworked. + * overhead to the image data transfer. As such, they are calculated for the + * final mode parameters (after the compression) and are not to be adjusted + * too. + * + * FIXME: Reconsider this if/when CMD mode handling is rewritten to use + * refresh rate and data overhead as a starting point of the calculations. + */ static unsigned long dsi_adjust_pclk_for_compression(const struct drm_display_mode *mode, const struct drm_dsc_config *dsc) { @@ -926,8 +941,24 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) if (ret) return; - /* Divide the display by 3 but keep back/font porch and -* pulse width same + /* +* DPU sends 3 bytes per pclk cycle to DSI. If compression is +* not used, a single pixel is transferred at each pulse, no +* matter what bpp or pixel format is used. In case of DSC +* compression this results (due to data alignment +* requirements) in a transfer of 3 compressed pixel per pclk 3 compressed bytes*, not pixels. No, that's the point. With 6bpp one can think that 4 pixels would fit, but they don't. +* cycle. +* +* If widebus is enabled, bus width is extended to 6 bytes. +* This way the DPU can transfer 6 compressed pixels with bpp pixels -> bytes? Same comment, no. +* less or equal to 8 or 3 compressed pyxels in case bpp is pixels*... bytes? And I will ask this **again**: does this mean we can halve pclk? My guess would be no, since all other data transfers are not scaled by wide bus. +* greater than 8. +* +* The back/font porch and pulse width are kept intact. They +* represent timing parameters rather than actual data +* transfer. See FIXME above on dsi_adjust_pclk_for_compression()? Thanks so much for finally putting some of this to paper. - Marijn +* +* XXX: widebus is not supported by the driver (yet). */ h_total -= hdisplay; hdisplay = DIV_ROUND_UP(msm_dsc_get_bytes_per_line(msm_host->dsc), 3); -- 2.39.2 -- With best wishes Dmitry
[Freedreno] [PATCH v3 6/6] drm/msm/a6xx: Fix up GMU region reservations
Change the order of region allocations to make the addresses match downstream. This shouldn't matter very much, but helps eliminate one more difference when comparing register accesses. Also, make the log region 16K long. That's what it is, unconditionally on A6xx and A7xx. Signed-off-by: Konrad Dybcio --- drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c index 55b12a8066ee..d682c1ed48db 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -1640,13 +1640,13 @@ int a6xx_gmu_init(struct a6xx_gpu *a6xx_gpu, struct device_node *node) goto err_memory; } - /* Allocate memory for for the HFI queues */ - ret = a6xx_gmu_memory_alloc(gmu, >hfi, SZ_16K, 0, "hfi"); + /* Allocate memory for the GMU log region */ + ret = a6xx_gmu_memory_alloc(gmu, >log, SZ_16K, 0, "log"); if (ret) goto err_memory; - /* Allocate memory for the GMU log region */ - ret = a6xx_gmu_memory_alloc(gmu, >log, SZ_4K, 0, "log"); + /* Allocate memory for for the HFI queues */ + ret = a6xx_gmu_memory_alloc(gmu, >hfi, SZ_16K, 0, "hfi"); if (ret) goto err_memory; -- 2.41.0
[Freedreno] [PATCH v3 4/6] drm/msm/a6xx: Ensure clean GMU state in a6xx_gmu_fw_start
While it's not very well understood, there is some sort of a fault handler implemented in the GMU firmware which triggers when a certain bit is set, resulting in the M3 core not booting up the way we expect it to. Write a magic value to a magic register to hopefully prevent that from happening. Signed-off-by: Konrad Dybcio --- drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 6 ++ 1 file changed, 6 insertions(+) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c index 5deb79924897..9929ff187368 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -790,6 +790,12 @@ static int a6xx_gmu_fw_start(struct a6xx_gmu *gmu, unsigned int state) gmu_write(gmu, REG_A6XX_GMU_AHB_FENCE_RANGE_0, (1 << 31) | (0xa << 18) | (0xa0)); + /* +* Snapshots toggle the NMI bit which will result in a jump to the NMI +* handler instead of __main. Set the M3 config value to avoid that. +*/ + gmu_write(gmu, REG_A6XX_GMU_CM3_CFG, 0x4052); + chipid = adreno_gpu->rev.core << 24; chipid |= adreno_gpu->rev.major << 16; chipid |= adreno_gpu->rev.minor << 12; -- 2.41.0
[Freedreno] [PATCH v3 5/6] drm/msm/a6xx: Improve GMU force shutdown sequence
The GMU force shutdown sequence involves some additional register cleanup which was not implemented previously. Do so. Signed-off-by: Konrad Dybcio --- drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 7 +++ 1 file changed, 7 insertions(+) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c index 9929ff187368..55b12a8066ee 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -893,6 +893,13 @@ static void a6xx_gmu_force_off(struct a6xx_gmu *gmu) /* Make sure there are no outstanding RPMh votes */ a6xx_gmu_rpmh_off(gmu); + /* Clear the WRITEDROPPED fields and put fence into allow mode */ + gmu_write(gmu, REG_A6XX_GMU_AHB_FENCE_STATUS_CLR, 0x7); + gmu_write(gmu, REG_A6XX_GMU_AO_AHB_FENCE_CTRL, 0); + + /* Make sure the above writes go through */ + wmb(); + /* Halt the gmu cm3 core */ gmu_write(gmu, REG_A6XX_GMU_CM3_SYSRESET, 1); -- 2.41.0
[Freedreno] [PATCH v3 3/6] drm/msm/a6xx: Skip empty protection ranges entries
Some specific SKUs leave certain protection range registers empty. Allow for that behavior. Signed-off-by: Konrad Dybcio --- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 7 +-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c index cd0c9bccdc19..488c69cf08d3 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c @@ -935,8 +935,11 @@ static void a6xx_set_cp_protect(struct msm_gpu *gpu) A6XX_CP_PROTECT_CNTL_ACCESS_FAULT_ON_VIOL_EN | A6XX_CP_PROTECT_CNTL_LAST_SPAN_INF_RANGE); - for (i = 0; i < count - 1; i++) - gpu_write(gpu, REG_A6XX_CP_PROTECT(i), regs[i]); + for (i = 0; i < count - 1; i++) { + /* Intentionally skip writing to some registers */ + if (regs[i]) + gpu_write(gpu, REG_A6XX_CP_PROTECT(i), regs[i]); + } /* last CP_PROTECT to have "infinite" length on the last entry */ gpu_write(gpu, REG_A6XX_CP_PROTECT(count_max - 1), regs[i]); } -- 2.41.0
[Freedreno] [PATCH v3 2/6] drm/msm/a6xx: Use descriptive bitfield names for CP_PROTECT_CNTL
We have the necessary information, so explain which bit does what. Signed-off-by: Konrad Dybcio --- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c index b3ada1e7b598..cd0c9bccdc19 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c @@ -930,7 +930,10 @@ static void a6xx_set_cp_protect(struct msm_gpu *gpu) * protect violation and select the last span to protect from the start * address all the way to the end of the register address space */ - gpu_write(gpu, REG_A6XX_CP_PROTECT_CNTL, BIT(0) | BIT(1) | BIT(3)); + gpu_write(gpu, REG_A6XX_CP_PROTECT_CNTL, + A6XX_CP_PROTECT_CNTL_ACCESS_PROT_EN | + A6XX_CP_PROTECT_CNTL_ACCESS_FAULT_ON_VIOL_EN | + A6XX_CP_PROTECT_CNTL_LAST_SPAN_INF_RANGE); for (i = 0; i < count - 1; i++) gpu_write(gpu, REG_A6XX_CP_PROTECT(i), regs[i]); -- 2.41.0
[Freedreno] [PATCH v3 1/6] drm/msm/a6xx: Add some missing header definitions
Add a definition of the GMU_AHB_FENCE_STATUS_CLR reg and CP_PROTECT_CNTL bitfields. This may be substituted with a mesa header sync. Signed-off-by: Konrad Dybcio --- drivers/gpu/drm/msm/adreno/a6xx_gmu.xml.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.xml.h b/drivers/gpu/drm/msm/adreno/a6xx_gmu.xml.h index 9ab15d91aced..fcd9eb53baf8 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.xml.h +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.xml.h @@ -425,6 +425,8 @@ static inline uint32_t A6XX_GMU_GPU_NAP_CTRL_SID(uint32_t val) #define REG_A6XX_GMU_AHB_FENCE_STATUS 0x9313 +#define REG_A6XX_GMU_AHB_FENCE_STATUS_CLR 0x9314 + #define REG_A6XX_GMU_RBBM_INT_UNMASKED_STATUS 0x9315 #define REG_A6XX_GMU_AO_SPARE_CNTL 0x9316 -- 2.41.0
[Freedreno] [PATCH v3 0/6] Adreno QoL changes
This series brings some niceties in preparation for A7xx introduction. It should be fully independent of the GMU wrapper series. Signed-off-by: Konrad Dybcio --- Changes in v3: - Pull more definitions from mesa - Decode CP_PROTECT_CNTL bitfields - Rebase on next-20230619 - Link to v2: https://lore.kernel.org/r/20230517-topic-a7xx_prep-v2-0-5b9daa2b2...@linaro.org Changes in v2: - Drop switching to using the GMU_AO counter in timestamp - Add a definition for REG_A6XX_GMU_AHB_FENCE_STATUS_CLR, may be subbed with a register sync after mesa MR22901 - Link to v1: https://lore.kernel.org/r/20230517-topic-a7xx_prep-v1-0-7a964f2e9...@linaro.org --- Konrad Dybcio (6): drm/msm/a6xx: Add some missing header definitions drm/msm/a6xx: Use descriptive bitfield names for CP_PROTECT_CNTL drm/msm/a6xx: Skip empty protection ranges entries drm/msm/a6xx: Ensure clean GMU state in a6xx_gmu_fw_start drm/msm/a6xx: Improve GMU force shutdown sequence drm/msm/a6xx: Fix up GMU region reservations drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 21 + drivers/gpu/drm/msm/adreno/a6xx_gmu.xml.h | 2 ++ drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 14 ++ 3 files changed, 29 insertions(+), 8 deletions(-) --- base-commit: 47045630bc409ce6606d97b790895210dd1d517d change-id: 20230517-topic-a7xx_prep-787a69c7d0ff Best regards, -- Konrad Dybcio
Re: [Freedreno] patches dropped from drm-misc-next [Was: Re: [PATCH 00/53] drm: Convert to platform remove callback returning] void
Hi Maxime, On Mon, Jun 19, 2023 at 4:02 PM Maxime Ripard wrote: > On Mon, Jun 19, 2023 at 03:25:28PM +0200, Geert Uytterhoeven wrote: > > On Mon, Jun 19, 2023 at 2:51 PM Maxime Ripard wrote: > > > On Mon, Jun 19, 2023 at 12:53:42PM +0200, Uwe Kleine-König wrote: > > > > On Mon, Jun 19, 2023 at 11:45:37AM +0200, Maxime Ripard wrote: > > > > > On Sun, Jun 18, 2023 at 06:29:50PM +0200, Uwe Kleine-König wrote: > > > > > > On Sun, Jun 18, 2023 at 04:32:55PM +0200, Maxime Ripard wrote: > > > > > > > On Sun, Jun 18, 2023 at 02:39:15PM +0200, Uwe Kleine-König wrote: > > > > > > > > On Sat, Jun 17, 2023 at 10:57:23AM -0700, Doug Anderson wrote: > > > > > > > > > On Sat, Jun 17, 2023 at 9:15 AM Uwe Kleine-König > > > > > > > > > wrote: > > > > > > > > > > Together with the patches that were applied later the > > > > > > > > > > topmost commit > > > > > > > > > > from this series is c2807ecb5290 ("drm/omap: Convert to > > > > > > > > > > platform remove > > > > > > > > > > callback returning void"). This commit was part for the > > > > > > > > > > following next > > > > > > > > > > tags: > > > > > > > > > > > > > > > > > > > > $ git tag -l --contains c2807ecb5290 > > > > > > > > > > next-20230609 > > > > > > > > > > next-20230613 > > > > > > > > > > next-20230614 > > > > > > > > > > next-20230615 > > > > > > > > > > > > > > > > > > > > However in next-20230616 they are missing. In next-20230616 > > > > > > > > > > drm-misc/for-linux-next was > > > > > > > > > > cf683e8870bd4be0fd6b98639286700a35088660. > > > > > > > > > > Compared to c2807ecb5290 this adds 1149 patches but drops > > > > > > > > > > 37 (that are > > > > > > > > > > also not included with a different commit id). The 37 > > > > > > > > > > patches dropped > > > > > > > > > > are 13cdd12a9f934158f4ec817cf048fcb4384aa9dc..c2807ecb5290: > > > > > > > > > > > > > > > > > > > > $ git shortlog -s > > > > > > > > > > 13cdd12a9f934158f4ec817cf048fcb4384aa9dc..c2807ecb5290 > > > > > > > > > > 1 Christophe JAILLET > > > > > > > > > > 2 Jessica Zhang > > > > > > > > > > 5 Karol Wachowski > > > > > > > > > > 1 Laura Nao > > > > > > > > > > 27 Uwe Kleine-König > > > > > > > > > > 1 Wang Jianzheng > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I guess this was done by mistake because nobody told me > > > > > > > > > > about dropping > > > > > > > > > > my/these patches? Can c2807ecb5290 please be merged into > > > > > > > > > > drm-misc-next > > > > > > > > > > again? > > > > > > > > > > > > > > > > > > Actually, it was probably a mistake that these patches got > > > > > > > > > merged to > > > > > > > > > linuxnext during the 4 days that you noticed. However, your > > > > > > > > > patches > > > > > > > > > aren't dropped and are still present in drm-misc-next. > > > > > > > > > > > > > > > > > > drm-misc has a bit of a unique model and it's documented > > > > > > > > > fairly well here: > > > > > > > > > > > > > > > > > > https://drm.pages.freedesktop.org/maintainer-tools/drm-misc.html > > > > > > > > > > > > > > > > Is there a flaw then in this unique model (or its > > > > > > > > implementation) when > > > > > > > > drm-misc/for-linux-next moves in a non-fast-forward manner? > > > > > > > > This isn't > > > > > > > > expected, is it? > > > > > > > > > > > > > > There's no expectation afaik. Any tree merged in linux-next can be > > > > > > > rebased, drop a patch, amend one, etc. without any concern. > > > > > > > > > > > > I agree that there are no rules broken for a tree that is included > > > > > > in > > > > > > next and a maintainer is free to rewrite their tree independant of > > > > > > the > > > > > > tree being included in next. > > > > > > > > > > > > Still I think that shouldn't be used as an excuse. > > > > > > > > > > As an excuse for what? > > > > > > > > Just because the rules for trees in next allow the merged branch to be > > > > rewritten, shouldn't be used to justify rewriting the branch. > > > > > > > > IMHO you still should ensure that only commits make it into any next > > > > snapshot via your tree before X-rc1 for some X (e.g. v6.5) that you > > > > intend to be included in X-rc1. > > > > > > That's never been a next rule either. Rust support has been in next for > > > almost a year without being sent as a PR for example. > > > > https://elixir.bootlin.com/linux/latest/source/Documentation/process/2.Process.rst#L297 > > > >"The linux-next tree is, by design, a snapshot of what the mainline > > is expected to look like after the next merge window closes." > > > > The general rule for linux-next is that its contents are intended to end > > up in the next kernel release, and that it should not contain commits > > that are intended for the next-next release, cfr. what Stephen sends > > out to new trees: > > > >"You will need to ensure that the patches/commits in your
Re: [Freedreno] patches dropped from drm-misc-next [Was: Re: [PATCH 00/53] drm: Convert to platform remove callback returning] void
On Mon, Jun 19, 2023 at 03:25:28PM +0200, Geert Uytterhoeven wrote: > Hi Maxime, > > CC sfr > > On Mon, Jun 19, 2023 at 2:51 PM Maxime Ripard wrote: > > On Mon, Jun 19, 2023 at 12:53:42PM +0200, Uwe Kleine-König wrote: > > > On Mon, Jun 19, 2023 at 11:45:37AM +0200, Maxime Ripard wrote: > > > > On Sun, Jun 18, 2023 at 06:29:50PM +0200, Uwe Kleine-König wrote: > > > > > On Sun, Jun 18, 2023 at 04:32:55PM +0200, Maxime Ripard wrote: > > > > > > On Sun, Jun 18, 2023 at 02:39:15PM +0200, Uwe Kleine-König wrote: > > > > > > > On Sat, Jun 17, 2023 at 10:57:23AM -0700, Doug Anderson wrote: > > > > > > > > On Sat, Jun 17, 2023 at 9:15 AM Uwe Kleine-König > > > > > > > > wrote: > > > > > > > > > Together with the patches that were applied later the topmost > > > > > > > > > commit > > > > > > > > > from this series is c2807ecb5290 ("drm/omap: Convert to > > > > > > > > > platform remove > > > > > > > > > callback returning void"). This commit was part for the > > > > > > > > > following next > > > > > > > > > tags: > > > > > > > > > > > > > > > > > > $ git tag -l --contains c2807ecb5290 > > > > > > > > > next-20230609 > > > > > > > > > next-20230613 > > > > > > > > > next-20230614 > > > > > > > > > next-20230615 > > > > > > > > > > > > > > > > > > However in next-20230616 they are missing. In next-20230616 > > > > > > > > > drm-misc/for-linux-next was > > > > > > > > > cf683e8870bd4be0fd6b98639286700a35088660. > > > > > > > > > Compared to c2807ecb5290 this adds 1149 patches but drops 37 > > > > > > > > > (that are > > > > > > > > > also not included with a different commit id). The 37 patches > > > > > > > > > dropped > > > > > > > > > are 13cdd12a9f934158f4ec817cf048fcb4384aa9dc..c2807ecb5290: > > > > > > > > > > > > > > > > > > $ git shortlog -s > > > > > > > > > 13cdd12a9f934158f4ec817cf048fcb4384aa9dc..c2807ecb5290 > > > > > > > > > 1 Christophe JAILLET > > > > > > > > > 2 Jessica Zhang > > > > > > > > > 5 Karol Wachowski > > > > > > > > > 1 Laura Nao > > > > > > > > > 27 Uwe Kleine-König > > > > > > > > > 1 Wang Jianzheng > > > > > > > > > > > > > > > > > > > > > > > > > > > I guess this was done by mistake because nobody told me about > > > > > > > > > dropping > > > > > > > > > my/these patches? Can c2807ecb5290 please be merged into > > > > > > > > > drm-misc-next > > > > > > > > > again? > > > > > > > > > > > > > > > > Actually, it was probably a mistake that these patches got > > > > > > > > merged to > > > > > > > > linuxnext during the 4 days that you noticed. However, your > > > > > > > > patches > > > > > > > > aren't dropped and are still present in drm-misc-next. > > > > > > > > > > > > > > > > drm-misc has a bit of a unique model and it's documented fairly > > > > > > > > well here: > > > > > > > > > > > > > > > > https://drm.pages.freedesktop.org/maintainer-tools/drm-misc.html > > > > > > > > > > > > > > Is there a flaw then in this unique model (or its implementation) > > > > > > > when > > > > > > > drm-misc/for-linux-next moves in a non-fast-forward manner? This > > > > > > > isn't > > > > > > > expected, is it? > > > > > > > > > > > > There's no expectation afaik. Any tree merged in linux-next can be > > > > > > rebased, drop a patch, amend one, etc. without any concern. > > > > > > > > > > I agree that there are no rules broken for a tree that is included in > > > > > next and a maintainer is free to rewrite their tree independant of the > > > > > tree being included in next. > > > > > > > > > > Still I think that shouldn't be used as an excuse. > > > > > > > > As an excuse for what? > > > > > > Just because the rules for trees in next allow the merged branch to be > > > rewritten, shouldn't be used to justify rewriting the branch. > > > > > > IMHO you still should ensure that only commits make it into any next > > > snapshot via your tree before X-rc1 for some X (e.g. v6.5) that you > > > intend to be included in X-rc1. > > > > That's never been a next rule either. Rust support has been in next for > > almost a year without being sent as a PR for example. > > https://elixir.bootlin.com/linux/latest/source/Documentation/process/2.Process.rst#L297 > >"The linux-next tree is, by design, a snapshot of what the mainline > is expected to look like after the next merge window closes." > > The general rule for linux-next is that its contents are intended to end > up in the next kernel release, and that it should not contain commits > that are intended for the next-next release, cfr. what Stephen sends > out to new trees: > >"You will need to ensure that the patches/commits in your tree/series have > been: > [...] > * destined for the current or next Linux merge window." > > and what he requests regularly in his announces, e.g.: > >"Please do not add any v6.4 related commits to your linux-next included >
Re: [Freedreno] patches dropped from drm-misc-next [Was: Re: [PATCH 00/53] drm: Convert to platform remove callback returning] void
Hello Maxime, On Mon, Jun 19, 2023 at 02:47:09PM +0200, Maxime Ripard wrote: > On Mon, Jun 19, 2023 at 12:53:42PM +0200, Uwe Kleine-König wrote: > > IMHO you still should ensure that only commits make it into any next > > snapshot via your tree before X-rc1 for some X (e.g. v6.5) that you > > intend to be included in X-rc1. > > That's never been a next rule either. Rust support has been in next for > almost a year without being sent as a PR for example. It seems not to be rigorously enforced, but it exists. See for example https://lore.kernel.org/all/20230510092313.16693...@canb.auug.org.au/ . @Stephen: you wrote there You will need to ensure that the patches/commits in your tree/series have been [...] destined for the current or next Linux merge window. This is a bit ambiguous because (AFAIK) during a merge window no patches should be added that are supposed to go in during the next one, right? Maybe adapt your template to read: [...] destined to be included in the next -rc1 release. which is more precise? Even if others don't adhere to it, IMHO it's still an opportunity to improve. Also there is a difference between a patch that is included in next that doesn't make it in during the next merge window and a patch that disappears from next. The latter (up to now) only happened to me when there was a problem with the patch and the maintainer who first thought the patch to be fine changed their opinion. > > > > For me, if a maintainer puts some patch into next that's a statement > > > > saying (approximately) "I think this patch is fine and I intend to > > > > send it to Linus during the next merge window.". > > > > > > I mean, that's what we're saying and doing? > > > > No, on 2023-06-09 I assumed that my patches will go into v6.5-rc1 (as it > > was part of next-20230609). A few days later however the patches were > > dropped. > > > > The two options that would have made the experience smoother for me are: > > > > a) keep c2807ecb5290 in next and send it for v6.5-rc1; or > > That's not an option. You were simply too late for v6.5-rc1, unless you > expect us to get rid of timezones and work on week-ends. But surely you > don't. We're mixing two things here. One is: "When will my patches be merged?". I have no problem being patient here and b) is fine for me. The other is "The patches first being included in next and then later not anymore is a thing that just waits to be misinterpreted". This latter is the one I care about here and that I think should be fixed for the future. > > b) keep c2807ecb5290 in a branch that doesn't result it entering next > > before v6.5-rc1. > > All the drm-misc committers use dim. If that's a concern for you, feel > free to send a patch addressing this to dim. Not sure this is sensible given that I neither use nor know dim. Also I think it should be the drm-misc maintainers who should care here given that it's them who create this unfortunate situation again and again. > > > > So my expectation is that if a patch is dropped again from next, there > > > > was a problem and it would be fair if the maintainer tells the > > > > author/submitter about this problem and that the patch was dropped. > > > > > > But it wasn't dropped, > > > > From my POV it was dropped from next as it was part of next between > > next-20230609 and next-20230615 but not any more since next-20230616. > > You talk about (not) being dropped from some branch in drm-misc, that's > > irrelevant for the thing I'm complaining about. > > You were never told that they were merged in linux-next, but in > drm-misc-next. That's nitpicking and little helpful here. In your bubble where only or mostly drm-misc matters it's ok to only look at drm-misc. But for a contributor who sends patches for dozens of subsystems next is the more useful place to look and each subsystem that is special is an obstacle. > If they did, it's mostly an unfortunate artifact. I see some progress in this discussion as you seem to agree this is unfortunate. Actually that's all I intend to achieve. > We have a documentation that explains the process and how drm-misc-next > works. If that's still confusing somehow, feel free to amend it to make > it clearer. > > > > it's still very much to be sent to Linus during the next merge window. > > > > "next merge window" as in the one leading to 6.5-rc1? Either we mean > > different things when we say "next merge window", or there is a > > misunderstanding I don't see yet. > > Linus doesn't want to receive in a PR patches that haven't been in > linux-next for at least two weeks. In most cases that's rc6, which means > that by the time we send our last PR before rc6, the > next-merge-window-while-still-meeting-Linus-requirements is 6.6. > > The rule applies to all trees, and it's why the soc tree also requires > its submaintainers to submit their PR before -rc6. > > So yeah, sorry if it was confusing. At the end of the day, it's a >
[Freedreno] Requests For Proposals for hosting XDC 2024 are now open
Hello everyone! The X.org board is soliciting proposals to host XDC in 2024. Since XDC 2023 is being held in Europe this year, we've decided to host in North America. However, the board is open to other locations, especially if there's an interesting co-location with another conference. If you're considering hosting XDC, we've assembled a wiki page with what's generally expected and needed: https://www.x.org/wiki/Events/RFP/ When submitting your proposal, please make sure to include at least the key information about the potential location in question, possible dates along with estimated costs. Proposals can be submitted to board at foundation.x.org until the deadline of *September 17th, 2023*. Additionally, an quirk early heads-up to the board if you're considering hosting would be appreciated, in case we need to adjust the schedule a bit. Also, earlier is better since there generally will be a bit of Q with organizers. And if you just have some questions about what organizing XDC entails, please feel free to chat with previous organizers, or someone from the board. Thanks, Ricardo Garcia, on behalf of X.Org
Re: [Freedreno] patches dropped from drm-misc-next [Was: Re: [PATCH 00/53] drm: Convert to platform remove callback returning] void
On Mon, Jun 19, 2023 at 11:45:37AM +0200, Maxime Ripard wrote: > On Sun, Jun 18, 2023 at 06:29:50PM +0200, Uwe Kleine-König wrote: > > Hello Maxime, > > > > On Sun, Jun 18, 2023 at 04:32:55PM +0200, Maxime Ripard wrote: > > > On Sun, Jun 18, 2023 at 02:39:15PM +0200, Uwe Kleine-König wrote: > > > > On Sat, Jun 17, 2023 at 10:57:23AM -0700, Doug Anderson wrote: > > > > > On Sat, Jun 17, 2023 at 9:15 AM Uwe Kleine-König > > > > > wrote: > > > > > > Together with the patches that were applied later the topmost commit > > > > > > from this series is c2807ecb5290 ("drm/omap: Convert to platform > > > > > > remove > > > > > > callback returning void"). This commit was part for the following > > > > > > next > > > > > > tags: > > > > > > > > > > > > $ git tag -l --contains c2807ecb5290 > > > > > > next-20230609 > > > > > > next-20230613 > > > > > > next-20230614 > > > > > > next-20230615 > > > > > > > > > > > > However in next-20230616 they are missing. In next-20230616 > > > > > > drm-misc/for-linux-next was > > > > > > cf683e8870bd4be0fd6b98639286700a35088660. > > > > > > Compared to c2807ecb5290 this adds 1149 patches but drops 37 (that > > > > > > are > > > > > > also not included with a different commit id). The 37 patches > > > > > > dropped > > > > > > are 13cdd12a9f934158f4ec817cf048fcb4384aa9dc..c2807ecb5290: > > > > > > > > > > > > $ git shortlog -s > > > > > > 13cdd12a9f934158f4ec817cf048fcb4384aa9dc..c2807ecb5290 > > > > > > 1 Christophe JAILLET > > > > > > 2 Jessica Zhang > > > > > > 5 Karol Wachowski > > > > > > 1 Laura Nao > > > > > > 27 Uwe Kleine-König > > > > > > 1 Wang Jianzheng > > > > > > > > > > > > > > > > > > I guess this was done by mistake because nobody told me about > > > > > > dropping > > > > > > my/these patches? Can c2807ecb5290 please be merged into > > > > > > drm-misc-next > > > > > > again? > > > > > > > > > > Actually, it was probably a mistake that these patches got merged to > > > > > linuxnext during the 4 days that you noticed. However, your patches > > > > > aren't dropped and are still present in drm-misc-next. > > > > > > > > > > drm-misc has a bit of a unique model and it's documented fairly well > > > > > here: > > > > > > > > > > https://drm.pages.freedesktop.org/maintainer-tools/drm-misc.html > > > > > > > > Is there a flaw then in this unique model (or its implementation) when > > > > drm-misc/for-linux-next moves in a non-fast-forward manner? This isn't > > > > expected, is it? > > > > > > There's no expectation afaik. Any tree merged in linux-next can be > > > rebased, drop a patch, amend one, etc. without any concern. > > > > I agree that there are no rules broken for a tree that is included in > > next and a maintainer is free to rewrite their tree independant of the > > tree being included in next. > > > > Still I think that shouldn't be used as an excuse. > > As an excuse for what? Just because the rules for trees in next allow the merged branch to be rewritten, shouldn't be used to justify rewriting the branch. IMHO you still should ensure that only commits make it into any next snapshot via your tree before X-rc1 for some X (e.g. v6.5) that you intend to be included in X-rc1. > > For me, if a maintainer puts some patch into next that's a statement > > saying (approximately) "I think this patch is fine and I intend to > > send it to Linus during the next merge window.". > > I mean, that's what we're saying and doing? No, on 2023-06-09 I assumed that my patches will go into v6.5-rc1 (as it was part of next-20230609). A few days later however the patches were dropped. The two options that would have made the experience smoother for me are: a) keep c2807ecb5290 in next and send it for v6.5-rc1; or b) keep c2807ecb5290 in a branch that doesn't result it entering next before v6.5-rc1. > > So my expectation is that if a patch is dropped again from next, there > > was a problem and it would be fair if the maintainer tells the > > author/submitter about this problem and that the patch was dropped. > > But it wasn't dropped, From my POV it was dropped from next as it was part of next between next-20230609 and next-20230615 but not any more since next-20230616. You talk about (not) being dropped from some branch in drm-misc, that's irrelevant for the thing I'm complaining about. > it's still very much to be sent to Linus during the next merge window. "next merge window" as in the one leading to 6.5-rc1? Either we mean different things when we say "next merge window", or there is a misunderstanding I don't see yet. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König| Industrial Linux Solutions | https://www.pengutronix.de/ | signature.asc Description: PGP signature
Re: [Freedreno] patches dropped from drm-misc-next [Was: Re: [PATCH 00/53] drm: Convert to platform remove callback returning] void
On Mon, Jun 19, 2023 at 12:53:42PM +0200, Uwe Kleine-König wrote: > On Mon, Jun 19, 2023 at 11:45:37AM +0200, Maxime Ripard wrote: > > On Sun, Jun 18, 2023 at 06:29:50PM +0200, Uwe Kleine-König wrote: > > > Hello Maxime, > > > > > > On Sun, Jun 18, 2023 at 04:32:55PM +0200, Maxime Ripard wrote: > > > > On Sun, Jun 18, 2023 at 02:39:15PM +0200, Uwe Kleine-König wrote: > > > > > On Sat, Jun 17, 2023 at 10:57:23AM -0700, Doug Anderson wrote: > > > > > > On Sat, Jun 17, 2023 at 9:15 AM Uwe Kleine-König > > > > > > wrote: > > > > > > > Together with the patches that were applied later the topmost > > > > > > > commit > > > > > > > from this series is c2807ecb5290 ("drm/omap: Convert to platform > > > > > > > remove > > > > > > > callback returning void"). This commit was part for the following > > > > > > > next > > > > > > > tags: > > > > > > > > > > > > > > $ git tag -l --contains c2807ecb5290 > > > > > > > next-20230609 > > > > > > > next-20230613 > > > > > > > next-20230614 > > > > > > > next-20230615 > > > > > > > > > > > > > > However in next-20230616 they are missing. In next-20230616 > > > > > > > drm-misc/for-linux-next was > > > > > > > cf683e8870bd4be0fd6b98639286700a35088660. > > > > > > > Compared to c2807ecb5290 this adds 1149 patches but drops 37 > > > > > > > (that are > > > > > > > also not included with a different commit id). The 37 patches > > > > > > > dropped > > > > > > > are 13cdd12a9f934158f4ec817cf048fcb4384aa9dc..c2807ecb5290: > > > > > > > > > > > > > > $ git shortlog -s > > > > > > > 13cdd12a9f934158f4ec817cf048fcb4384aa9dc..c2807ecb5290 > > > > > > > 1 Christophe JAILLET > > > > > > > 2 Jessica Zhang > > > > > > > 5 Karol Wachowski > > > > > > > 1 Laura Nao > > > > > > > 27 Uwe Kleine-König > > > > > > > 1 Wang Jianzheng > > > > > > > > > > > > > > > > > > > > > I guess this was done by mistake because nobody told me about > > > > > > > dropping > > > > > > > my/these patches? Can c2807ecb5290 please be merged into > > > > > > > drm-misc-next > > > > > > > again? > > > > > > > > > > > > Actually, it was probably a mistake that these patches got merged to > > > > > > linuxnext during the 4 days that you noticed. However, your patches > > > > > > aren't dropped and are still present in drm-misc-next. > > > > > > > > > > > > drm-misc has a bit of a unique model and it's documented fairly > > > > > > well here: > > > > > > > > > > > > https://drm.pages.freedesktop.org/maintainer-tools/drm-misc.html > > > > > > > > > > Is there a flaw then in this unique model (or its implementation) when > > > > > drm-misc/for-linux-next moves in a non-fast-forward manner? This isn't > > > > > expected, is it? > > > > > > > > There's no expectation afaik. Any tree merged in linux-next can be > > > > rebased, drop a patch, amend one, etc. without any concern. > > > > > > I agree that there are no rules broken for a tree that is included in > > > next and a maintainer is free to rewrite their tree independant of the > > > tree being included in next. > > > > > > Still I think that shouldn't be used as an excuse. > > > > As an excuse for what? > > Just because the rules for trees in next allow the merged branch to be > rewritten, shouldn't be used to justify rewriting the branch. > > IMHO you still should ensure that only commits make it into any next > snapshot via your tree before X-rc1 for some X (e.g. v6.5) that you > intend to be included in X-rc1. That's never been a next rule either. Rust support has been in next for almost a year without being sent as a PR for example. > > > For me, if a maintainer puts some patch into next that's a statement > > > saying (approximately) "I think this patch is fine and I intend to > > > send it to Linus during the next merge window.". > > > > I mean, that's what we're saying and doing? > > No, on 2023-06-09 I assumed that my patches will go into v6.5-rc1 (as it > was part of next-20230609). A few days later however the patches were > dropped. > > The two options that would have made the experience smoother for me are: > > a) keep c2807ecb5290 in next and send it for v6.5-rc1; or That's not an option. You were simply too late for v6.5-rc1, unless you expect us to get rid of timezones and work on week-ends. But surely you don't. > b) keep c2807ecb5290 in a branch that doesn't result it entering next > before v6.5-rc1. All the drm-misc committers use dim. If that's a concern for you, feel free to send a patch addressing this to dim. > > > So my expectation is that if a patch is dropped again from next, there > > > was a problem and it would be fair if the maintainer tells the > > > author/submitter about this problem and that the patch was dropped. > > > > But it wasn't dropped, > > From my POV it was dropped from next as it was part of next between > next-20230609 and next-20230615 but not any more
Re: [Freedreno] patches dropped from drm-misc-next [Was: Re: [PATCH 00/53] drm: Convert to platform remove callback returning] void
Hi Maxime, CC sfr On Mon, Jun 19, 2023 at 2:51 PM Maxime Ripard wrote: > On Mon, Jun 19, 2023 at 12:53:42PM +0200, Uwe Kleine-König wrote: > > On Mon, Jun 19, 2023 at 11:45:37AM +0200, Maxime Ripard wrote: > > > On Sun, Jun 18, 2023 at 06:29:50PM +0200, Uwe Kleine-König wrote: > > > > On Sun, Jun 18, 2023 at 04:32:55PM +0200, Maxime Ripard wrote: > > > > > On Sun, Jun 18, 2023 at 02:39:15PM +0200, Uwe Kleine-König wrote: > > > > > > On Sat, Jun 17, 2023 at 10:57:23AM -0700, Doug Anderson wrote: > > > > > > > On Sat, Jun 17, 2023 at 9:15 AM Uwe Kleine-König > > > > > > > wrote: > > > > > > > > Together with the patches that were applied later the topmost > > > > > > > > commit > > > > > > > > from this series is c2807ecb5290 ("drm/omap: Convert to > > > > > > > > platform remove > > > > > > > > callback returning void"). This commit was part for the > > > > > > > > following next > > > > > > > > tags: > > > > > > > > > > > > > > > > $ git tag -l --contains c2807ecb5290 > > > > > > > > next-20230609 > > > > > > > > next-20230613 > > > > > > > > next-20230614 > > > > > > > > next-20230615 > > > > > > > > > > > > > > > > However in next-20230616 they are missing. In next-20230616 > > > > > > > > drm-misc/for-linux-next was > > > > > > > > cf683e8870bd4be0fd6b98639286700a35088660. > > > > > > > > Compared to c2807ecb5290 this adds 1149 patches but drops 37 > > > > > > > > (that are > > > > > > > > also not included with a different commit id). The 37 patches > > > > > > > > dropped > > > > > > > > are 13cdd12a9f934158f4ec817cf048fcb4384aa9dc..c2807ecb5290: > > > > > > > > > > > > > > > > $ git shortlog -s > > > > > > > > 13cdd12a9f934158f4ec817cf048fcb4384aa9dc..c2807ecb5290 > > > > > > > > 1 Christophe JAILLET > > > > > > > > 2 Jessica Zhang > > > > > > > > 5 Karol Wachowski > > > > > > > > 1 Laura Nao > > > > > > > > 27 Uwe Kleine-König > > > > > > > > 1 Wang Jianzheng > > > > > > > > > > > > > > > > > > > > > > > > I guess this was done by mistake because nobody told me about > > > > > > > > dropping > > > > > > > > my/these patches? Can c2807ecb5290 please be merged into > > > > > > > > drm-misc-next > > > > > > > > again? > > > > > > > > > > > > > > Actually, it was probably a mistake that these patches got merged > > > > > > > to > > > > > > > linuxnext during the 4 days that you noticed. However, your > > > > > > > patches > > > > > > > aren't dropped and are still present in drm-misc-next. > > > > > > > > > > > > > > drm-misc has a bit of a unique model and it's documented fairly > > > > > > > well here: > > > > > > > > > > > > > > https://drm.pages.freedesktop.org/maintainer-tools/drm-misc.html > > > > > > > > > > > > Is there a flaw then in this unique model (or its implementation) > > > > > > when > > > > > > drm-misc/for-linux-next moves in a non-fast-forward manner? This > > > > > > isn't > > > > > > expected, is it? > > > > > > > > > > There's no expectation afaik. Any tree merged in linux-next can be > > > > > rebased, drop a patch, amend one, etc. without any concern. > > > > > > > > I agree that there are no rules broken for a tree that is included in > > > > next and a maintainer is free to rewrite their tree independant of the > > > > tree being included in next. > > > > > > > > Still I think that shouldn't be used as an excuse. > > > > > > As an excuse for what? > > > > Just because the rules for trees in next allow the merged branch to be > > rewritten, shouldn't be used to justify rewriting the branch. > > > > IMHO you still should ensure that only commits make it into any next > > snapshot via your tree before X-rc1 for some X (e.g. v6.5) that you > > intend to be included in X-rc1. > > That's never been a next rule either. Rust support has been in next for > almost a year without being sent as a PR for example. https://elixir.bootlin.com/linux/latest/source/Documentation/process/2.Process.rst#L297 "The linux-next tree is, by design, a snapshot of what the mainline is expected to look like after the next merge window closes." The general rule for linux-next is that its contents are intended to end up in the next kernel release, and that it should not contain commits that are intended for the next-next release, cfr. what Stephen sends out to new trees: "You will need to ensure that the patches/commits in your tree/series have been: [...] * destined for the current or next Linux merge window." and what he requests regularly in his announces, e.g.: "Please do not add any v6.4 related commits to your linux-next included branches until after v6.3-rc1 has been released." AFAIU, the exception to the rule is new, self-contained, and sometimes controversial development, which may have to cook for a few more cycles, if it ends up in a PR at all. > > > > For me, if a maintainer puts some patch into next
Re: [Freedreno] patches dropped from drm-misc-next [Was: Re: [PATCH 00/53] drm: Convert to platform remove callback returning] void
On Sun, Jun 18, 2023 at 06:29:50PM +0200, Uwe Kleine-König wrote: > Hello Maxime, > > On Sun, Jun 18, 2023 at 04:32:55PM +0200, Maxime Ripard wrote: > > On Sun, Jun 18, 2023 at 02:39:15PM +0200, Uwe Kleine-König wrote: > > > On Sat, Jun 17, 2023 at 10:57:23AM -0700, Doug Anderson wrote: > > > > On Sat, Jun 17, 2023 at 9:15 AM Uwe Kleine-König > > > > wrote: > > > > > Together with the patches that were applied later the topmost commit > > > > > from this series is c2807ecb5290 ("drm/omap: Convert to platform > > > > > remove > > > > > callback returning void"). This commit was part for the following next > > > > > tags: > > > > > > > > > > $ git tag -l --contains c2807ecb5290 > > > > > next-20230609 > > > > > next-20230613 > > > > > next-20230614 > > > > > next-20230615 > > > > > > > > > > However in next-20230616 they are missing. In next-20230616 > > > > > drm-misc/for-linux-next was cf683e8870bd4be0fd6b98639286700a35088660. > > > > > Compared to c2807ecb5290 this adds 1149 patches but drops 37 (that are > > > > > also not included with a different commit id). The 37 patches dropped > > > > > are 13cdd12a9f934158f4ec817cf048fcb4384aa9dc..c2807ecb5290: > > > > > > > > > > $ git shortlog -s > > > > > 13cdd12a9f934158f4ec817cf048fcb4384aa9dc..c2807ecb5290 > > > > > 1 Christophe JAILLET > > > > > 2 Jessica Zhang > > > > > 5 Karol Wachowski > > > > > 1 Laura Nao > > > > > 27 Uwe Kleine-König > > > > > 1 Wang Jianzheng > > > > > > > > > > > > > > > I guess this was done by mistake because nobody told me about dropping > > > > > my/these patches? Can c2807ecb5290 please be merged into drm-misc-next > > > > > again? > > > > > > > > Actually, it was probably a mistake that these patches got merged to > > > > linuxnext during the 4 days that you noticed. However, your patches > > > > aren't dropped and are still present in drm-misc-next. > > > > > > > > drm-misc has a bit of a unique model and it's documented fairly well > > > > here: > > > > > > > > https://drm.pages.freedesktop.org/maintainer-tools/drm-misc.html > > > > > > Is there a flaw then in this unique model (or its implementation) when > > > drm-misc/for-linux-next moves in a non-fast-forward manner? This isn't > > > expected, is it? > > > > There's no expectation afaik. Any tree merged in linux-next can be > > rebased, drop a patch, amend one, etc. without any concern. > > I agree that there are no rules broken for a tree that is included in > next and a maintainer is free to rewrite their tree independant of the > tree being included in next. > > Still I think that shouldn't be used as an excuse. As an excuse for what? > For me, if a maintainer puts some patch into next that's a statement > saying (approximately) "I think this patch is fine and I intend to > send it to Linus during the next merge window.". I mean, that's what we're saying and doing? > So my expectation is that if a patch is dropped again from next, there > was a problem and it would be fair if the maintainer tells the > author/submitter about this problem and that the patch was dropped. But it wasn't dropped, it's still very much to be sent to Linus during the next merge window. > So my concern is not about rule breaking, but about the strange signal > that is sent to contributors by including their work in next for some > time and then dropping it again without comment. > > > It's also why linux-next is rebuilt entirely every day. > > > > > > The key is that committers can commit to drm-misc-next _at any time_ > > > > regardless of the merge window. The drm-misc merge strategy makes this > > > > OK. Specifically, when it's late in the linux cycle then drm-misc-next > > > > is supposed to stop merging to linuxnext. Then, shortly after the > > > > merge window closes, patches will start flowing again. > > > > > > > > So basically your patches are landed and should even keep the same git > > > > hashes when they eventually make it to Linux. They just won't land for > > > > another release cycle of Linux. > > > > > > OK, c2807ecb5290 is still included in drm-misc-next. So while I don't > > > understand the whole model, the patches at least seem to be scheduled to > > > go in during the next merge window. > > > > It's not that complicated. > > > > drm-misc-next is always open, and we start targeting release X + 2 when > > X-rc6 is released. > > > > This is due to Linus wanting all the commits sent as part of the PR in > > linux-next for two weeks. > > > > In order to converge towards (X + 1)-rc1 in linux-next, as soon as X-rc6 > > is released, we remove drm-misc-next from the linux-next branch. All the > > patches in drm-misc-next that were targetting X + 1 are in drm/next by > > then, so it's not a concern. > > So if I were a maintainer of drm-misc, I'd want that no commit from > drm-misc-next migrates to next after -rc6. > > Also
Re: [Freedreno] [PATCH v8 10/18] drm/msm/a6xx: Introduce GMU wrapper support
On 17.06.2023 18:07, Akhil P Oommen wrote: > On Sat, Jun 17, 2023 at 02:00:50AM +0200, Konrad Dybcio wrote: >> >> On 16.06.2023 19:54, Akhil P Oommen wrote: >>> On Thu, Jun 15, 2023 at 11:43:04PM +0200, Konrad Dybcio wrote: On 10.06.2023 00:06, Akhil P Oommen wrote: > On Mon, May 29, 2023 at 03:52:29PM +0200, Konrad Dybcio wrote: >> >> Some (particularly SMD_RPM, a.k.a non-RPMh) SoCs implement A6XX GPUs >> but don't implement the associated GMUs. This is due to the fact that >> the GMU directly pokes at RPMh. Sadly, this means we have to take care >> of enabling & scaling power rails, clocks and bandwidth ourselves. >> >> Reuse existing Adreno-common code and modify the deeply-GMU-infused >> A6XX code to facilitate these GPUs. This involves if-ing out lots >> of GMU callbacks and introducing a new type of GMU - GMU wrapper (it's >> the actual name that Qualcomm uses in their downstream kernels). >> >> This is essentially a register region which is convenient to model >> as a device. We'll use it for managing the GDSCs. The register >> layout matches the actual GMU_CX/GX regions on the "real GMU" devices >> and lets us reuse quite a bit of gmu_read/write/rmw calls. >> >> Signed-off-by: Konrad Dybcio >> --- >> [...] >> >> + >> +ret = clk_bulk_prepare_enable(gpu->nr_clocks, gpu->grp_clks); >> +if (ret) >> +goto err_bulk_clk; >> + >> +/* If anything goes south, tear the GPU down piece by piece.. */ >> +if (ret) { >> +err_bulk_clk: > > Goto jump directly to another block looks odd to me. Why do you need this > label > anyway? If clk_bulk_prepare_enable() fails, trying to proceed will hang the platform with unclocked accesses. We need to unwind everything that has been done up until that point, in reverse order. >>> >>> I missed this response from you earlier. >>> >>> But you are checking for 'ret' twice here. You will end up here even >>> if you don't jump! So "if (ret) goto err_bulk_clk;" looks >>> unnecessary. >>> >>> -Akhil. >> Ohhh right, silly mistake on my part ;) >> >> I already sent out a v9 since.. Please check it out and if you >> have any further comments, I'll fix this, and if not.. Perhaps I >> could fix it in an incremental patch if that revision is gtg? > > Incremental patch is fine as there is no functional issue. Okay so I took another look with today's next that already contains this series, and it currently looks like: ret = clk_bulk_prepare_enable(gpu->nr_clocks, gpu->grp_clks); if (ret) goto err_bulk_clk; if (adreno_is_a619_holi(adreno_gpu)) a6xx_sptprac_enable(gmu); /* If anything goes south, tear the GPU down piece by piece.. */ if (ret) { err_bulk_clk: So it makes sense this way.. perhaps I just left it in this patch by mistake when I was rebasing some changes. I guess it requires no further action now? Konrad > > -Akhil. > >> >> Konrad >>> > >> +pm_runtime_put(gmu->gxpd); >> +pm_runtime_put(gmu->dev); >> +dev_pm_opp_set_opp(>pdev->dev, NULL); >> +} >> +err_set_opp: > > Generally, it is better to name the label based on what you do here. For > eg: "unlock_lock:". That seems to be a mixed bag all throughout the kernel, I've seen many usages of err_(what went wrong) > > Also, this function is small enough that it is better to return directly > in case of error. I think that would be more readable. Not really, adding the necessary cleanup steps in `if (ret)` blocks would roughly double the function's size. > >> +mutex_unlock(_gpu->gmu.lock); >> + >> +if (!ret) >> +msm_devfreq_resume(gpu); >> + >> +return ret; >> +} >> + >> +static int a6xx_gmu_pm_suspend(struct msm_gpu *gpu) >> { >> struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu); >> struct a6xx_gpu *a6xx_gpu = to_a6xx_gpu(adreno_gpu); >> @@ -1720,7 +1799,40 @@ static int a6xx_pm_suspend(struct msm_gpu *gpu) >> return 0; >> } >> >> -static int a6xx_get_timestamp(struct msm_gpu *gpu, uint64_t *value) >> +static int a6xx_pm_suspend(struct msm_gpu *gpu) >> +{ >> +struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu); >> +struct a6xx_gpu *a6xx_gpu = to_a6xx_gpu(adreno_gpu); >> +struct a6xx_gmu *gmu = _gpu->gmu; >> +int i; >> + >> +trace_msm_gpu_suspend(0); >> + >> +msm_devfreq_suspend(gpu); >> + >> +mutex_lock(_gpu->gmu.lock); > > Again, is this initialized somewhere? > >> + >> +/* Drain the outstanding traffic on memory buses */ >> +a6xx_bus_clear_pending_transactions(adreno_gpu, true); >> + >> +
Re: [Freedreno] [PATCH] drm/msm/dp: Drop aux devices together with DP controller
On Mon, Jun 12, 2023 at 03:01:06PM -0700, Bjorn Andersson wrote: > Using devres to depopulate the aux bus made sure that upon a probe > deferral the EDP panel device would be destroyed and recreated upon next > attempt. > > But the struct device which the devres is tied to is the DPUs > (drm_dev->dev), which may be happen after the DP controller is torn > down. There appears to be some words missing in this sentence. > Indications of this can be seen in the commonly seen EDID-hexdump full > of zeros in the log, This could happen also when the aux bus lifetime was tied to DP controller and is mostly benign as dp_aux_deinit() set the "initted" flag to false. > or the occasional/rare KASAN fault where the > panel's attempt to read the EDID information causes a use after free on > DP resources. But this is clearly a bug as there's a small window where the aux bus struct holding the above flag may also have been released... > It's tempting to move the devres to the DP controller's struct device, > but the resources used by the device(s) on the aux bus are explicitly > torn down in the error path. The KASAN-reported use-after-free also > remains, as the DP aux "module" explicitly frees its devres-allocated > memory in this code path. Right, and this would also not work as the aux bus could remain populated for the next bind attempt which would then fail (as described in the commit message of the offending commit). > As such, explicitly depopulate the aux bus in the error path, and in the > component unbind path, to avoid these issues. Sounds good. > Fixes: 2b57f726611e ("drm/msm/dp: fix aux-bus EP lifetime") This one should also have a stable tag: Cc: sta...@vger.kernel.org # 5.19 > Signed-off-by: Bjorn Andersson > --- > drivers/gpu/drm/msm/dp/dp_display.c | 14 +++--- > 1 file changed, 3 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/msm/dp/dp_display.c > b/drivers/gpu/drm/msm/dp/dp_display.c > index 3d8fa2e73583..bbb0550a022b 100644 > --- a/drivers/gpu/drm/msm/dp/dp_display.c > +++ b/drivers/gpu/drm/msm/dp/dp_display.c > @@ -322,6 +322,8 @@ static void dp_display_unbind(struct device *dev, struct > device *master, > > kthread_stop(dp->ev_tsk); > > + of_dp_aux_depopulate_bus(dp->aux); This may now be called without first having populated the bus, but looks like that still works. > + > dp_power_client_deinit(dp->power); > dp_unregister_audio_driver(dev, dp->audio); > dp_aux_unregister(dp->aux); I know this one was merged while I was out-of-office last week, but for the record: Reviewed-by: Johan Hovold Tested-by: Johan Hovold Johan