xref: /rk3399_rockchip-uboot/include/ps2mult.h (revision 6d0f6bcf337c5261c08fabe12982178c2c489d76)
11c43771bSwdenk #ifndef __LINUX_PS2MULT_H
21c43771bSwdenk #define __LINUX_PS2MULT_H
31c43771bSwdenk 
41c43771bSwdenk #define kbd_request_region()		ps2mult_init()
51c43771bSwdenk #define kbd_request_irq(handler)	ps2mult_request_irq(handler)
61c43771bSwdenk 
71c43771bSwdenk #define kbd_read_input()		ps2mult_read_input()
81c43771bSwdenk #define kbd_read_status()		ps2mult_read_status()
91c43771bSwdenk #define kbd_write_output(val)		ps2mult_write_output(val)
101c43771bSwdenk #define kbd_write_command(val)		ps2mult_write_command(val)
111c43771bSwdenk 
121c43771bSwdenk #define aux_request_irq(hand, dev_id)	0
131c43771bSwdenk #define aux_free_irq(dev_id)
141c43771bSwdenk 
151c43771bSwdenk #define PS2MULT_KB_SELECTOR		0xA0
161c43771bSwdenk #define PS2MULT_MS_SELECTOR		0xA1
171c43771bSwdenk #define PS2MULT_ESCAPE			0x7D
181c43771bSwdenk #define PS2MULT_BSYNC			0x7E
191c43771bSwdenk #define PS2MULT_SESSION_START		0x55
201c43771bSwdenk #define PS2MULT_SESSION_END		0x56
211c43771bSwdenk 
221c43771bSwdenk #define	PS2BUF_SIZE			512	/* power of 2, please */
231c43771bSwdenk 
24c837dcb1Swdenk #ifndef CONFIG_PS2MULT_DELAY
25*6d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #define CONFIG_PS2MULT_DELAY	(CONFIG_SYS_HZ/2)	/* Initial delay	*/
26c837dcb1Swdenk #endif
27c837dcb1Swdenk 
281c43771bSwdenk   /* PS/2 controller interface (include/asm/keyboard.h)
291c43771bSwdenk    */
301c43771bSwdenk extern int ps2mult_init (void);
311c43771bSwdenk extern int ps2mult_request_irq(void (*handler)(void *));
321c43771bSwdenk extern u_char ps2mult_read_input(void);
331c43771bSwdenk extern u_char ps2mult_read_status(void);
341c43771bSwdenk extern void ps2mult_write_output(u_char val);
351c43771bSwdenk extern void ps2mult_write_command(u_char val);
361c43771bSwdenk 
37c837dcb1Swdenk extern void ps2mult_early_init (void);
381c43771bSwdenk extern void ps2mult_callback (int in_cnt);
391c43771bSwdenk 
401c43771bSwdenk   /* Simple serial interface
411c43771bSwdenk    */
421c43771bSwdenk extern int ps2ser_init(void);
431c43771bSwdenk extern void ps2ser_putc(int chr);
441c43771bSwdenk extern int ps2ser_getc(void);
451c43771bSwdenk extern int ps2ser_check(void);
461c43771bSwdenk 
471c43771bSwdenk 
481c43771bSwdenk   /* Serial related stuff
491c43771bSwdenk    */
501c43771bSwdenk struct serial_state {
511c43771bSwdenk 	int	baud_base;
521c43771bSwdenk 	int	irq;
531c43771bSwdenk 	u8	*iomem_base;
541c43771bSwdenk };
551c43771bSwdenk 
561c43771bSwdenk #define UART_RX		0	/* In:  Receive buffer (DLAB=0) */
571c43771bSwdenk #define UART_TX		0	/* Out: Transmit buffer (DLAB=0) */
581c43771bSwdenk #define UART_DLL	0	/* Out: Divisor Latch Low (DLAB=1) */
591c43771bSwdenk 
601c43771bSwdenk #define UART_DLM	1	/* Out: Divisor Latch High (DLAB=1) */
611c43771bSwdenk #define UART_IER	1	/* Out: Interrupt Enable Register */
621c43771bSwdenk 
631c43771bSwdenk #define UART_IIR	2	/* In:  Interrupt ID Register */
641c43771bSwdenk #define UART_FCR	2	/* Out: FIFO Control Register */
651c43771bSwdenk 
661c43771bSwdenk #define UART_LCR	3	/* Out: Line Control Register */
671c43771bSwdenk #define UART_MCR	4	/* Out: Modem Control Register */
681c43771bSwdenk #define UART_LSR	5	/* In:  Line Status Register */
691c43771bSwdenk #define UART_MSR	6	/* In:  Modem Status Register */
701c43771bSwdenk #define UART_SCR	7	/* I/O: Scratch Register */
711c43771bSwdenk 
721c43771bSwdenk /*
731c43771bSwdenk  * These are the definitions for the FIFO Control Register
741c43771bSwdenk  * (16650 only)
751c43771bSwdenk  */
761c43771bSwdenk #define UART_FCR_ENABLE_FIFO	0x01 /* Enable the FIFO */
771c43771bSwdenk #define UART_FCR_CLEAR_RCVR	0x02 /* Clear the RCVR FIFO */
781c43771bSwdenk #define UART_FCR_CLEAR_XMIT	0x04 /* Clear the XMIT FIFO */
791c43771bSwdenk #define UART_FCR_DMA_SELECT	0x08 /* For DMA applications */
801c43771bSwdenk #define UART_FCR_TRIGGER_MASK	0xC0 /* Mask for the FIFO trigger range */
811c43771bSwdenk #define UART_FCR_TRIGGER_1	0x00 /* Mask for trigger set at 1 */
821c43771bSwdenk #define UART_FCR_TRIGGER_4	0x40 /* Mask for trigger set at 4 */
831c43771bSwdenk #define UART_FCR_TRIGGER_8	0x80 /* Mask for trigger set at 8 */
841c43771bSwdenk #define UART_FCR_TRIGGER_14	0xC0 /* Mask for trigger set at 14 */
851c43771bSwdenk 
861c43771bSwdenk /*
871c43771bSwdenk  * These are the definitions for the Line Control Register
881c43771bSwdenk  *
891c43771bSwdenk  * Note: if the word length is 5 bits (UART_LCR_WLEN5), then setting
901c43771bSwdenk  * UART_LCR_STOP will select 1.5 stop bits, not 2 stop bits.
911c43771bSwdenk  */
921c43771bSwdenk #define UART_LCR_DLAB	0x80	/* Divisor latch access bit */
931c43771bSwdenk #define UART_LCR_SBC	0x40	/* Set break control */
941c43771bSwdenk #define UART_LCR_SPAR	0x20	/* Stick parity (?) */
951c43771bSwdenk #define UART_LCR_EPAR	0x10	/* Even parity select */
961c43771bSwdenk #define UART_LCR_PARITY	0x08	/* Parity Enable */
971c43771bSwdenk #define UART_LCR_STOP	0x04	/* Stop bits: 0=1 stop bit, 1= 2 stop bits */
981c43771bSwdenk #define UART_LCR_WLEN5  0x00	/* Wordlength: 5 bits */
991c43771bSwdenk #define UART_LCR_WLEN6  0x01	/* Wordlength: 6 bits */
1001c43771bSwdenk #define UART_LCR_WLEN7  0x02	/* Wordlength: 7 bits */
1011c43771bSwdenk #define UART_LCR_WLEN8  0x03	/* Wordlength: 8 bits */
1021c43771bSwdenk 
1031c43771bSwdenk /*
1041c43771bSwdenk  * These are the definitions for the Line Status Register
1051c43771bSwdenk  */
1061c43771bSwdenk #define UART_LSR_TEMT	0x40	/* Transmitter empty */
1071c43771bSwdenk #define UART_LSR_THRE	0x20	/* Transmit-hold-register empty */
1081c43771bSwdenk #define UART_LSR_BI	0x10	/* Break interrupt indicator */
1091c43771bSwdenk #define UART_LSR_FE	0x08	/* Frame error indicator */
1101c43771bSwdenk #define UART_LSR_PE	0x04	/* Parity error indicator */
1111c43771bSwdenk #define UART_LSR_OE	0x02	/* Overrun error indicator */
1121c43771bSwdenk #define UART_LSR_DR	0x01	/* Receiver data ready */
1131c43771bSwdenk 
1141c43771bSwdenk /*
1151c43771bSwdenk  * These are the definitions for the Interrupt Identification Register
1161c43771bSwdenk  */
1171c43771bSwdenk #define UART_IIR_NO_INT	0x01	/* No interrupts pending */
1181c43771bSwdenk #define UART_IIR_ID	0x06	/* Mask for the interrupt ID */
1191c43771bSwdenk 
1201c43771bSwdenk #define UART_IIR_MSI	0x00	/* Modem status interrupt */
1211c43771bSwdenk #define UART_IIR_THRI	0x02	/* Transmitter holding register empty */
1221c43771bSwdenk #define UART_IIR_RDI	0x04	/* Receiver data interrupt */
1231c43771bSwdenk #define UART_IIR_RLSI	0x06	/* Receiver line status interrupt */
1241c43771bSwdenk 
1251c43771bSwdenk /*
1261c43771bSwdenk  * These are the definitions for the Interrupt Enable Register
1271c43771bSwdenk  */
1281c43771bSwdenk #define UART_IER_MSI	0x08	/* Enable Modem status interrupt */
1291c43771bSwdenk #define UART_IER_RLSI	0x04	/* Enable receiver line status interrupt */
1301c43771bSwdenk #define UART_IER_THRI	0x02	/* Enable Transmitter holding register int. */
1311c43771bSwdenk #define UART_IER_RDI	0x01	/* Enable receiver data interrupt */
1321c43771bSwdenk 
1331c43771bSwdenk /*
1341c43771bSwdenk  * These are the definitions for the Modem Control Register
1351c43771bSwdenk  */
1361c43771bSwdenk #define UART_MCR_LOOP	0x10	/* Enable loopback test mode */
1371c43771bSwdenk #define UART_MCR_OUT2	0x08	/* Out2 complement */
1381c43771bSwdenk #define UART_MCR_OUT1	0x04	/* Out1 complement */
1391c43771bSwdenk #define UART_MCR_RTS	0x02	/* RTS complement */
1401c43771bSwdenk #define UART_MCR_DTR	0x01	/* DTR complement */
1411c43771bSwdenk 
1421c43771bSwdenk /*
1431c43771bSwdenk  * These are the definitions for the Modem Status Register
1441c43771bSwdenk  */
1451c43771bSwdenk #define UART_MSR_DCD	0x80	/* Data Carrier Detect */
1461c43771bSwdenk #define UART_MSR_RI	0x40	/* Ring Indicator */
1471c43771bSwdenk #define UART_MSR_DSR	0x20	/* Data Set Ready */
1481c43771bSwdenk #define UART_MSR_CTS	0x10	/* Clear to Send */
1491c43771bSwdenk #define UART_MSR_DDCD	0x08	/* Delta DCD */
1501c43771bSwdenk #define UART_MSR_TERI	0x04	/* Trailing edge ring indicator */
1511c43771bSwdenk #define UART_MSR_DDSR	0x02	/* Delta DSR */
1521c43771bSwdenk #define UART_MSR_DCTS	0x01	/* Delta CTS */
1531c43771bSwdenk #define UART_MSR_ANY_DELTA 0x0F	/* Any of the delta bits! */
1541c43771bSwdenk 
1551c43771bSwdenk #endif /* __LINUX_PS2MULT_H */
156