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 以结束数据传输。