X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=drivers%2Fserial%2Fsunhv.c;h=f137804b31331e15b8df64d3ff88a3e7d74ee91d;hb=0efd9323f32c137b5cf48bc6582cd08556e7cdfc;hp=378a1784ce9aea3f440245f419222a860a9568d6;hpb=135066a21129760e44a51a7ef31d8c861f8ddace;p=powerpc.git diff --git a/drivers/serial/sunhv.c b/drivers/serial/sunhv.c index 378a1784ce..f137804b31 100644 --- a/drivers/serial/sunhv.c +++ b/drivers/serial/sunhv.c @@ -210,9 +210,6 @@ static void sunhv_stop_tx(struct uart_port *port) static void sunhv_start_tx(struct uart_port *port) { struct circ_buf *xmit = &port->info->xmit; - unsigned long flags; - - spin_lock_irqsave(&port->lock, flags); while (!uart_circ_empty(xmit)) { long status = hypervisor_con_putchar(xmit->buf[xmit->tail]); @@ -223,8 +220,6 @@ static void sunhv_start_tx(struct uart_port *port) xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); port->icount.tx++; } - - spin_unlock_irqrestore(&port->lock, flags); } /* port->lock is not held. */ @@ -259,7 +254,7 @@ static void sunhv_break_ctl(struct uart_port *port, int break_state) { if (break_state) { unsigned long flags; - int limit = 10000; + int limit = 1000000; spin_lock_irqsave(&port->lock, flags); @@ -267,6 +262,7 @@ static void sunhv_break_ctl(struct uart_port *port, int break_state) long status = hypervisor_con_putchar(CON_BREAK); if (status == HV_EOK) break; + udelay(2); } spin_unlock_irqrestore(&port->lock, flags); @@ -498,6 +494,7 @@ static int __init sunhv_init(void) return ret; } + sunhv_reg.tty_driver->name_base = sunhv_reg.minor - 64; sunserial_current_minor += 1; sunhv_reg.cons = SUNHV_CONSOLE();