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

Commit 53157c58 authored by Karthikeyan Ramasubramanian's avatar Karthikeyan Ramasubramanian
Browse files

tty: serial: msm_geni_serial: Disable the IRQ during resume_noirq



Suspending the uart console port invokes the uart port shutdown operation.
This disables and frees the concerned IRQ. Resuming the uart console
port invokes the uart port startup operation which requests for the IRQ.
The request_irq operation auto-enables the IRQ. In addition, resume_noirq
implicitly enables the IRQ. This leads to an unbalanced IRQ enable
warning.

Disable the IRQ during resume_noirq to suppress that warning.

Change-Id: I3317231763ecb2a499820b6bc996a30a2da85d0f
Signed-off-by: default avatarKarthikeyan Ramasubramanian <kramasub@codeaurora.org>
parent d9089f47
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -1325,7 +1325,7 @@ static void msm_geni_serial_shutdown(struct uart_port *uport)
	}

	disable_irq(uport->irq);
	free_irq(uport->irq, msm_port);
	free_irq(uport->irq, uport);
	spin_lock_irqsave(&uport->lock, flags);
	msm_geni_serial_stop_tx(uport);
	msm_geni_serial_stop_rx(uport);
@@ -1338,7 +1338,7 @@ static void msm_geni_serial_shutdown(struct uart_port *uport)
		if (msm_port->wakeup_irq > 0) {
			irq_set_irq_wake(msm_port->wakeup_irq, 0);
			disable_irq(msm_port->wakeup_irq);
			free_irq(msm_port->wakeup_irq, msm_port);
			free_irq(msm_port->wakeup_irq, uport);
		}
	}
	IPC_LOG_MSG(msm_port->ipc_log_misc, "%s\n", __func__);
@@ -1463,8 +1463,6 @@ static int msm_geni_serial_startup(struct uart_port *uport)
		dev_err(uport->dev, "%s: Invalid FW %d loaded.\n",
				 __func__, get_se_proto(uport->membase));
		ret = -ENXIO;
		disable_irq(uport->irq);
		free_irq(uport->irq, msm_port);
		goto exit_startup;
	}

@@ -1481,7 +1479,7 @@ static int msm_geni_serial_startup(struct uart_port *uport)
	 */
	mb();
	ret = request_irq(uport->irq, msm_geni_serial_isr, IRQF_TRIGGER_HIGH,
			msm_port->name, msm_port);
			msm_port->name, uport);
	if (unlikely(ret)) {
		dev_err(uport->dev, "%s: Failed to get IRQ ret %d\n",
							__func__, ret);
@@ -2305,6 +2303,7 @@ static int msm_geni_serial_sys_resume_noirq(struct device *dev)
		se_geni_resources_on(&port->serial_rsc);
		uart_resume_port((struct uart_driver *)uport->private_data,
									uport);
		disable_irq(uport->irq);
	}
	return 0;
}