Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d87000e9 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm_serial_hs: Handle Tx request while Clock OFF"

parents d167001f ae91e054
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -1532,7 +1532,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))
@@ -2128,6 +2129,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;
	}

@@ -2903,6 +2906,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;
@@ -3070,15 +3078,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);

@@ -3088,6 +3097,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;
	}