On Mon, Mar 25, 2024 at 2:56 PM Douglas Anderson <dianders@xxxxxxxxxxxx> wrote: > > If we're using the generic "edp-panel" compatible string and we fail > to detect an eDP panel then we fall back to conservative timings for > powering up and powering down the panel. Abstract out the function for > setting these timings so it can be used in future patches. > > No functional change expected--just code movement. > > Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx> Reviewed-by: Hsin-Yi Wang <hsinyi@xxxxxxxxxxxx> > --- > > drivers/gpu/drm/panel/panel-edp.c | 40 +++++++++++++++---------------- > 1 file changed, 20 insertions(+), 20 deletions(-) > > diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c > index c4f851200aa2..8a19fea90ddf 100644 > --- a/drivers/gpu/drm/panel/panel-edp.c > +++ b/drivers/gpu/drm/panel/panel-edp.c > @@ -760,6 +760,25 @@ static void panel_edp_parse_panel_timing_node(struct device *dev, > > static const struct edp_panel_entry *find_edp_panel(u32 panel_id, const struct drm_edid *edid); > > +static void panel_edp_set_conservative_timings(struct panel_edp *panel, struct panel_desc *desc) > +{ > + /* > + * It's highly likely that the panel will work if we use very > + * conservative timings, so let's do that. > + * > + * Nearly all panels have a "unprepare" delay of 500 ms though > + * there are a few with 1000. Let's stick 2000 in just to be > + * super conservative. > + * > + * An "enable" delay of 80 ms seems the most common, but we'll > + * throw in 200 ms to be safe. > + */ > + desc->delay.unprepare = 2000; > + desc->delay.enable = 200; > + > + panel->detected_panel = ERR_PTR(-EINVAL); > +} > + > static int generic_edp_panel_probe(struct device *dev, struct panel_edp *panel) > { > struct panel_desc *desc; > @@ -816,26 +835,7 @@ static int generic_edp_panel_probe(struct device *dev, struct panel_edp *panel) > dev_warn(dev, > "Unknown panel %s %#06x, using conservative timings\n", > vend, product_id); > - > - /* > - * It's highly likely that the panel will work if we use very > - * conservative timings, so let's do that. We already know that > - * the HPD-related delays must have worked since we got this > - * far, so we really just need the "unprepare" / "enable" > - * delays. We don't need "prepare_to_enable" since that > - * overlaps the "enable" delay anyway. > - * > - * Nearly all panels have a "unprepare" delay of 500 ms though > - * there are a few with 1000. Let's stick 2000 in just to be > - * super conservative. > - * > - * An "enable" delay of 80 ms seems the most common, but we'll > - * throw in 200 ms to be safe. > - */ > - desc->delay.unprepare = 2000; > - desc->delay.enable = 200; > - > - panel->detected_panel = ERR_PTR(-EINVAL); > + panel_edp_set_conservative_timings(panel, desc); > } else { > dev_info(dev, "Detected %s %s (%#06x)\n", > vend, panel->detected_panel->ident.name, product_id); > -- > 2.44.0.396.g6e790dbe36-goog >