diff options
Diffstat (limited to 'package/boot/arm-trusted-firmware-mvebu/patches-mox-boot-builder/100-wtmi-uart-fix-UART-baudrate-divisor-calculation.patch')
-rw-r--r-- | package/boot/arm-trusted-firmware-mvebu/patches-mox-boot-builder/100-wtmi-uart-fix-UART-baudrate-divisor-calculation.patch | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/package/boot/arm-trusted-firmware-mvebu/patches-mox-boot-builder/100-wtmi-uart-fix-UART-baudrate-divisor-calculation.patch b/package/boot/arm-trusted-firmware-mvebu/patches-mox-boot-builder/100-wtmi-uart-fix-UART-baudrate-divisor-calculation.patch deleted file mode 100644 index 4bd66f9107..0000000000 --- a/package/boot/arm-trusted-firmware-mvebu/patches-mox-boot-builder/100-wtmi-uart-fix-UART-baudrate-divisor-calculation.patch +++ /dev/null @@ -1,66 +0,0 @@ -From fb5e436843614f93b30aec0a2a00e5e59a133aab Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <marek.behun@nic.cz> -Date: Sat, 15 May 2021 17:44:24 +0200 -Subject: [PATCH] wtmi: uart: fix UART baudrate divisor calculation -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The UART code uses the xtal clock as parent for UART baudrate -generation, but it assumes that xtal runs at 25 MHz, which isn't -necessarily the case for all A3720 boards. - -Use get_ref_clk() to determine xtal clock rate. - -Use rounding division to compute the divisor value. - -Signed-off-by: Marek Behún <marek.behun@nic.cz> -Suggested-by: Pali Rohár <pali@kernel.org> ---- - wtmi/types.h | 5 +++++ - wtmi/uart.c | 7 ++++--- - 2 files changed, 9 insertions(+), 3 deletions(-) - -diff --git a/wtmi/types.h b/wtmi/types.h -index 7a6c6c6..ea873fc 100644 ---- a/wtmi/types.h -+++ b/wtmi/types.h -@@ -47,4 +47,9 @@ typedef u32 size_t; - - #define maybe_unused __attribute__((unused)) - -+static inline u32 div_round_closest_u32(u32 x, u32 d) -+{ -+ return (x + d / 2) / d; -+} -+ - #endif /* __TYPES_H */ -diff --git a/wtmi/uart.c b/wtmi/uart.c -index d40633d..75864b5 100644 ---- a/wtmi/uart.c -+++ b/wtmi/uart.c -@@ -40,8 +40,6 @@ - #include "stdio.h" - #include "debug.h" - --#define UART_CLOCK_FREQ 25804800 -- - const struct uart_info uart1_info = { - .rx = 0xc0012000, - .tx = 0xc0012004, -@@ -76,8 +74,11 @@ void uart_set_stdio(const struct uart_info *info) - - void uart_reset(const struct uart_info *info, unsigned int baudrate) - { -+ u32 parent_rate = get_ref_clk() * 1000000; -+ - /* set baudrate */ -- writel((UART_CLOCK_FREQ / baudrate / 16), info->baud); -+ writel(div_round_closest_u32(parent_rate, baudrate * 16), info->baud); -+ - /* set Programmable Oversampling Stack to 0, UART defaults to 16X scheme */ - writel(0, info->possr); - --- -2.30.2 - |