[patch 5/8] staging: speakup: move those functions which do outgoing serial comms, into serialio.c
Samuel Thibault
samuel.thibault at ens-lyon.org
Sun Mar 12 08:26:15 EDT 2017
okash.khawaja at gmail.com, 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 at gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault at ens-lyon.org>
> 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.)
More information about the Speakup
mailing list