Swatantra-66 opened a new issue, #21377:
URL: https://github.com/apache/nuttx/issues/21377

   ### Description / Steps to reproduce the issue
   
   In `arch/arm/src/stm32n6/stm32_serial.c`, `stm32serial_setformat()` updates 
the baud rate register (`BRR`), `CR2` STOP bits, and the `PCE`, `PS`, `M0`, and 
`M1` bits of `CR1` without first clearing the USART enable bit (`UE = 0`).
   
   Per the STMicroelectronics STM32N6 Reference Manual (RM0486), the baud rate 
register and line control bits in `CR1` and `CR2` are write-protected while the 
USART is enabled (`UE = 1`). Consequently, any runtime `tcsetattr()` call 
attempting to change baud rate, parity, word length, or stop bits returns `0` 
(Success), but the hardware USART registers silently remain unchanged.
   
   Additionally, `stm32serial_setformat()` lacks critical section protection 
(`enter_critical_section() / leave_critical_section()`), leaving register 
modifications vulnerable to concurrent interrupts.
   
   ## Steps to Reproduce
   1. Configure and boot a board using the STM32N6 USART driver (e.g. 
`nucleo-n657x0-q:nsh` or `stm32n6570-dk:nsh`).
   2. From user space or NSH, open the serial port and attempt to reconfigure 
baud rate or framing at runtime via `tcsetattr(fd, TCSANOW, &termios)`.
   3. Notice that `tcsetattr()` returns success (`OK`), but the hardware 
continues transmitting/receiving with the initial boot baud rate and framing.
   
   ## Expected Behavior
   `stm32serial_setformat()` should:
   1. Enter a critical section (`enter_critical_section()`).
   2. Read `CR1`, preserve the current `USART_CR1_UE` state, and clear 
`USART_CR1_UE`.
   3. Apply the updated `BRR`, `CR1`, `CR2`, and `CR3` settings while `UE = 0`.
   4. Restore `USART_CR1_UE` to its previous state.
   5. Exit the critical section (`leave_critical_section()`).
   
   This aligns STM32N6 with the approved implementations in STM32L4 (commit 
`47180bf5ea`), STM32WB (PR #21334), STM32WL5 (PR #21336), STM32H7, and STM32F7.
   
   ## Additional Context
   I have verified the root cause and have a tested patch ready to submit
   
   ### On which OS does this issue occur?
   
   [OS: Linux]
   
   ### What is the version of your OS?
   
   Ubuntu 22.04 / Linux
   
   ### NuttX Version
   
   master
   
   ### Issue Architecture
   
   [Arch: arm]
   
   ### Issue Area
   
   [Area: Drivers]
   
   ### Host information
   
   _No response_
   
   ### Verification
   
   - [x] I have verified before submitting the report.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to