From db1b3c421b1ad293c83b3d514855fe7465199bff Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Fri, 23 Aug 2013 11:48:53 -0600 Subject: [PATCH] SourceForge bug #16 Fix IO pin map. Add CONFIG_SERIAL_TERMIOS support. From CCTSAO --- ChangeLog | 4 ++++ arch/arm/src/stm32/chip/stm32f40xxx_pinmap.h | 2 +- include/nuttx/serial/serial.h | 22 ++++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e5592576d6..2e1dd12e0b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5427,4 +5427,8 @@ * nuttx/arch/arm/src/sama5/sam_ehci.c: Now code complete for all asynchronous endpoints (control and bulk); nothing yet in place for periodic endponts (interrupt and isochronous) (2013-8-22). + * include/nuttx/serial/serial.h and arch/arm/src/stm32/chip/stm32f40xxx_pinmap.h: + SourceForge bug #16 Fix IO pin map. Add CONFIG_SERIAL_TERMIOS support. + Also fixes some STM32 F4 Timer 8 pin configurations. From CCTSAO + (2013-8-23). diff --git a/arch/arm/src/stm32/chip/stm32f40xxx_pinmap.h b/arch/arm/src/stm32/chip/stm32f40xxx_pinmap.h index ed3f09c01a..488d03f40c 100644 --- a/arch/arm/src/stm32/chip/stm32f40xxx_pinmap.h +++ b/arch/arm/src/stm32/chip/stm32f40xxx_pinmap.h @@ -615,7 +615,7 @@ #define GPIO_TIM8_CH2N_2 (GPIO_ALT|GPIO_AF3|GPIO_PORTB|GPIO_PIN14) #define GPIO_TIM8_CH2N_3 (GPIO_ALT|GPIO_AF3|GPIO_PORTH|GPIO_PIN14) #define GPIO_TIM8_CH3N_1 (GPIO_ALT|GPIO_AF3|GPIO_PORTB|GPIO_PIN1) -#define GPIO_TIM8_CH3N_2 (GPIO_ALT|GPIO_AF3|GPIO_PORTC|GPIO_PIN15) +#define GPIO_TIM8_CH3N_2 (GPIO_ALT|GPIO_AF3|GPIO_PORTB|GPIO_PIN15) #define GPIO_TIM8_CH3N_3 (GPIO_ALT|GPIO_AF3|GPIO_PORTH|GPIO_PIN15) #define GPIO_TIM8_CH3IN_1 (GPIO_ALT|GPIO_AF3|GPIO_SPEED_50MHz|GPIO_FLOAT|GPIO_PORTC|GPIO_PIN8) #define GPIO_TIM8_CH3IN_2 (GPIO_ALT|GPIO_AF3|GPIO_SPEED_50MHz|GPIO_FLOAT|GPIO_PORTI|GPIO_PIN7) diff --git a/include/nuttx/serial/serial.h b/include/nuttx/serial/serial.h index 3c1de2225e..9a3d9098a8 100644 --- a/include/nuttx/serial/serial.h +++ b/include/nuttx/serial/serial.h @@ -46,6 +46,9 @@ #include #include #include +#ifdef CONFIG_SERIAL_TERMIOS +# include +#endif #include @@ -191,6 +194,8 @@ struct uart_ops_s struct uart_dev_s { + /* State data */ + uint8_t open_count; /* Number of times the device has been opened */ volatile bool xmitwaiting; /* true: User waiting for space in xmit.buffer */ volatile bool recvwaiting; /* true: User waiting for data in recv.buffer */ @@ -198,14 +203,31 @@ struct uart_dev_s volatile bool disconnected; /* true: Removable device is not connected */ #endif bool isconsole; /* true: This is the serial console */ + + /* Terminal control flags */ + +#ifdef CONFIG_SERIAL_TERMIOS + tcflag_t tc_iflag; /* Input modes */ + tcflag_t tc_oflag; /* Output modes */ + tcflag_t tc_lflag; /* Local modes */ +#endif + + /* Semaphores */ + sem_t closesem; /* Locks out new open while close is in progress */ sem_t xmitsem; /* Wakeup user waiting for space in xmit.buffer */ sem_t recvsem; /* Wakeup user waiting for data in recv.buffer */ #ifndef CONFIG_DISABLE_POLL sem_t pollsem; /* Manages exclusive access to fds[] */ #endif + + /* I/O buffers */ + struct uart_buffer_s xmit; /* Describes transmit buffer */ struct uart_buffer_s recv; /* Describes receive buffer */ + + /* Driver interface */ + FAR const struct uart_ops_s *ops; /* Arch-specific operations */ FAR void *priv; /* Used by the arch-specific logic */