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