mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.1 KiB
60 lines
2.1 KiB
.. 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.
|
|
|