Commit | Line | Data |
---|---|---|
9435dc3b MS |
1 | .. SPDX-License-Identifier: GPL-2.0 |
2 | ||
3 | ============ | |
4 | MHI Topology | |
5 | ============ | |
6 | ||
7 | This document provides information about the MHI topology modeling and | |
8 | representation in the kernel. | |
9 | ||
10 | MHI Controller | |
11 | -------------- | |
12 | ||
13 | MHI controller driver manages the interaction with the MHI client devices | |
14 | such as the external modems and WiFi chipsets. It is also the MHI bus master | |
15 | which is in charge of managing the physical link between the host and device. | |
16 | It is however not involved in the actual data transfer as the data transfer | |
17 | is taken care by the physical bus such as PCIe. Each controller driver exposes | |
18 | channels and events based on the client device type. | |
19 | ||
20 | Below are the roles of the MHI controller driver: | |
21 | ||
22 | * Turns on the physical bus and establishes the link to the device | |
23 | * Configures IRQs, IOMMU, and IOMEM | |
24 | * Allocates struct mhi_controller and registers with the MHI bus framework | |
25 | with channel and event configurations using mhi_register_controller. | |
26 | * Initiates power on and shutdown sequence | |
27 | * Initiates suspend and resume power management operations of the device. | |
28 | ||
29 | MHI Device | |
30 | ---------- | |
31 | ||
32 | MHI device is the logical device which binds to a maximum of two MHI channels | |
33 | for bi-directional communication. Once MHI is in powered on state, the MHI | |
34 | core will create MHI devices based on the channel configuration exposed | |
35 | by the controller. There can be a single MHI device for each channel or for a | |
36 | couple of channels. | |
37 | ||
38 | Each supported device is enumerated in:: | |
39 | ||
40 | /sys/bus/mhi/devices/ | |
41 | ||
42 | MHI Driver | |
43 | ---------- | |
44 | ||
45 | MHI driver is the client driver which binds to one or more MHI devices. The MHI | |
46 | driver sends and receives the upper-layer protocol packets like IP packets, | |
47 | modem control messages, and diagnostics messages over MHI. The MHI core will | |
48 | bind the MHI devices to the MHI driver. | |
49 | ||
50 | Each supported driver is enumerated in:: | |
51 | ||
52 | /sys/bus/mhi/drivers/ | |
53 | ||
54 | Below are the roles of the MHI driver: | |
55 | ||
56 | * Registers the driver with the MHI bus framework using mhi_driver_register. | |
57 | * Prepares the device for transfer by calling mhi_prepare_for_transfer. | |
58 | * Initiates data transfer by calling mhi_queue_transfer. | |
59 | * Once the data transfer is finished, calls mhi_unprepare_from_transfer to | |
60 | end data transfer. |