drm_panel_add_follower() succeeding does not mean the callbacks will ever run
scope: device:google-taimen · severity: trap · confidence: proven · subsystem: input
Symptom — a driver follows the panel so it can act when the screen blanks. Registration succeeds, the log line proves it, and the callbacks never run:
ftm4 0-0049: following the panel for screen-off handoverthen dpms=Off with nothing done, and an instrumented panel_disabling() /
panel_enabled() printing nothing across a full blank and unblank.
Why registration proves so little — drm_is_panel_follower() is a test for
one devicetree property and nothing more; the helper says so itself:
/* * The "panel" property is actually a phandle, but for simplicity we * don't bother trying to parse it here. We just need to know if the * property is there. */ return device_property_present(dev, "panel");drm_panel_add_follower() then resolves the phandle, takes the panel and adds
you to panel->followers – all of which can succeed while nothing ever walks
that list. The list is walked only from drm_panel_prepare(),
drm_panel_unprepare(), drm_panel_enable() and drm_panel_disable(). If the
display path never calls those, a follower is inert and silent.
On this device drivers/gpu/drm/msm calls none of them:
grep -rn 'drm_panel_prepare\|drm_panel_unprepare\|drm_panel_enable\|drm_panel_disable' drivers/gpu/drm/msm/# no matchesdrm_panel_bridge in drivers/gpu/drm/bridge/panel.c does call
drm_panel_enable()/drm_panel_disable(), so the question is whether the panel
is reached through that bridge on a DPMS-off, and on msm that is not settled.
What to check before trusting a follower — the log line is not the test. Instrument the callback itself, blank the screen with nothing else armed, and confirm it fired. That is a two-minute check and it is the difference between a feature and a patch that only looks applied.
Where this left things — the screen-off handover is done from userspace instead (the-slpi-subscription-must-come-after-the-handover explains why the ordering matters), which works and is what ships. The follower remains registered and unused.
