Re: [PATCH] 8250_early console support for au1x00 (again)
From: Rodolfo Giometti <hidden>
Date: 2006-08-30 11:00:45
Sorry for follwing up 2 month ago, I just happen to stumble on some issues addresses by these patches as well. I assume you haven't tried sending them to Russel King?
Not yet, I just waiting for some comments. :)
quoted
+ switch (port->iotype) { + case UPIO_HUB6: + outb(port->hub6 - 1 + offset, port->iobase); + return inb(port->iobase + 1);This module can't handle HAB6 otherwise, so whay add it here?
Ok. I'm going to remove it.
quoted
+ case UPIO_MEM32: + case UPIO_AU: + return readl(port->membase + offset);NAK. readl() can't be used to read from Alchemy SOC peripherals because it'll break in BE mode. Alchemy automagically handles byteswap for the SOC peripherals.
Ok. I'm going to fix it by using au_readl() but in this case I have to add an ifdef with au1xxx include file. Can it be acceptable?
quoted
@@ -142,6 +266,7 @@ static int __init parse_options(struct eport->uartclk = BASE_BAUD * 16; if (!strncmp(options, "mmio,", 5)) { port->iotype = UPIO_MEM; + port->regshift = 0;Maybe regshift even deserves the separate (but optional) field in the boot option...
Mmm... I don't know. However I have to set a default value.
quoted
+ (port->iotype == UPIO_MEM) ? "MMIO" : \ + (port->iotype == UPIO_AU) ? "AU" : "I/O port", + (port->iotype == UPIO_MEM) || \ + (port->iotype == UPIO_AU) ? port->mapbase : (unsigned long) port->iobase);I'd simply map UPIO_AU to "MMIO" in the message because it's memory mapped UART after all...
Yes, but in the kernel command line we must supply "au"... That's why I used different string, so the user can verify whatever he/she passed to the kernel.
quoted
index 17839e7..9e27aee 100644--- a/drivers/serial/serial_core.c +++ b/drivers/serial/serial_core.c@@ -2367,6 +2367,7 @@ int uart_match_port(struct uart_port *poreturn (port1->iobase == port2->iobase) && (port1->hub6 == port2->hub6); case UPIO_MEM: + case UPIO_AU:Also needs cases for UPIO_MEM32 and UPIO_TSI.
I just added the code for au1xxx. Why should I consider those cases also?
quoted
-#ifdef CONFIG_SERIAL_8250_AU1X00 case UPIO_AU: - __raw_writel(value, up->port.membase + offset); + writel(value, up->port.membase + offset); break; -#endifDitto writel().
Is __raw_writel() correct?
WBR, Sergei
Thanks for your suggestions. Ciao, Rodolfo -- GNU/Linux Solutions e-mail: giometti@enneenne.com Linux Device Driver giometti@gnudd.com Embedded Systems giometti@linux.it UNIX programming phone: +39 349 2432127