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.
>
> >
> > 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.
>
> --
> With best wishes
> Dmitry