From: Vinod Koul <vkoul@kernel.org>
To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: Rob Clark <robdclark@gmail.com>,
linux-arm-msm@vger.kernel.org,
Bjorn Andersson <bjorn.andersson@linaro.org>,
David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>,
Jonathan Marek <jonathan@marek.ca>,
Abhinav Kumar <abhinavk@codeaurora.org>,
Jeffrey Hugo <jeffrey.l.hugo@gmail.com>,
Sumit Semwal <sumit.semwal@linaro.org>,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
freedreno@lists.freedesktop.org
Subject: Re: [PATCH v2 10/11] drm/msm/dsi: Add support for DSC configuration
Date: Wed, 20 Oct 2021 17:23:10 +0530 [thread overview]
Message-ID: <YXADJjJ1y9Xp2Zlj@matsya> (raw)
In-Reply-To: <785fe3bf-71fa-aabd-dadf-828b91396fba@linaro.org>
On 15-10-21, 02:18, Dmitry Baryshkov wrote:
> On 07/10/2021 10:08, Vinod Koul wrote:
> > When DSC is enabled, we need to configure DSI registers accordingly and
> > configure the respective stream compression registers.
> >
> > Add support to calculate the register setting based on DSC params and
> > timing information and configure these registers.
> >
> > Signed-off-by: Vinod Koul <vkoul@kernel.org>
> > ---
> > drivers/gpu/drm/msm/dsi/dsi.xml.h | 10 +++
> > drivers/gpu/drm/msm/dsi/dsi_host.c | 123 ++++++++++++++++++++++++++++-
> > 2 files changed, 132 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/msm/dsi/dsi.xml.h b/drivers/gpu/drm/msm/dsi/dsi.xml.h
> > index 49b551ad1bff..c1c85df58c4b 100644
> > --- a/drivers/gpu/drm/msm/dsi/dsi.xml.h
> > +++ b/drivers/gpu/drm/msm/dsi/dsi.xml.h
> > @@ -706,4 +706,14 @@ static inline uint32_t DSI_VERSION_MAJOR(uint32_t val)
> > #define REG_DSI_CPHY_MODE_CTRL 0x000002d4
> > +#define REG_DSI_VIDEO_COMPRESSION_MODE_CTRL 0x0000029c
> > +
> > +#define REG_DSI_VIDEO_COMPRESSION_MODE_CTRL2 0x000002a0
> > +
> > +#define REG_DSI_COMMAND_COMPRESSION_MODE_CTRL 0x000002a4
> > +
> > +#define REG_DSI_COMMAND_COMPRESSION_MODE_CTRL2 0x000002a8
> > +
> > +#define REG_DSI_COMMAND_COMPRESSION_MODE_CTRL3 0x000002ac
> > +
> > #endif /* DSI_XML */
> > diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
> > index ba24458c2e38..86e36a3e97b6 100644
> > --- a/drivers/gpu/drm/msm/dsi/dsi_host.c
> > +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
> > @@ -946,6 +946,26 @@ static void dsi_ctrl_config(struct msm_dsi_host *msm_host, bool enable,
> > dsi_write(msm_host, REG_DSI_CPHY_MODE_CTRL, BIT(0));
> > }
> > +static int dsi_dsc_update_pic_dim(struct msm_display_dsc_config *dsc,
> > + int pic_width, int pic_height)
> > +{
> > + if (!dsc || !pic_width || !pic_height) {
> > + pr_err("DSI: invalid input: pic_width: %d pic_height: %d\n", pic_width, pic_height);
> > + return -EINVAL;
> > + }
> > +
> > + if ((pic_width % dsc->drm->slice_width) || (pic_height % dsc->drm->slice_height)) {
> > + pr_err("DSI: pic_dim %dx%d has to be multiple of slice %dx%d\n",
> > + pic_width, pic_height, dsc->drm->slice_width, dsc->drm->slice_height);
> > + return -EINVAL;
> > + }
>
> This should go to the mode_valid() callback for the dsi_bridge.
Done added a new callback for dsi_bridge to check the mode valid if DSC
is enabled
>
> > +
> > + dsc->drm->pic_width = pic_width;
> > + dsc->drm->pic_height = pic_height;
> > +
> > + return 0;
> > +}
> > +
> > static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi)
> > {
> > struct drm_display_mode *mode = msm_host->mode;
> > @@ -978,7 +998,72 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi)
> > hdisplay /= 2;
> > }
> > + if (msm_host->dsc) {
> > + struct msm_display_dsc_config *dsc = msm_host->dsc;
> > +
> > + /* update dsc params with timing params */
> > + dsi_dsc_update_pic_dim(dsc, mode->hdisplay, mode->vdisplay);
> > + DBG("Mode Width- %d x Height %d\n", dsc->drm->pic_width, dsc->drm->pic_height);
> > +
> > + /* we do the calculations for dsc parameters here so that
> > + * panel can use these parameters
> > + */
> > + dsi_populate_dsc_params(dsc);
> > +
> > + /* Divide the display by 3 but keep back/font porch and
> > + * pulse width same
> > + */
> > + h_total -= hdisplay;
> > + hdisplay /= 3;
> > + h_total += hdisplay;
> > + ha_end = ha_start + hdisplay;
> > + }
> > +
> > if (msm_host->mode_flags & MIPI_DSI_MODE_VIDEO) {
> > + if (msm_host->dsc) {
> > + struct msm_display_dsc_config *dsc = msm_host->dsc;
> > + u32 reg, intf_width, slice_per_intf;
> > + u32 total_bytes_per_intf;
> > +
> > + /* first calculate dsc parameters and then program
> > + * compress mode registers
> > + */
> > + intf_width = hdisplay;
> > + slice_per_intf = DIV_ROUND_UP(intf_width, dsc->drm->slice_width);
> > +
> > + /* If slice_count > slice_per_intf, then use 1
> > + * This can happen during partial update
> > + */
> > + dsc->drm->slice_count = 1;
>
> Is the if() missing here? The indentpation and the comment seems unclear
> about that.
yes, fixed that
--
~Vinod
next prev parent reply other threads:[~2021-10-20 11:53 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-07 7:08 [PATCH v2 00/11] drm/msm: Add Display Stream Compression Support Vinod Koul
2021-10-07 7:08 ` [PATCH v2 01/11] drm/msm/dsi: add support for dsc data Vinod Koul
2021-10-25 14:43 ` Dmitry Baryshkov
2021-10-07 7:08 ` [PATCH v2 02/11] drm/msm/disp/dpu1: Add support for DSC Vinod Koul
2021-10-14 14:40 ` Dmitry Baryshkov
2021-10-19 14:07 ` Vinod Koul
2021-10-07 7:08 ` [PATCH v2 03/11] drm/msm/disp/dpu1: Add support for DSC in pingpong block Vinod Koul
2021-10-14 13:30 ` Dmitry Baryshkov
2021-10-07 7:08 ` [PATCH v2 04/11] drm/msm/disp/dpu1: Add DSC support in RM Vinod Koul
2021-10-14 14:11 ` Dmitry Baryshkov
2021-10-19 15:30 ` Vinod Koul
2021-10-19 15:52 ` Dmitry Baryshkov
2021-10-19 16:25 ` Vinod Koul
2021-10-07 7:08 ` [PATCH v2 05/11] drm/msm/disp/dpu1: Add DSC for SDM845 to hw_catalog Vinod Koul
2021-10-14 13:33 ` Dmitry Baryshkov
2021-10-07 7:08 ` [PATCH v2 06/11] drm/msm/disp/dpu1: Don't use DSC with mode_3d Vinod Koul
2021-10-14 13:41 ` Dmitry Baryshkov
2021-10-14 13:50 ` Dmitry Baryshkov
2021-10-20 6:57 ` Vinod Koul
2021-10-25 14:40 ` Dmitry Baryshkov
2021-10-25 16:10 ` Vinod Koul
2021-10-25 18:33 ` Dmitry Baryshkov
2021-10-07 7:08 ` [PATCH v2 07/11] drm/msm/disp/dpu1: Add DSC support in hw_ctl Vinod Koul
2021-10-14 14:06 ` Dmitry Baryshkov
2021-10-20 9:19 ` Vinod Koul
2021-10-07 7:08 ` [PATCH v2 08/11] drm/msm/disp/dpu1: Add support for DSC in encoder Vinod Koul
2021-10-25 14:44 ` Dmitry Baryshkov
2021-10-07 7:08 ` [PATCH v2 09/11] drm/msm/disp/dpu1: Add support for DSC in topology Vinod Koul
2021-10-14 14:13 ` Dmitry Baryshkov
2021-10-25 14:37 ` Dmitry Baryshkov
2021-10-25 16:11 ` Vinod Koul
2021-10-07 7:08 ` [PATCH v2 10/11] drm/msm/dsi: Add support for DSC configuration Vinod Koul
2021-10-14 23:18 ` Dmitry Baryshkov
2021-10-20 11:53 ` Vinod Koul [this message]
2021-10-07 7:09 ` [PATCH v2 11/11] drm/msm/dsi: Pass DSC params to drm_panel Vinod Koul
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=YXADJjJ1y9Xp2Zlj@matsya \
--to=vkoul@kernel.org \
--cc=abhinavk@codeaurora.org \
--cc=airlied@linux.ie \
--cc=bjorn.andersson@linaro.org \
--cc=daniel@ffwll.ch \
--cc=dmitry.baryshkov@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=jeffrey.l.hugo@gmail.com \
--cc=jonathan@marek.ca \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robdclark@gmail.com \
--cc=sumit.semwal@linaro.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.