serial: a37xx: Do not call get_ref_clk() in _debug_uart_init()
authorPali Rohár <pali@kernel.org>
Mon, 26 Jul 2021 12:58:59 +0000 (14:58 +0200)
committerStefan Roese <sr@denx.de>
Sat, 31 Jul 2021 07:59:59 +0000 (09:59 +0200)
Static inline function _debug_uart_init() should avoid calling external
(non-inline) functions. Therefore do not call get_ref_clk() in
_debug_uart_init() and reimplement its functionality without external
function calls.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
drivers/serial/serial_mvebu_a3700.c

index 52dc3fd..6bca8e4 100644 (file)
@@ -305,6 +305,7 @@ U_BOOT_DRIVER(serial_mvebu) = {
 #ifdef CONFIG_DEBUG_MVEBU_A3700_UART
 
 #include <debug_uart.h>
+#include <mach/soc.h>
 
 static inline void _debug_uart_init(void)
 {
@@ -322,7 +323,8 @@ static inline void _debug_uart_init(void)
         * Calculate divider
         * baudrate = clock / 16 / divider
         */
-       parent_rate = get_ref_clk() * 1000000;
+       parent_rate = (readl(MVEBU_REGISTER(0x13808)) & BIT(9)) ?
+                     40000000 : 25000000;
        divider = DIV_ROUND_CLOSEST(parent_rate, CONFIG_BAUDRATE * 16);
        writel(divider, base + UART_BAUD_REG);