From aa71eb0989f940cd0c7b70f6a380239d4c07dc74 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Thu, 18 Feb 2010 20:02:09 +0000 Subject: Fixed bugs 2953981 and 2953985. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1634 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/platforms/LPC214x/lpc214x.h | 1 + os/hal/platforms/LPC214x/serial_lld.c | 3 ++- readme.txt | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/os/hal/platforms/LPC214x/lpc214x.h b/os/hal/platforms/LPC214x/lpc214x.h index 88e8d8ae1..9a3238c79 100644 --- a/os/hal/platforms/LPC214x/lpc214x.h +++ b/os/hal/platforms/LPC214x/lpc214x.h @@ -113,6 +113,7 @@ typedef struct { typedef struct { IOREG32 PS_SEL0; IOREG32 PS_SEL1; + IOREG32 _dummy[3]; IOREG32 PS_SEL2; } PS; diff --git a/os/hal/platforms/LPC214x/serial_lld.c b/os/hal/platforms/LPC214x/serial_lld.c index 5f01bcf48..4f5d671b4 100644 --- a/os/hal/platforms/LPC214x/serial_lld.c +++ b/os/hal/platforms/LPC214x/serial_lld.c @@ -85,12 +85,13 @@ static void uart_init(SerialDriver *sdp) { */ static void uart_deinit(UART *u) { + u->UART_LCR = LCR_DLAB; u->UART_DLL = 1; u->UART_DLM = 0; + u->UART_LCR = 0; u->UART_FDR = 0x10; u->UART_IER = 0; u->UART_FCR = FCR_RXRESET | FCR_TXRESET; - u->UART_LCR = 0; u->UART_ACR = 0; u->UART_TER = TER_ENABLE; } diff --git a/readme.txt b/readme.txt index e4331ccf9..07bf131cc 100644 --- a/readme.txt +++ b/readme.txt @@ -52,6 +52,10 @@ ***************************************************************************** *** 1.5.2 *** +- FIX: Fixed wrong UART deinitialization sequence in LPC214x serial driver + (bug 2953985)(backported in 1.4.1). +- FIX: Fixed wrong PINSEL2 offset into lpc214x.h (bug 2953981)(backported + in 1.4.1). - FIX: Fixed invalid UART-related macro in the LPC214x HAL (bug 2953195) (backported in 1.4.1). - FIX: Impossible to enforce alignment greater of a pointer size for heap/core -- cgit v1.2.3