tty: Remove external interface for tty_set_termios()
tty_set_termios() is an internal helper intended for file scope use. UART drivers which are capable of driving the RTS pin must properly handle the tiocmset() method, regardless of termios settings. A failure to do so is a UART driver bug and should be fixed there. Do not use this interface to workaround UART driver bugs. Cc: Johan Hedberg <johan.hedberg@gmail.com> Cc: <linux-bluetooth@vger.kernel.org> Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Acked-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
348f9bb31c
Коммит
632f32e210
|
@ -51,33 +51,22 @@ struct ath_struct {
|
|||
|
||||
static int ath_wakeup_ar3k(struct tty_struct *tty)
|
||||
{
|
||||
struct ktermios ktermios;
|
||||
int status = tty->driver->ops->tiocmget(tty);
|
||||
|
||||
if (status & TIOCM_CTS)
|
||||
return status;
|
||||
|
||||
/* Disable Automatic RTSCTS */
|
||||
ktermios = tty->termios;
|
||||
ktermios.c_cflag &= ~CRTSCTS;
|
||||
tty_set_termios(tty, &ktermios);
|
||||
|
||||
/* Clear RTS first */
|
||||
status = tty->driver->ops->tiocmget(tty);
|
||||
tty->driver->ops->tiocmget(tty);
|
||||
tty->driver->ops->tiocmset(tty, 0x00, TIOCM_RTS);
|
||||
mdelay(20);
|
||||
|
||||
/* Set RTS, wake up board */
|
||||
status = tty->driver->ops->tiocmget(tty);
|
||||
tty->driver->ops->tiocmget(tty);
|
||||
tty->driver->ops->tiocmset(tty, TIOCM_RTS, 0x00);
|
||||
mdelay(20);
|
||||
|
||||
status = tty->driver->ops->tiocmget(tty);
|
||||
|
||||
/* Enable Automatic RTSCTS */
|
||||
ktermios.c_cflag |= CRTSCTS;
|
||||
status = tty_set_termios(tty, &ktermios);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
|
@ -530,7 +530,7 @@ EXPORT_SYMBOL(tty_termios_hw_change);
|
|||
* Locking: termios_rwsem
|
||||
*/
|
||||
|
||||
int tty_set_termios(struct tty_struct *tty, struct ktermios *new_termios)
|
||||
static int tty_set_termios(struct tty_struct *tty, struct ktermios *new_termios)
|
||||
{
|
||||
struct ktermios old_termios;
|
||||
struct tty_ldisc *ld;
|
||||
|
@ -563,7 +563,6 @@ int tty_set_termios(struct tty_struct *tty, struct ktermios *new_termios)
|
|||
up_write(&tty->termios_rwsem);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tty_set_termios);
|
||||
|
||||
/**
|
||||
* set_termios - set termios values for a tty
|
||||
|
|
|
@ -491,7 +491,6 @@ static inline speed_t tty_get_baud_rate(struct tty_struct *tty)
|
|||
|
||||
extern void tty_termios_copy_hw(struct ktermios *new, struct ktermios *old);
|
||||
extern int tty_termios_hw_change(struct ktermios *a, struct ktermios *b);
|
||||
extern int tty_set_termios(struct tty_struct *tty, struct ktermios *kt);
|
||||
|
||||
extern struct tty_ldisc *tty_ldisc_ref(struct tty_struct *);
|
||||
extern void tty_ldisc_deref(struct tty_ldisc *);
|
||||
|
|
Загрузка…
Ссылка в новой задаче