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

Commit cdf7c42f authored by Paul Mundt's avatar Paul Mundt
Browse files

serial: sh-sci: Fix up modem control handling.



At the moment things like CTS/RTS are reported for all ports, while the
vast majority of them do not implement support at all (and others
implement support entirely in hardware). Fix up the ->get_mctrl()
reporting to simply assert DSR/CAR as other drivers without control
lines do.

Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent d39ec6ce
Loading
Loading
Loading
Loading
+14 −7
Original line number Original line Diff line number Diff line
@@ -1106,19 +1106,26 @@ static unsigned int sci_tx_empty(struct uart_port *port)
	return (status & SCxSR_TEND(port)) && !in_tx_fifo ? TIOCSER_TEMT : 0;
	return (status & SCxSR_TEND(port)) && !in_tx_fifo ? TIOCSER_TEMT : 0;
}
}


/*
 * Modem control is a bit of a mixed bag for SCI(F) ports. Generally
 * CTS/RTS is supported in hardware by at least one port and controlled
 * via SCSPTR (SCxPCR for SCIFA/B parts), or external pins (presently
 * handled via the ->init_pins() op, which is a bit of a one-way street,
 * lacking any ability to defer pin control -- this will later be
 * converted over to the GPIO framework).
 */
static void sci_set_mctrl(struct uart_port *port, unsigned int mctrl)
static void sci_set_mctrl(struct uart_port *port, unsigned int mctrl)
{
{
	/* This routine is used for seting signals of: DTR, DCD, CTS/RTS */
	/* Nothing to do here. */
	/* We use SCIF's hardware for CTS/RTS, so don't need any for that. */
	/* If you have signals for DTR and DCD, please implement here. */
}
}


static unsigned int sci_get_mctrl(struct uart_port *port)
static unsigned int sci_get_mctrl(struct uart_port *port)
{
{
	/* This routine is used for getting signals of: DTR, DCD, DSR, RI,
	/*
	   and CTS/RTS */
	 * CTS/RTS is handled in hardware when supported, while nothing

	 * else is wired up. Keep it simple and simply assert DSR/CAR.
	return TIOCM_DTR | TIOCM_RTS | TIOCM_CTS | TIOCM_DSR;
	 */
	return TIOCM_DSR | TIOCM_CAR;
}
}


#ifdef CONFIG_SERIAL_SH_SCI_DMA
#ifdef CONFIG_SERIAL_SH_SCI_DMA