mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-13 22:25:03 +00:00
staging: speakup: move those functions which do outgoing serial comms, into serialio.c
This moves spk_synth_immediate and spk_serial_synth_probe functions into serialio.c. These functions do outgoing serial comms. The move is a step towards collecting all serial comms in serialio.c. This also renames spk_synth_immediate to spk_serial_synth_immediate. Code inside those functions has not been changed. Along the way, this patch also fixes a couple of spots which were calling spk_synth_immediate directly, so that the calls now happen via the spk_syth struct. Signed-off-by: Okash Khawaja <okash.khawaja@gmail.com> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
5e492ab566
commit
98c1fda752
13 changed files with 61 additions and 61 deletions
|
@ -136,6 +136,35 @@ static void start_serial_interrupt(int irq)
|
||||||
outb(1, speakup_info.port_tts + UART_FCR); /* Turn FIFO On */
|
outb(1, speakup_info.port_tts + UART_FCR); /* Turn FIFO On */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int spk_serial_synth_probe(struct spk_synth *synth)
|
||||||
|
{
|
||||||
|
const struct old_serial_port *ser;
|
||||||
|
int failed = 0;
|
||||||
|
|
||||||
|
if ((synth->ser >= SPK_LO_TTY) && (synth->ser <= SPK_HI_TTY)) {
|
||||||
|
ser = spk_serial_init(synth->ser);
|
||||||
|
if (!ser) {
|
||||||
|
failed = -1;
|
||||||
|
} else {
|
||||||
|
outb_p(0, ser->port);
|
||||||
|
mdelay(1);
|
||||||
|
outb_p('\r', ser->port);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
failed = -1;
|
||||||
|
pr_warn("ttyS%i is an invalid port\n", synth->ser);
|
||||||
|
}
|
||||||
|
if (failed) {
|
||||||
|
pr_info("%s: not found\n", synth->long_name);
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
pr_info("%s: ttyS%i, Driver Version %s\n",
|
||||||
|
synth->long_name, synth->ser, synth->version);
|
||||||
|
synth->alive = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(spk_serial_synth_probe);
|
||||||
|
|
||||||
void spk_stop_serial_interrupt(void)
|
void spk_stop_serial_interrupt(void)
|
||||||
{
|
{
|
||||||
if (speakup_info.port_tts == 0)
|
if (speakup_info.port_tts == 0)
|
||||||
|
@ -223,6 +252,23 @@ int spk_serial_out(struct spk_synth *in_synth, const char ch)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *spk_serial_synth_immediate(struct spk_synth *synth, const char *buff)
|
||||||
|
{
|
||||||
|
u_char ch;
|
||||||
|
|
||||||
|
while ((ch = *buff)) {
|
||||||
|
if (ch == '\n')
|
||||||
|
ch = synth->procspeech;
|
||||||
|
if (spk_wait_for_xmitr(synth))
|
||||||
|
outb(ch, speakup_info.port_tts);
|
||||||
|
else
|
||||||
|
return buff;
|
||||||
|
buff++;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(spk_serial_synth_immediate);
|
||||||
|
|
||||||
void spk_serial_release(void)
|
void spk_serial_release(void)
|
||||||
{
|
{
|
||||||
spk_stop_serial_interrupt();
|
spk_stop_serial_interrupt();
|
||||||
|
|
|
@ -102,7 +102,7 @@ static struct spk_synth synth_acntsa = {
|
||||||
.io_ops = &spk_serial_io_ops,
|
.io_ops = &spk_serial_io_ops,
|
||||||
.probe = synth_probe,
|
.probe = synth_probe,
|
||||||
.release = spk_serial_release,
|
.release = spk_serial_release,
|
||||||
.synth_immediate = spk_synth_immediate,
|
.synth_immediate = spk_serial_synth_immediate,
|
||||||
.catch_up = spk_do_catch_up,
|
.catch_up = spk_do_catch_up,
|
||||||
.flush = spk_synth_flush,
|
.flush = spk_synth_flush,
|
||||||
.is_alive = spk_synth_is_alive_restart,
|
.is_alive = spk_synth_is_alive_restart,
|
||||||
|
@ -127,7 +127,7 @@ static int synth_probe(struct spk_synth *synth)
|
||||||
|
|
||||||
failed = spk_serial_synth_probe(synth);
|
failed = spk_serial_synth_probe(synth);
|
||||||
if (failed == 0) {
|
if (failed == 0) {
|
||||||
spk_synth_immediate(synth, "\033=R\r");
|
synth->synth_immediate(synth, "\033=R\r");
|
||||||
mdelay(100);
|
mdelay(100);
|
||||||
}
|
}
|
||||||
synth->alive = !failed;
|
synth->alive = !failed;
|
||||||
|
|
|
@ -111,7 +111,7 @@ static struct spk_synth synth_apollo = {
|
||||||
.io_ops = &spk_serial_io_ops,
|
.io_ops = &spk_serial_io_ops,
|
||||||
.probe = spk_serial_synth_probe,
|
.probe = spk_serial_synth_probe,
|
||||||
.release = spk_serial_release,
|
.release = spk_serial_release,
|
||||||
.synth_immediate = spk_synth_immediate,
|
.synth_immediate = spk_serial_synth_immediate,
|
||||||
.catch_up = do_catch_up,
|
.catch_up = do_catch_up,
|
||||||
.flush = spk_synth_flush,
|
.flush = spk_synth_flush,
|
||||||
.is_alive = spk_synth_is_alive_restart,
|
.is_alive = spk_synth_is_alive_restart,
|
||||||
|
|
|
@ -107,7 +107,7 @@ static struct spk_synth synth_audptr = {
|
||||||
.io_ops = &spk_serial_io_ops,
|
.io_ops = &spk_serial_io_ops,
|
||||||
.probe = synth_probe,
|
.probe = synth_probe,
|
||||||
.release = spk_serial_release,
|
.release = spk_serial_release,
|
||||||
.synth_immediate = spk_synth_immediate,
|
.synth_immediate = spk_serial_synth_immediate,
|
||||||
.catch_up = spk_do_catch_up,
|
.catch_up = spk_do_catch_up,
|
||||||
.flush = synth_flush,
|
.flush = synth_flush,
|
||||||
.is_alive = spk_synth_is_alive_restart,
|
.is_alive = spk_synth_is_alive_restart,
|
||||||
|
@ -144,7 +144,7 @@ static void synth_version(struct spk_synth *synth)
|
||||||
unsigned char test = 0;
|
unsigned char test = 0;
|
||||||
char synth_id[40] = "";
|
char synth_id[40] = "";
|
||||||
|
|
||||||
spk_synth_immediate(synth, "\x05[Q]");
|
synth->synth_immediate(synth, "\x05[Q]");
|
||||||
synth_id[test] = spk_serial_in();
|
synth_id[test] = spk_serial_in();
|
||||||
if (synth_id[test] == 'A') {
|
if (synth_id[test] == 'A') {
|
||||||
do {
|
do {
|
||||||
|
|
|
@ -99,7 +99,7 @@ static struct spk_synth synth_bns = {
|
||||||
.io_ops = &spk_serial_io_ops,
|
.io_ops = &spk_serial_io_ops,
|
||||||
.probe = spk_serial_synth_probe,
|
.probe = spk_serial_synth_probe,
|
||||||
.release = spk_serial_release,
|
.release = spk_serial_release,
|
||||||
.synth_immediate = spk_synth_immediate,
|
.synth_immediate = spk_serial_synth_immediate,
|
||||||
.catch_up = spk_do_catch_up,
|
.catch_up = spk_do_catch_up,
|
||||||
.flush = spk_synth_flush,
|
.flush = spk_synth_flush,
|
||||||
.is_alive = spk_synth_is_alive_restart,
|
.is_alive = spk_synth_is_alive_restart,
|
||||||
|
|
|
@ -130,7 +130,7 @@ static struct spk_synth synth_decext = {
|
||||||
.io_ops = &spk_serial_io_ops,
|
.io_ops = &spk_serial_io_ops,
|
||||||
.probe = spk_serial_synth_probe,
|
.probe = spk_serial_synth_probe,
|
||||||
.release = spk_serial_release,
|
.release = spk_serial_release,
|
||||||
.synth_immediate = spk_synth_immediate,
|
.synth_immediate = spk_serial_synth_immediate,
|
||||||
.catch_up = do_catch_up,
|
.catch_up = do_catch_up,
|
||||||
.flush = synth_flush,
|
.flush = synth_flush,
|
||||||
.is_alive = spk_synth_is_alive_restart,
|
.is_alive = spk_synth_is_alive_restart,
|
||||||
|
@ -225,7 +225,7 @@ static void do_catch_up(struct spk_synth *synth)
|
||||||
static void synth_flush(struct spk_synth *synth)
|
static void synth_flush(struct spk_synth *synth)
|
||||||
{
|
{
|
||||||
in_escape = 0;
|
in_escape = 0;
|
||||||
spk_synth_immediate(synth, "\033P;10z\033\\");
|
synth->synth_immediate(synth, "\033P;10z\033\\");
|
||||||
}
|
}
|
||||||
|
|
||||||
module_param_named(ser, synth_decext.ser, int, 0444);
|
module_param_named(ser, synth_decext.ser, int, 0444);
|
||||||
|
|
|
@ -133,7 +133,7 @@ static struct spk_synth synth_dectlk = {
|
||||||
.io_ops = &spk_serial_io_ops,
|
.io_ops = &spk_serial_io_ops,
|
||||||
.probe = spk_serial_synth_probe,
|
.probe = spk_serial_synth_probe,
|
||||||
.release = spk_serial_release,
|
.release = spk_serial_release,
|
||||||
.synth_immediate = spk_synth_immediate,
|
.synth_immediate = spk_serial_synth_immediate,
|
||||||
.catch_up = do_catch_up,
|
.catch_up = do_catch_up,
|
||||||
.flush = synth_flush,
|
.flush = synth_flush,
|
||||||
.is_alive = spk_synth_is_alive_restart,
|
.is_alive = spk_synth_is_alive_restart,
|
||||||
|
|
|
@ -101,7 +101,7 @@ static struct spk_synth synth_dummy = {
|
||||||
.io_ops = &spk_serial_io_ops,
|
.io_ops = &spk_serial_io_ops,
|
||||||
.probe = spk_serial_synth_probe,
|
.probe = spk_serial_synth_probe,
|
||||||
.release = spk_serial_release,
|
.release = spk_serial_release,
|
||||||
.synth_immediate = spk_synth_immediate,
|
.synth_immediate = spk_serial_synth_immediate,
|
||||||
.catch_up = spk_do_catch_up,
|
.catch_up = spk_do_catch_up,
|
||||||
.flush = spk_synth_flush,
|
.flush = spk_synth_flush,
|
||||||
.is_alive = spk_synth_is_alive_restart,
|
.is_alive = spk_synth_is_alive_restart,
|
||||||
|
|
|
@ -114,7 +114,7 @@ static struct spk_synth synth_ltlk = {
|
||||||
.io_ops = &spk_serial_io_ops,
|
.io_ops = &spk_serial_io_ops,
|
||||||
.probe = synth_probe,
|
.probe = synth_probe,
|
||||||
.release = spk_serial_release,
|
.release = spk_serial_release,
|
||||||
.synth_immediate = spk_synth_immediate,
|
.synth_immediate = spk_serial_synth_immediate,
|
||||||
.catch_up = spk_do_catch_up,
|
.catch_up = spk_do_catch_up,
|
||||||
.flush = spk_synth_flush,
|
.flush = spk_synth_flush,
|
||||||
.is_alive = spk_synth_is_alive_restart,
|
.is_alive = spk_synth_is_alive_restart,
|
||||||
|
@ -139,7 +139,7 @@ static void synth_interrogate(struct spk_synth *synth)
|
||||||
unsigned char *t, i;
|
unsigned char *t, i;
|
||||||
unsigned char buf[50], rom_v[20];
|
unsigned char buf[50], rom_v[20];
|
||||||
|
|
||||||
spk_synth_immediate(synth, "\x18\x01?");
|
synth->synth_immediate(synth, "\x18\x01?");
|
||||||
for (i = 0; i < 50; i++) {
|
for (i = 0; i < 50; i++) {
|
||||||
buf[i] = spk_serial_in();
|
buf[i] = spk_serial_in();
|
||||||
if (i > 2 && buf[i] == 0x7f)
|
if (i > 2 && buf[i] == 0x7f)
|
||||||
|
|
|
@ -105,7 +105,7 @@ static struct spk_synth synth_spkout = {
|
||||||
.io_ops = &spk_serial_io_ops,
|
.io_ops = &spk_serial_io_ops,
|
||||||
.probe = spk_serial_synth_probe,
|
.probe = spk_serial_synth_probe,
|
||||||
.release = spk_serial_release,
|
.release = spk_serial_release,
|
||||||
.synth_immediate = spk_synth_immediate,
|
.synth_immediate = spk_serial_synth_immediate,
|
||||||
.catch_up = spk_do_catch_up,
|
.catch_up = spk_do_catch_up,
|
||||||
.flush = synth_flush,
|
.flush = synth_flush,
|
||||||
.is_alive = spk_synth_is_alive_restart,
|
.is_alive = spk_synth_is_alive_restart,
|
||||||
|
|
|
@ -98,7 +98,7 @@ static struct spk_synth synth_txprt = {
|
||||||
.io_ops = &spk_serial_io_ops,
|
.io_ops = &spk_serial_io_ops,
|
||||||
.probe = spk_serial_synth_probe,
|
.probe = spk_serial_synth_probe,
|
||||||
.release = spk_serial_release,
|
.release = spk_serial_release,
|
||||||
.synth_immediate = spk_synth_immediate,
|
.synth_immediate = spk_serial_synth_immediate,
|
||||||
.catch_up = spk_do_catch_up,
|
.catch_up = spk_do_catch_up,
|
||||||
.flush = spk_synth_flush,
|
.flush = spk_synth_flush,
|
||||||
.is_alive = spk_synth_is_alive_restart,
|
.is_alive = spk_synth_is_alive_restart,
|
||||||
|
|
|
@ -58,7 +58,7 @@ ssize_t spk_var_store(struct kobject *kobj, struct kobj_attribute *attr,
|
||||||
const char *buf, size_t count);
|
const char *buf, size_t count);
|
||||||
|
|
||||||
int spk_serial_synth_probe(struct spk_synth *synth);
|
int spk_serial_synth_probe(struct spk_synth *synth);
|
||||||
const char *spk_synth_immediate(struct spk_synth *synth, const char *buff);
|
const char *spk_serial_synth_immediate(struct spk_synth *synth, const char *buff);
|
||||||
void spk_do_catch_up(struct spk_synth *synth);
|
void spk_do_catch_up(struct spk_synth *synth);
|
||||||
void spk_synth_flush(struct spk_synth *synth);
|
void spk_synth_flush(struct spk_synth *synth);
|
||||||
int spk_synth_is_alive_nop(struct spk_synth *synth);
|
int spk_synth_is_alive_nop(struct spk_synth *synth);
|
||||||
|
|
|
@ -44,35 +44,6 @@ EXPORT_SYMBOL_GPL(speakup_info);
|
||||||
|
|
||||||
static int do_synth_init(struct spk_synth *in_synth);
|
static int do_synth_init(struct spk_synth *in_synth);
|
||||||
|
|
||||||
int spk_serial_synth_probe(struct spk_synth *synth)
|
|
||||||
{
|
|
||||||
const struct old_serial_port *ser;
|
|
||||||
int failed = 0;
|
|
||||||
|
|
||||||
if ((synth->ser >= SPK_LO_TTY) && (synth->ser <= SPK_HI_TTY)) {
|
|
||||||
ser = spk_serial_init(synth->ser);
|
|
||||||
if (!ser) {
|
|
||||||
failed = -1;
|
|
||||||
} else {
|
|
||||||
outb_p(0, ser->port);
|
|
||||||
mdelay(1);
|
|
||||||
outb_p('\r', ser->port);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
failed = -1;
|
|
||||||
pr_warn("ttyS%i is an invalid port\n", synth->ser);
|
|
||||||
}
|
|
||||||
if (failed) {
|
|
||||||
pr_info("%s: not found\n", synth->long_name);
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
pr_info("%s: ttyS%i, Driver Version %s\n",
|
|
||||||
synth->long_name, synth->ser, synth->version);
|
|
||||||
synth->alive = 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(spk_serial_synth_probe);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Main loop of the progression thread: keep eating from the buffer
|
* Main loop of the progression thread: keep eating from the buffer
|
||||||
* and push to the serial port, waiting as needed
|
* and push to the serial port, waiting as needed
|
||||||
|
@ -147,23 +118,6 @@ void spk_do_catch_up(struct spk_synth *synth)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(spk_do_catch_up);
|
EXPORT_SYMBOL_GPL(spk_do_catch_up);
|
||||||
|
|
||||||
const char *spk_synth_immediate(struct spk_synth *synth, const char *buff)
|
|
||||||
{
|
|
||||||
u_char ch;
|
|
||||||
|
|
||||||
while ((ch = *buff)) {
|
|
||||||
if (ch == '\n')
|
|
||||||
ch = synth->procspeech;
|
|
||||||
if (spk_wait_for_xmitr(synth))
|
|
||||||
outb(ch, speakup_info.port_tts);
|
|
||||||
else
|
|
||||||
return buff;
|
|
||||||
buff++;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(spk_synth_immediate);
|
|
||||||
|
|
||||||
void spk_synth_flush(struct spk_synth *synth)
|
void spk_synth_flush(struct spk_synth *synth)
|
||||||
{
|
{
|
||||||
synth->io_ops->synth_out(synth, synth->clear);
|
synth->io_ops->synth_out(synth, synth->clear);
|
||||||
|
|
Loading…
Reference in a new issue