[POWERPC] Uartlite: Revert register io access changes
Reverts commit a15da8eff3
This driver is used by devices other than the xilinx opb-uartlite which
depend on bytewise access to the registers. The change to 32 bit access
does not work on these devices.
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Peter Korsgaard <jacmet@sunsite.dk>
Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
This commit is contained in:
parent
be1b4d34e3
commit
e077b50c29
|
@ -28,7 +28,7 @@
|
||||||
.num_resources = 2, \
|
.num_resources = 2, \
|
||||||
.resource = (struct resource[]) { \
|
.resource = (struct resource[]) { \
|
||||||
{ \
|
{ \
|
||||||
.start = XPAR_UARTLITE_##num##_BASEADDR, \
|
.start = XPAR_UARTLITE_##num##_BASEADDR + 3, \
|
||||||
.end = XPAR_UARTLITE_##num##_HIGHADDR, \
|
.end = XPAR_UARTLITE_##num##_HIGHADDR, \
|
||||||
.flags = IORESOURCE_MEM, \
|
.flags = IORESOURCE_MEM, \
|
||||||
}, \
|
}, \
|
||||||
|
|
|
@ -75,7 +75,7 @@ static int ulite_receive(struct uart_port *port, int stat)
|
||||||
/* stats */
|
/* stats */
|
||||||
if (stat & ULITE_STATUS_RXVALID) {
|
if (stat & ULITE_STATUS_RXVALID) {
|
||||||
port->icount.rx++;
|
port->icount.rx++;
|
||||||
ch = in_be32((void*)port->membase + ULITE_RX);
|
ch = readb(port->membase + ULITE_RX);
|
||||||
|
|
||||||
if (stat & ULITE_STATUS_PARITY)
|
if (stat & ULITE_STATUS_PARITY)
|
||||||
port->icount.parity++;
|
port->icount.parity++;
|
||||||
|
@ -120,7 +120,7 @@ static int ulite_transmit(struct uart_port *port, int stat)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (port->x_char) {
|
if (port->x_char) {
|
||||||
out_be32((void*)port->membase + ULITE_TX, port->x_char);
|
writeb(port->x_char, port->membase + ULITE_TX);
|
||||||
port->x_char = 0;
|
port->x_char = 0;
|
||||||
port->icount.tx++;
|
port->icount.tx++;
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -129,7 +129,7 @@ static int ulite_transmit(struct uart_port *port, int stat)
|
||||||
if (uart_circ_empty(xmit) || uart_tx_stopped(port))
|
if (uart_circ_empty(xmit) || uart_tx_stopped(port))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
out_be32((void*)port->membase + ULITE_TX, xmit->buf[xmit->tail]);
|
writeb(xmit->buf[xmit->tail], port->membase + ULITE_TX);
|
||||||
xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE-1);
|
xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE-1);
|
||||||
port->icount.tx++;
|
port->icount.tx++;
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ static irqreturn_t ulite_isr(int irq, void *dev_id)
|
||||||
int busy;
|
int busy;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
int stat = in_be32((void*)port->membase + ULITE_STATUS);
|
int stat = readb(port->membase + ULITE_STATUS);
|
||||||
busy = ulite_receive(port, stat);
|
busy = ulite_receive(port, stat);
|
||||||
busy |= ulite_transmit(port, stat);
|
busy |= ulite_transmit(port, stat);
|
||||||
} while (busy);
|
} while (busy);
|
||||||
|
@ -162,7 +162,7 @@ static unsigned int ulite_tx_empty(struct uart_port *port)
|
||||||
unsigned int ret;
|
unsigned int ret;
|
||||||
|
|
||||||
spin_lock_irqsave(&port->lock, flags);
|
spin_lock_irqsave(&port->lock, flags);
|
||||||
ret = in_be32((void*)port->membase + ULITE_STATUS);
|
ret = readb(port->membase + ULITE_STATUS);
|
||||||
spin_unlock_irqrestore(&port->lock, flags);
|
spin_unlock_irqrestore(&port->lock, flags);
|
||||||
|
|
||||||
return ret & ULITE_STATUS_TXEMPTY ? TIOCSER_TEMT : 0;
|
return ret & ULITE_STATUS_TXEMPTY ? TIOCSER_TEMT : 0;
|
||||||
|
@ -185,7 +185,7 @@ static void ulite_stop_tx(struct uart_port *port)
|
||||||
|
|
||||||
static void ulite_start_tx(struct uart_port *port)
|
static void ulite_start_tx(struct uart_port *port)
|
||||||
{
|
{
|
||||||
ulite_transmit(port, in_be32((void*)port->membase + ULITE_STATUS));
|
ulite_transmit(port, readb(port->membase + ULITE_STATUS));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ulite_stop_rx(struct uart_port *port)
|
static void ulite_stop_rx(struct uart_port *port)
|
||||||
|
@ -214,17 +214,17 @@ static int ulite_startup(struct uart_port *port)
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
out_be32((void*)port->membase + ULITE_CONTROL,
|
writeb(ULITE_CONTROL_RST_RX | ULITE_CONTROL_RST_TX,
|
||||||
ULITE_CONTROL_RST_RX | ULITE_CONTROL_RST_TX);
|
port->membase + ULITE_CONTROL);
|
||||||
out_be32((void*)port->membase + ULITE_CONTROL, ULITE_CONTROL_IE);
|
writeb(ULITE_CONTROL_IE, port->membase + ULITE_CONTROL);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ulite_shutdown(struct uart_port *port)
|
static void ulite_shutdown(struct uart_port *port)
|
||||||
{
|
{
|
||||||
out_be32((void*)port->membase + ULITE_CONTROL, 0);
|
writeb(0, port->membase + ULITE_CONTROL);
|
||||||
in_be32((void*)port->membase + ULITE_CONTROL); /* dummy */
|
readb(port->membase + ULITE_CONTROL); /* dummy */
|
||||||
free_irq(port->irq, port);
|
free_irq(port->irq, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,7 +332,7 @@ static void ulite_console_wait_tx(struct uart_port *port)
|
||||||
|
|
||||||
/* wait up to 10ms for the character(s) to be sent */
|
/* wait up to 10ms for the character(s) to be sent */
|
||||||
for (i = 0; i < 10000; i++) {
|
for (i = 0; i < 10000; i++) {
|
||||||
if (in_be32((void*)port->membase + ULITE_STATUS) & ULITE_STATUS_TXEMPTY)
|
if (readb(port->membase + ULITE_STATUS) & ULITE_STATUS_TXEMPTY)
|
||||||
break;
|
break;
|
||||||
udelay(1);
|
udelay(1);
|
||||||
}
|
}
|
||||||
|
@ -341,7 +341,7 @@ static void ulite_console_wait_tx(struct uart_port *port)
|
||||||
static void ulite_console_putchar(struct uart_port *port, int ch)
|
static void ulite_console_putchar(struct uart_port *port, int ch)
|
||||||
{
|
{
|
||||||
ulite_console_wait_tx(port);
|
ulite_console_wait_tx(port);
|
||||||
out_be32((void*)port->membase + ULITE_TX, ch);
|
writeb(ch, port->membase + ULITE_TX);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ulite_console_write(struct console *co, const char *s,
|
static void ulite_console_write(struct console *co, const char *s,
|
||||||
|
@ -358,8 +358,8 @@ static void ulite_console_write(struct console *co, const char *s,
|
||||||
spin_lock_irqsave(&port->lock, flags);
|
spin_lock_irqsave(&port->lock, flags);
|
||||||
|
|
||||||
/* save and disable interrupt */
|
/* save and disable interrupt */
|
||||||
ier = in_be32((void*)port->membase + ULITE_STATUS) & ULITE_STATUS_IE;
|
ier = readb(port->membase + ULITE_STATUS) & ULITE_STATUS_IE;
|
||||||
out_be32((void*)port->membase + ULITE_CONTROL, 0);
|
writeb(0, port->membase + ULITE_CONTROL);
|
||||||
|
|
||||||
uart_console_write(port, s, count, ulite_console_putchar);
|
uart_console_write(port, s, count, ulite_console_putchar);
|
||||||
|
|
||||||
|
@ -367,7 +367,7 @@ static void ulite_console_write(struct console *co, const char *s,
|
||||||
|
|
||||||
/* restore interrupt state */
|
/* restore interrupt state */
|
||||||
if (ier)
|
if (ier)
|
||||||
out_be32((void*)port->membase + ULITE_CONTROL, ULITE_CONTROL_IE);
|
writeb(ULITE_CONTROL_IE, port->membase + ULITE_CONTROL);
|
||||||
|
|
||||||
if (locked)
|
if (locked)
|
||||||
spin_unlock_irqrestore(&port->lock, flags);
|
spin_unlock_irqrestore(&port->lock, flags);
|
||||||
|
@ -598,7 +598,7 @@ ulite_of_probe(struct of_device *op, const struct of_device_id *match)
|
||||||
|
|
||||||
rc = of_address_to_resource(op->node, 0, &res);
|
rc = of_address_to_resource(op->node, 0, &res);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_err(&op->dev, "invalide address\n");
|
dev_err(&op->dev, "invalid address\n");
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -606,7 +606,7 @@ ulite_of_probe(struct of_device *op, const struct of_device_id *match)
|
||||||
|
|
||||||
id = of_get_property(op->node, "port-number", NULL);
|
id = of_get_property(op->node, "port-number", NULL);
|
||||||
|
|
||||||
return ulite_assign(&op->dev, id ? *id : -1, res.start, irq);
|
return ulite_assign(&op->dev, id ? *id : -1, res.start+3, irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __devexit ulite_of_remove(struct of_device *op)
|
static int __devexit ulite_of_remove(struct of_device *op)
|
||||||
|
|
Loading…
Reference in New Issue