diff --git a/drivers/tty/serial/msm_serial_hs.c b/drivers/tty/serial/msm_serial_hs.c
index b3dad297ccb4991aa59e8d9713c0d0c2e0f72eef..9a39c7a13f363bbbe74f740e540efde7be8a4ff4 100755
--- a/drivers/tty/serial/msm_serial_hs.c
+++ b/drivers/tty/serial/msm_serial_hs.c
@@ -91,6 +91,8 @@ static int hs_serial_debug_mask = DBG_LEV;
 module_param_named(debug_mask, hs_serial_debug_mask,
 		   int, S_IRUGO | S_IWUSR | S_IWGRP);
 
+static bool hs_serial_clock_mask = true;
+
 #define MSM_HS_DBG(x...) do { \
 	if (hs_serial_debug_mask >= DBG_LEV) { \
 		if (ipc_msm_hs_log_ctxt) \
@@ -1452,8 +1454,21 @@ static void msm_serial_hs_rx_tlet(unsigned long tlet_ptr)
 	struct platform_device *pdev;
 	const struct msm_serial_hs_platform_data *pdata;
 
+	if(hs_serial_clock_mask == false) {
+		MSM_HS_WARN("%s:Failed.Clock mask are OFF\n", __func__);
+		printk(KERN_INFO "(msm_serial_hs) msm_serial_hs_rx_tlet.Clock mask are OFF\n");
+		return;
+	}
+
 	msm_uport = container_of((struct tasklet_struct *)tlet_ptr,
 				 struct msm_hs_port, rx.tlet);
+
+	if (msm_uport->clk_state != MSM_HS_CLK_ON) {
+		MSM_HS_WARN("%s:Failed.Clocks are OFF\n", __func__);
+		printk(KERN_INFO "(msm_serial_hs) msm_serial_hs_rx_tlet.Clocks are OFF\n");
+		return;
+	}
+
 	uport = &msm_uport->uport;
 	tty = uport->state->port.tty;
 	notify = &msm_uport->notify;
@@ -1726,6 +1741,7 @@ void msm_hs_set_mctrl_locked(struct uart_port *uport,
 	if (msm_uport->clk_state != MSM_HS_CLK_ON) {
 		MSM_HS_WARN("%s:Failed.Clocks are OFF\n", __func__);
 		printk(KERN_INFO "(msm_serial_hs) msm_hs_set_mctrl_locked.Clocks are OFF\n");
+		hs_serial_clock_mask = false;
 		return;
 	}
 	/* RTS is active low */