xref: /rk3399_rockchip-uboot/include/ps2mult.h (revision 1c43771ba888bb9260692636d645fb2d73390a4b)
1*1c43771bSwdenk #ifndef __LINUX_PS2MULT_H
2*1c43771bSwdenk #define __LINUX_PS2MULT_H
3*1c43771bSwdenk 
4*1c43771bSwdenk #define kbd_request_region()		ps2mult_init()
5*1c43771bSwdenk #define kbd_request_irq(handler)	ps2mult_request_irq(handler)
6*1c43771bSwdenk 
7*1c43771bSwdenk #define kbd_read_input()		ps2mult_read_input()
8*1c43771bSwdenk #define kbd_read_status()		ps2mult_read_status()
9*1c43771bSwdenk #define kbd_write_output(val)		ps2mult_write_output(val)
10*1c43771bSwdenk #define kbd_write_command(val)		ps2mult_write_command(val)
11*1c43771bSwdenk 
12*1c43771bSwdenk #define aux_request_irq(hand, dev_id)	0
13*1c43771bSwdenk #define aux_free_irq(dev_id)
14*1c43771bSwdenk 
15*1c43771bSwdenk #define PS2MULT_KB_SELECTOR		0xA0
16*1c43771bSwdenk #define PS2MULT_MS_SELECTOR		0xA1
17*1c43771bSwdenk #define PS2MULT_ESCAPE			0x7D
18*1c43771bSwdenk #define PS2MULT_BSYNC			0x7E
19*1c43771bSwdenk #define PS2MULT_SESSION_START		0x55
20*1c43771bSwdenk #define PS2MULT_SESSION_END		0x56
21*1c43771bSwdenk 
22*1c43771bSwdenk #define	PS2BUF_SIZE			512	/* power of 2, please */
23*1c43771bSwdenk 
24*1c43771bSwdenk   /* PS/2 controller interface (include/asm/keyboard.h)
25*1c43771bSwdenk    */
26*1c43771bSwdenk extern int ps2mult_init (void);
27*1c43771bSwdenk extern int ps2mult_request_irq(void (*handler)(void *));
28*1c43771bSwdenk extern u_char ps2mult_read_input(void);
29*1c43771bSwdenk extern u_char ps2mult_read_status(void);
30*1c43771bSwdenk extern void ps2mult_write_output(u_char val);
31*1c43771bSwdenk extern void ps2mult_write_command(u_char val);
32*1c43771bSwdenk 
33*1c43771bSwdenk extern void ps2mult_callback (int in_cnt);
34*1c43771bSwdenk 
35*1c43771bSwdenk   /* Simple serial interface
36*1c43771bSwdenk    */
37*1c43771bSwdenk extern int ps2ser_init(void);
38*1c43771bSwdenk extern void ps2ser_putc(int chr);
39*1c43771bSwdenk extern int ps2ser_getc(void);
40*1c43771bSwdenk extern int ps2ser_check(void);
41*1c43771bSwdenk 
42*1c43771bSwdenk 
43*1c43771bSwdenk   /* Serial related stuff
44*1c43771bSwdenk    */
45*1c43771bSwdenk struct serial_state {
46*1c43771bSwdenk 	int	baud_base;
47*1c43771bSwdenk 	int	irq;
48*1c43771bSwdenk 	u8	*iomem_base;
49*1c43771bSwdenk };
50*1c43771bSwdenk 
51*1c43771bSwdenk #define UART_RX		0	/* In:  Receive buffer (DLAB=0) */
52*1c43771bSwdenk #define UART_TX		0	/* Out: Transmit buffer (DLAB=0) */
53*1c43771bSwdenk #define UART_DLL	0	/* Out: Divisor Latch Low (DLAB=1) */
54*1c43771bSwdenk 
55*1c43771bSwdenk #define UART_DLM	1	/* Out: Divisor Latch High (DLAB=1) */
56*1c43771bSwdenk #define UART_IER	1	/* Out: Interrupt Enable Register */
57*1c43771bSwdenk 
58*1c43771bSwdenk #define UART_IIR	2	/* In:  Interrupt ID Register */
59*1c43771bSwdenk #define UART_FCR	2	/* Out: FIFO Control Register */
60*1c43771bSwdenk 
61*1c43771bSwdenk #define UART_LCR	3	/* Out: Line Control Register */
62*1c43771bSwdenk #define UART_MCR	4	/* Out: Modem Control Register */
63*1c43771bSwdenk #define UART_LSR	5	/* In:  Line Status Register */
64*1c43771bSwdenk #define UART_MSR	6	/* In:  Modem Status Register */
65*1c43771bSwdenk #define UART_SCR	7	/* I/O: Scratch Register */
66*1c43771bSwdenk 
67*1c43771bSwdenk /*
68*1c43771bSwdenk  * These are the definitions for the FIFO Control Register
69*1c43771bSwdenk  * (16650 only)
70*1c43771bSwdenk  */
71*1c43771bSwdenk #define UART_FCR_ENABLE_FIFO	0x01 /* Enable the FIFO */
72*1c43771bSwdenk #define UART_FCR_CLEAR_RCVR	0x02 /* Clear the RCVR FIFO */
73*1c43771bSwdenk #define UART_FCR_CLEAR_XMIT	0x04 /* Clear the XMIT FIFO */
74*1c43771bSwdenk #define UART_FCR_DMA_SELECT	0x08 /* For DMA applications */
75*1c43771bSwdenk #define UART_FCR_TRIGGER_MASK	0xC0 /* Mask for the FIFO trigger range */
76*1c43771bSwdenk #define UART_FCR_TRIGGER_1	0x00 /* Mask for trigger set at 1 */
77*1c43771bSwdenk #define UART_FCR_TRIGGER_4	0x40 /* Mask for trigger set at 4 */
78*1c43771bSwdenk #define UART_FCR_TRIGGER_8	0x80 /* Mask for trigger set at 8 */
79*1c43771bSwdenk #define UART_FCR_TRIGGER_14	0xC0 /* Mask for trigger set at 14 */
80*1c43771bSwdenk 
81*1c43771bSwdenk /*
82*1c43771bSwdenk  * These are the definitions for the Line Control Register
83*1c43771bSwdenk  *
84*1c43771bSwdenk  * Note: if the word length is 5 bits (UART_LCR_WLEN5), then setting
85*1c43771bSwdenk  * UART_LCR_STOP will select 1.5 stop bits, not 2 stop bits.
86*1c43771bSwdenk  */
87*1c43771bSwdenk #define UART_LCR_DLAB	0x80	/* Divisor latch access bit */
88*1c43771bSwdenk #define UART_LCR_SBC	0x40	/* Set break control */
89*1c43771bSwdenk #define UART_LCR_SPAR	0x20	/* Stick parity (?) */
90*1c43771bSwdenk #define UART_LCR_EPAR	0x10	/* Even parity select */
91*1c43771bSwdenk #define UART_LCR_PARITY	0x08	/* Parity Enable */
92*1c43771bSwdenk #define UART_LCR_STOP	0x04	/* Stop bits: 0=1 stop bit, 1= 2 stop bits */
93*1c43771bSwdenk #define UART_LCR_WLEN5  0x00	/* Wordlength: 5 bits */
94*1c43771bSwdenk #define UART_LCR_WLEN6  0x01	/* Wordlength: 6 bits */
95*1c43771bSwdenk #define UART_LCR_WLEN7  0x02	/* Wordlength: 7 bits */
96*1c43771bSwdenk #define UART_LCR_WLEN8  0x03	/* Wordlength: 8 bits */
97*1c43771bSwdenk 
98*1c43771bSwdenk /*
99*1c43771bSwdenk  * These are the definitions for the Line Status Register
100*1c43771bSwdenk  */
101*1c43771bSwdenk #define UART_LSR_TEMT	0x40	/* Transmitter empty */
102*1c43771bSwdenk #define UART_LSR_THRE	0x20	/* Transmit-hold-register empty */
103*1c43771bSwdenk #define UART_LSR_BI	0x10	/* Break interrupt indicator */
104*1c43771bSwdenk #define UART_LSR_FE	0x08	/* Frame error indicator */
105*1c43771bSwdenk #define UART_LSR_PE	0x04	/* Parity error indicator */
106*1c43771bSwdenk #define UART_LSR_OE	0x02	/* Overrun error indicator */
107*1c43771bSwdenk #define UART_LSR_DR	0x01	/* Receiver data ready */
108*1c43771bSwdenk 
109*1c43771bSwdenk /*
110*1c43771bSwdenk  * These are the definitions for the Interrupt Identification Register
111*1c43771bSwdenk  */
112*1c43771bSwdenk #define UART_IIR_NO_INT	0x01	/* No interrupts pending */
113*1c43771bSwdenk #define UART_IIR_ID	0x06	/* Mask for the interrupt ID */
114*1c43771bSwdenk 
115*1c43771bSwdenk #define UART_IIR_MSI	0x00	/* Modem status interrupt */
116*1c43771bSwdenk #define UART_IIR_THRI	0x02	/* Transmitter holding register empty */
117*1c43771bSwdenk #define UART_IIR_RDI	0x04	/* Receiver data interrupt */
118*1c43771bSwdenk #define UART_IIR_RLSI	0x06	/* Receiver line status interrupt */
119*1c43771bSwdenk 
120*1c43771bSwdenk /*
121*1c43771bSwdenk  * These are the definitions for the Interrupt Enable Register
122*1c43771bSwdenk  */
123*1c43771bSwdenk #define UART_IER_MSI	0x08	/* Enable Modem status interrupt */
124*1c43771bSwdenk #define UART_IER_RLSI	0x04	/* Enable receiver line status interrupt */
125*1c43771bSwdenk #define UART_IER_THRI	0x02	/* Enable Transmitter holding register int. */
126*1c43771bSwdenk #define UART_IER_RDI	0x01	/* Enable receiver data interrupt */
127*1c43771bSwdenk 
128*1c43771bSwdenk /*
129*1c43771bSwdenk  * These are the definitions for the Modem Control Register
130*1c43771bSwdenk  */
131*1c43771bSwdenk #define UART_MCR_LOOP	0x10	/* Enable loopback test mode */
132*1c43771bSwdenk #define UART_MCR_OUT2	0x08	/* Out2 complement */
133*1c43771bSwdenk #define UART_MCR_OUT1	0x04	/* Out1 complement */
134*1c43771bSwdenk #define UART_MCR_RTS	0x02	/* RTS complement */
135*1c43771bSwdenk #define UART_MCR_DTR	0x01	/* DTR complement */
136*1c43771bSwdenk 
137*1c43771bSwdenk /*
138*1c43771bSwdenk  * These are the definitions for the Modem Status Register
139*1c43771bSwdenk  */
140*1c43771bSwdenk #define UART_MSR_DCD	0x80	/* Data Carrier Detect */
141*1c43771bSwdenk #define UART_MSR_RI	0x40	/* Ring Indicator */
142*1c43771bSwdenk #define UART_MSR_DSR	0x20	/* Data Set Ready */
143*1c43771bSwdenk #define UART_MSR_CTS	0x10	/* Clear to Send */
144*1c43771bSwdenk #define UART_MSR_DDCD	0x08	/* Delta DCD */
145*1c43771bSwdenk #define UART_MSR_TERI	0x04	/* Trailing edge ring indicator */
146*1c43771bSwdenk #define UART_MSR_DDSR	0x02	/* Delta DSR */
147*1c43771bSwdenk #define UART_MSR_DCTS	0x01	/* Delta CTS */
148*1c43771bSwdenk #define UART_MSR_ANY_DELTA 0x0F	/* Any of the delta bits! */
149*1c43771bSwdenk 
150*1c43771bSwdenk #endif /* __LINUX_PS2MULT_H */
151