STRUCT PANEL_DESC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 NAME 🌸

struct panel_desc β€” bestie, it literally describes a simple panel. That's the whole vibe. This is the struct panel_desc(9) page from the Kernel API Manual, and we are getting into it πŸ’…βœ¨


✨ SYNOPSIS ✨

struct panel_desc {
    const struct drm_display_mode *modes;
    unsigned int num_modes;
    const struct display_timing *timings;
    unsigned int num_timings;
    unsigned int bpc;
    struct {
      unsigned int width;
      unsigned int height;
    } size;
    struct {
      unsigned int prepare;
      unsigned int enable;
      unsigned int disable;
      unsigned int unprepare;
    } delay;
    u32 bus_format;
    u32 bus_flags;
    int connector_type;
 };

🫢 Members 🫢

okay so here’s the member-by-member breakdown, and yes, every field is getting its moment πŸ‘‘

  • modes β€” pointer to an array of fixed modes that are appropriate for this panel. If there’s only one mode, then this can just be the address of the mode. NOTE: cannot be used with "timings", and also if this is specified then you cannot override the mode in the device tree.
  • num_modes β€” the number of elements in the modes array. Counting era πŸ”’
  • timings β€” pointer to an array of display timings. NOTE: cannot be used with "modes", and also these will be used to validate a device tree override if one is present.
  • num_timings β€” the number of elements in the timings array. Again: counting ✨
  • bpc β€” bits per color. slay.
  • size β€” structure containing the physical size of this panel.
    • size.width β€” width (in mm) of the active display area.
    • size.height β€” height (in mm) of the active display area.
  • delay β€” structure containing various delay values for this panel.
    • delay.prepare β€” time for the panel to become ready. The time (in milliseconds) that it takes for the panel to become ready and start receiving video data.
    • delay.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.
    • delay.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).
    • delay.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.

  • bus_format β€” see MEDIA_BUS_FMT_... defines. iykyk.
  • bus_flags β€” see DRM_BUS_FLAG_... defines. also iykyk.
  • connector_type β€” LVDS, eDP, DSI, DPI, etc. the connector’s whole personality πŸ’«

πŸ”Ž SEE ALSO πŸ”Ž

Kernel file ./drivers/gpu/drm/panel/panel-simple.c β€” go read it, bestie, it’s right there πŸ“–πŸ’–


mwah πŸ’‹ signing off from ./drivers/gpu/drm/panel, dated October 2026, for struct panel_desc(9) β€” periodt πŸŽ€βœ¨

πŸ“¦ where this page comes from