MHI 拓扑结构¶
本文档提供了关于内核中 MHI 拓扑结构建模和表示的信息。
MHI 控制器¶
MHI 控制器驱动程序管理与 MHI 客户端设备(如外部调制解调器和 WiFi 芯片组)的交互。它也是 MHI 总线主设备,负责管理主机和设备之间的物理链路。然而,它不参与实际的数据传输,因为数据传输由诸如 PCIe 之类的物理总线处理。每个控制器驱动程序都基于客户端设备类型公开通道和事件。
以下是 MHI 控制器驱动程序的作用
开启物理总线并建立与设备的链路
配置 IRQ、IOMMU 和 IOMEM
分配 struct mhi_controller 并使用 mhi_register_controller 在 MHI 总线框架中注册,同时注册通道和事件配置。
启动电源开启和关闭序列
启动设备的挂起和恢复电源管理操作。
MHI 设备¶
MHI 设备是逻辑设备,它绑定到最多两个 MHI 通道进行双向通信。一旦 MHI 处于通电状态,MHI 核心将基于控制器公开的通道配置创建 MHI 设备。每个通道或几个通道可能有一个 MHI 设备。
每个支持的设备都在以下位置枚举:
/sys/bus/mhi/devices/
MHI 驱动程序¶
MHI 驱动程序是客户端驱动程序,它绑定到一个或多个 MHI 设备。MHI 驱动程序通过 MHI 发送和接收上层协议数据包,例如 IP 数据包、调制解调器控制消息和诊断消息。MHI 核心会将 MHI 设备绑定到 MHI 驱动程序。
每个支持的驱动程序都在以下位置枚举:
/sys/bus/mhi/drivers/
以下是 MHI 驱动程序的作用
使用 mhi_driver_register 在 MHI 总线框架中注册驱动程序。
通过调用 mhi_prepare_for_transfer 来准备设备进行传输。
通过调用 mhi_queue_transfer 来启动数据传输。
一旦数据传输完成,调用 mhi_unprepare_from_transfer 以结束数据传输。