123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- .. SPDX-License-Identifier: GPL-2.0
- ============
- MHI Topology
- ============
- This document provides information about the MHI topology modeling and
- representation in the kernel.
- MHI Controller
- --------------
- MHI controller driver manages the interaction with the MHI client devices
- such as the external modems and WiFi chipsets. It is also the MHI bus master
- which is in charge of managing the physical link between the host and device.
- It is however not involved in the actual data transfer as the data transfer
- is taken care by the physical bus such as PCIe. Each controller driver exposes
- channels and events based on the client device type.
- Below are the roles of the MHI controller driver:
- * Turns on the physical bus and establishes the link to the device
- * Configures IRQs, IOMMU, and IOMEM
- * Allocates struct mhi_controller and registers with the MHI bus framework
- with channel and event configurations using mhi_register_controller.
- * Initiates power on and shutdown sequence
- * Initiates suspend and resume power management operations of the device.
- MHI Device
- ----------
- MHI device is the logical device which binds to a maximum of two MHI channels
- for bi-directional communication. Once MHI is in powered on state, the MHI
- core will create MHI devices based on the channel configuration exposed
- by the controller. There can be a single MHI device for each channel or for a
- couple of channels.
- Each supported device is enumerated in::
- /sys/bus/mhi/devices/
- MHI Driver
- ----------
- MHI driver is the client driver which binds to one or more MHI devices. The MHI
- driver sends and receives the upper-layer protocol packets like IP packets,
- modem control messages, and diagnostics messages over MHI. The MHI core will
- bind the MHI devices to the MHI driver.
- Each supported driver is enumerated in::
- /sys/bus/mhi/drivers/
- Below are the roles of the MHI driver:
- * Registers the driver with the MHI bus framework using mhi_driver_register.
- * Prepares the device for transfer by calling mhi_prepare_for_transfer.
- * Initiates data transfer by calling mhi_queue_transfer.
- * Once the data transfer is finished, calls mhi_unprepare_from_transfer to
- end data transfer.
|