Ever since the introduction of the [[ https://github.com/raspberrypi/firmware/commit/68ec48189c5256b365c9232909180cb56c8820bc | 2019.11.18 version of start4.elf ]] by the Pi Foundation, the baudrate set by TF-A for the rpi4 platform is incorrect.
Our testing shows that all the serial divisors we read have doubled compared to the values that we read with a pre-2019.11.18 version of start4.elf, which indicates that the internal clock base that these divisors are meant to apply on (a.k.a. [[ https://github.com/ARM-software/arm-trusted-firmware/blob/87b582ef5b31c5893a470b61c217931fc7602da3/plat/rpi/rpi4/include/rpi_hw.h#L91 | PLAT_RPI4_VPU_CLK_RATE in the TF-A repo ]]) has also doubled.
I am planning to submit a patch that fixes this shortly.
Since this is also relevant, the patch I will be submitting fixes another baudrate issue that we have which is that, unless you have core_freq set to exact dividers of 500 (default) in your Raspberry Pi's config.txt, then the baudrate is not set correctly due to the decimal part of the divisor being ignored. For instance, regardless of the start4.elf you use, you will find that the baudrate is not set to its expected 115200 if you set core_freq=400 or core_freq=300 in config.txt.