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)
        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();
 
        .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,
 
        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;
 
        .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,
 
        .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,
        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 {
 
        .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,
 
        .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,
 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);
 
        .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,
 
        .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,
 
        .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,
        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)
 
        .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,
 
        .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,
 
                      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);
 
 
 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
 }
 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);