serial.h
PATCH 1/1 serial.h
This patch (attached because thunderbird messes with whitespace) moves some constants from xen/drivers/char/serial.c to xen/include/xen/serial.h.
On PPC I want to do this:
static int ns16550_putc(struct uart *uart, unsigned char c)
{
if (inb(uart->io_base + LSR) & LSR_THRE) {
outb(c, uart->io_base + THR);
return 1;
}
return 0;
}int arch_serial_putc(struct uart *uart, unsigned char c)
{
if (on_simulator())
return sim_putc(c);
return ns16550_putc(uart, c);
}... and that means arch code needs to be able to see struct uart, LSR, etc. I also notice that ia64 already made a private copy of these defines.
I have verified that this patch builds on x86 and ia64.
Signature · 2 lines
Hollis Blanchard IBM Linux Technology Center
===== xen/drivers/char/serial.c 1.31 vs edited =====
xen/drivers/char/serial.c +0 -65
@@ -23,71 +23,6 @@string_param ("com1" , opt_com1);string_param ("com2" , opt_com2); -/* Register offsets */ -#define RBR 0x00/* receive buffer */ -#define THR 0x00/* transmit holding */ -#define IER 0x01/* interrupt enable */ -#define IIR 0x02/* interrupt identity */ -#define FCR 0x02/* FIFO control */ -#define LCR 0x03/* line control */ -#define MCR 0x04/* Modem control */ -#define LSR 0x05/* line status */ -#define MSR 0x06/* Modem status */ -#define DLL 0x00/* divisor latch (ls) (DLAB=1) */ -#define DLM 0x01/* divisor latch (ms) (DLAB=1) */ - -/* Interrupt Enable Register */ -#define IER_ERDAI 0x01/* rx data recv'd */ -#define IER_ETHREI 0x02/* tx reg. empty */ -#define IER_ELSI 0x04/* rx line status */ -#define IER_EMSI 0x08/* MODEM status */ - -/* FIFO control register */ -#define FCR_ENABLE 0x01/* enable FIFO */ -#define FCR_CLRX 0x02/* clear Rx FIFO */ -#define FCR_CLTX 0x04/* clear Tx FIFO */ -#define FCR_DMA 0x10/* enter DMA mode */ -#define FCR_TRG1 0x00/* Rx FIFO trig lev 1 */ -#define FCR_TRG4 0x40/* Rx FIFO trig lev 4 */ -#define FCR_TRG8 0x80/* Rx FIFO trig lev 8 */ -#define FCR_TRG14 0xc0/* Rx FIFO trig lev 14 */ - -/* Line control register */ -#define LCR_DLAB 0x80/* Divisor Latch Access */ - -/* Modem Control Register */ -#define MCR_DTR 0x01/* Data Terminal Ready */ -#define MCR_RTS 0x02/* Request to Send */ -#define MCR_OUT2 0x08/* OUT2: interrupt mask */ - -/* Line Status Register */ -#define LSR_DR 0x01/* Data ready */ -#define LSR_OE 0x02/* Overrun */ -#define LSR_PE 0x04/* Parity error */ -#define LSR_FE 0x08/* Framing error */ -#define LSR_BI 0x10/* Break */ -#define LSR_THRE 0x20/* Xmit hold reg empty */ -#define LSR_TEMT 0x40/* Xmitter empty */ -#define LSR_ERR 0x80/* Error */ - -/* These parity settings can be ORed directly into the LCR. */ -#define PARITY_NONE (0<<3) -#define PARITY_ODD (1<<3) -#define PARITY_EVEN (3<<3) -#define PARITY_MARK (5<<3) -#define PARITY_SPACE (7<<3) - -#define RXBUFSZ 32 -#define MASK_RXBUF_IDX (_i) ((_i)&(RXBUFSZ-1)) -struct uart { -int baud, data_bits, parity, stop_bits, io_base, irq; -serial_rx_fn rx_lo, rx_hi, rx; -spinlock_t lock; -unsigned char rxbuf[RXBUFSZ ]; -unsigned int rxbufp, rxbufc; -struct irqaction irqaction; -}; -static struct uart com[2 ] = { {0 ,0 ,0 ,0 ,0x3f8 ,4 ,NULL ,NULL ,NULL ,
===== xen/include/asm-ia64/serial.h 1.1 vs edited =====
xen/include/asm-ia64/serial.h +0 -63
69 lines not on this page · raw message
===== xen/include/xen/serial.h 1.16 vs edited =====
xen/include/xen/serial.h +69 -4
85 lines not on this page · raw message
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel