[PATCH 0/3] drm-panel: Don't make failures quite so fatal

From: Douglas Anderson
Date: Mon Mar 25 2024 - 17:57:05 EST



This patch series is born out of the observation that after several
Chromebooks transitioned over to the generic "edp-panel" compatible
string that we received a number of in-the-field reports of the
primary graphics device for the Chromebook not coming up.

The current belief is that these Chromebooks are actually suffering
from a true hardware failure and the panel is either fully
disconnected or it has some type of intermittent connection. While we
can't solve that problem, digging showed that we actually dealt with
this situation better _before_ switching to the generic "edp-panel"
compatible string.

Before switching to "edp-panel", devices using eDP would finish their
probe and would actually not show any failure until you tried to turn
the panel on. That was a _good_ thing. The component model used by
many DRM devices means that if the panel doesn't finish probing that
the rest of the DRM device doesn't probe. In turn, that means that any
other display adapters (like ones that would allow hooking up an
external display) don't probe. The end result was that a device with a
broken panel that could have continued to be a useful computer by
hooking up an external display became e-waste.

I won't say that this series is the most elegant/wonderful thing in
the world. Ideally we could fail the probe of the panel and still use
the external display. That's a pretty serious re-design, though. DRM
devices work like they do with the component model because of some of
their inherent complexities.


Douglas Anderson (3):
drm/panel-edp: Abstract out function to set conservative timings
drm/panel-edp: If we fail to powerup/get EDID, use conservative
timings
drm-panel: If drm_panel_dp_aux_backlight() fails, don't fail panel
probe

drivers/gpu/drm/panel/panel-edp.c | 60 +++++++++++--------
.../gpu/drm/panel/panel-samsung-atna33xc20.c | 9 ++-
2 files changed, 41 insertions(+), 28 deletions(-)

--
2.44.0.396.g6e790dbe36-goog