Restructuring AVR serial drivers

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3693 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo
2011-06-11 00:48:01 +00:00
parent 64142a1ea1
commit de50ea79f9
6 changed files with 556 additions and 414 deletions
-21
View File
@@ -93,27 +93,6 @@ extern "C" {
EXTERN void up_clkinitialize(void); EXTERN void up_clkinitialize(void);
/****************************************************************************
* Name: usart_reset
*
* Description:
* Reset a USART.
*
****************************************************************************/
EXTERN void usart_reset(uintptr_t usart_base);
/****************************************************************************
* Name: usart_configure
*
* Description:
* Configure a USART as a RS-232 UART.
*
****************************************************************************/
void usart_configure(uintptr_t usart_base, uint32_t baud, unsigned int parity,
unsigned int nbits, bool stop2);
/**************************************************************************** /****************************************************************************
* Name: up_consoleinit * Name: up_consoleinit
* *
+62 -23
View File
@@ -1,7 +1,7 @@
/****************************************************************************** /******************************************************************************
* arch/avr/src/at90usb/at90usb_lowconsole.c * arch/avr/src/at90usb/at90usb_lowconsole.c
* *
* Copyright (C) 2010 Gregory Nutt. All rights reserved. * Copyright (C) 2011 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr> * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@@ -67,6 +67,59 @@
# error "No CONFIG_USARTn_SERIAL_CONSOLE Setting" # error "No CONFIG_USARTn_SERIAL_CONSOLE Setting"
#endif #endif
/* Baud rate settings for normal and double speed settings */
#define AVR_NORMAL_UBRR1 \
(((BOARD_CPU_CLOCK / 16) + (CONFIG_USART1_BAUD / 2)) / (CONFIG_USART1_BAUD)) - 1)
#define AVR_DBLSPEED_UBRR1 \
(((BOARD_CPU_CLOCK / 8) + (CONFIG_USART1_BAUD / 2)) / (CONFIG_USART1_BAUD)) - 1)
/* Select normal or double speed baud settings. This is a trade-off between the
* sampling rate and the accuracy of the divisor for high baud rates.
*
* As examples, consider:
*
* BOARD_CPU_CLOCK=8MHz and BAUD=115200:
* AVR_NORMAL_UBRR1 = 4 (rounded), actual baud = 125,000
* AVR_DBLSPEED_UBRR1 = 9 (rounded), actual baud = 111,111
*
* BOARD_CPU_CLOCK=8MHz and BAUD=9600:
* AVR_NORMAL_UBRR1 = 52 (rounded), actual baud = 9615
* AVR_DBLSPEED_UBRR1 = 104 (rounded), actual baud = 9615
*/
#undef HAVE_DOUBLE_SPEED
#if BOARD_CPU_CLOCK <= 4000000
# if CONFIG_USART1_BAUD <= 9600
# define AVR_UBRR1 AVR_NORMAL_UBRR1
# else
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
# define HAVE_DOUBLE_SPEED 1
# endif
#elif BOARD_CPU_CLOCK <= 8000000
# if CONFIG_USART1_BAUD <= 19200
# define AVR_UBRR1 AVR_NORMAL_UBRR1
# else
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
# define HAVE_DOUBLE_SPEED 1
# endif
#elif BOARD_CPU_CLOCK <= 12000000
# if CONFIG_USART1_BAUD <= 28800
# define AVR_UBRR1 AVR_NORMAL_UBRR1
# else
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
# define HAVE_DOUBLE_SPEED 1
# endif
#else
# if CONFIG_USART1_BAUD <= 38400
# define AVR_UBRR1 AVR_NORMAL_UBRR1
# else
# define AVR_UBRR1 AVR_DBLSPEED_UBRR1
# define HAVE_DOUBLE_SPEED 1
# endif
#endif
/****************************************************************************** /******************************************************************************
* Private Types * Private Types
******************************************************************************/ ******************************************************************************/
@@ -87,27 +140,12 @@
* Private Functions * Private Functions
******************************************************************************/ ******************************************************************************/
/******************************************************************************
* Name: usart_setbaudrate
*
* Description:
* Configure the USART baud rate.
*
******************************************************************************/
#ifdef HAVE_USART_DEVICE
static void usart_setbaudrate(uintptr_t usart_base, uint32_t baudrate)
{
# warning "Missing logic"
}
#endif
/****************************************************************************** /******************************************************************************
* Public Functions * Public Functions
******************************************************************************/ ******************************************************************************/
/****************************************************************************** /******************************************************************************
* Name: usart_reset * Name: usart1_reset
* *
* Description: * Description:
* Reset a USART. * Reset a USART.
@@ -115,23 +153,22 @@ static void usart_setbaudrate(uintptr_t usart_base, uint32_t baudrate)
******************************************************************************/ ******************************************************************************/
#ifdef HAVE_USART_DEVICE #ifdef HAVE_USART_DEVICE
void usart_reset(uintptr_t usart_base) void usart1_reset(void)
{ {
# warning "Missing Logic" # warning "Missing Logic"
} }
#endif #endif
/****************************************************************************** /******************************************************************************
* Name: usart_configure * Name: usart1_configure
* *
* Description: * Description:
* Configure a USART as a RS-232 USART. * Configure USART1.
* *
******************************************************************************/ ******************************************************************************/
#ifdef HAVE_USART_DEVICE #ifdef HAVE_USART_DEVICE
void usart_configure(uintptr_t usart_base, uint32_t baud, unsigned int parity, void usart1_configure(void)
unsigned int nbits, bool stop2)
{ {
# warning "Missing Logic" # warning "Missing Logic"
} }
@@ -149,7 +186,9 @@ void usart_configure(uintptr_t usart_base, uint32_t baud, unsigned int parity,
void up_consoleinit(void) void up_consoleinit(void)
{ {
# warning "Missing Logic" #ifdef HAVE_SERIAL_CONSOLE
usart1_configure();
#endif
} }
/****************************************************************************** /******************************************************************************
+77 -158
View File
@@ -78,85 +78,60 @@
#ifdef CONFIG_USE_SERIALDRIVER #ifdef CONFIG_USE_SERIALDRIVER
/* Which USART with be tty0/console and which tty1? */
#if defined(CONFIG_USART1_SERIAL_CONSOLE) #if defined(CONFIG_USART1_SERIAL_CONSOLE)
# define CONSOLE_DEV g_usart1port /* USART1 is console */ # define CONSOLE_DEV g_usart1port /* USART1 is console */
# define TTYS0_DEV g_usart1port /* USART1 is ttyS0 */
#endif #endif
#define TTYS0_DEV g_usart1port /* USART1 is ttyS0 */
/**************************************************************************** /****************************************************************************
* Private Types * Private Types
****************************************************************************/ ****************************************************************************/
struct up_dev_s
{
uintptr_t usartbase; /* Base address of USART registers */
uint32_t baud; /* Configured baud */
uint32_t csr; /* Saved channel status register contents */
uint8_t irq; /* IRQ associated with this USART */
uint8_t parity; /* 0=none, 1=odd, 2=even */
uint8_t bits; /* Number of bits (5, 6, 7 or 8) */
bool stopbits2; /* true: Configure with 2 stop bits instead of 1 */
};
/**************************************************************************** /****************************************************************************
* Private Function Prototypes * Private Function Prototypes
****************************************************************************/ ****************************************************************************/
static int up_setup(struct uart_dev_s *dev); static int usart1_setup(struct uart_dev_s *dev);
static void up_shutdown(struct uart_dev_s *dev); static void usart1_shutdown(struct uart_dev_s *dev);
static int up_attach(struct uart_dev_s *dev); static int usart1_attach(struct uart_dev_s *dev);
static void up_detach(struct uart_dev_s *dev); static void usart1_detach(struct uart_dev_s *dev);
static int up_interrupt(int irq, void *context); static int usart1_interrupt(int irq, void *context);
static int up_ioctl(struct file *filep, int cmd, unsigned long arg); static int usart1_ioctl(struct file *filep, int cmd, unsigned long arg);
static int up_receive(struct uart_dev_s *dev, uint32_t *status); static int usart1_receive(struct uart_dev_s *dev, uint32_t *status);
static void up_rxint(struct uart_dev_s *dev, bool enable); static void usart1_rxint(struct uart_dev_s *dev, bool enable);
static bool up_rxavailable(struct uart_dev_s *dev); static bool usart1_rxavailable(struct uart_dev_s *dev);
static void up_send(struct uart_dev_s *dev, int ch); static void usart1_send(struct uart_dev_s *dev, int ch);
static void up_txint(struct uart_dev_s *dev, bool enable); static void usart1_txint(struct uart_dev_s *dev, bool enable);
static bool up_txready(struct uart_dev_s *dev); static bool usart1_txready(struct uart_dev_s *dev);
/**************************************************************************** /****************************************************************************
* Private Variables * Private Variables
****************************************************************************/ ****************************************************************************/
struct uart_ops_s g_uart_ops = struct uart_ops_s g_uart1_ops =
{ {
.setup = up_setup, .setup = usart1_setup,
.shutdown = up_shutdown, .shutdown = usart1_shutdown,
.attach = up_attach, .attach = usart1_attach,
.detach = up_detach, .detach = usart1_detach,
.ioctl = up_ioctl, .ioctl = usart1_ioctl,
.receive = up_receive, .receive = usart1_receive,
.rxint = up_rxint, .rxint = usart1_rxint,
.rxavailable = up_rxavailable, .rxavailable = usart1_rxavailable,
.send = up_send, .send = usart1_send,
.txint = up_txint, .txint = usart1_txint,
.txready = up_txready, .txready = usart1_txready,
.txempty = up_txready, .txempty = usart1_txready,
}; };
/* I/O buffers */ /* I/O buffers */
#ifdef CONFIG_AVR_USART1_RS232
static char g_usart1rxbuffer[CONFIG_USART1_RXBUFSIZE]; static char g_usart1rxbuffer[CONFIG_USART1_RXBUFSIZE];
static char g_usart1txbuffer[CONFIG_USART1_TXBUFSIZE]; static char g_usart1txbuffer[CONFIG_USART1_TXBUFSIZE];
#endif
/* This describes the state of the AVR32 USART1 port. */ /* This describes the state of the AT90USB USART1 port. */
#ifdef CONFIG_AVR_USART1_RS232 #ifdef CONFIG_AVR_USART1_RS232
static struct up_dev_s g_usart1priv =
{
.usartbase = AVR_USART1_BASE,
.baud = CONFIG_USART1_BAUD,
.irq = AVR_IRQ_USART1,
.parity = CONFIG_USART1_PARITY,
.bits = CONFIG_USART1_BITS,
.stopbits2 = CONFIG_USART1_2STOP,
};
static uart_dev_t g_usart1port = static uart_dev_t g_usart1port =
{ {
.recv = .recv =
@@ -169,8 +144,7 @@ static uart_dev_t g_usart1port =
.size = CONFIG_USART1_TXBUFSIZE, .size = CONFIG_USART1_TXBUFSIZE,
.buffer = g_usart1txbuffer, .buffer = g_usart1txbuffer,
}, },
.ops = &g_uart_ops, .ops = &g_uart1_ops,
.priv = &g_usart1priv,
}; };
#endif #endif
@@ -179,43 +153,25 @@ static uart_dev_t g_usart1port =
****************************************************************************/ ****************************************************************************/
/**************************************************************************** /****************************************************************************
* Name: up_serialin * Name: usart1_restoreusartint
****************************************************************************/ ****************************************************************************/
static inline uint32_t up_serialin(struct up_dev_s *priv, int offset) static void usart1_restoreusartint(uint8_t imr)
{ {
# warning "Missing logic" # warning "Missing logic"
} }
/**************************************************************************** /****************************************************************************
* Name: up_serialout * Name: usart1_disableusartint
****************************************************************************/ ****************************************************************************/
static inline void up_serialout(struct up_dev_s *priv, int offset, uint32_t value) static inline void usart1_disableusartint(uint8_t *imr)
{ {
# warning "Missing logic" # warning "Missing logic"
} }
/**************************************************************************** /****************************************************************************
* Name: up_restoreusartint * Name: usart1_setup
****************************************************************************/
static void up_restoreusartint(struct up_dev_s *priv, uint32_t imr)
{
# warning "Missing logic"
}
/****************************************************************************
* Name: up_disableusartint
****************************************************************************/
static inline void up_disableusartint(struct up_dev_s *priv, uint32_t *imr)
{
# warning "Missing logic"
}
/****************************************************************************
* Name: up_setup
* *
* Description: * Description:
* Configure the USART baud, bits, parity, etc. This method is called the * Configure the USART baud, bits, parity, etc. This method is called the
@@ -223,22 +179,20 @@ static inline void up_disableusartint(struct up_dev_s *priv, uint32_t *imr)
* *
****************************************************************************/ ****************************************************************************/
static int up_setup(struct uart_dev_s *dev) static int usart1_setup(struct uart_dev_s *dev)
{ {
#ifndef CONFIG_SUPPRESS_UART_CONFIG #ifndef CONFIG_SUPPRESS_UART_CONFIG
struct up_dev_s *priv = (struct up_dev_s*)dev->priv;
/* Configure the USART as an RS-232 UART */ /* Configure the USART1 */
usart_configure(priv->usartbase, priv->baud, priv->parity, usart1_configure();
priv->bits, priv->stopbits2);
#endif #endif
return OK; return OK;
} }
/**************************************************************************** /****************************************************************************
* Name: up_shutdown * Name: usart1_shutdown
* *
* Description: * Description:
* Disable the USART. This method is called when the serial * Disable the USART. This method is called when the serial
@@ -246,17 +200,15 @@ static int up_setup(struct uart_dev_s *dev)
* *
****************************************************************************/ ****************************************************************************/
static void up_shutdown(struct uart_dev_s *dev) static void usart1_shutdown(struct uart_dev_s *dev)
{ {
struct up_dev_s *priv = (struct up_dev_s*)dev->priv;
/* Reset, disable interrupts, and disable Rx and Tx */ /* Reset, disable interrupts, and disable Rx and Tx */
usart_reset(priv->usartbase); usart1_reset();
} }
/**************************************************************************** /****************************************************************************
* Name: up_attach * Name: usart1_attach
* *
* Description: * Description:
* Configure the USART to operation in interrupt driven mode. This method is * Configure the USART to operation in interrupt driven mode. This method is
@@ -270,17 +222,17 @@ static void up_shutdown(struct uart_dev_s *dev)
* *
****************************************************************************/ ****************************************************************************/
static int up_attach(struct uart_dev_s *dev) static int usart1_attach(struct uart_dev_s *dev)
{ {
struct up_dev_s *priv = (struct up_dev_s*)dev->priv; /* Attach the USART1 IRQs */
/* Attach the IRQ */ return irq_attach(AT90USB_IRQ_U1RX, usart1_interrupt);
return irq_attach(AT90USB_IRQ_U1DRE, usart1_interrupt);
return irq_attach(priv->irq, up_interrupt); return irq_attach(AT90USB_IRQ_U1TX, usart1_interrupt);
} }
/**************************************************************************** /****************************************************************************
* Name: up_detach * Name: usart1_detach
* *
* Description: * Description:
* Detach USART interrupts. This method is called when the serial port is * Detach USART interrupts. This method is called when the serial port is
@@ -289,15 +241,21 @@ static int up_attach(struct uart_dev_s *dev)
* *
****************************************************************************/ ****************************************************************************/
static void up_detach(struct uart_dev_s *dev) static void usart1_detach(struct uart_dev_s *dev)
{ {
struct up_dev_s *priv = (struct up_dev_s*)dev->priv; /* Disable USART1 interrupts */
# warning "Missing logic" # warning "Missing logic"
irq_detach(priv->irq);
/* Detach USART1 interrupts */
return irq_deattach(AT90USB_IRQ_U1RX);
return irq_deattach(AT90USB_IRQ_U1DRE);
return irq_deattach(AT90USB_IRQ_U1TX);
} }
/**************************************************************************** /****************************************************************************
* Name: up_interrupt * Name: usart1_interrupt
* *
* Description: * Description:
* This is the USART interrupt handler. It will be invoked when an * This is the USART interrupt handler. It will be invoked when an
@@ -308,27 +266,12 @@ static void up_detach(struct uart_dev_s *dev)
* *
****************************************************************************/ ****************************************************************************/
static int up_interrupt(int irq, void *context) static int usart1_interrupt(int irq, void *context)
{ {
struct uart_dev_s *dev = NULL; uint8_t csr;
struct up_dev_s *priv;
uint32_t csr;
int passes; int passes;
bool handled; bool handled;
#ifdef CONFIG_AVR_USART1_RS232
if (g_usart1priv.irq == irq)
{
dev = &g_usart1port;
}
else
#endif
{
PANIC(OSERR_INTERNAL);
}
priv = (struct up_dev_s*)dev->priv;
DEBUGASSERT(priv);
/* Loop until there are no characters to be transferred or, /* Loop until there are no characters to be transferred or,
* until we have been looping for a long time. * until we have been looping for a long time.
*/ */
@@ -363,27 +306,17 @@ static int up_interrupt(int irq, void *context)
} }
/**************************************************************************** /****************************************************************************
* Name: up_ioctl * Name: usart1_ioctl
* *
* Description: * Description:
* All ioctl calls will be routed through this method * All ioctl calls will be routed through this method
* *
****************************************************************************/ ****************************************************************************/
static int up_ioctl(struct file *filep, int cmd, unsigned long arg) static int usart1_ioctl(struct file *filep, int cmd, unsigned long arg)
{ {
#if 0 /* Reserved for future growth */ #if 0 /* Reserved for future growth */
struct inode *inode; int ret = OK;
struct uart_dev_s *dev;
struct up_dev_s *priv;
int ret = OK;
DEBUGASSERT(filep, filep->f_inode);
inode = filep->f_inode;
dev = inode->i_private;
DEBUGASSERT(dev, dev->priv)
priv = (struct up_dev_s*)dev->priv;
switch (cmd) switch (cmd)
{ {
@@ -402,7 +335,7 @@ static int up_ioctl(struct file *filep, int cmd, unsigned long arg)
} }
/**************************************************************************** /****************************************************************************
* Name: up_receive * Name: usart1_receive
* *
* Description: * Description:
* Called (usually) from the interrupt level to receive one * Called (usually) from the interrupt level to receive one
@@ -411,10 +344,8 @@ static int up_ioctl(struct file *filep, int cmd, unsigned long arg)
* *
****************************************************************************/ ****************************************************************************/
static int up_receive(struct uart_dev_s *dev, uint32_t *status) static int usart1_receive(struct uart_dev_s *dev, uint32_t *status)
{ {
struct up_dev_s *priv = (struct up_dev_s*)dev->priv;
/* Get the Rx byte. The USART Rx interrupt flag is cleared by side effect /* Get the Rx byte. The USART Rx interrupt flag is cleared by side effect
* when reading the received character. * when reading the received character.
*/ */
@@ -435,17 +366,15 @@ static int up_receive(struct uart_dev_s *dev, uint32_t *status)
} }
/**************************************************************************** /****************************************************************************
* Name: up_rxint * Name: usart1_rxint
* *
* Description: * Description:
* Call to enable or disable RX interrupts * Call to enable or disable RX interrupts
* *
****************************************************************************/ ****************************************************************************/
static void up_rxint(struct uart_dev_s *dev, bool enable) static void usart1_rxint(struct uart_dev_s *dev, bool enable)
{ {
struct up_dev_s *priv = (struct up_dev_s*)dev->priv;
if (enable) if (enable)
{ {
/* Receive an interrupt when their is anything in the Rx data register (or an Rx /* Receive an interrupt when their is anything in the Rx data register (or an Rx
@@ -463,46 +392,43 @@ static void up_rxint(struct uart_dev_s *dev, bool enable)
} }
/**************************************************************************** /****************************************************************************
* Name: up_rxavailable * Name: usart1_rxavailable
* *
* Description: * Description:
* Return true if the receive register is not empty * Return true if the receive register is not empty
* *
****************************************************************************/ ****************************************************************************/
static bool up_rxavailable(struct uart_dev_s *dev) static bool usart1_rxavailable(struct uart_dev_s *dev)
{ {
struct up_dev_s *priv = (struct up_dev_s*)dev->priv;
# warning "Missing logic" # warning "Missing logic"
return 0; return 0;
} }
/**************************************************************************** /****************************************************************************
* Name: up_send * Name: usart1_send
* *
* Description: * Description:
* This method will send one byte on the USART. * This method will send one byte on the USART.
* *
****************************************************************************/ ****************************************************************************/
static void up_send(struct uart_dev_s *dev, int ch) static void usart1_send(struct uart_dev_s *dev, int ch)
{ {
struct up_dev_s *priv = (struct up_dev_s*)dev->priv;
# warning "Missing logic" # warning "Missing logic"
return 0; return 0;
} }
/**************************************************************************** /****************************************************************************
* Name: up_txint * Name: usart1_txint
* *
* Description: * Description:
* Call to enable or disable TX interrupts * Call to enable or disable TX interrupts
* *
****************************************************************************/ ****************************************************************************/
static void up_txint(struct uart_dev_s *dev, bool enable) static void usart1_txint(struct uart_dev_s *dev, bool enable)
{ {
struct up_dev_s *priv = (struct up_dev_s*)dev->priv;
irqstate_t flags; irqstate_t flags;
flags = irqsave(); flags = irqsave();
@@ -530,16 +456,15 @@ static void up_txint(struct uart_dev_s *dev, bool enable)
} }
/**************************************************************************** /****************************************************************************
* Name: up_txready * Name: usart1_txready
* *
* Description: * Description:
* Return true if the tranmsit data register is empty * Return true if the tranmsit data register is empty
* *
****************************************************************************/ ****************************************************************************/
static bool up_txready(struct uart_dev_s *dev) static bool usart1_txready(struct uart_dev_s *dev)
{ {
struct up_dev_s *priv = (struct up_dev_s*)dev->priv;
# warning "Missing logic" # warning "Missing logic"
return 0; return 0;
} }
@@ -554,9 +479,7 @@ static bool up_txready(struct uart_dev_s *dev)
* Description: * Description:
* Performs the low level USART initialization early in debug so that the * Performs the low level USART initialization early in debug so that the
* serial console will be available during bootup. This must be called * serial console will be available during bootup. This must be called
* before up_serialinit. NOTE: This function depends on GPIO pin * before up_serialinit.
* configuration performed in up_consoleinit() and main clock iniialization
* performed in up_clkinitialize().
* *
****************************************************************************/ ****************************************************************************/
@@ -564,16 +487,13 @@ void up_earlyserialinit(void)
{ {
/* Disable all USARTS */ /* Disable all USARTS */
up_disableusartint(TTYS0_DEV.priv, NULL); up_disableusartint(NULL);
#ifdef TTYS1_DEV
up_disableusartint(TTYS1_DEV.priv, NULL);
#endif
/* Configuration whichever one is the console */ /* Configuration whichever one is the console */
#ifdef HAVE_SERIAL_CONSOLE #ifdef HAVE_SERIAL_CONSOLE
CONSOLE_DEV.isconsole = true; CONSOLE_DEV.isconsole = true;
up_setup(&CONSOLE_DEV); usart1_setup(&CONSOLE_DEV);
#endif #endif
} }
@@ -613,8 +533,7 @@ void up_serialinit(void)
int up_putc(int ch) int up_putc(int ch)
{ {
#ifdef HAVE_SERIAL_CONSOLE #ifdef HAVE_SERIAL_CONSOLE
struct up_dev_s *priv = (struct up_dev_s*)CONSOLE_DEV.priv; uint8_t imr;
uint32_t imr;
up_disableusartint(priv, &imr); up_disableusartint(priv, &imr);
+8 -7
View File
@@ -94,25 +94,26 @@ extern "C" {
EXTERN void up_clkinitialize(void); EXTERN void up_clkinitialize(void);
/**************************************************************************** /****************************************************************************
* Name: usart_reset * Name: usart0_reset and usart1_reset
* *
* Description: * Description:
* Reset a USART. * Reset USART0 or USART1.
* *
****************************************************************************/ ****************************************************************************/
EXTERN void usart_reset(uintptr_t usart_base); EXTERN void usart0_reset(void);
EXTERN void usart1_reset(void);
/**************************************************************************** /****************************************************************************
* Name: usart_configure * Name: usart0_configure and usart1_configure
* *
* Description: * Description:
* Configure a USART as a RS-232 UART. * Configure USART0 or USART1.
* *
****************************************************************************/ ****************************************************************************/
void usart_configure(uintptr_t usart_base, uint32_t baud, unsigned int parity, EXTERN void usart0_configure(void);
unsigned int nbits, bool stop2); EXTERN void usart1_configure(void);
/**************************************************************************** /****************************************************************************
* Name: up_consoleinit * Name: up_consoleinit
+38 -30
View File
@@ -92,51 +92,49 @@
* Private Functions * Private Functions
******************************************************************************/ ******************************************************************************/
/******************************************************************************
* Name: usart_setbaudrate
*
* Description:
* Configure the USART baud rate.
*
******************************************************************************/
#ifdef HAVE_USART_DEVICE
static void usart_setbaudrate(uintptr_t usart_base, uint32_t baudrate)
{
# warning "Missing logic"
}
#endif
/****************************************************************************** /******************************************************************************
* Public Functions * Public Functions
******************************************************************************/ ******************************************************************************/
/****************************************************************************** /****************************************************************************
* Name: usart_reset * Name: usart0_reset and usart1_reset
* *
* Description: * Description:
* Reset a USART. * Reset USART0 or USART1.
* *
******************************************************************************/ ****************************************************************************/
#ifdef HAVE_USART_DEVICE #ifdef CONFIG_ATMEGA_USART0
void usart_reset(uintptr_t usart_base) void usart0_reset(void)
{ {
# warning "Missing logic" # warning "Missing logic"
} }
#endif #endif
/****************************************************************************** #ifdef CONFIG_ATMEGA_USART1
* Name: usart_configure void usart1_reset(void)
{
# warning "Missing logic"
}
#endif
/****************************************************************************
* Name: usart0_configure and usart1_configure
* *
* Description: * Description:
* Configure a USART as a RS-232 USART. * Configure USART0 or USART1.
* *
******************************************************************************/ ****************************************************************************/
#ifdef HAVE_USART_DEVICE #ifdef CONFIG_AVR_USART0
void usart_configure(uintptr_t usart_base, uint32_t baud, unsigned int parity, void usart0_configure(void)
unsigned int nbits, bool stop2) {
# warning "Missing logic"
}
#endif
#ifdef CONFIG_AVR_USART1
void usart1_configure(void)
{ {
# warning "Missing logic" # warning "Missing logic"
} }
@@ -154,7 +152,13 @@ void usart_configure(uintptr_t usart_base, uint32_t baud, unsigned int parity,
void up_consoleinit(void) void up_consoleinit(void)
{ {
# warning "Missing logic" #ifdef HAVE_SERIAL_CONSOLE
# if defined(CONFIG_USART0_SERIAL_CONSOLE)
usart0_configure();
# elif defined(CONFIG_USART1_SERIAL_CONSOLE)
usart1_configure();
# endif
#endif
} }
/****************************************************************************** /******************************************************************************
@@ -168,7 +172,11 @@ void up_consoleinit(void)
void up_lowputc(char ch) void up_lowputc(char ch)
{ {
#ifdef HAVE_SERIAL_CONSOLE #ifdef HAVE_SERIAL_CONSOLE
# warning "Missing logic" # if defined(CONFIG_USART0_SERIAL_CONSOLE)
# warning "Missing logic"
# elif defined(CONFIG_USART1_SERIAL_CONSOLE)
# warning "Missing logic"
# endif
#endif #endif
} }
File diff suppressed because it is too large Load Diff