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);