mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-07-12 00:43:36 -04:00
serial: sh-sci: Add pin initialization for SCIFA/SCIFB
Before, the driver relied on initialization by the boot loader, or by implicit reset state. Note that unlike on (H)SCIF, the RTS/CTS bits exist only if dedicated RTS/CTS pins are available, which depends on the SoC and UART instance. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d2b9775d79
commit
e9d7a45a03
1 changed files with 15 additions and 1 deletions
|
@ -712,7 +712,21 @@ static void sci_init_pins(struct uart_port *port, unsigned int cflag)
|
|||
return;
|
||||
}
|
||||
|
||||
if (sci_getreg(port, SCSPTR)->size) {
|
||||
if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
|
||||
u16 ctrl = serial_port_in(port, SCPCR);
|
||||
|
||||
/* Enable RXD and TXD pin functions */
|
||||
ctrl &= ~(SCPCR_RXDC | SCPCR_TXDC);
|
||||
if (to_sci_port(port)->cfg->capabilities & SCIx_HAVE_RTSCTS) {
|
||||
/* RTS# is output, driven 1 */
|
||||
ctrl |= SCPCR_RTSC;
|
||||
serial_port_out(port, SCPDR,
|
||||
serial_port_in(port, SCPDR) | SCPDR_RTSD);
|
||||
/* Enable CTS# pin function */
|
||||
ctrl &= ~SCPCR_CTSC;
|
||||
}
|
||||
serial_port_out(port, SCPCR, ctrl);
|
||||
} else if (sci_getreg(port, SCSPTR)->size) {
|
||||
u16 status = serial_port_in(port, SCSPTR);
|
||||
|
||||
/* RTS# is output, driven 1 */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue