On 2022-09-13, Anders Blomdell <anders.blomdell@xxxxxxxxxxxxxx> wrote: > I get incorrect baudrates, my oscilloscope gives: > > Programmed Measured > > 2400 5208 > 4800 13150 > 9600 10410 > 19200 71420 > 38400 142000 > 57600 201600 > 115200 138800 I just ran into what I think is the same problem when upgrading from 5.10.76 to 5.15.68 (sorry I don't have any intermediate kernel versions to test with). This is an oxford quad 950 board that has worked flawlessly for many years. Now the baud rates are all wrong. $ lspci | grep OX 03:00.0 Serial controller: Oxford Semiconductor Ltd OXPCIe954 Quad Native 950 UART $ dmesg | grep ttyS [ 0.265026] 0000:03:00.0: ttyS0 at MMIO 0xf7801000 (irq = 19, base_baud = 15625000) is a 16550A [ 0.265130] 0000:03:00.0: ttyS1 at MMIO 0xf7801200 (irq = 19, base_baud = 15625000) is a 16550A [ 0.265231] 0000:03:00.0: ttyS2 at MMIO 0xf7801400 (irq = 19, base_baud = 15625000) is a 16550A [ 0.265358] 0000:03:00.0: ttyS3 at MMIO 0xf7801600 (irq = 19, base_baud = 15625000) is a 16550A The only change I could see in dmesg/setserial output is that the baud base changed from 4000000 to 15625000. However, changing the baud base back to 4000000 does not make the ports work again With the default baud base of 15625000, baud rates look like this: Programmed Measured 2400 5398 4800 13812 9600 10796 19200 74418 The curious thing is that the buad rate errors are non-linear, so you can't just adjust the base baud value to get correct baud rates. The algorithm used to calculate the baud divisors seems to be broken. I've read through the rest of this thread a couple times, but was unable to figure out what to do to fix this problem or if it got fixed in more recent kernel versions. Did this problem get fixed in more recent kernels? Is there something I can do with a 6.15 kernel to get it this board to work again? -- Grant