Commit 98c1fda7 authored by Okash Khawaja's avatar Okash Khawaja Committed by Greg Kroah-Hartman
Browse files

staging: speakup: move those functions which do outgoing serial comms, into serialio.c



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: default avatarOkash Khawaja <okash.khawaja@gmail.com>

Reviewed-by: default avatarSamuel Thibault <samuel.thibault@ens-lyon.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5e492ab5
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
@@ -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();
+2 −2
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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,
+2 −2
Original line number Diff line number Diff line
@@ -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 {
+1 −1
Original line number Diff line number Diff line
@@ -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,
Loading