1 .. SPDX-License-Identifier: GPL-2.0 1 .. SPDX-License-Identifier: GPL-2.0 2 2 3 ============ 3 ============ 4 MHI Topology 4 MHI Topology 5 ============ 5 ============ 6 6 7 This document provides information about the M 7 This document provides information about the MHI topology modeling and 8 representation in the kernel. 8 representation in the kernel. 9 9 10 MHI Controller 10 MHI Controller 11 -------------- 11 -------------- 12 12 13 MHI controller driver manages the interaction 13 MHI controller driver manages the interaction with the MHI client devices 14 such as the external modems and WiFi chipsets. 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 li 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 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 17 is taken care by the physical bus such as PCIe. Each controller driver exposes 18 channels and events based on the client device 18 channels and events based on the client device type. 19 19 20 Below are the roles of the MHI controller driv 20 Below are the roles of the MHI controller driver: 21 21 22 * Turns on the physical bus and establishes th 22 * Turns on the physical bus and establishes the link to the device 23 * Configures IRQs, IOMMU, and IOMEM 23 * Configures IRQs, IOMMU, and IOMEM 24 * Allocates struct mhi_controller and register 24 * Allocates struct mhi_controller and registers with the MHI bus framework 25 with channel and event configurations using 25 with channel and event configurations using mhi_register_controller. 26 * Initiates power on and shutdown sequence 26 * Initiates power on and shutdown sequence 27 * Initiates suspend and resume power managemen 27 * Initiates suspend and resume power management operations of the device. 28 28 29 MHI Device 29 MHI Device 30 ---------- 30 ---------- 31 31 32 MHI device is the logical device which binds t 32 MHI device is the logical device which binds to a maximum of two MHI channels 33 for bi-directional communication. Once MHI is 33 for bi-directional communication. Once MHI is in powered on state, the MHI 34 core will create MHI devices based on the chan 34 core will create MHI devices based on the channel configuration exposed 35 by the controller. There can be a single MHI d 35 by the controller. There can be a single MHI device for each channel or for a 36 couple of channels. 36 couple of channels. 37 37 38 Each supported device is enumerated in:: 38 Each supported device is enumerated in:: 39 39 40 /sys/bus/mhi/devices/ 40 /sys/bus/mhi/devices/ 41 41 42 MHI Driver 42 MHI Driver 43 ---------- 43 ---------- 44 44 45 MHI driver is the client driver which binds to 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 prot 46 driver sends and receives the upper-layer protocol packets like IP packets, 47 modem control messages, and diagnostics messag 47 modem control messages, and diagnostics messages over MHI. The MHI core will 48 bind the MHI devices to the MHI driver. 48 bind the MHI devices to the MHI driver. 49 49 50 Each supported driver is enumerated in:: 50 Each supported driver is enumerated in:: 51 51 52 /sys/bus/mhi/drivers/ 52 /sys/bus/mhi/drivers/ 53 53 54 Below are the roles of the MHI driver: 54 Below are the roles of the MHI driver: 55 55 56 * Registers the driver with the MHI bus framew 56 * Registers the driver with the MHI bus framework using mhi_driver_register. 57 * Prepares the device for transfer by calling 57 * Prepares the device for transfer by calling mhi_prepare_for_transfer. 58 * Initiates data transfer by calling mhi_queue 58 * Initiates data transfer by calling mhi_queue_transfer. 59 * Once the data transfer is finished, calls mh 59 * Once the data transfer is finished, calls mhi_unprepare_from_transfer to 60 end data transfer. 60 end data transfer.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.