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

From: Hsin-Yi Wang
Date: Mon Nov 06 2023 - 15:38:59 EST


On Mon, Nov 6, 2023 at 12:33 PM Doug Anderson <dianders@xxxxxxxxxxxx> wrote:
>
> Hi,
>
> On Mon, Nov 6, 2023 at 12:27 PM Hsin-Yi Wang <hsinyi@xxxxxxxxxxxx> 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