summaryrefslogtreecommitdiff
path: root/nuttx
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2014-11-16 07:57:57 -0600
committerGregory Nutt <gnutt@nuttx.org>2014-11-16 07:57:57 -0600
commit12ec978440859cd671fddfad5a850a370ebc8acf (patch)
treea42d839c7b0cc04c8a3eb2cfa9524fc560a60e58 /nuttx
parent5863d9f6de9b46a9ef760a26d63aa31987fa029f (diff)
downloadpx4-nuttx-12ec978440859cd671fddfad5a850a370ebc8acf.tar.gz
px4-nuttx-12ec978440859cd671fddfad5a850a370ebc8acf.tar.bz2
px4-nuttx-12ec978440859cd671fddfad5a850a370ebc8acf.zip
EFM32 USART setup: Computation of BAUD includes shift; Eliminate additional shift. From Pierre-noel Bouteville
Diffstat (limited to 'nuttx')
-rw-r--r--nuttx/arch/arm/src/efm32/efm32_lowputc.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/nuttx/arch/arm/src/efm32/efm32_lowputc.c b/nuttx/arch/arm/src/efm32/efm32_lowputc.c
index f343d341a..ebbfce347 100644
--- a/nuttx/arch/arm/src/efm32/efm32_lowputc.c
+++ b/nuttx/arch/arm/src/efm32/efm32_lowputc.c
@@ -206,15 +206,18 @@ static void efm32_uart_setbaud(uintptr_t base, uint32_t baud)
clkdiv = 0;
}
- /* Set up the selected oversampling and baud divisor */
+ /* Set up the selected oversampling */
regval = getreg32(base + EFM32_USART_CTRL_OFFSET);
regval &= ~_USART_CTRL_OVS_MASK;
regval |= ovs;
putreg32(regval, base + EFM32_USART_CTRL_OFFSET);
- regval = (uint32_t)clkdiv << _USART_CLKDIV_DIV_SHIFT;
- DEBUGASSERT((regval & _USART_CLKDIV_MASK) == regval);
+ /* Set up the selected baud divisor. The computation above already took
+ * in account of _USART_CLKDIV_DIV_SHIFT
+ */
+
+ regval = (uint32_t)clkdiv & _USART_CLKDIV_MASK;
putreg32(regval, base + EFM32_USART_CLKDIV_OFFSET);
}
#endif