STRUCT MHI_PCI_DEV_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

struct mhi_pci_dev_info β€” literally the whole vibe-check sheet for MHI PCI devices, aka all the device-specific info the kernel needs to know about your particular PCI friend. It's giving "ID card but for hardware" πŸͺͺ✨


🌸 SYNOPSIS 🌸

Bestie, here's the whole struct, and yes you're gonna want to read all of it:

struct mhi_pci_dev_info {
    const struct mhi_controller_config *config;
    const struct mhi_controller_config *vf_config;
    const char *name;
    const char *fw;
    const char *edl;
    bool edl_trigger;
    unsigned int bar_num;
    unsigned int dma_data_width;
    unsigned int vf_dma_data_width;
    unsigned int mru_default;
    bool sideband_wake;
    bool no_m3;
    bool reset_on_remove;
 };

(one tiny thing: that's how it's written in the manual, closing brace with one space before it, and we're not touching it β€” copy-paste culture, but make it accurate πŸ’…)


πŸŽ€ Members πŸŽ€

Okay so these are the fields, and each one is a little main character in its own right:

  • config β€” the MHI controller configuration. Like, the blueprint for how this controller should behave πŸ—ΊοΈ
  • vf_config β€” the MHI controller configuration for the Virtual function. It's optional, so no pressure bestie 🫢
  • name β€” the name of the PCI module. Gotta know what to call her πŸ’«
  • fw β€” firmware path β€” if any. If there isn't one, that's just how it is, no cap 🌿
  • edl β€” emergency download mode firmware path β€” if any. Same energy: maybe there's a path, maybe there's not πŸ™ˆ
  • edl_trigger β€” capable of triggering EDL mode in the device β€” if supported. Only some devices can do the emergency-download thing, and that's valid πŸ’€
  • bar_num β€” the PCI base address register to use for MHI MMIO register space. This is literally the address of the address, iconic behavior πŸ‘‘
  • dma_data_width β€” the DMA transfer word size, and it's either 32 or 64 bits. Two options. Choose wisely βš–οΈ
  • vf_dma_data_width β€” the DMA transfer word size for VF's β€” and yep, it's optional πŸ¦‹
  • mru_default β€” default MRU size for MBIM network packets. Packets gotta have a size bestie πŸ“¦
  • sideband_wake β€” for devices using a dedicated sideband GPIO for wakeup instead of inband wake support (such as sdx24). So it's the "wake me up by poking the pin, not by shouting in the data stream" option, fr fr ⏰
  • no_m3 β€” M3 is not supported. As in, M3 support: absent. Don't go looking for it 😭
  • reset_on_remove β€” set it true for devices that require the SoC during driver removal. If your device is one of those, you set it, periodt πŸ”₯

πŸ‘€ SEE ALSO πŸ‘€

  • Kernel file ./drivers/bus/mhi/host/pci_generic.c β€” go read the source, it's right there and it ate, ngl πŸ’œ

That's the whole page, girlies 🌈 β€” this lil' rewrite came from the Kernel API Manual (that's the manual name, folded in all cute for you), sitting in ./drivers/bus/mhi/host, dated October 2026. Slay, go configure some PCI devices responsibly πŸ’…πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from