On Mon, Dec 04, 2017 at 09:48:32AM +0100, Joerg Sonnenberger wrote: > On Fri, May 27, 2016 at 08:01:49PM +0000, Manuel Bouyer wrote: > > Module Name: src > > Committed By: bouyer > > Date: Fri May 27 20:01:49 UTC 2016 > > > > Modified Files: > > src/sys/arch/arm/allwinner: files.awin > > src/sys/conf: files > > src/sys/dev/ic: com.c comreg.h comvar.h ns16550reg.h > > > > Log Message: > > The UART in the allwiner SoCs is not full-compatible with the 16550, and > > it's not a 16750 either. Like the 16750 it has the IIR_BUSY interrupt, > > which is triggered when writing to LCR while the chip > > can't accept it. But unlike the 16750, it has a specific register, > > HALT, to allow writing to the LCR and divisor registers, and then > > commit the changes. > > Tested on an A20 SoC, changing the baud rate while keeping the > > tty device open and incoming data. > > Hello Manuel, > I'm not sure how you tested this, but you are trivally accessing an array > beyond the end. COM_REG_TFL and friends are all larger than the cr_map array.
Inded, but cr_map is used only if COM_REGMAP is defined, which is not the case for allwinner. That's why it works ... I'll add a #error for this case. -- Manuel Bouyer <bou...@antioche.eu.org> NetBSD: 26 ans d'experience feront toujours la difference --