On Thu, Oct 17, 2013 at 10:16:47AM +0200, Nicolas Ferre wrote: > On 16/10/2013 22:14, Greg Kroah-Hartman : > > On Tue, Oct 15, 2013 at 11:19:18AM +0200, Nicolas Ferre wrote: > >> On 14/10/2013 15:59, Jean-Christophe PLAGNIOL-VILLARD : > >>> On 10:43 Thu 10 Oct , Nicolas Ferre wrote: > >>>> On older SoC, the "name" field is not filled in the register map. > >>>> Fix the way to figure out if the serial port is an uart or an usart for these > >>>> older products (with corresponding properties). > >>>> > >>>> Signed-off-by: Nicolas Ferre <nicolas.ferre@xxxxxxxxx> > >>>> --- > >>>> drivers/tty/serial/atmel_serial.c | 19 ++++++++++++++++++- > >>>> include/linux/atmel_serial.h | 1 + > >>>> 2 files changed, 19 insertions(+), 1 deletion(-) > >>>> > >>>> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c > >>>> index 6b0f75e..c7d99af 100644 > >>>> --- a/drivers/tty/serial/atmel_serial.c > >>>> +++ b/drivers/tty/serial/atmel_serial.c > >>>> @@ -99,6 +99,7 @@ static void atmel_stop_rx(struct uart_port *port); > >>>> #define UART_PUT_RTOR(port,v) __raw_writel(v, (port)->membase + ATMEL_US_RTOR) > >>>> #define UART_PUT_TTGR(port, v) __raw_writel(v, (port)->membase + ATMEL_US_TTGR) > >>>> #define UART_GET_IP_NAME(port) __raw_readl((port)->membase + ATMEL_US_NAME) > >>>> +#define UART_GET_IP_VERSION(port) __raw_readl((port)->membase + ATMEL_US_VERSION) > >>>> > >>>> /* PDC registers */ > >>>> #define UART_PUT_PTCR(port,v) __raw_writel(v, (port)->membase + ATMEL_PDC_PTCR) > >>>> @@ -1503,6 +1504,7 @@ static void atmel_get_ip_name(struct uart_port *port) > >>>> { > >>>> struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); > >>>> int name = UART_GET_IP_NAME(port); > >>>> + u32 version; > >>>> int usart, uart; > >>>> /* usart and uart ascii */ > >>>> usart = 0x55534152; > >>>> @@ -1517,7 +1519,22 @@ static void atmel_get_ip_name(struct uart_port *port) > >>>> dev_dbg(port->dev, "This is uart\n"); > >>>> atmel_port->is_usart = false; > >>>> } else { > >>>> - dev_err(port->dev, "Not supported ip name, set to uart\n"); > >>>> + /* fallback for older SoCs: use version field */ > >>>> + version = UART_GET_IP_VERSION(port); > >>>> + switch (version) { > >>>> + case 0x302: > >>>> + case 0x10213: > >>>> + dev_dbg(port->dev, "This version is usart\n"); > >>>> + atmel_port->is_usart = true; > >>>> + break; > >>>> + case 0x203: > >>>> + case 0x10202: > >>>> + dev_dbg(port->dev, "This version is uart\n"); > >>>> + atmel_port->is_usart = false; > >>>> + break; > >>>> + default: > >>>> + dev_err(port->dev, "Not supported ip name nor version, set to uart\n"); > >>> > >>> it's not really an error a dev_warn is more oppropriate > >> > >> As we are already in -rc5 and that these fixes are critical for at91 > >> platforms, I will not re-spin another patch just for this. > >> > >> Moreover, I have the feeling that if we end up in this case, it > >> means that we are in big troubles because the usart/uart included in > >> the product triggering this log is not known (I recall that newer > >> products do not have to hit these lines of code). > >> > >> With these 2 reasons, I prefer to keep my patch like it is. > >> > >> Greg, can you consider taking these two patches as regression fixes > >> for 3.12 (with Tested-by tag from Thomas)? > > > > Is this really a regression from 3.11? > > Yes it is. Commit id that I am referring to in patch 1/2 > (055560b04a8cd063aea916fd083b7aec02c2adb8) hit the mainline in 3.12-rc > time-frame. Ok. > > What's the worry about waiting > > for 3.13-rc1, getting this correct, and then backporting them to the > > 3.12-stable trees? > > It will break all older at91 in 3.12-final. Moreover, I do think that > the actual patches are bringing an incorrect solution and I do not plan > to have a better one (which one?) for 3.13... > > > I'd prefer that, so, please clean this up properly and resend it, with > > the tested-by: lines and I'll queue them up for 3.13-rc1. > > I do not know what to cleanup. Anyway, tell me if you want that I resend > the series of 2 patches with the "Tested-by" tag included. I thought there was some dev_warn() changes that were asked for... Anyway, please resend them if you want me to take them for any tree as I no longer have them in my queue. thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html