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: Samuel Thibault <samuel.thibault@ens-lyon.org> Link: https://lore.kernel.org/r/20200804160637.x3iycau5izywbgzl@function Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
9123e3a74e
commit
2b86d9b8ec
@@ -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 = {
|
|||||||
.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)
|
|||||||
}
|
}
|
||||||
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)
|
|||||||
|
|
||||||
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,
|
|||||||
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 @@
|
|||||||
|
|
||||||
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);
|
|||||||
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 = {
|
|||||||
.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)
|
|||||||
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 {
|
|||||||
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)
|
|||||||
{
|
{
|
||||||
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);
|
||||||
|
|||||||
Reference in New Issue
Block a user