STRUCT PANEL_DELAY(9)
π struct panel_delay(9) β like, the whole Kernel API Manual moment β¨
okay so bestie, welcome to struct panel_delay β the little struct that literally just describes delays for a simple panel. That's it. That's the whole vibe. It's a timing sheet for your screen, and honestly it's giving "backstage pass to the panel" π
β¨ SYNOPSIS β¨
struct panel_delay {
unsigned int hpd_reliable;
unsigned int hpd_absent;
unsigned int powered_on_to_enable;
unsigned int prepare_to_enable;
unsigned int enable;
unsigned int disable;
unsigned int pre_unprepare;
unsigned int unprepare;
};
look at her. eight unsigned int fields, all milliseconds, all main character energy π
πΈ Members πΈ
hpd_reliableβ time for HPD to be reliable πhpd_absentβ time to wait if HPD isn't hooked up πpowered_on_to_enableβ time between panel powered on and enable β‘prepare_to_enableβ time between prepare and enable π¦enableβ time for the panel to display a valid frame β¨disableβ time for the panel to turn the display off π€pre_unprepareβ time for the end of video data to power off πunprepareβ time to power down completely π
now let's actually go through them one by one, because the details MATTER π«Ά
hpd_reliable β time for HPD to be reliable
The time (in milliseconds) that it takes after powering the panel before the HPD signal is reliable. Ideally this is 0 β but bestie, some panels, board designs, or bad pulldown configs can cause a glitch here. π
NOTE: on some old panel data this number appears to be much too big. Presumably some old panels simply didn't have HPD hooked up and put thehpd_absenthere because this field predates thehpd_absent. While that works, it's non-ideal. ngl that's a legacy-code jumpscare π
hpd_absent β time to wait if HPD isn't hooked up
Add this to the prepare delay if we know Hot Plug Detect isn't used.
This is T3-max on eDP timing diagrams, or the delay from power on until HPD is guaranteed to be asserted. π
powered_on_to_enable β time between panel powered on and enable
The minimum time, in milliseconds, that needs to have passed between when panel powered on and enable may begin. β³
This is (T3+T4+T5+T6+T8)-min on eDP timing diagrams β or, in human terms, after the power supply enabled until we can turn the backlight on and see valid data. π₯
This doesn't normally need to be set if timings are already met byprepare_to_enableorenable. so like... don't overthink it π
prepare_to_enable β time between prepare and enable
The minimum time, in milliseconds, that needs to have passed between when prepare finished and enable may begin. If at enable time less time has passed since prepare finished, the driver waits for the remaining time. β²οΈ
If a fixed enable delay is also specified, we'll start counting before delaying for the fixed delay.
If a fixed prepare delay is also specified, we won't start counting until after the fixed delay. We can't overlap this fixed delay with the min time because the fixed delay doesn't happen at the end of the function if a HPD GPIO was specified. π€
In other words:
prepare ... // do fixed prepare delay // wait for HPD
GPIO if applicable // start counting for prepare_to_enable
enable // do fixed enable delay // enforce prepare_to_enable min time
This is usually (T4+T5+T6+T8)-min on eDP timing diagrams. It is effectively the time from HPD going high till you can turn on the backlight. π
enable β time for the panel to display a valid frame
The time (in milliseconds) that it takes for the panel to display the first valid frame after starting to receive video data. π¬
This is (T6-min + max(T7-max, T8-min)) on eDP timing diagrams β or the delay after link training finishes until we can turn the backlight on and see valid data. yes there's a nested max() in there, she's iconic like that π
disable β time for the panel to turn the display off
The time (in milliseconds) that it takes for the panel to turn the display off (no content is visible). π€
This is T9-min (delay from backlight off to end of valid video data) on eDP timing diagrams. It is not common to set. so like, lowkey optional π
pre_unprepare β time for the end of video data to power off
The time (in milliseconds) that it needs to have passed between the end of valid video data from source and start powering off. π
This is T10-min on eDP timing diagrams. It is not common to set. same energy, honestly π
unprepare β time to power down completely
The time (in milliseconds) that it takes for the panel to power itself down completely. π
This time is used to prevent a future "prepare" from starting until at least this many milliseconds has passed. If at prepare time less time has passed since unprepare finished, the driver waits for the remaining time. β°
This is T12-min on eDP timing diagrams. π
π SEE ALSO π
- Kernel file
./drivers/gpu/drm/panel/panel-edp.c struct panel_desc(9)struct edp_panel_entry(9)
and that's the page bestie!! π«Ά this one lives in ./drivers/gpu/drm/panel, stamped October 2026, and it's from the Kernel API Manual β struct panel_delay(9), fr fr. go take a nap, you've earned it ππ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms