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 Reviewed-by: Samuel Thibault Index: linux-4.11-rc2/drivers/staging/speakup/serialio.c =================================================================== --- linux-4.11-rc2.orig/drivers/staging/speakup/serialio.c +++ linux-4.11-rc2/drivers/staging/speakup/serialio.c @@ -136,6 +136,35 @@ 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 == NULL) { + 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) { if (speakup_info.port_tts == 0) @@ -223,6 +252,23 @@ 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) { spk_stop_serial_interrupt(); Index: linux-4.11-rc2/drivers/staging/speakup/speakup_acntsa.c =================================================================== --- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_acntsa.c +++ linux-4.11-rc2/drivers/staging/speakup/speakup_acntsa.c @@ -102,7 +102,7 @@ .io_ops = &spk_serial_io_ops, .probe = synth_probe, .release = spk_serial_release, - .synth_immediate = spk_synth_immediate, + .synth_immediate = spk_serial_synth_immediate, .catch_up = spk_do_catch_up, .flush = spk_synth_flush, .is_alive = spk_synth_is_alive_restart, @@ -127,7 +127,7 @@ failed = spk_serial_synth_probe(synth); if (failed == 0) { - spk_synth_immediate(synth, "\033=R\r"); + synth->synth_immediate(synth, "\033=R\r"); mdelay(100); } synth->alive = !failed; Index: linux-4.11-rc2/drivers/staging/speakup/speakup_apollo.c =================================================================== --- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_apollo.c +++ linux-4.11-rc2/drivers/staging/speakup/speakup_apollo.c @@ -111,7 +111,7 @@ .io_ops = &spk_serial_io_ops, .probe = spk_serial_synth_probe, .release = spk_serial_release, - .synth_immediate = spk_synth_immediate, + .synth_immediate = spk_serial_synth_immediate, .catch_up = do_catch_up, .flush = spk_synth_flush, .is_alive = spk_synth_is_alive_restart, Index: linux-4.11-rc2/drivers/staging/speakup/speakup_audptr.c =================================================================== --- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_audptr.c +++ linux-4.11-rc2/drivers/staging/speakup/speakup_audptr.c @@ -107,7 +107,7 @@ .io_ops = &spk_serial_io_ops, .probe = synth_probe, .release = spk_serial_release, - .synth_immediate = spk_synth_immediate, + .synth_immediate = spk_serial_synth_immediate, .catch_up = spk_do_catch_up, .flush = synth_flush, .is_alive = spk_synth_is_alive_restart, @@ -144,7 +144,7 @@ unsigned char test = 0; char synth_id[40] = ""; - spk_synth_immediate(synth, "\x05[Q]"); + synth->synth_immediate(synth, "\x05[Q]"); synth_id[test] = spk_serial_in(); if (synth_id[test] == 'A') { do { Index: linux-4.11-rc2/drivers/staging/speakup/speakup_bns.c =================================================================== --- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_bns.c +++ linux-4.11-rc2/drivers/staging/speakup/speakup_bns.c @@ -99,7 +99,7 @@ .io_ops = &spk_serial_io_ops, .probe = spk_serial_synth_probe, .release = spk_serial_release, - .synth_immediate = spk_synth_immediate, + .synth_immediate = spk_serial_synth_immediate, .catch_up = spk_do_catch_up, .flush = spk_synth_flush, .is_alive = spk_synth_is_alive_restart, Index: linux-4.11-rc2/drivers/staging/speakup/speakup_decext.c =================================================================== --- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_decext.c +++ linux-4.11-rc2/drivers/staging/speakup/speakup_decext.c @@ -130,7 +130,7 @@ .io_ops = &spk_serial_io_ops, .probe = spk_serial_synth_probe, .release = spk_serial_release, - .synth_immediate = spk_synth_immediate, + .synth_immediate = spk_serial_synth_immediate, .catch_up = do_catch_up, .flush = synth_flush, .is_alive = spk_synth_is_alive_restart, @@ -224,7 +224,7 @@ static void synth_flush(struct spk_synth *synth) { 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); Index: linux-4.11-rc2/drivers/staging/speakup/speakup_dectlk.c =================================================================== --- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_dectlk.c +++ linux-4.11-rc2/drivers/staging/speakup/speakup_dectlk.c @@ -133,7 +133,7 @@ .io_ops = &spk_serial_io_ops, .probe = spk_serial_synth_probe, .release = spk_serial_release, - .synth_immediate = spk_synth_immediate, + .synth_immediate = spk_serial_synth_immediate, .catch_up = do_catch_up, .flush = synth_flush, .is_alive = spk_synth_is_alive_restart, Index: linux-4.11-rc2/drivers/staging/speakup/speakup_dummy.c =================================================================== --- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_dummy.c +++ linux-4.11-rc2/drivers/staging/speakup/speakup_dummy.c @@ -101,7 +101,7 @@ .io_ops = &spk_serial_io_ops, .probe = spk_serial_synth_probe, .release = spk_serial_release, - .synth_immediate = spk_synth_immediate, + .synth_immediate = spk_serial_synth_immediate, .catch_up = spk_do_catch_up, .flush = spk_synth_flush, .is_alive = spk_synth_is_alive_restart, Index: linux-4.11-rc2/drivers/staging/speakup/speakup_ltlk.c =================================================================== --- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_ltlk.c +++ linux-4.11-rc2/drivers/staging/speakup/speakup_ltlk.c @@ -114,7 +114,7 @@ .io_ops = &spk_serial_io_ops, .probe = synth_probe, .release = spk_serial_release, - .synth_immediate = spk_synth_immediate, + .synth_immediate = spk_serial_synth_immediate, .catch_up = spk_do_catch_up, .flush = spk_synth_flush, .is_alive = spk_synth_is_alive_restart, @@ -139,7 +139,7 @@ unsigned char *t, i; 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++) { buf[i] = spk_serial_in(); if (i > 2 && buf[i] == 0x7f) Index: linux-4.11-rc2/drivers/staging/speakup/speakup_spkout.c =================================================================== --- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_spkout.c +++ linux-4.11-rc2/drivers/staging/speakup/speakup_spkout.c @@ -105,7 +105,7 @@ .io_ops = &spk_serial_io_ops, .probe = spk_serial_synth_probe, .release = spk_serial_release, - .synth_immediate = spk_synth_immediate, + .synth_immediate = spk_serial_synth_immediate, .catch_up = spk_do_catch_up, .flush = synth_flush, .is_alive = spk_synth_is_alive_restart, Index: linux-4.11-rc2/drivers/staging/speakup/speakup_txprt.c =================================================================== --- linux-4.11-rc2.orig/drivers/staging/speakup/speakup_txprt.c +++ linux-4.11-rc2/drivers/staging/speakup/speakup_txprt.c @@ -98,7 +98,7 @@ .io_ops = &spk_serial_io_ops, .probe = spk_serial_synth_probe, .release = spk_serial_release, - .synth_immediate = spk_synth_immediate, + .synth_immediate = spk_serial_synth_immediate, .catch_up = spk_do_catch_up, .flush = spk_synth_flush, .is_alive = spk_synth_is_alive_restart, Index: linux-4.11-rc2/drivers/staging/speakup/spk_priv.h =================================================================== --- linux-4.11-rc2.orig/drivers/staging/speakup/spk_priv.h +++ linux-4.11-rc2/drivers/staging/speakup/spk_priv.h @@ -57,7 +57,7 @@ const char *buf, size_t count); 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_synth_flush(struct spk_synth *synth); int spk_synth_is_alive_nop(struct spk_synth *synth); Index: linux-4.11-rc2/drivers/staging/speakup/synth.c =================================================================== --- linux-4.11-rc2.orig/drivers/staging/speakup/synth.c +++ linux-4.11-rc2/drivers/staging/speakup/synth.c @@ -44,35 +44,6 @@ 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 == NULL) { - 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 * and push to the serial port, waiting as needed @@ -146,23 +117,6 @@ } 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) { synth->io_ops->synth_out(synth, synth->clear);