iommu/exynos: Play nice in multi-platform builds
authorThierry Reding <treding@nvidia.com>
Fri, 6 Feb 2015 10:44:05 +0000 (11:44 +0100)
committerJoerg Roedel <jroedel@suse.de>
Wed, 25 Feb 2015 12:40:52 +0000 (13:40 +0100)
commita7b67cd5d9afb94fdcacb71b43066b8d70d1d218
tree74f1a6d6dbeee860f6ac299125fb771e3225cf8e
parent367bd978b81c2c7bcdcacdd3156645a27fab0676
iommu/exynos: Play nice in multi-platform builds

The Exynos System MMU driver unconditionally executes code and registers
a struct iommu_ops with the platform bus irrespective of whether it runs
on an Exynos SoC or not. This causes problems in multi-platform kernels
where drivers for other SoCs will no longer be able to register their
own struct iommu_ops or even try to use a struct iommu_ops for an IOMMU
that obviously isn't there.

The smallest fix I could think of is to check for the existence of any
Exynos System MMU devices in the device tree and skip initialization
otherwise.

This fixes a problem on Tegra20 where the DRM driver will try to use the
obviously non-existent Exynos System MMU.

Reported-by: Nicolas Chauvet <kwizart@gmail.com>
Cc: Kukjin Kim <kgene@kernel.org>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/exynos-iommu.c