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

Commit 5f09f802 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "tty: serial: msm: Add suspend resume support"

parents 07e5f716 a90aeb62
Loading
Loading
Loading
Loading
+27 −13
Original line number Diff line number Diff line
@@ -1160,15 +1160,6 @@ static int msm_set_baud_rate(struct uart_port *port, unsigned int baud,
	return baud;
}

static void msm_init_clock(struct uart_port *port)
{
	struct msm_port *msm_port = UART_TO_MSM(port);

	clk_prepare_enable(msm_port->clk);
	clk_prepare_enable(msm_port->pclk);
	msm_serial_set_mnd_regs(port);
}

static int msm_startup(struct uart_port *port)
{
	struct msm_port *msm_port = UART_TO_MSM(port);
@@ -1178,7 +1169,19 @@ static int msm_startup(struct uart_port *port)
	snprintf(msm_port->name, sizeof(msm_port->name),
		 "msm_serial%d", port->line);

	msm_init_clock(port);
	/*
	 * UART clk must be kept enabled to
	 * avoid losing received character
	 */
	ret = clk_prepare_enable(msm_port->clk);
	if (ret)
		return ret;

	ret = clk_prepare_enable(msm_port->pclk);
	if (ret)
		goto err_pclk;

	msm_serial_set_mnd_regs(port);

	if (likely(port->fifosize > 12))
		rfr_level = port->fifosize - 12;
@@ -1217,6 +1220,8 @@ static int msm_startup(struct uart_port *port)

	clk_disable_unprepare(msm_port->pclk);
	clk_disable_unprepare(msm_port->clk);
err_pclk:
	clk_disable_unprepare(msm_port->clk);

	return ret;
}
@@ -1231,6 +1236,7 @@ static void msm_shutdown(struct uart_port *port)
	if (msm_port->is_uartdm)
		msm_release_dma(msm_port);

	clk_disable_unprepare(msm_port->pclk);
	clk_disable_unprepare(msm_port->clk);

	free_irq(port->irq, port);
@@ -1397,8 +1403,16 @@ static void msm_power(struct uart_port *port, unsigned int state,

	switch (state) {
	case 0:
		clk_prepare_enable(msm_port->clk);
		clk_prepare_enable(msm_port->pclk);
		/*
		 * UART clk must be kept enabled to
		 * avoid losing received character
		 */
		if (clk_prepare_enable(msm_port->clk))
			return;
		if (clk_prepare_enable(msm_port->pclk)) {
			clk_disable_unprepare(msm_port->clk);
			return;
		}
		break;
	case 3:
		clk_disable_unprepare(msm_port->clk);
@@ -1670,7 +1684,7 @@ static int __init msm_console_setup(struct console *co, char *options)
	if (unlikely(!port->membase))
		return -ENXIO;

	msm_init_clock(port);
	msm_serial_set_mnd_regs(port);

	if (options)
		uart_parse_options(options, &baud, &parity, &bits, &flow);