Skip to content
  • Suman Anna's avatar
    iommu/omap: Add support to program multiple iommus · 9d5018de
    Suman Anna authored
    
    
    A client user instantiates and attaches to an iommu_domain to
    program the OMAP IOMMU associated with the domain. The iommus
    programmed by a client user are bound with the iommu_domain
    through the user's device archdata. The OMAP IOMMU driver
    currently supports only one IOMMU per IOMMU domain per user.
    
    The OMAP IOMMU driver has been enhanced to support allowing
    multiple IOMMUs to be programmed by a single client user. This
    support is being added mainly to handle the DSP subsystems on
    the DRA7xx SoCs, which have two MMUs within the same subsystem.
    These MMUs provide translations for a processor core port and
    an internal EDMA port. This support allows both the MMUs to
    be programmed together, but with each one retaining it's own
    internal state objects. The internal EDMA block is managed by
    the software running on the DSPs, and this design provides
    on-par functionality with previous generation OMAP DSPs where
    the EDMA and the DSP core shared the same MMU.
    
    The multiple iommus are expected to be provided through a
    sentinel terminated array of omap_iommu_arch_data objects
    through the client user's device archdata. The OMAP driver
    core is enhanced to loop through the array of attached
    iommus and program them for all common operations. The
    sentinel-terminated logic is used so as to not change the
    omap_iommu_arch_data structure.
    
    NOTE:
    1. The IOMMU group and IOMMU core registration is done only for
       the DSP processor core MMU even though both MMUs are represented
       by their own platform device and are probed individually. The
       IOMMU device linking uses this registered MMU device. The struct
       iommu_device for the second MMU is not used even though memory
       for it is allocated.
    2. The OMAP IOMMU debugfs code still continues to operate on
       individual IOMMU objects.
    
    Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
    [t-kristo@ti.com: ported support to 4.13 based kernel]
    Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    9d5018de