summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2014-10-28 12:36:47 -0600
committerGregory Nutt <gnutt@nuttx.org>2014-10-28 12:36:47 -0600
commit96f270dcfd5c000c7f76af54854214a6d1cd60e8 (patch)
treef65099b638813c23c0e2d54cbfe5dd69ffb1f76f
parente0a060e1824ca6648f5eaa32dee13ef263dfad1a (diff)
downloadnuttx-96f270dcfd5c000c7f76af54854214a6d1cd60e8.tar.gz
nuttx-96f270dcfd5c000c7f76af54854214a6d1cd60e8.tar.bz2
nuttx-96f270dcfd5c000c7f76af54854214a6d1cd60e8.zip
EFM32: Add missing shift of register value
-rw-r--r--nuttx/arch/arm/src/efm32/efm32_lowputc.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/nuttx/arch/arm/src/efm32/efm32_lowputc.c b/nuttx/arch/arm/src/efm32/efm32_lowputc.c
index d5ca32f2e..9d586538f 100644
--- a/nuttx/arch/arm/src/efm32/efm32_lowputc.c
+++ b/nuttx/arch/arm/src/efm32/efm32_lowputc.c
@@ -204,17 +204,16 @@ static void efm32_uart_setbaud(uintptr_t base, uint32_t baud)
clkdiv = 0;
}
- DEBUGASSERT(clkdiv <= _USART_CLKDIV_MASK);
+ /* Set up the selected oversampling and baud divisor */
- /* Set up the selected oversampling and baud */
-
- regval = getreg32(base + EFM32_USART_CTRL_OFFSET);
- regval &= ~_USART_CTRL_OVS_MASK;
- regval |= ovs;
+ regval = getreg32(base + EFM32_USART_CTRL_OFFSET);
+ regval &= ~_USART_CTRL_OVS_MASK;
+ regval |= ovs;
putreg32(regval, base + EFM32_USART_CTRL_OFFSET);
- putreg32((uint32_t)clkdiv & _USART_CLKDIV_DIV_MASK,
- base + EFM32_USART_CLKDIV_OFFSET);
+ regval = (uint32_t)clkdiv << _USART_CLKDIV_DIV_SHIFT;
+ DEBUGASSERT((regval & _USART_CLKDIV_MASK) == clkdiv);
+ putreg32(regval, base + EFM32_USART_CLKDIV_OFFSET);
}
#endif