1 #include <linux/serial_sci.h> 2 #include <linux/serial_core.h> 3 #include <linux/io.h> 4 #include <cpu/serial.h> 5 #include <cpu/gpio.h> 6 7 static void sh7720_sci_init_pins(struct uart_port *port, unsigned int cflag) 8 { 9 unsigned short data; 10 11 if (cflag & CRTSCTS) { 12 /* enable RTS/CTS */ 13 if (port->mapbase == 0xa4430000) { /* SCIF0 */ 14 /* Clear PTCR bit 9-2; enable all scif pins but sck */ 15 data = __raw_readw(PORT_PTCR); 16 __raw_writew((data & 0xfc03), PORT_PTCR); 17 } else if (port->mapbase == 0xa4438000) { /* SCIF1 */ 18 /* Clear PVCR bit 9-2 */ 19 data = __raw_readw(PORT_PVCR); 20 __raw_writew((data & 0xfc03), PORT_PVCR); 21 } 22 } else { 23 if (port->mapbase == 0xa4430000) { /* SCIF0 */ 24 /* Clear PTCR bit 5-2; enable only tx and rx */ 25 data = __raw_readw(PORT_PTCR); 26 __raw_writew((data & 0xffc3), PORT_PTCR); 27 } else if (port->mapbase == 0xa4438000) { /* SCIF1 */ 28 /* Clear PVCR bit 5-2 */ 29 data = __raw_readw(PORT_PVCR); 30 __raw_writew((data & 0xffc3), PORT_PVCR); 31 } 32 } 33 } 34 35 struct plat_sci_port_ops sh7720_sci_port_ops = { 36 .init_pins = sh7720_sci_init_pins, 37 }; 38