iommu/rockchip: Play nice in multi-platform builds
authorThierry Reding <treding@nvidia.com>
Fri, 6 Feb 2015 10:44:07 +0000 (11:44 +0100)
committerJoerg Roedel <jroedel@suse.de>
Wed, 25 Feb 2015 12:42:25 +0000 (13:42 +0100)
commit425061b0f5074c727446b6383d0880f089ede469
tree019835e6bbdc5c7eb52d5c4d09d6b1ea484e3a63
parentf938aab2c46c906b41261629982e2a2cda9e819f
iommu/rockchip: Play nice in multi-platform builds

The Rockchip IOMMU driver unconditionally executes code and registers a
struct iommu_ops with the platform bus irrespective of whether it runs
on a Rockchip 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
Rockchip IOMMU 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 Rockchip IOMMU.

Reported-by: Nicolas Chauvet <kwizart@gmail.com>
Cc: Heiko Stuebner <heiko@sntech.de>
Cc: Daniel Kurtz <djkurtz@chromium.org>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/rockchip-iommu.c