From 77a622da0bf04394b4f36f487d6b058db8b50d23 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Tue, 28 Oct 2014 12:36:47 -0600 Subject: [PATCH] EFM32: Add missing shift of register value --- arch/arm/src/efm32/efm32_lowputc.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/arch/arm/src/efm32/efm32_lowputc.c b/arch/arm/src/efm32/efm32_lowputc.c index d5ca32f2e0..9d586538f2 100644 --- a/arch/arm/src/efm32/efm32_lowputc.c +++ b/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