summaryrefslogtreecommitdiff
path: root/nuttx/arch/z16
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2008-01-26 14:35:25 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2008-01-26 14:35:25 +0000
commit84c38efeff157aac42105ccf709a604af75bf9ec (patch)
tree318232aeb96cd306ae866fff3882e4a069acc118 /nuttx/arch/z16
parenteb243ffb65d42ef0426e0ae75ef8f52b8adf2468 (diff)
downloadpx4-nuttx-84c38efeff157aac42105ccf709a604af75bf9ec.tar.gz
px4-nuttx-84c38efeff157aac42105ccf709a604af75bf9ec.tar.bz2
px4-nuttx-84c38efeff157aac42105ccf709a604af75bf9ec.zip
Fix a16f serial bugs
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@568 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/z16')
-rwxr-xr-xnuttx/arch/z16/src/z16f/z16f_head.S2
-rwxr-xr-xnuttx/arch/z16/src/z16f/z16f_lowuart.S18
-rw-r--r--nuttx/arch/z16/src/z16f/z16f_serial.c35
3 files changed, 25 insertions, 30 deletions
diff --git a/nuttx/arch/z16/src/z16f/z16f_head.S b/nuttx/arch/z16/src/z16f/z16f_head.S
index 2a1871aae..f9cdf745c 100755
--- a/nuttx/arch/z16/src/z16f/z16f_head.S
+++ b/nuttx/arch/z16/src/z16f/z16f_head.S
@@ -149,7 +149,7 @@ _z16f_reset:
#endif
/* Perform VERY early UART initialization so that we can use it here */
-#if defined(CONFIG_ARCH_LOWPUTC) || defined(CONFIG_ARCH_LOWGETC)
+#if defined(CONFIG_ARCH_LOWPUTC) || defined(CONFIG_ARCH_LOWGETC) || CONFIG_NFILE_DESCRIPTORS == 0
call _z16f_lowuartinit /* Initialize the UART for debugging */
#endif
/* Initialize the hardware stack overflow register */
diff --git a/nuttx/arch/z16/src/z16f/z16f_lowuart.S b/nuttx/arch/z16/src/z16f/z16f_lowuart.S
index 037b3dd80..5e45e8c53 100755
--- a/nuttx/arch/z16/src/z16f/z16f_lowuart.S
+++ b/nuttx/arch/z16/src/z16f/z16f_lowuart.S
@@ -41,7 +41,7 @@
#include <nuttx/config.h>
#include "chip/chip.h"
-#if defined(CONFIG_ARCH_LOWPUTC) || defined(CONFIG_ARCH_LOWGETC)
+#if defined(CONFIG_ARCH_LOWPUTC) || defined(CONFIG_ARCH_LOWGETC) || CONFIG_NFILE_DESCRIPTORS == 0
/*************************************************************************
* External References / External Definitions
@@ -96,31 +96,31 @@ _z16f_lowuartinit:
udiv r0, r3 /* BRG = (freq + baud * 8)/(baud * 16) */
#ifdef CONFIG_UART0_SERIAL_CONSOLE
- ld.w Z16F_UART0_BR, r0 /* Z16F_UART0_BR = BRG */
+ ld.w Z16F_UART1_BR, r0 /* Z16F_UART1_BR = BRG */
/* Set the GPIO Alternate Function Register Lo (AFL) register */
ld r0, #%30
- or.b Z16F_GPIOA_AFL, r0 /* Z16F_GPIOA_AFL |= %30 */
+ or.b Z16F_GPIOD_AFL, r0 /* Z16F_GPIOD_AFL |= %30 */
/* Enable UART receive (REN) and transmit (TEN) */
- clr.b Z16F_UART0_CTL1 /* Z16F_UART0_CTL1 = 0 */
+ clr.b Z16F_UART1_CTL1 /* Z16F_UART1_CTL1 = 0 */
ld r0, #(Z16F_UARTCTL0_TEN|Z16F_UARTCTL0_REN)
- ld.b Z16F_UART0_CTL0, r0 /* Z16F_UART0_CTL0 = %c0 */
+ ld.b Z16F_UART1_CTL0, r0 /* Z16F_UART1_CTL0 = %c0 */
#else
- ld.w Z16F_UART1_BR, r0 /* Z16F_UART1_BR = BRG */
+ ld.w Z16F_UART0_BR, r0 /* Z16F_UART0_BR = BRG */
/* Set the GPIO Alternate Function Register Lo (AFL) register */
ld r0, #%30
- or.b Z16F_GPIOD_AFL, r0 /* Z16F_GPIOD_AFL |= %30 */
+ or.b Z16F_GPIOA_AFL, r0 /* Z16F_GPIOA_AFL |= %30 */
/* Enable UART receive (REN) and transmit (TEN) */
- clr.b Z16F_UART1_CTL1 /* Z16F_UART1_CTL1 = 0 */
+ clr.b Z16F_UART0_CTL1 /* Z16F_UART0_CTL1 = 0 */
ld r0, #(Z16F_UARTCTL0_TEN|Z16F_UARTCTL0_REN)
- ld.b Z16F_UART1_CTL0, r0 /* Z16F_UART1_CTL0 = %c0 */
+ ld.b Z16F_UART0_CTL0, r0 /* Z16F_UART0_CTL0 = %c0 */
#endif
popmlo <r0, r3> /* Restore registers */
ret /* Return */
diff --git a/nuttx/arch/z16/src/z16f/z16f_serial.c b/nuttx/arch/z16/src/z16f/z16f_serial.c
index 1ca6e0377..d63c6e5dd 100644
--- a/nuttx/arch/z16/src/z16f/z16f_serial.c
+++ b/nuttx/arch/z16/src/z16f/z16f_serial.c
@@ -649,39 +649,35 @@ int up_putc(int ch)
****************************************************************************/
#ifdef CONFIG_UART1_SERIAL_CONSOLE
-# define z16f_contrde() \
- do { \
- int tmp; \
- for (tmp = 1000 ; tmp > 0 ; tmp--) \
- if ((getreg8(Z16F_UART1_STAT0) & Z16F_UARTSTAT0_TDRE) != 0) \
- break; \
- } while (0)
+# define z16f_contrde() \
+ ((getreg8(Z16F_UART1_STAT0) & Z16F_UARTSTAT0_TDRE) != 0)
# define z16f_contxd(ch) \
- putreg8((ubyte)(ch), Z16F_UART1_STAT0)
+ putreg8((ubyte)(ch), Z16F_UART1_TXD)
#else
-# define z16f_contrde() \
- do { \
- int tmp; \
- for (tmp = 1000 ; tmp > 0 ; tmp--) \
- if ((getreg8(Z16F_UART0_STAT0) & Z16F_UARTSTAT0_TDRE) != 0) \
- break; \
- } while (0)
+# define z16f_contrde() \
+ ((getreg8(Z16F_UART0_STAT0) & Z16F_UARTSTAT0_TDRE) != 0)
# define z16f_contxd(ch) \
- putreg8((ubyte)(ch), Z16F_UART0_STAT0)
+ putreg8((ubyte)(ch), Z16F_UART0_TXD)
#endif
/****************************************************************************
* Private Functions
****************************************************************************/
+static void _up_putc(int ch)
+{
+ int tmp;
+ for (tmp = 1000 ; tmp > 0 && !z16f_contrde(); tmp--);
+ z16f_contxd(ch);
+}
+
/****************************************************************************
* Public Functions
****************************************************************************/
int up_putc(int ch)
{
- z16f_contrde();
- z16f_contxd(ch);
+ _up_putc(ch);
/* Check for LF */
@@ -689,8 +685,7 @@ int up_putc(int ch)
{
/* Add CR */
- z16f_contrde();
- z16f_contxd('\r');
+ _up_putc('\r');
}
return ch;