Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
serial-sh770x.c
Go to the documentation of this file.
1 #include <linux/serial_sci.h>
2 #include <linux/serial_core.h>
3 #include <linux/io.h>
4 #include <cpu/serial.h>
5 
6 #define SCPCR 0xA4000116
7 #define SCPDR 0xA4000136
8 
9 static void sh770x_sci_init_pins(struct uart_port *port, unsigned int cflag)
10 {
11  unsigned short data;
12 
13  /* We need to set SCPCR to enable RTS/CTS */
14  data = __raw_readw(SCPCR);
15  /* Clear out SCP7MD1,0, SCP6MD1,0, SCP4MD1,0*/
16  __raw_writew(data & 0x0fcf, SCPCR);
17 
18  if (!(cflag & CRTSCTS)) {
19  /* We need to set SCPCR to enable RTS/CTS */
20  data = __raw_readw(SCPCR);
21  /* Clear out SCP7MD1,0, SCP4MD1,0,
22  Set SCP6MD1,0 = {01} (output) */
23  __raw_writew((data & 0x0fcf) | 0x1000, SCPCR);
24 
25  data = __raw_readb(SCPDR);
26  /* Set /RTS2 (bit6) = 0 */
27  __raw_writeb(data & 0xbf, SCPDR);
28  }
29 }
30 
32  .init_pins = sh770x_sci_init_pins,
33 };