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

Commit 97b52a4c authored by Rama Krishna Phani A's avatar Rama Krishna Phani A
Browse files

serial: msm_geni_serial: Update setup field for hibernation



UART register settings will be lost during hibernation.
Update the logic such that port setup happens for
both console uart and hs uart during restore and register
settings are done accordingly.

Change-Id: Ia8b3d3610b4216d0f1fa456423fc31568d8c2271
Signed-off-by: default avatarRama Krishna Phani A <rphani@codeaurora.org>
parent d08071ee
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -2796,19 +2796,24 @@ static int msm_geni_serial_sys_hib_resume_noirq(struct device *dev)
	struct platform_device *pdev = to_platform_device(dev);
	struct msm_geni_serial_port *port = platform_get_drvdata(pdev);
	struct uart_port *uport = &port->uport;
	unsigned long cfg0, cfg1;

	if (uart_console(uport) &&
	    console_suspend_enabled && uport->suspended) {
	if (uart_console(uport)) {
		uart_resume_port((struct uart_driver *)uport->private_data,
									uport);
		dev_dbg(dev, "%s\n", __func__);
		se_get_packing_config(8, 1, false, &cfg0, &cfg1);
		geni_write_reg_nolog(cfg0, uport->membase,
					SE_GENI_TX_PACKING_CFG0);
		geni_write_reg_nolog(cfg1, uport->membase,
					SE_GENI_TX_PACKING_CFG1);
		disable_irq(uport->irq);
		/*
		 * For hibernation usecase clients for
		 * console UART won't call port setup during restore.
		 * Hence call port setup for console uart.
		 */
		msm_geni_serial_port_setup(uport);
	} else {
		/*
		 * Peripheral register settings are lost during hibernation.
		 * Update setup flag such that port setup happens again
		 * during next session. Clients of HS-UART will close and
		 * open the port during hibernation.
		 */
		port->port_setup = false;
	}
	return 0;
}