diff --git a/arch/avr/src/at32uc3/at32uc3_serial.c b/arch/avr/src/at32uc3/at32uc3_serial.c index 7ed9d4b951..e0c2bae48b 100644 --- a/arch/avr/src/at32uc3/at32uc3_serial.c +++ b/arch/avr/src/at32uc3/at32uc3_serial.c @@ -336,7 +336,7 @@ static inline void up_disableusartint(struct up_dev_s *priv, uint32_t *imr) { if (imr) { - *imr = up_serialin(priv, AVR32_USART_IDR_OFFSET); + *imr = up_serialin(priv, AVR32_USART_IMR_OFFSET); } /* Disable all interrupts */ @@ -594,7 +594,7 @@ static int up_receive(struct uart_dev_s *dev, uint32_t *status) static void up_rxint(struct uart_dev_s *dev, bool enable) { struct up_dev_s *priv = (struct up_dev_s*)dev->priv; - + if (enable) { /* Receive an interrupt when their is anything in the Rx data register (or an Rx diff --git a/arch/avr/src/common/up_initialize.c b/arch/avr/src/common/up_initialize.c index fde474ec61..abbff8532d 100644 --- a/arch/avr/src/common/up_initialize.c +++ b/arch/avr/src/common/up_initialize.c @@ -51,6 +51,19 @@ /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ +/* Determine which (if any) console driver to use. This will probably cause + * up_serialinit to be incorrectly called if there is no USART configured to + * be an RS-232 device (see as an example arch/avr/src/at32uc23/at32uc3_config.h) + * This will probably have to be revisited someday. + */ + +#if CONFIG_NFILE_DESCRIPTORS == 0 || defined(CONFIG_DEV_LOWCONSOLE) +# undef CONFIG_USE_SERIALDRIVER +# undef CONFIG_USE_EARLYSERIALINIT +#elif defined(CONFIG_DEV_CONSOLE) && CONFIG_NFILE_DESCRIPTORS > 0 +# define CONFIG_USE_SERIALDRIVER 1 +# define CONFIG_USE_EARLYSERIALINIT 1 +#endif /**************************************************************************** * Private Types