STRUCT MHI_CONTROLLER_CONFIG(9)
π struct mhi_controller_config(9) π
okay bestie, welcome to the Kernel API Manual β this page is literally about the root MHI controller configuration struct, and we're gonna go through every field like it's the group chat receipts. no cap π
β¨ NAME β¨
struct mhi_controller_config β Root MHI controller configuration. that's the name, iconic and to the point π«Ά
π¦ SYNOPSIS π¦
here's the struct in all its exact, do-not-touch-a-single-character glory:
struct mhi_controller_config {
u32 max_channels;
u32 timeout_ms;
u32 ready_timeout_ms;
u32 buf_len;
u32 num_channels;
const struct mhi_channel_config *ch_cfg;
u32 num_events;
struct mhi_event_config *event_cfg;
bool use_bounce_buf;
bool m2_no_db;
};
π Members π
okay so every member has a job, and we are not skipping any of them:
max_channelsβ Maximum number of channels supported. that's the ceiling, bestie.timeout_msβ Timeout value for operations.0means use default. yes, zero is the "just use the vibes default" signal β¨ready_timeout_msβ Timeout value for waiting device to be ready (optional). optional but very much noticed πbuf_lenβ Size of automatically allocated buffers.0means use default. again, zero = default mode πnum_channelsβ Number of channels defined inch_cfg. it's giving "count your blessings, but specifically your channels."ch_cfgβ Array of defined channels. the actual channel lineup, slay.num_eventsβ Number of event rings defined inevent_cfg. event-ring headcount, periodt.event_cfgβ Array of defined event rings. the event-ring roster, iconic.use_bounce_bufβ Use a bounce buffer pool due to limited DDR access. practical, necessary, lowkey essential πm2_no_dbβ Host is not allowed to ring DB in M2 state. that's a hard no on DB-ringing in M2, no cap.
π SEE ALSO π
bestie, the whole extended universe is here. first the kernel file: ./include/linux/mhi.h, then the full squad in original order: enum mhi_callback(9), enum mhi_flags(9), enum mhi_device_type(9), enum mhi_ch_type(9), struct mhi_buf(9), struct image_info(9), struct mhi_link_info(9), enum mhi_ee_type(9), enum mhi_state(9), enum mhi_ch_ee_mask(9), enum mhi_er_data_type(9), enum mhi_db_brst_mode(9), struct mhi_channel_config(9), struct mhi_event_config(9), struct mhi_controller(9), struct mhi_device(9), struct mhi_result(9), struct mhi_driver(9), mhi_alloc_controller(9), mhi_free_controller(9), mhi_register_controller(9), mhi_unregister_controller(9), __mhi_driver_register(9), mhi_driver_unregister(9), mhi_set_mhi_state(9), mhi_notify(9), mhi_get_free_desc_count(9), mhi_prepare_for_power_up(9), mhi_async_power_up(9), mhi_sync_power_up(9), mhi_power_down(9), mhi_power_down_keep_dev(9), mhi_unprepare_after_power_down(9), mhi_pm_suspend(9), mhi_pm_resume(9), mhi_pm_resume_force(9), mhi_download_rddm_image(9), mhi_force_rddm_mode(9), mhi_get_exec_env(9), mhi_get_mhi_state(9), mhi_soc_reset(9), mhi_device_get_sync(9), mhi_device_put(9), mhi_prepare_for_transfer(9), mhi_unprepare_from_transfer(9), mhi_queue_buf(9), mhi_queue_skb(9), mhi_queue_is_full(9), mhi_get_channel_doorbell_offset(9).
mwah π this page lives in ./include/linux, dated October 2026, and it's the struct mhi_controller_config(9) page from the Kernel API Manual. bye bestie, go configure something iconic π«Άβ¨
π¦ 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