• Suman Anna's avatar
    iommu/omap: streamline enable/disable through runtime pm callbacks · db8918f6
    Suman Anna authored
    The OMAP IOMMU devices are typically present within the respective
    client processor subsystem and have their own dedicated hard-reset
    line. Enabling an IOMMU requires the reset line to be deasserted
    and the clocks to be enabled before programming the necessary IOMMU
    registers. The IOMMU disable sequence follow the reverse order of
    enabling. The OMAP IOMMU driver programs the reset lines through
    pdata ops to invoke the omap_device_assert/deassert_hardreset API.
    The clocks are managed through the pm_runtime framework, and the
    callbacks associated with the device's pm_domain, implemented in
    the omap_device layer.
    
    Streamline the enable and disable sequences in the OMAP IOMMU
    driver by implementing all the above operations within the
    runtime pm callbacks. All the OMAP devices have device pm_domain
    callbacks plugged in the omap_device layer for automatic runtime
    management of the clocks. Invoking the reset management functions
    within the runtime pm callbacks in OMAP IOMMU driver therefore
    requires that the default device's pm domain callbacks in the
    omap_device layer be reset, as the ordering sequence for managing
    the reset lines and clocks from the pm_domain callbacks don't gel
    well with the implementation in the IOMMU driver callbacks. The
    omap_device_enable/omap_device_idle functions are invoked through
    the newly added pdata ops.
    
    Consolidating all the device management sequences within the
    runtime pm callbacks allows the driver to easily support both
    system suspend/resume and runtime suspend/resume using common
    code.
    Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    db8918f6
omap-iommu.c 37.8 KB