diff options
author | Jonathan Neuschäfer <j.neuschaefer@gmx.net> | 2018-10-29 14:32:49 +0100 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2018-12-05 13:36:43 +0000 |
commit | 97ca02cb170f870d5a47f92d5b9a79fe4664dca4 (patch) | |
tree | 9027303014bae8f3fe23b0563dfc111e978e2554 | |
parent | 042772a6bd66cd09add08da40785406e34e92d0a (diff) | |
download | coreboot-97ca02cb170f870d5a47f92d5b9a79fe4664dca4.tar.xz |
soc/sifive/fu540: Add helper function to get tlclk frequency
tlclk is not specific to the UART block in the FU540, so let's calculate
its frequency in clock.c.
Change-Id: I270920027f1132253e413a1bf9feb4fe279b651a
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Reviewed-on: https://review.coreboot.org/c/29335
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Philipp Hug <philipp@hug.cx>
-rw-r--r-- | src/soc/sifive/fu540/clock.c | 11 | ||||
-rw-r--r-- | src/soc/sifive/fu540/include/soc/clock.h | 1 | ||||
-rw-r--r-- | src/soc/sifive/fu540/uart.c | 6 |
3 files changed, 13 insertions, 5 deletions
diff --git a/src/soc/sifive/fu540/clock.c b/src/soc/sifive/fu540/clock.c index 8aaba35d6c..597b2069db 100644 --- a/src/soc/sifive/fu540/clock.c +++ b/src/soc/sifive/fu540/clock.c @@ -250,3 +250,14 @@ int clock_get_coreclk_khz(void) / (divr + 1) / (1ul << divq); } + +/* Get the TileLink clock's frequency, in KHz */ +int clock_get_tlclk_khz(void) +{ + /* + * The TileLink bus and most peripherals use tlclk, which is coreclk/2, + * as input. + */ + + return clock_get_coreclk_khz() / 2; +} diff --git a/src/soc/sifive/fu540/include/soc/clock.h b/src/soc/sifive/fu540/include/soc/clock.h index d54c6662c2..706c9c00f7 100644 --- a/src/soc/sifive/fu540/include/soc/clock.h +++ b/src/soc/sifive/fu540/include/soc/clock.h @@ -18,5 +18,6 @@ void clock_init(void); int clock_get_coreclk_khz(void); +int clock_get_tlclk_khz(void); #endif /* __SOC_SIFIVE_HIFIFE_U_CLOCK_H__ */ diff --git a/src/soc/sifive/fu540/uart.c b/src/soc/sifive/fu540/uart.c index 454b13d111..b59b78902a 100644 --- a/src/soc/sifive/fu540/uart.c +++ b/src/soc/sifive/fu540/uart.c @@ -29,9 +29,5 @@ uintptr_t uart_platform_base(int idx) unsigned int uart_platform_refclk(void) { - /* - * The SiFive UART uses tlclk, which is coreclk/2, as input - */ - - return clock_get_coreclk_khz() * KHz / 2; + return clock_get_tlclk_khz() * KHz; } |