STRUCT MHI_PCI_DEV_INFO(9)
π 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 either32or64bits. 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 assdx24). 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 ittruefor 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
- 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