STRUCT MIPI_DSI_DEVICE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct mipi_dsi_device(9) β€” the Kernel API Manual glow-up

okay so bestie, we're in struct mipi_dsi_device(9) and honestly? this one's kind of a big deal ✨ it's the DSI peripheral device struct β€” like, the whole vibe of a display panel hanging off a DSI bus lives in here. no cap.


🌸 NAME 🌸

struct mipi_dsi_device β€” literally the DSI peripheral device, iconic, main character energy πŸ‘‘


πŸŽ€ SYNOPSIS πŸŽ€

struct mipi_dsi_device {
    struct mipi_dsi_host *host;
    struct device dev;
    bool attached;
    char name[DSI_DEV_NAME_SIZE];
    unsigned int channel;
    unsigned int lanes;
    enum mipi_dsi_pixel_format format;
    unsigned long mode_flags;
    unsigned long hs_rate;
    unsigned long lp_rate;
    struct drm_dsc_config *dsc;
 };

like, that's the whole thing. look at her. so structured. so valid. 🫢


πŸ¦‹ Members πŸ¦‹

okay let's go member by member, i gotchu:

  • host β€” the DSI host for this peripheral. yes queen, she's got a host πŸ”₯
  • dev β€” the driver model device node for this peripheral. this is the kernel's official little ID card for the thing πŸ’³
  • attached β€” bool bestie, and it tells you the DSI device has been successfully attached. it's the "we're official" flag πŸ’–
  • name β€” DSI peripheral chip type, chillin' in a char name[DSI_DEV_NAME_SIZE] πŸŽ€
  • channel β€” the virtual channel assigned to the peripheral. not a TV channel, but honestly kinda the same energy πŸ“Ί
  • lanes β€” number of active data lanes. more lanes = more zoomies ⚑
  • format β€” the pixel format for video mode, as an enum mipi_dsi_pixel_format 🌈
  • mode_flags β€” DSI operation mode related flags. flags. as in, unsigned long flags. iykyk 🚩
  • hs_rate β€” maximum lane frequency for high speed mode in hertz. and this is the important bit: this should be set to the real limits of the hardware, and zero is only accepted for legacy drivers. so like, do not just put a 0 in there and call it a day, that's legacy-driver behavior and we don't do that anymore πŸ™ˆ
  • lp_rate β€” maximum lane frequency for low power mode in hertz. same rules, bestie: set it to the real limits of the hardware, and zero is only accepted for legacy drivers πŸ’€
  • dsc β€” panel/bridge DSC pps payload to be sent. it's a struct drm_dsc_config *, so it's a pointer to the payload, not the payload itself 🧚
ngl the hs_rate/lp_rate ones are the "read the fine print" members. real limits of the hardware. zeros only for legacy drivers. periodt πŸ’…

πŸ’œ SEE ALSO πŸ’œ

like, the whole friend group showed up 🫢✨


⭐ sign-off ⭐

kay so this little love letter to displays came out of ./include/drm, dated October 2026, in the Kernel API Manual πŸ’– thanks for reading bestie, go set your rates to the real hardware limits and slay πŸŽ€πŸ‘‘

πŸ“¦ where this page comes from