On Wed, Sep 30, 2026 at 09:42:41PM +0800, Jun Nie wrote:
> Dmitry Baryshkov <[email protected]> 于2026年9月30日周三 00:03写道:
> >
> > On Mon, Jul 27, 2026 at 04:08:41PM +0800, Jun Nie wrote:
> > > Some panels require multiple slice to be sent in a single DSC packet. And
> > > this feature is a must for specific panels, such as Sharp ls026b3sa06. Add
> > > a dsc_slice_per_pkt member into struct drm_dsc_config and support the
> > > feature in msm mdss driver.
> > >
> > > Co-developed-by: Jonathan Marek <[email protected]>
> > > Signed-off-by: Jonathan Marek <[email protected]>
> > > Signed-off-by: Jun Nie <[email protected]>
> > > ---
> > >  drivers/gpu/drm/msm/dsi/dsi_host.c | 27 ++++++++++++---------------
> > >  include/drm/display/drm_dsc.h      |  7 +++++++
> > >  2 files changed, 19 insertions(+), 15 deletions(-)
> > >
> > > @@ -1719,8 +1709,14 @@ static int dsi_host_attach(struct mipi_dsi_host 
> > > *host,
> > >       msm_host->lanes = dsi->lanes;
> > >       msm_host->format = dsi->format;
> > >       msm_host->mode_flags = dsi->mode_flags;
> > > -     if (dsi->dsc)
> > > +     if (dsi->dsc) {
> > >               msm_host->dsc = dsi->dsc;
> > > +             /* for backwards compatibility, assume 1 if not set */
> > > +             msm_host->dsc_slice_per_pkt = dsi->dsc->dsc_slice_per_pkt 
> > > ?: 1;
> > > +     } else {
> > > +             msm_host->dsc = NULL;
> > > +             msm_host->dsc_slice_per_pkt = 0;
> > > +     }
> >
> > Why do you need the else branch? Isn't it already NULL / 0 by default?
> 
> AI bot review comments reminding a case that panel device may be switched
> to another panel. Not sure whether it is possible in real world. Just add this
> for safe.

No, thank you. Either it can happen (and so it should be handled, maybe
at some other place) or it's just a pure AI dillusion.

> >
> > >
> > >       if (msm_host->format == MIPI_DSI_FMT_RGB101010) {
> > >               if (!msm_dsi_host_version_geq(msm_host, 
> > > MSM_DSI_VER_MAJOR_6G,
> > > @@ -1757,6 +1753,7 @@ static int dsi_host_detach(struct mipi_dsi_host 
> > > *host,
> > >       struct msm_dsi_host *msm_host = to_msm_dsi_host(host);
> > >
> > >       dsi_dev_detach(msm_host->pdev);
> > > +     msm_host->dsc = NULL;
> >
> > If you are fixing something, it should come as a separate commit.
> 
> The same case as above.
> >
> > >
> > >       DBG("id=%d", msm_host->id);
> > >
> > > diff --git a/include/drm/display/drm_dsc.h b/include/drm/display/drm_dsc.h
> > > index bbbe7438473d3..c522ab3d71853 100644
> > > --- a/include/drm/display/drm_dsc.h
> > > +++ b/include/drm/display/drm_dsc.h
> > > @@ -267,6 +267,13 @@ struct drm_dsc_config {
> > >        * Offset adjustment for second line in Native 4:2:0 mode
> > >        */
> > >       u16 second_line_offset_adj;
> > > +
> > > +     /**
> > > +      * @dsc_slice_per_pkt:
> > > +      * Number of DSC slices to be sent in a single packet. This is not
> > > +      * part of DSC standard, and only used in some DSI panels so far.
> > > +      */
> > > +     unsigned int dsc_slice_per_pkt;
> >
> > If it's not a part of the standard, I think, it should not be a part of
> > drm_dsc_config. In the end, drm_dsc_config is also being used by other
> > parties, e.g. DP or HDMI. A year ago I saw a version of this patch,
> > having this field in the struct mipi_dsi_device. I think it's a more
> > correct place.
> 
> I will move to struct mipi_dsi_device in next version.

Thanks

> >
> > --
> > With best wishes
> > Dmitry

-- 
With best wishes
Dmitry

Reply via email to