iommu: arm-smmu: Ensure tbu driver is registered before arm-smmu

Since the arm-smmu driver may depend on the tbu driver, ensure the later
is available to prevent probe deferral.

Change-Id: I0fd38c945e8fc6b60a7529c776fbebf1e5ccb0d5
Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index 67defc8..5a10a02 100644
--- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c
@@ -3832,15 +3832,21 @@
 	.remove	= arm_smmu_device_remove,
 };
 
+static struct platform_driver qsmmuv500_tbu_driver;
 static int __init arm_smmu_init(void)
 {
 	static bool registered;
 	int ret = 0;
 
-	if (!registered) {
-		ret = platform_driver_register(&arm_smmu_driver);
-		registered = !ret;
-	}
+	if (registered)
+		return 0;
+
+	ret = platform_driver_register(&qsmmuv500_tbu_driver);
+	if (ret)
+		return ret;
+
+	ret = platform_driver_register(&arm_smmu_driver);
+	registered = !ret;
 	return ret;
 }
 
@@ -4124,12 +4130,6 @@
 	.probe	= qsmmuv500_tbu_probe,
 };
 
-static int __init qsmmuv500_tbu_init(void)
-{
-	return platform_driver_register(&qsmmuv500_tbu_driver);
-}
-subsys_initcall(qsmmuv500_tbu_init);
-
 MODULE_DESCRIPTION("IOMMU API for ARM architected SMMU implementations");
 MODULE_AUTHOR("Will Deacon <will.deacon@arm.com>");
 MODULE_LICENSE("GPL v2");