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

Commit bbb4ce50 authored by Shimoda, Yoshihiro's avatar Shimoda, Yoshihiro Committed by Paul Mundt
Browse files

serial: sh-sci: modify sci_break_ctl()



SCIF modules which have SCSPTR can output the break signal. Now that we
have a way of determining port features/capabilities, add trivial break
control via SCSPTR support. Tested on sh7757lcr.

Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: default avatarSimon Horman <horms@verge.net.au>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 00341028
Loading
Loading
Loading
Loading
+26 −4
Original line number Diff line number Diff line
@@ -1564,10 +1564,32 @@ static void sci_enable_ms(struct uart_port *port)

static void sci_break_ctl(struct uart_port *port, int break_state)
{
	struct sci_port *s = to_sci_port(port);
	unsigned short scscr, scsptr;

	switch (s->cfg->regtype) {
	case SCIx_SH4_SCIF_REGTYPE:
		scsptr = serial_port_in(port, SCSPTR);
		scscr = serial_port_in(port, SCSCR);

		if (break_state == -1) {
			scsptr = (scsptr | SCSPTR_SPB2IO) & ~SCSPTR_SPB2DT;
			scscr &= ~SCSCR_TE;
		} else {
			scsptr = (scsptr | SCSPTR_SPB2DT) & ~SCSPTR_SPB2IO;
			scscr |= SCSCR_TE;
		}

		serial_port_out(port, SCSPTR, scsptr);
		serial_port_out(port, SCSCR, scscr);
		break;
	default:
		/*
		 * Not supported by hardware. Most parts couple break and rx
		 * interrupts together, with break detection always enabled.
		 */
		break;
	}
}

#ifdef CONFIG_SERIAL_SH_SCI_DMA
+2 −0
Original line number Diff line number Diff line
@@ -52,6 +52,8 @@ enum {
/* SCSPTR, optional */
#define SCSPTR_RTSIO	(1 << 7)
#define SCSPTR_CTSIO	(1 << 5)
#define SCSPTR_SPB2IO	(1 << 1)
#define SCSPTR_SPB2DT	(1 << 0)

/* Offsets into the sci_port->irqs array */
enum {