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

Commit 213441b6 authored by Chandana Kishori Chiluveru's avatar Chandana Kishori Chiluveru Committed by Gerrit - the friendly Code Review server
Browse files

erial: msm_geni_serial: Do not start sequencer during port open



This change avoids running RX engine of UART when port open is in
progress and port configuration is taking place. This prevents
unnecessary stop rx operation also.

Change-Id: Ib9a51f66eb377aac867d44a1d5ebeec85df0b8c4
Signed-off-by: default avatarMukesh Kumar Savaliya <msavaliy@codeaurora.org>
Signed-off-by: default avatarChandana Kishori Chiluveru <cchiluve@codeaurora.org>
parent 590a1f5d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -178,6 +178,7 @@ struct msm_geni_serial_port {
	bool manual_flow;
	struct msm_geni_serial_ver_info ver_info;
	u32 cur_tx_remaining;
	bool startup_in_progress;
};

static const struct uart_ops msm_geni_serial_pops;
@@ -1087,6 +1088,9 @@ static void start_rx_sequencer(struct uart_port *uport)
	int ret;
	u32 geni_se_param = UART_PARAM_RFR_OPEN;

	if (port->startup_in_progress)
		return;

	geni_status = geni_read_reg_nolog(uport->membase, SE_GENI_STATUS);
	if (geni_status & S_GENI_CMD_ACTIVE) {
		if (port->xfer_mode == SE_DMA && !port->rx_dma) {
@@ -1847,6 +1851,8 @@ static int msm_geni_serial_startup(struct uart_port *uport)
	scnprintf(msm_port->name, sizeof(msm_port->name), "msm_serial_geni%d",
				uport->line);

	msm_port->startup_in_progress = true;

	if (likely(!uart_console(uport))) {
		ret = msm_geni_serial_power_on(&msm_port->uport);
		if (ret) {
@@ -1896,6 +1902,8 @@ static int msm_geni_serial_startup(struct uart_port *uport)
exit_startup:
	if (likely(!uart_console(uport)))
		msm_geni_serial_power_off(&msm_port->uport);
	msm_port->startup_in_progress = false;

	return ret;
}