On Mon, Dec 04, 2017 at 10:14:33AM +0100, Manuel Bouyer wrote: > 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.
That doesn't help since the code in com.c is compiled into the ARMADAXP kernel. Joerg