18 Sep 13:56
s3c24xx : TIOCM_CTS handling problem
From: Matthieu CASTET <matthieu.castet <at> parrot.com>
Subject: s3c24xx : TIOCM_CTS handling problem
Newsgroups: gmane.linux.serial
Date: 2008-09-18 12:00:28 GMT
Subject: s3c24xx : TIOCM_CTS handling problem
Newsgroups: gmane.linux.serial
Date: 2008-09-18 12:00:28 GMT
Hi, there is a problem in samsung soc serial driver with the report of TIOCM_CTS in get_mctrl. The uart layer check the status of the TIOCM_CTS in the open or set_termios function and cache the result in the tty->hw_stopped flag. Then when sending data, in the function uart_start, it check tty->hw_stopped flag before calling the start_tx uart driver callback. For the samsung uart driver it means : - if the other side is not connected or in a reset state, then CTS signal is not activated - we open and configure the uart. get_mctrl don't report TIOCM_CTS flag. uart layer set tty->hw_stopped flag. - we connect or start the other side. CTS signal become activated. - we send some characters on the uart. This call uart_write which fill uart tx queue and call uart_start. uart_start doesn't call driver start_tx because tty->hw_stopped flag is set. - because driver start_tx is never call, the data is never send on the uart. From what I see, working driver managing TIOCM_CTS flag (amba-pl011, 8250), call uart_handle_cts_change when the uart driver detect a CTS signal change (via a interrupt). Because the samsung controller doesn't generate an interrupt when CTS signal change, we can't call uart_handle_cts_change. And easy fix could be to always report TIOCM_CTS.(Continue reading)
RSS Feed