Commit 2b86d9b8 authored by Samuel Thibault's avatar Samuel Thibault Committed by Greg Kroah-Hartman

speakup: Fix wait_for_xmitr for ttyio case

This was missed while introducing the tty-based serial access.

The only remaining use of wait_for_xmitr with tty-based access is in
spk_synth_is_alive_restart to check whether the synth can be restarted.
With tty-based this is up to the tty layer to cope with the buffering
etc. so we can just say yes.
Signed-off-by: default avatarSamuel Thibault <samuel.thibault@ens-lyon.org>
Link: https://lore.kernel.org/r/20200804160637.x3iycau5izywbgzl@functionSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 9123e3a7
...@@ -32,6 +32,7 @@ static void spk_serial_tiocmset(unsigned int set, unsigned int clear); ...@@ -32,6 +32,7 @@ static void spk_serial_tiocmset(unsigned int set, unsigned int clear);
static unsigned char spk_serial_in(void); static unsigned char spk_serial_in(void);
static unsigned char spk_serial_in_nowait(void); static unsigned char spk_serial_in_nowait(void);
static void spk_serial_flush_buffer(void); static void spk_serial_flush_buffer(void);
static int spk_serial_wait_for_xmitr(struct spk_synth *in_synth);
struct spk_io_ops spk_serial_io_ops = { struct spk_io_ops spk_serial_io_ops = {
.synth_out = spk_serial_out, .synth_out = spk_serial_out,
...@@ -40,6 +41,7 @@ struct spk_io_ops spk_serial_io_ops = { ...@@ -40,6 +41,7 @@ struct spk_io_ops spk_serial_io_ops = {
.synth_in = spk_serial_in, .synth_in = spk_serial_in,
.synth_in_nowait = spk_serial_in_nowait, .synth_in_nowait = spk_serial_in_nowait,
.flush_buffer = spk_serial_flush_buffer, .flush_buffer = spk_serial_flush_buffer,
.wait_for_xmitr = spk_serial_wait_for_xmitr,
}; };
EXPORT_SYMBOL_GPL(spk_serial_io_ops); EXPORT_SYMBOL_GPL(spk_serial_io_ops);
...@@ -211,7 +213,7 @@ void spk_stop_serial_interrupt(void) ...@@ -211,7 +213,7 @@ void spk_stop_serial_interrupt(void)
} }
EXPORT_SYMBOL_GPL(spk_stop_serial_interrupt); EXPORT_SYMBOL_GPL(spk_stop_serial_interrupt);
int spk_wait_for_xmitr(struct spk_synth *in_synth) static int spk_serial_wait_for_xmitr(struct spk_synth *in_synth)
{ {
int tmout = SPK_XMITR_TIMEOUT; int tmout = SPK_XMITR_TIMEOUT;
...@@ -280,7 +282,7 @@ static void spk_serial_flush_buffer(void) ...@@ -280,7 +282,7 @@ static void spk_serial_flush_buffer(void)
static int spk_serial_out(struct spk_synth *in_synth, const char ch) static int spk_serial_out(struct spk_synth *in_synth, const char ch)
{ {
if (in_synth->alive && spk_wait_for_xmitr(in_synth)) { if (in_synth->alive && spk_serial_wait_for_xmitr(in_synth)) {
outb_p(ch, speakup_info.port_tts); outb_p(ch, speakup_info.port_tts);
return 1; return 1;
} }
...@@ -295,7 +297,7 @@ const char *spk_serial_synth_immediate(struct spk_synth *synth, ...@@ -295,7 +297,7 @@ const char *spk_serial_synth_immediate(struct spk_synth *synth,
while ((ch = *buff)) { while ((ch = *buff)) {
if (ch == '\n') if (ch == '\n')
ch = synth->procspeech; ch = synth->procspeech;
if (spk_wait_for_xmitr(synth)) if (spk_serial_wait_for_xmitr(synth))
outb(ch, speakup_info.port_tts); outb(ch, speakup_info.port_tts);
else else
return buff; return buff;
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
const struct old_serial_port *spk_serial_init(int index); const struct old_serial_port *spk_serial_init(int index);
void spk_stop_serial_interrupt(void); void spk_stop_serial_interrupt(void);
int spk_wait_for_xmitr(struct spk_synth *in_synth);
void spk_serial_release(void); void spk_serial_release(void);
void spk_ttyio_release(void); void spk_ttyio_release(void);
void spk_ttyio_register_ldisc(void); void spk_ttyio_register_ldisc(void);
......
...@@ -116,6 +116,7 @@ static void spk_ttyio_tiocmset(unsigned int set, unsigned int clear); ...@@ -116,6 +116,7 @@ static void spk_ttyio_tiocmset(unsigned int set, unsigned int clear);
static unsigned char spk_ttyio_in(void); static unsigned char spk_ttyio_in(void);
static unsigned char spk_ttyio_in_nowait(void); static unsigned char spk_ttyio_in_nowait(void);
static void spk_ttyio_flush_buffer(void); static void spk_ttyio_flush_buffer(void);
static int spk_ttyio_wait_for_xmitr(struct spk_synth *in_synth);
struct spk_io_ops spk_ttyio_ops = { struct spk_io_ops spk_ttyio_ops = {
.synth_out = spk_ttyio_out, .synth_out = spk_ttyio_out,
...@@ -125,6 +126,7 @@ struct spk_io_ops spk_ttyio_ops = { ...@@ -125,6 +126,7 @@ struct spk_io_ops spk_ttyio_ops = {
.synth_in = spk_ttyio_in, .synth_in = spk_ttyio_in,
.synth_in_nowait = spk_ttyio_in_nowait, .synth_in_nowait = spk_ttyio_in_nowait,
.flush_buffer = spk_ttyio_flush_buffer, .flush_buffer = spk_ttyio_flush_buffer,
.wait_for_xmitr = spk_ttyio_wait_for_xmitr,
}; };
EXPORT_SYMBOL_GPL(spk_ttyio_ops); EXPORT_SYMBOL_GPL(spk_ttyio_ops);
...@@ -286,6 +288,11 @@ static void spk_ttyio_tiocmset(unsigned int set, unsigned int clear) ...@@ -286,6 +288,11 @@ static void spk_ttyio_tiocmset(unsigned int set, unsigned int clear)
mutex_unlock(&speakup_tty_mutex); mutex_unlock(&speakup_tty_mutex);
} }
static int spk_ttyio_wait_for_xmitr(struct spk_synth *in_synth)
{
return 1;
}
static unsigned char ttyio_in(int timeout) static unsigned char ttyio_in(int timeout)
{ {
struct spk_ldisc_data *ldisc_data = speakup_tty->disc_data; struct spk_ldisc_data *ldisc_data = speakup_tty->disc_data;
......
...@@ -158,6 +158,7 @@ struct spk_io_ops { ...@@ -158,6 +158,7 @@ struct spk_io_ops {
unsigned char (*synth_in)(void); unsigned char (*synth_in)(void);
unsigned char (*synth_in_nowait)(void); unsigned char (*synth_in_nowait)(void);
void (*flush_buffer)(void); void (*flush_buffer)(void);
int (*wait_for_xmitr)(struct spk_synth *synth);
}; };
struct spk_synth { struct spk_synth {
......
...@@ -159,7 +159,7 @@ int spk_synth_is_alive_restart(struct spk_synth *synth) ...@@ -159,7 +159,7 @@ int spk_synth_is_alive_restart(struct spk_synth *synth)
{ {
if (synth->alive) if (synth->alive)
return 1; return 1;
if (spk_wait_for_xmitr(synth) > 0) { if (synth->io_ops->wait_for_xmitr(synth) > 0) {
/* restart */ /* restart */
synth->alive = 1; synth->alive = 1;
synth_printf("%s", synth->init); synth_printf("%s", synth->init);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment