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

Commit 73c3d53f authored by Paul Mundt's avatar Paul Mundt
Browse files

serial: sh-sci: Avoid FIFO clear for MCE toggle.



When toggling the MCE support we don't want to concern ourselves with the
FIFO state, so ensure that the clearing bits are masked out when updating
the MCE state.

Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent faf02f8f
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -1771,18 +1771,25 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios,

	sci_init_pins(port, termios->c_cflag);

	if (s->cfg->capabilities & SCIx_HAVE_RTSCTS) {
	reg = sci_getreg(port, SCFCR);
	if (reg->size) {
			unsigned short ctrl;
		unsigned short ctrl = sci_in(port, SCFCR);

			ctrl = sci_in(port, SCFCR);
		if (s->cfg->capabilities & SCIx_HAVE_RTSCTS) {
			if (termios->c_cflag & CRTSCTS)
				ctrl |= SCFCR_MCE;
			else
				ctrl &= ~SCFCR_MCE;
			sci_out(port, SCFCR, ctrl);
		}

		/*
		 * As we've done a sci_reset() above, ensure we don't
		 * interfere with the FIFOs while toggling MCE. As the
		 * reset values could still be set, simply mask them out.
		 */
		ctrl &= ~(SCFCR_RFRST | SCFCR_TFRST);

		sci_out(port, SCFCR, ctrl);
	}

	sci_out(port, SCSCR, s->cfg->scscr);