[PATCH v3 3/3] drm/panel-edp: Avoid adding multiple preferred modes

Hsin-Yi Wang hsinyi at chromium.org
Mon Nov 6 20:38:26 UTC 2023


On Mon, Nov 6, 2023 at 12:33 PM Doug Anderson <dianders at chromium.org> wrote:
>
> Hi,
>
> On Mon, Nov 6, 2023 at 12:27 PM Hsin-Yi Wang <hsinyi at chromium.org> wrote:
> >
> > diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c
> > index 0fb439b5efb1..54dbbdf62ec0 100644
> > --- a/drivers/gpu/drm/panel/panel-edp.c
> > +++ b/drivers/gpu/drm/panel/panel-edp.c
> > @@ -594,8 +594,20 @@ static int panel_edp_get_modes(struct drm_panel *panel,
> >                                       p->detected_panel != ERR_PTR(-EINVAL) &&
> >                                       p->detected_panel->override_edid_mode;
> >
> > -       /* probe EDID if a DDC bus is available */
> > -       if (p->ddc) {
> > +       /*
> > +        * If both edid and hard-coded modes exists, only add hard-coded modes
> > +        * to avoid multiple preferred modes.
> > +        */
> > +       if (p->desc->num_timings || p->desc->num_modes) {
> > +               /*
> > +                * Add hard-coded panel modes. Don't call this if there are no
> > +                * timings and no modes (the generic edp-panel case) because it
> > +                * will clobber the display_info that was already set by
> > +                * drm_add_edid_modes().
> > +                */
> > +               num += panel_edp_get_non_edid_modes(p, connector);
> > +       } else if (p->ddc) {
> > +               /* probe EDID if a DDC bus is available */
>
> As per discussion in v2, I think if you have the "ddc" you still want
> to fetch the EDID, you just don't want to add the modes from the EDID.
> This will mean that the EDID is present in sysfs if userspace wants to
> look at it for whatever reason.
>
Ack. Will update this.

> -Doug


More information about the dri-devel mailing list