STRUCT MIPI_DSI_DEVICE(9)
π 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βboolbestie, 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 achar 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 anenum mipi_dsi_pixel_formatπmode_flagsβ DSI operation mode related flags. flags. as in,unsigned longflags. 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 astruct drm_dsc_config *, so it's a pointer to the payload, not the payload itself π§
ngl thehs_rate/lp_rateones are the "read the fine print" members. real limits of the hardware. zeros only for legacy drivers. periodt π
π SEE ALSO π
- Kernel file
./include/drm/drm_mipi_dsi.h struct mipi_dsi_msg(9)struct mipi_dsi_packet(9)struct mipi_dsi_host_ops(9)struct mipi_dsi_host(9)struct mipi_dsi_device_info(9)struct mipi_dsi_multi_context(9)mipi_dsi_pixel_format_to_bpp(9)enum mipi_dsi_dcs_tear_mode(9)mipi_dsi_generic_write_seq_multi(9)mipi_dsi_generic_write_var_seq_multi(9)mipi_dsi_dcs_write_seq_multi(9)mipi_dsi_dcs_write_var_seq_multi(9)mipi_dsi_dual(9)mipi_dsi_dual_generic_write_seq_multi(9)mipi_dsi_dual_dcs_write_seq_multi(9)struct mipi_dsi_driver(9)
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
- 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