staging: speakup: move those functions which do outgoing serial comms, into serialio.c
authorOkash Khawaja <okash.khawaja@gmail.com>
Thu, 16 Mar 2017 08:10:17 +0000 (08:10 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 Mar 2017 06:19:09 +0000 (15:19 +0900)
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>
13 files changed:
drivers/staging/speakup/serialio.c
drivers/staging/speakup/speakup_acntsa.c
drivers/staging/speakup/speakup_apollo.c
drivers/staging/speakup/speakup_audptr.c
drivers/staging/speakup/speakup_bns.c
drivers/staging/speakup/speakup_decext.c
drivers/staging/speakup/speakup_dectlk.c
drivers/staging/speakup/speakup_dummy.c
drivers/staging/speakup/speakup_ltlk.c
drivers/staging/speakup/speakup_spkout.c
drivers/staging/speakup/speakup_txprt.c
drivers/staging/speakup/spk_priv.h
drivers/staging/speakup/synth.c

index e197200dcd31d5e3a6663cf6856e4e450012d12d..e860e48818a4f8bb3cfbea85138b8698c99deb93 100644 (file)
@@ -136,6 +136,35 @@ static void start_serial_interrupt(int irq)
        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)
 {
        if (speakup_info.port_tts == 0)
@@ -223,6 +252,23 @@ int spk_serial_out(struct spk_synth *in_synth, const char ch)
        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 6a66801f9eba2bbbc44da2c65b1dcb33fe9ccc07..de67ffda7d4563bcea1e54d61561c5d5c78726ae 100644 (file)
@@ -102,7 +102,7 @@ static struct spk_synth synth_acntsa = {
        .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 @@ static int synth_probe(struct spk_synth *synth)
 
        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 c78a2ffb13bde600d2696637eae7f31800a25ff5..9cfdbbfb9742f3bf8d8be76658f9d5db676f94b7 100644 (file)
@@ -111,7 +111,7 @@ static struct spk_synth synth_apollo = {
        .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 76e21f69e769d64b7059aff8ee3eb49b2ee3789c..da3fd94a6ad9023d8cc71e723de37a22fb2ac4de 100644 (file)
@@ -107,7 +107,7 @@ static struct spk_synth synth_audptr = {
        .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 @@ static void synth_version(struct spk_synth *synth)
        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 6c46f670fef70e30a93034f8bdfbd2c3308a3706..a972a5147c6bc579625446b9914853ffc7299b8a 100644 (file)
@@ -99,7 +99,7 @@ static struct spk_synth synth_bns = {
        .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 4cf038457c1a3c0d62391d3d360b5e668a0c4482..fdbf330cae4e00a0673172bdc2100bab3abd53a2 100644 (file)
@@ -130,7 +130,7 @@ static struct spk_synth synth_decext = {
        .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 do_catch_up(struct spk_synth *synth)
 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 f36d579015f0521e9529719ac72159fd4b8a9131..386ac9d87af6bafb50dc7465eabeab76e3cde909 100644 (file)
@@ -133,7 +133,7 @@ static struct spk_synth synth_dectlk = {
        .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 8d64dd84c0791f0da0bf400fb2202989a6ad2902..8db7aa358f31c556a758e7f0fb1465131bcc15c9 100644 (file)
@@ -101,7 +101,7 @@ static struct spk_synth synth_dummy = {
        .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 ca4c0484a806c82c571f98f4fd293d0dc749c7de..cb4f2958c318757f7d618c1dced0cec525b9a30c 100644 (file)
@@ -114,7 +114,7 @@ static struct spk_synth synth_ltlk = {
        .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 @@ static void synth_interrogate(struct spk_synth *synth)
        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 8faeca4f050e12779304d19bff2b9f4e9954b999..d08ddc110f5763cc31b88deea77b068ad0a8e43f 100644 (file)
@@ -105,7 +105,7 @@ static struct spk_synth synth_spkout = {
        .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 75364c81680030abbf92f6c2f0cac37cda0f9adf..3f531fb99fd360fe3702ac32e2a1e982cce1b3e2 100644 (file)
@@ -98,7 +98,7 @@ static struct spk_synth synth_txprt = {
        .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 7e12fecf938032872720d2c8d83a0830e7780326..995f586bddcd3a01eca26841559c1b7e07f807cc 100644 (file)
@@ -58,7 +58,7 @@ ssize_t spk_var_store(struct kobject *kobj, struct kobj_attribute *attr,
                      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 989681dcb710e1a11200534005577d803aed6856..352e9eebc3de95f6ac91062a1c99474cf6226a95 100644 (file)
@@ -44,35 +44,6 @@ EXPORT_SYMBOL_GPL(speakup_info);
 
 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
  * 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);
 
-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);