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

Commit bbd2fa99 authored by Mukesh Kumar Savaliya's avatar Mukesh Kumar Savaliya
Browse files

serial: 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>
parent 90f9068d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -172,6 +172,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;
@@ -1082,6 +1083,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) {
@@ -1851,6 +1855,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) {
@@ -1900,6 +1906,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;
}