diag: Add support for QSC restart

Add cleanup of SMUX port once disconnect event is
received by diagfwd driver.

CRs-Fixed: 376401
Change-Id: I5ef07c8ccbfcc4ad6c5e41b3d985bdea434ab9ce
Signed-off-by: Ashay Jaiswal <ashayj@codeaurora.org>
diff --git a/drivers/char/diag/diagfwd_hsic.c b/drivers/char/diag/diagfwd_hsic.c
index fedcf03..81c6afa 100644
--- a/drivers/char/diag/diagfwd_hsic.c
+++ b/drivers/char/diag/diagfwd_hsic.c
@@ -296,7 +296,7 @@
 		usb_diag_free_req(driver->mdm_ch);
 	}
 
-	if (driver->logging_mode != MEMORY_DEVICE_MODE) {
+	if (driver->logging_mode == USB_MODE) {
 		if (driver->hsic_device_enabled) {
 			driver->in_busy_hsic_write_on_device = 1;
 			driver->in_busy_hsic_read_on_device = 1;
@@ -307,6 +307,7 @@
 		} else if (driver->diag_smux_enabled) {
 			driver->in_busy_smux = 1;
 			driver->lcid = LCID_INVALID;
+			driver->smux_connected = 0;
 			/* Turn off communication over usb mdm and smux */
 			msm_smux_close(LCID_VALID);
 		}
@@ -440,7 +441,8 @@
 	int ret;
 	if (driver->diag_smux_enabled) {
 		if (driver->lcid && driver->usb_buf_mdm_out &&
-					 (driver->read_len_mdm > 0)) {
+				(driver->read_len_mdm > 0) &&
+				driver->smux_connected) {
 			ret = msm_smux_write(driver->lcid,  NULL,
 		 driver->usb_buf_mdm_out, driver->read_len_mdm);
 			if (ret)