cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

serial-sh770x.c (874B)


      1// SPDX-License-Identifier: GPL-2.0
      2#include <linux/serial_sci.h>
      3#include <linux/serial_core.h>
      4#include <linux/io.h>
      5#include <cpu/serial.h>
      6
      7#define SCPCR 0xA4000116
      8#define SCPDR 0xA4000136
      9
     10static void sh770x_sci_init_pins(struct uart_port *port, unsigned int cflag)
     11{
     12	unsigned short data;
     13
     14	/* We need to set SCPCR to enable RTS/CTS */
     15	data = __raw_readw(SCPCR);
     16	/* Clear out SCP7MD1,0, SCP6MD1,0, SCP4MD1,0*/
     17	__raw_writew(data & 0x0fcf, SCPCR);
     18
     19	if (!(cflag & CRTSCTS)) {
     20		/* We need to set SCPCR to enable RTS/CTS */
     21		data = __raw_readw(SCPCR);
     22		/* Clear out SCP7MD1,0, SCP4MD1,0,
     23		   Set SCP6MD1,0 = {01} (output)  */
     24		__raw_writew((data & 0x0fcf) | 0x1000, SCPCR);
     25
     26		data = __raw_readb(SCPDR);
     27		/* Set /RTS2 (bit6) = 0 */
     28		__raw_writeb(data & 0xbf, SCPDR);
     29	}
     30}
     31
     32struct plat_sci_port_ops sh770x_sci_port_ops = {
     33	.init_pins	= sh770x_sci_init_pins,
     34};