From: ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org
To: Rob Clark <robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: linux-arm-msm
<linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"Kristian H. Kristensen"
<hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
freedreno
<freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>,
dri-devel
<dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>,
Sravanthi Kollukuduru
<skolluku-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
Subject: Re: [DPU PATCH 2/5] drm/msm/dpu: enable cursor plane for primary crtc
Date: Wed, 20 Jun 2018 21:59:17 +0530 [thread overview]
Message-ID: <cb8f3fad046924a484136bf9170e3e0c@codeaurora.org> (raw)
In-Reply-To: <CAF6AEGv_=AO1hYm0sfC5PKgJC1=BUV=m7TjDWRXGbhpONhFHKg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
On 2018-06-20 19:18, Rob Clark wrote:
> On Wed, Jun 20, 2018 at 8:50 AM, Sravanthi Kollukuduru
> <skolluku@codeaurora.org> wrote:
>> Reserve one DMA pipe as cursor plane and also, update crtc
>> support of cursor in crtc_init.
>
> hmm, mdp5 in 820 had real cursor planes in hw, did these go away? If
> so I guess DMA plane is best candidate for cursor..
Hi Rob,
Yes, the hw cursor support is not present on sdm845.
The ozone compositor expects cursor planes to be present otherwise
cursor is not rendered on screen.
So, we are planning to use one of the DMA pipe for cursor plane.
Thanks,
Rajesh
>
> BR,
> -R
>
>>
>> Signed-off-by: Sravanthi Kollukuduru <skolluku@codeaurora.org>
>> ---
>> drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 7 ++--
>> drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h | 3 +-
>> drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 53
>> +++++++++++---------------
>> drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 7 +++-
>> 4 files changed, 34 insertions(+), 36 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
>> b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
>> index f0aafec..56f6576 100644
>> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
>> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
>> @@ -2027,7 +2027,8 @@ static int _dpu_crtc_init_events(struct dpu_crtc
>> *dpu_crtc)
>> }
>>
>> /* initialize crtc */
>> -struct drm_crtc *dpu_crtc_init(struct drm_device *dev, struct
>> drm_plane *plane)
>> +struct drm_crtc *dpu_crtc_init(struct drm_device *dev, struct
>> drm_plane *plane,
>> + struct drm_plane
>> *cursor_plane)
>> {
>> struct drm_crtc *crtc = NULL;
>> struct dpu_crtc *dpu_crtc = NULL;
>> @@ -2061,8 +2062,8 @@ struct drm_crtc *dpu_crtc_init(struct drm_device
>> *dev, struct drm_plane *plane)
>> dpu_crtc_frame_event_work);
>> }
>>
>> - drm_crtc_init_with_planes(dev, crtc, plane, NULL,
>> &dpu_crtc_funcs,
>> - NULL);
>> + drm_crtc_init_with_planes(dev, crtc, plane,
>> + cursor_plane, &dpu_crtc_funcs, NULL);
>>
>> drm_crtc_helper_add(crtc, &dpu_crtc_helper_funcs);
>> plane->crtc = crtc;
>> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
>> b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
>> index 50c3d4b..b44750d 100644
>> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
>> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
>> @@ -366,7 +366,8 @@ void dpu_crtc_complete_commit(struct drm_crtc
>> *crtc,
>> * @plane: base plane
>> * @Return: new crtc object or error
>> */
>> -struct drm_crtc *dpu_crtc_init(struct drm_device *dev, struct
>> drm_plane *plane);
>> +struct drm_crtc *dpu_crtc_init(struct drm_device *dev, struct
>> drm_plane *plane,
>> + struct drm_plane *cursor_plane);
>>
>> /**
>> * dpu_crtc_cancel_pending_flip - complete flip for clients on
>> lastclose
>> 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 f0c2881..c0b8116 100644
>> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
>> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c
>> @@ -29,6 +29,9 @@
>> BIT(DPU_SSPP_TS_PREFILL) | BIT(DPU_SSPP_TS_PREFILL_REC1) |\
>> BIT(DPU_SSPP_CDP) | BIT(DPU_SSPP_EXCL_RECT))
>>
>> +#define DMA_CURSOR_SDM845_MASK \
>> + (DMA_SDM845_MASK | BIT(DPU_SSPP_CURSOR))
>> +
>> #define MIXER_SDM845_MASK \
>> (BIT(DPU_MIXER_SOURCESPLIT) | BIT(DPU_DIM_LAYER))
>>
>> @@ -169,45 +172,35 @@
>> static const struct dpu_sspp_sub_blks sdm845_dma_sblk_2 =
>> _DMA_SBLK("10");
>> static const struct dpu_sspp_sub_blks sdm845_dma_sblk_3 =
>> _DMA_SBLK("11");
>>
>> -#define SSPP_VIG_BLK(_name, _id, _base, _sblk, _xinid, _clkctrl) \
>> - { \
>> - .name = _name, .id = _id, \
>> - .base = _base, .len = 0x1c8, \
>> - .features = VIG_SDM845_MASK, \
>> - .sblk = &_sblk, \
>> - .xin_id = _xinid, \
>> - .type = SSPP_TYPE_VIG, \
>> - .clk_ctrl = _clkctrl \
>> - }
>> -
>> -#define SSPP_DMA_BLK(_name, _id, _base, _sblk, _xinid, _clkctrl) \
>> +#define SSPP_BLK(_name, _id, _base, _features, \
>> + _sblk, _xinid, _type, _clkctrl) \
>> { \
>> .name = _name, .id = _id, \
>> .base = _base, .len = 0x1c8, \
>> - .features = DMA_SDM845_MASK, \
>> + .features = _features, \
>> .sblk = &_sblk, \
>> .xin_id = _xinid, \
>> - .type = SSPP_TYPE_DMA, \
>> + .type = _type, \
>> .clk_ctrl = _clkctrl \
>> }
>>
>> static struct dpu_sspp_cfg sdm845_sspp[] = {
>> - SSPP_VIG_BLK("sspp_0", SSPP_VIG0, 0x4000,
>> - sdm845_vig_sblk_0, 0, DPU_CLK_CTRL_VIG0),
>> - SSPP_VIG_BLK("sspp_1", SSPP_VIG1, 0x6000,
>> - sdm845_vig_sblk_1, 4, DPU_CLK_CTRL_VIG1),
>> - SSPP_VIG_BLK("sspp_2", SSPP_VIG2, 0x8000,
>> - sdm845_vig_sblk_2, 8, DPU_CLK_CTRL_VIG2),
>> - SSPP_VIG_BLK("sspp_3", SSPP_VIG3, 0xa000,
>> - sdm845_vig_sblk_3, 12, DPU_CLK_CTRL_VIG3),
>> - SSPP_DMA_BLK("sspp_8", SSPP_DMA0, 0x24000,
>> - sdm845_dma_sblk_0, 1, DPU_CLK_CTRL_DMA0),
>> - SSPP_DMA_BLK("sspp_9", SSPP_DMA1, 0x26000,
>> - sdm845_dma_sblk_1, 5, DPU_CLK_CTRL_DMA1),
>> - SSPP_DMA_BLK("sspp_10", SSPP_DMA2, 0x28000,
>> - sdm845_dma_sblk_2, 9, DPU_CLK_CTRL_CURSOR0),
>> - SSPP_DMA_BLK("sspp_11", SSPP_DMA3, 0x2a000,
>> - sdm845_dma_sblk_3, 13, DPU_CLK_CTRL_CURSOR1),
>> + SSPP_BLK("sspp_0", SSPP_VIG0, 0x4000, VIG_SDM845_MASK,
>> + sdm845_vig_sblk_0, 0, SSPP_TYPE_VIG,
>> DPU_CLK_CTRL_VIG0),
>> + SSPP_BLK("sspp_1", SSPP_VIG1, 0x6000, VIG_SDM845_MASK,
>> + sdm845_vig_sblk_1, 4, SSPP_TYPE_VIG,
>> DPU_CLK_CTRL_VIG1),
>> + SSPP_BLK("sspp_2", SSPP_VIG2, 0x8000, VIG_SDM845_MASK,
>> + sdm845_vig_sblk_2, 8, SSPP_TYPE_VIG,
>> DPU_CLK_CTRL_VIG2),
>> + SSPP_BLK("sspp_3", SSPP_VIG3, 0xa000, VIG_SDM845_MASK,
>> + sdm845_vig_sblk_3, 12, SSPP_TYPE_VIG,
>> DPU_CLK_CTRL_VIG3),
>> + SSPP_BLK("sspp_8", SSPP_DMA0, 0x24000, DMA_SDM845_MASK,
>> + sdm845_dma_sblk_0, 1, SSPP_TYPE_DMA,
>> DPU_CLK_CTRL_DMA0),
>> + SSPP_BLK("sspp_9", SSPP_DMA1, 0x26000, DMA_SDM845_MASK,
>> + sdm845_dma_sblk_1, 5, SSPP_TYPE_DMA,
>> DPU_CLK_CTRL_DMA1),
>> + SSPP_BLK("sspp_10", SSPP_DMA2, 0x28000, DMA_SDM845_MASK,
>> + sdm845_dma_sblk_2, 9, SSPP_TYPE_DMA,
>> DPU_CLK_CTRL_CURSOR0),
>> + SSPP_BLK("sspp_11", SSPP_DMA3, 0x2a000,
>> DMA_CURSOR_SDM845_MASK,
>> + sdm845_dma_sblk_3, 13, SSPP_TYPE_DMA,
>> DPU_CLK_CTRL_CURSOR1),
>> };
>>
>> /*************************************************************
>> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
>> b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
>> index 3b17a02..8e2e582 100644
>> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
>> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
>> @@ -588,12 +588,13 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms
>> *dpu_kms)
>> {
>> struct drm_device *dev;
>> struct drm_plane *primary_planes[MAX_PLANES], *plane;
>> + struct drm_plane *cursor_planes[MAX_PLANES] = { NULL };
>> struct drm_crtc *crtc;
>>
>> struct msm_drm_private *priv;
>> struct dpu_mdss_cfg *catalog;
>>
>> - int primary_planes_idx = 0, i, ret;
>> + int primary_planes_idx = 0, cursor_planes_idx = 0, i, ret;
>> int max_crtc_count;
>>
>> if (!dpu_kms || !dpu_kms->dev || !dpu_kms->dev->dev) {
>> @@ -632,6 +633,8 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms
>> *dpu_kms)
>>
>> if (primary)
>> primary_planes[primary_planes_idx++] = plane;
>> + if (catalog->sspp[i].features & BIT(DPU_SSPP_CURSOR))
>> + cursor_planes[cursor_planes_idx++] = plane;
>>
>> }
>>
>> @@ -639,7 +642,7 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms
>> *dpu_kms)
>>
>> /* Create one CRTC per encoder */
>> for (i = 0; i < max_crtc_count; i++) {
>> - crtc = dpu_crtc_init(dev, primary_planes[i]);
>> + crtc = dpu_crtc_init(dev, primary_planes[i],
>> cursor_planes[i]);
>> if (IS_ERR(crtc)) {
>> ret = PTR_ERR(crtc);
>> goto fail;
>> --
>> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
>> Forum,
>> a Linux Foundation Collaborative Project
>>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno
next prev parent reply other threads:[~2018-06-20 16:29 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-20 12:50 [DPU PATCH 0/5] Introduce plane virtualization in DPU driver Sravanthi Kollukuduru
2018-06-20 12:50 ` [DPU PATCH 2/5] drm/msm/dpu: enable cursor plane for primary crtc Sravanthi Kollukuduru
[not found] ` <1529499020-8499-3-git-send-email-skolluku-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-06-20 13:48 ` Rob Clark
[not found] ` <CAF6AEGv_=AO1hYm0sfC5PKgJC1=BUV=m7TjDWRXGbhpONhFHKg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-06-20 16:29 ` ryadav-sgV2jX0FEOL9JmXXK+q4OQ [this message]
2018-06-20 17:04 ` Rob Clark
[not found] ` <1529499020-8499-1-git-send-email-skolluku-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-06-20 12:50 ` [DPU PATCH 1/5] drm/msm/dpu: remove smart dma support Sravanthi Kollukuduru
2018-06-20 12:50 ` [DPU PATCH 3/5] drm/msm/dpu: remove static binding of hw pipe to plane Sravanthi Kollukuduru
2018-06-20 12:50 ` [DPU PATCH 4/5] drm/msm/dpu: introduce state based plane resource management Sravanthi Kollukuduru
2018-06-20 12:50 ` [DPU PATCH 5/5] drm/msm/dpu: dynamic assignment of hw pipe to plane Sravanthi Kollukuduru
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cb8f3fad046924a484136bf9170e3e0c@codeaurora.org \
--to=ryadav-sgv2jx0feol9jmxxk+q4oq@public.gmane.org \
--cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=skolluku-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox