Loading drivers/tty/serial/msm_serial_hs.c +12 −6 Original line number Diff line number Diff line Loading @@ -216,6 +216,7 @@ struct msm_hs_port { struct msm_hs_rx rx; atomic_t clk_count; struct msm_hs_wakeup wakeup; struct wakeup_source ws; struct dentry *loopback_dir; struct work_struct clock_off_w; /* work for actual clock off */ Loading Loading @@ -294,15 +295,15 @@ static int msm_hs_ioctl(struct uart_port *uport, unsigned int cmd, switch (cmd) { case MSM_ENABLE_UART_CLOCK: { MSM_HS_DBG("%s():ENABLE UART CLOCK: cmd=%d, ioc %d\n", __func__, cmd, ioctl_count); MSM_HS_INFO("%s():ENABLE UART CLOCK: cmd=%d, ioc %d\n", __func__, cmd, ioctl_count); atomic_inc(&msm_uport->ioctl_count); msm_hs_request_clock_on(&msm_uport->uport); break; } case MSM_DISABLE_UART_CLOCK: { MSM_HS_DBG("%s():DISABLE UART CLOCK: cmd=%d ioc %d\n", __func__, cmd, ioctl_count); MSM_HS_INFO("%s():DISABLE UART CLOCK: cmd=%d ioc %d\n", __func__, cmd, ioctl_count); if (ioctl_count <= 0) { MSM_HS_WARN("%s():ioctl count -ve, client check voting", __func__); Loading @@ -319,7 +320,7 @@ static int msm_hs_ioctl(struct uart_port *uport, unsigned int cmd, if (msm_uport->pm_state != MSM_HS_PM_ACTIVE) state = 0; ret = state; MSM_HS_DBG("%s():GET UART CLOCK STATUS: cmd=%d state=%d\n", MSM_HS_INFO("%s():GET UART CLOCK STATUS: cmd=%d state=%d\n", __func__, cmd, state); break; } Loading Loading @@ -2273,6 +2274,7 @@ void msm_hs_request_clock_off(struct uart_port *uport) if (msm_uport->obs) atomic_set(&msm_uport->client_req_state, 1); msm_hs_resource_unvote(msm_uport); __pm_relax(&msm_uport->ws); } EXPORT_SYMBOL(msm_hs_request_clock_off); Loading @@ -2281,6 +2283,7 @@ void msm_hs_request_clock_on(struct uart_port *uport) struct msm_hs_port *msm_uport = UARTDM_TO_MSM(uport); msm_hs_resource_vote(UARTDM_TO_MSM(uport)); __pm_stay_awake(&msm_uport->ws); if (msm_uport->pm_state != MSM_HS_PM_ACTIVE) { MSM_HS_WARN("%s(): %p runtime PM callback not invoked", __func__, uport->dev); Loading Loading @@ -2500,6 +2503,7 @@ static int msm_hs_startup(struct uart_port *uport) struct msm_hs_rx *rx = &msm_uport->rx; struct sps_pipe *sps_pipe_handle_tx = tx->cons.pipe_handle; struct sps_pipe *sps_pipe_handle_rx = rx->prod.pipe_handle; struct tty_struct *tty = msm_uport->uport.state->port.tty; rfr_level = uport->fifosize; if (rfr_level > 16) Loading Loading @@ -2533,7 +2537,7 @@ static int msm_hs_startup(struct uart_port *uport) } } wakeup_source_init(&msm_uport->ws, tty->name); ret = msm_hs_config_uart_gpios(uport); if (ret) { MSM_HS_ERR("Uart GPIO request failed\n"); Loading Loading @@ -2643,6 +2647,7 @@ unconfig_uart_gpios: free_uart_irq: free_irq(uport->irq, msm_uport); deinit_uart_clk: wakeup_source_trash(&msm_uport->ws); msm_hs_resource_unvote(msm_uport); MSM_HS_ERR("%s(): Error return\n", __func__); return ret; Loading Loading @@ -3478,6 +3483,7 @@ static void msm_hs_shutdown(struct uart_port *uport) else disable_irq(uport->irq); wakeup_source_trash(&msm_uport->ws); msm_uport->wakeup.enabled = false; /* make sure tx lh finishes */ flush_kthread_worker(&msm_uport->tx.kworker); Loading Loading
drivers/tty/serial/msm_serial_hs.c +12 −6 Original line number Diff line number Diff line Loading @@ -216,6 +216,7 @@ struct msm_hs_port { struct msm_hs_rx rx; atomic_t clk_count; struct msm_hs_wakeup wakeup; struct wakeup_source ws; struct dentry *loopback_dir; struct work_struct clock_off_w; /* work for actual clock off */ Loading Loading @@ -294,15 +295,15 @@ static int msm_hs_ioctl(struct uart_port *uport, unsigned int cmd, switch (cmd) { case MSM_ENABLE_UART_CLOCK: { MSM_HS_DBG("%s():ENABLE UART CLOCK: cmd=%d, ioc %d\n", __func__, cmd, ioctl_count); MSM_HS_INFO("%s():ENABLE UART CLOCK: cmd=%d, ioc %d\n", __func__, cmd, ioctl_count); atomic_inc(&msm_uport->ioctl_count); msm_hs_request_clock_on(&msm_uport->uport); break; } case MSM_DISABLE_UART_CLOCK: { MSM_HS_DBG("%s():DISABLE UART CLOCK: cmd=%d ioc %d\n", __func__, cmd, ioctl_count); MSM_HS_INFO("%s():DISABLE UART CLOCK: cmd=%d ioc %d\n", __func__, cmd, ioctl_count); if (ioctl_count <= 0) { MSM_HS_WARN("%s():ioctl count -ve, client check voting", __func__); Loading @@ -319,7 +320,7 @@ static int msm_hs_ioctl(struct uart_port *uport, unsigned int cmd, if (msm_uport->pm_state != MSM_HS_PM_ACTIVE) state = 0; ret = state; MSM_HS_DBG("%s():GET UART CLOCK STATUS: cmd=%d state=%d\n", MSM_HS_INFO("%s():GET UART CLOCK STATUS: cmd=%d state=%d\n", __func__, cmd, state); break; } Loading Loading @@ -2273,6 +2274,7 @@ void msm_hs_request_clock_off(struct uart_port *uport) if (msm_uport->obs) atomic_set(&msm_uport->client_req_state, 1); msm_hs_resource_unvote(msm_uport); __pm_relax(&msm_uport->ws); } EXPORT_SYMBOL(msm_hs_request_clock_off); Loading @@ -2281,6 +2283,7 @@ void msm_hs_request_clock_on(struct uart_port *uport) struct msm_hs_port *msm_uport = UARTDM_TO_MSM(uport); msm_hs_resource_vote(UARTDM_TO_MSM(uport)); __pm_stay_awake(&msm_uport->ws); if (msm_uport->pm_state != MSM_HS_PM_ACTIVE) { MSM_HS_WARN("%s(): %p runtime PM callback not invoked", __func__, uport->dev); Loading Loading @@ -2500,6 +2503,7 @@ static int msm_hs_startup(struct uart_port *uport) struct msm_hs_rx *rx = &msm_uport->rx; struct sps_pipe *sps_pipe_handle_tx = tx->cons.pipe_handle; struct sps_pipe *sps_pipe_handle_rx = rx->prod.pipe_handle; struct tty_struct *tty = msm_uport->uport.state->port.tty; rfr_level = uport->fifosize; if (rfr_level > 16) Loading Loading @@ -2533,7 +2537,7 @@ static int msm_hs_startup(struct uart_port *uport) } } wakeup_source_init(&msm_uport->ws, tty->name); ret = msm_hs_config_uart_gpios(uport); if (ret) { MSM_HS_ERR("Uart GPIO request failed\n"); Loading Loading @@ -2643,6 +2647,7 @@ unconfig_uart_gpios: free_uart_irq: free_irq(uport->irq, msm_uport); deinit_uart_clk: wakeup_source_trash(&msm_uport->ws); msm_hs_resource_unvote(msm_uport); MSM_HS_ERR("%s(): Error return\n", __func__); return ret; Loading Loading @@ -3478,6 +3483,7 @@ static void msm_hs_shutdown(struct uart_port *uport) else disable_irq(uport->irq); wakeup_source_trash(&msm_uport->ws); msm_uport->wakeup.enabled = false; /* make sure tx lh finishes */ flush_kthread_worker(&msm_uport->tx.kworker); Loading