msm: smd_tty: restrict DS port platform driver

The DS port will be opened from a kernel space client via platform
driver starting with 8660 fusion.  Restrict the smd_tty platform driver
to pre 8660 fusion to prevent conflicts.

Signed-off-by: Jeffrey Hugo <jhugo@codeaurora.org>
diff --git a/arch/arm/mach-msm/smd_tty.c b/arch/arm/mach-msm/smd_tty.c
index a8a504f..2a0dcfc 100644
--- a/arch/arm/mach-msm/smd_tty.c
+++ b/arch/arm/mach-msm/smd_tty.c
@@ -31,6 +31,7 @@
 
 #include <mach/msm_smd.h>
 #include <mach/peripheral-loader.h>
+#include <mach/socinfo.h>
 
 #include "smd_private.h"
 
@@ -456,6 +457,7 @@
 static int __init smd_tty_init(void)
 {
 	int ret;
+	int ds_registered = 0;
 
 	smd_tty_driver = alloc_tty_driver(MAX_SMD_TTYS);
 	if (smd_tty_driver == 0)
@@ -503,9 +505,21 @@
 	smd_tty[0].driver.driver.name = smd_ch_name[0];
 	smd_tty[0].driver.driver.owner = THIS_MODULE;
 	spin_lock_init(&smd_tty[0].reset_lock);
-	ret = platform_driver_register(&smd_tty[0].driver);
-	if (ret)
-		goto out;
+	/*
+	 * DS port is opened in the kernel starting with 8660 fusion.
+	 * Only register the platform driver for targets older than that.
+	 */
+	if (cpu_is_msm7x01() || cpu_is_msm7x25() || cpu_is_msm7x27() ||
+			cpu_is_msm7x27a() || cpu_is_msm7x27aa() ||
+			cpu_is_msm7x25a() || cpu_is_msm7x25aa() ||
+			cpu_is_msm7x30() || cpu_is_qsd8x50() ||
+			cpu_is_msm8x55() ||  (cpu_is_msm8x60() &&
+			socinfo_get_platform_subtype() == 0x1)) {
+		ret = platform_driver_register(&smd_tty[0].driver);
+		if (ret)
+			goto out;
+		ds_registered = 1;
+	}
 	smd_tty[1].driver.probe = smd_tty_dummy_probe;
 	smd_tty[1].driver.driver.name = smd_ch_name[1];
 	smd_tty[1].driver.driver.owner = THIS_MODULE;
@@ -572,7 +586,8 @@
 unreg1:
 	platform_driver_unregister(&smd_tty[1].driver);
 unreg0:
-	platform_driver_unregister(&smd_tty[0].driver);
+	if (ds_registered)
+		platform_driver_unregister(&smd_tty[0].driver);
 out:
 	tty_unregister_device(smd_tty_driver, 0);
 	tty_unregister_device(smd_tty_driver, 1);