Link: https://lore.kernel.org/r/20260217200002.683975158@linuxfoundation.org Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com> Tested-by: Peter Schneider <pschneider1968@googlemail.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Salvatore Bonaccorso <carnil@debian.org> Tested-by: Brett A C Sheffield <bacs@librecast.net> Tested-by: Mark Brown <broonie@kernel.org> Tested-by: Luna Jernberg <droidbittin@gmail.com> Tested-by: Ronald Warsow <rwarsow@gmx.de> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org> Tested-by: Ron Economos <re@w6rz.net> Tested-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
35 lines
874 B
C
35 lines
874 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
#include <linux/serial_sci.h>
|
|
#include <linux/serial_core.h>
|
|
#include <linux/io.h>
|
|
#include <cpu/serial.h>
|
|
|
|
#define SCPCR 0xA4000116
|
|
#define SCPDR 0xA4000136
|
|
|
|
static void sh770x_sci_init_pins(struct uart_port *port, unsigned int cflag)
|
|
{
|
|
unsigned short data;
|
|
|
|
/* We need to set SCPCR to enable RTS/CTS */
|
|
data = __raw_readw(SCPCR);
|
|
/* Clear out SCP7MD1,0, SCP6MD1,0, SCP4MD1,0*/
|
|
__raw_writew(data & 0x0fcf, SCPCR);
|
|
|
|
if (!(cflag & CRTSCTS)) {
|
|
/* We need to set SCPCR to enable RTS/CTS */
|
|
data = __raw_readw(SCPCR);
|
|
/* Clear out SCP7MD1,0, SCP4MD1,0,
|
|
Set SCP6MD1,0 = {01} (output) */
|
|
__raw_writew((data & 0x0fcf) | 0x1000, SCPCR);
|
|
|
|
data = __raw_readb(SCPDR);
|
|
/* Set /RTS2 (bit6) = 0 */
|
|
__raw_writeb(data & 0xbf, SCPDR);
|
|
}
|
|
}
|
|
|
|
struct plat_sci_port_ops sh770x_sci_port_ops = {
|
|
.init_pins = sh770x_sci_init_pins,
|
|
};
|