summaryrefslogtreecommitdiff
path: root/drivers/tty
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2014-05-21 06:42:58 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2014-05-21 06:42:57 -0700
commitff10aebd43801b878eb4555d559111ae1fb22c4c (patch)
tree0633db8c0f96adbf18d744dc331c28604d12c375 /drivers/tty
parenta2a4781ebb549aecd49300aea706c5bce286d943 (diff)
parent3372eeeee0ce01e06a2bdbeb784c464fae1c778a (diff)
Merge "msm_serial_hs: Handle Tx request while Clock OFF"
Diffstat (limited to 'drivers/tty')
-rw-r--r--drivers/tty/serial/msm_serial_hs.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/tty/serial/msm_serial_hs.c b/drivers/tty/serial/msm_serial_hs.c
index cc7ff5d898b7..c046a5671f98 100644
--- a/drivers/tty/serial/msm_serial_hs.c
+++ b/drivers/tty/serial/msm_serial_hs.c
@@ -1542,7 +1542,8 @@ static void msm_hs_start_tx_locked(struct uart_port *uport )
struct msm_hs_port *msm_uport = UARTDM_TO_MSM(uport);
if (msm_uport->clk_state != MSM_HS_CLK_ON) {
- MSM_HS_INFO("%s: Failed.Clocks are OFF\n", __func__);
+ MSM_HS_WARN("%s: Failed.Clocks are OFF\n", __func__);
+ return;
}
if ((msm_uport->tx.tx_ready_int_en == 0) &&
(msm_uport->tx.dma_in_flight == 0))
@@ -2140,6 +2141,8 @@ void msm_hs_request_clock_on(struct uart_port *uport)
case MSM_HS_CLK_ON:
break;
case MSM_HS_CLK_PORT_OFF:
+ MSM_HS_ERR("%s:Clock ON failed;UART Port is Closed\n",
+ __func__);
break;
}
MSM_HS_INFO("%s:Clock ON Successful\n", __func__);
@@ -2915,6 +2918,11 @@ static int msm_hs_probe(struct platform_device *pdev)
msm_uport = devm_kzalloc(&pdev->dev, sizeof(struct msm_hs_port),
GFP_KERNEL);
+ if (!msm_uport) {
+ MSM_HS_ERR("Memory allocation failed\n");
+ return -ENOMEM;
+ }
+
msm_uport->uport.type = PORT_UNKNOWN;
uport = &msm_uport->uport;
uport->dev = &pdev->dev;
@@ -3082,15 +3090,16 @@ static int msm_hs_probe(struct platform_device *pdev)
msm_hs_write(uport, UART_DM_MR2, data);
mb();
- msm_uport->clk_state = MSM_HS_CLK_PORT_OFF;
hrtimer_init(&msm_uport->clk_off_timer, CLOCK_MONOTONIC,
HRTIMER_MODE_REL);
msm_uport->clk_off_timer.function = msm_hs_clk_off_retry;
msm_uport->clk_off_delay = ktime_set(0, 1000000); /* 1ms */
ret = sysfs_create_file(&pdev->dev.kobj, &dev_attr_clock.attr);
- if (unlikely(ret))
+ if (unlikely(ret)) {
+ MSM_HS_ERR("Probe Failed as sysfs failed\n");
goto err_clock;
+ }
msm_serial_debugfs_init(msm_uport, pdev->id);
@@ -3100,6 +3109,7 @@ static int msm_hs_probe(struct platform_device *pdev)
ret = uart_add_one_port(&msm_hs_driver, uport);
if (!ret) {
msm_hs_clock_unvote(msm_uport);
+ msm_uport->clk_state = MSM_HS_CLK_PORT_OFF;
return ret;
}