okash.khawaja@xxxxxxxxx, on dim. 12 mars 2017 12:16:49 +0000, wrote: > 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@xxxxxxxxx> Reviewed-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx> > Index: linux-4.10.1/drivers/staging/speakup/serialio.c > =================================================================== > --- linux-4.10.1.orig/drivers/staging/speakup/serialio.c > +++ linux-4.10.1/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.10.1/drivers/staging/speakup/speakup_acntsa.c > =================================================================== > --- linux-4.10.1.orig/drivers/staging/speakup/speakup_acntsa.c > +++ linux-4.10.1/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.10.1/drivers/staging/speakup/speakup_apollo.c > =================================================================== > --- linux-4.10.1.orig/drivers/staging/speakup/speakup_apollo.c > +++ linux-4.10.1/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.10.1/drivers/staging/speakup/speakup_audptr.c > =================================================================== > --- linux-4.10.1.orig/drivers/staging/speakup/speakup_audptr.c > +++ linux-4.10.1/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.10.1/drivers/staging/speakup/speakup_bns.c > =================================================================== > --- linux-4.10.1.orig/drivers/staging/speakup/speakup_bns.c > +++ linux-4.10.1/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.10.1/drivers/staging/speakup/speakup_decext.c > =================================================================== > --- linux-4.10.1.orig/drivers/staging/speakup/speakup_decext.c > +++ linux-4.10.1/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, > @@ -225,7 +225,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, S_IRUGO); > Index: linux-4.10.1/drivers/staging/speakup/speakup_dectlk.c > =================================================================== > --- linux-4.10.1.orig/drivers/staging/speakup/speakup_dectlk.c > +++ linux-4.10.1/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.10.1/drivers/staging/speakup/speakup_dummy.c > =================================================================== > --- linux-4.10.1.orig/drivers/staging/speakup/speakup_dummy.c > +++ linux-4.10.1/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.10.1/drivers/staging/speakup/speakup_ltlk.c > =================================================================== > --- linux-4.10.1.orig/drivers/staging/speakup/speakup_ltlk.c > +++ linux-4.10.1/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.10.1/drivers/staging/speakup/speakup_spkout.c > =================================================================== > --- linux-4.10.1.orig/drivers/staging/speakup/speakup_spkout.c > +++ linux-4.10.1/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.10.1/drivers/staging/speakup/speakup_txprt.c > =================================================================== > --- linux-4.10.1.orig/drivers/staging/speakup/speakup_txprt.c > +++ linux-4.10.1/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.10.1/drivers/staging/speakup/spk_priv.h > =================================================================== > --- linux-4.10.1.orig/drivers/staging/speakup/spk_priv.h > +++ linux-4.10.1/drivers/staging/speakup/spk_priv.h > @@ -58,7 +58,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.10.1/drivers/staging/speakup/synth.c > =================================================================== > --- linux-4.10.1.orig/drivers/staging/speakup/synth.c > +++ linux-4.10.1/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 > @@ -147,23 +118,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); > -- Samuel How do I type "for i in *.dvi do xdvi i done" in a GUI? (Discussion in comp.os.linux.misc on the intuitiveness of interfaces.) _______________________________________________ Speakup mailing list Speakup@xxxxxxxxxxxxxxxxx http://linux-speakup.org/cgi-bin/mailman/listinfo/speakup