|
@@ -286,6 +286,10 @@ __qcom_geni_serial_console_write(struct uart_port *uport, const char *s,
|
|
u32 bytes_to_send = count;
|
|
u32 bytes_to_send = count;
|
|
|
|
|
|
for (i = 0; i < count; i++) {
|
|
for (i = 0; i < count; i++) {
|
|
|
|
+ /*
|
|
|
|
+ * uart_console_write() adds a carriage return for each newline.
|
|
|
|
+ * Account for additional bytes to be written.
|
|
|
|
+ */
|
|
if (s[i] == '\n')
|
|
if (s[i] == '\n')
|
|
bytes_to_send++;
|
|
bytes_to_send++;
|
|
}
|
|
}
|
|
@@ -1101,6 +1105,14 @@ static int __maybe_unused qcom_geni_serial_sys_resume_noirq(struct device *dev)
|
|
|
|
|
|
if (console_suspend_enabled && uport->suspended) {
|
|
if (console_suspend_enabled && uport->suspended) {
|
|
uart_resume_port(uport->private_data, uport);
|
|
uart_resume_port(uport->private_data, uport);
|
|
|
|
+ /*
|
|
|
|
+ * uart_suspend_port() invokes port shutdown which in turn
|
|
|
|
+ * frees the irq. uart_resume_port invokes port startup which
|
|
|
|
+ * performs request_irq. The request_irq auto-enables the IRQ.
|
|
|
|
+ * In addition, resume_noirq implicitly enables the IRQ and
|
|
|
|
+ * leads to an unbalanced IRQ enable warning. Disable the IRQ
|
|
|
|
+ * before returning so that the warning is suppressed.
|
|
|
|
+ */
|
|
disable_irq(uport->irq);
|
|
disable_irq(uport->irq);
|
|
}
|
|
}
|
|
return 0;
|
|
return 0;
|