Lean Sheng Tan submitted this change.

View Change

Approvals: ron minnich: Looks good to me, approved build bot (Jenkins): Verified Paul Menzel: Looks good to me, but someone else must approve
drivers/uart/sifive.c: Fix divisor calculation

The divisor is calculated using the following formula:
div = (frequency / baudrate) - 1;

The current implementation however essentially calculates:
div = (frequency / baudrate);

Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com>
Change-Id: I8a0898ce9016a70c0f91dc8a99fc1cf9e46d20c4
Reviewed-on: https://review.coreboot.org/c/coreboot/+/79951
Reviewed-by: ron minnich <rminnich@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
---
M src/drivers/uart/sifive.c
1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/drivers/uart/sifive.c b/src/drivers/uart/sifive.c
index d1b89dc..815a0cf 100644
--- a/src/drivers/uart/sifive.c
+++ b/src/drivers/uart/sifive.c
@@ -47,9 +47,16 @@

void uart_init(unsigned int idx)
{
- unsigned int div;
- div = uart_baudrate_divisor(get_uart_baudrate(),
- uart_platform_refclk(), uart_input_clock_divider());
+ /*
+ * according to FU540/FU740 manual:
+ * f_baud = f_in / (div + 1)
+ * <=>
+ * div = (f_in / f_baud) - 1
+ */
+ unsigned int div = uart_baudrate_divisor(get_uart_baudrate(), uart_platform_refclk(),
+ uart_input_clock_divider());
+ div -= 1;
+
sifive_uart_init(uart_platform_baseptr(idx), div);
}


To view, visit change 79951. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: main
Gerrit-Change-Id: I8a0898ce9016a70c0f91dc8a99fc1cf9e46d20c4
Gerrit-Change-Number: 79951
Gerrit-PatchSet: 4
Gerrit-Owner: Maximilian Brune <maximilian.brune@9elements.com>
Gerrit-Reviewer: Arthur Heymans <arthur@aheymans.xyz>
Gerrit-Reviewer: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Gerrit-Reviewer: Lean Sheng Tan <sheng.tan@9elements.com>
Gerrit-Reviewer: Patrick Rudolph <patrick.rudolph@9elements.com>
Gerrit-Reviewer: Paul Menzel <paulepanter@mailbox.org>
Gerrit-Reviewer: Philipp Hug <philipp.hug@gmail.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-Reviewer: ron minnich <rminnich@gmail.com>
Gerrit-MessageType: merged