On Thu, Jan 23, 2020 at 01:58:22PM +0100, Arnd Bergmann wrote: > On Thu, Jan 23, 2020 at 12:18 PM Manivannan Sadhasivam > <manivannan.sadhasivam@xxxxxxxxxx> wrote: > > +============ > > +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, SMMU, 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. > > I don't see any callers of mhi_register_controller(). Did I just miss it or did > you not post one? I'm particularly interested in where the configuration comes > from, is this hardcoded in the driver, or parsed from firmware or from registers > in the hardware itself? > I have not included the controller driver in this patchset. But you can take a look at the ath11k controller driver here: https://git.linaro.org/people/manivannan.sadhasivam/linux.git/tree/drivers/net/wireless/ath/ath11k/mhi.c?h=ath11k-qca6390-mhi#n13 So the configuration comes from the static structures defined in the controller driver. Earlier revision derived the configuration from devicetree but there are many cases where this MHI bus is being used in non DT environments like x86. So inorder to be platform agnostic, we chose static declaration method. In future we can add DT/ACPI support for the applicable parameters. I will include the link to this controller driver in the cover letter of future iterations. Thanks, Mani > Arnd