Commit 66a77528 authored by Pali Rohár's avatar Pali Rohár Committed by Marek Behun
Browse files

fix(plat/marvell/a3720/uart): fix UART clock rate value and divisor calculation



UART parent clock is by default the platform's xtal clock, which is
25 MHz.

The value defined in the driver, though, is 25.8048 MHz. This is a hack
for the suboptimal divisor calculation
  Divisor = UART clock / (16 * baudrate)
which does not use rounding division, resulting in a suboptimal value
for divisor if the correct parent clock rate was used.

Change the code for divisor calculation to
  Divisor = Round(UART clock / (16 * baudrate))
and change the parent clock rate value to 25 MHz.

The final UART divisor for default baudrate 115200 is not affected by
this change.

(Note that the parent clock rate should not be defined via a macro,
since the xtal clock can also be 40 MHz. This is outside of the scope of
this fix, though.)
Signed-off-by: default avatarPali Rohár <pali@kernel.org>
Change-Id: Iaa401173df87aec94f2dd1b38a90fb6ed0bf0ec6
parent c1588782
...@@ -45,8 +45,9 @@ func console_a3700_core_init ...@@ -45,8 +45,9 @@ func console_a3700_core_init
cbz w2, init_fail cbz w2, init_fail
/* Program the baudrate */ /* Program the baudrate */
/* Divisor = Uart clock / (16 * baudrate) */ /* Divisor = Round(Uartclock / (16 * baudrate)) */
lsl w2, w2, #4 lsl w2, w2, #4
add w1, w1, w2, lsr #1
udiv w2, w1, w2 udiv w2, w1, w2
and w2, w2, #0x3ff and w2, w2, #0x3ff
......
...@@ -164,7 +164,7 @@ ...@@ -164,7 +164,7 @@
* PL011 related constants * PL011 related constants
*/ */
#define PLAT_MARVELL_BOOT_UART_BASE (MVEBU_REGS_BASE + 0x12000) #define PLAT_MARVELL_BOOT_UART_BASE (MVEBU_REGS_BASE + 0x12000)
#define PLAT_MARVELL_BOOT_UART_CLK_IN_HZ 25804800 #define PLAT_MARVELL_BOOT_UART_CLK_IN_HZ 25000000
#define PLAT_MARVELL_CRASH_UART_BASE PLAT_MARVELL_BOOT_UART_BASE #define PLAT_MARVELL_CRASH_UART_BASE PLAT_MARVELL_BOOT_UART_BASE
#define PLAT_MARVELL_CRASH_UART_CLK_IN_HZ PLAT_MARVELL_BOOT_UART_CLK_IN_HZ #define PLAT_MARVELL_CRASH_UART_CLK_IN_HZ PLAT_MARVELL_BOOT_UART_CLK_IN_HZ
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment