Peter Hurley <peter@xxxxxxxxxxxxxxxxxx> writes: >>>> So an appropriate fix might be: >>>> >>>> --- 8250_core.c 2015-03-03 18:04:59.000000000 +0100 >>>> +++ 8250_core.fix.c 2015-03-06 18:23:27.374740156 +0100 >>>> @@ -378,12 +378,14 @@ >>>> >>>> static unsigned int au_serial_in(struct uart_port *p, int offset) >>>> { >>>> + if (offset > UART_MSR) return 0; >>>> offset = au_io_in_map[offset] << p->regshift; >>>> return __raw_readl(p->membase + offset); >>>> } >>>> >>>> static void au_serial_out(struct uart_port *p, int offset, int value) >>>> { >>>> + if (offset > UART_MCR) return; >>>> offset = au_io_out_map[offset] << p->regshift; >>>> __raw_writel(value, p->membase + offset); >>>> } >>> >>> If that fixes my breakage, then ok. I could also skip this UPIO_* type >>> for the canary/console restore problem. >>> >>> Will you submit that as a patch or would you like me to? >> >> My patch is not even compile-tested ;-) >> It was only intended to kick-start the discussion. > > Ok, I'll come up with something. Will you be able to test a patch? I can test a patch on some similar hardware if needed. Do note that nothing is visibly broken as is, so any patch will only be correcting theoretical problems. > Also, looking at the RT3050 datasheet shows it has has a scratch > register; I'll see if I can dig up some info on the RT2880/Au1xxx. Au1550 doesn't have a scratch register. I have failed to locate a RT2880 datasheet. -- Måns Rullgård mans@xxxxxxxxx -- 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