diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2014-05-21 06:42:58 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-05-21 06:42:57 -0700 |
commit | ff10aebd43801b878eb4555d559111ae1fb22c4c (patch) | |
tree | 0633db8c0f96adbf18d744dc331c28604d12c375 /drivers/tty | |
parent | a2a4781ebb549aecd49300aea706c5bce286d943 (diff) | |
parent | 3372eeeee0ce01e06a2bdbeb784c464fae1c778a (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.c | 16 |
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; } |