diff options
author | Jiri Slaby <jslaby@suse.cz> | 2012-03-05 14:52:11 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-03-08 11:47:02 -0800 |
commit | 3ee0017e03cd790ed1adaa97ef6f99aff3706ec2 (patch) | |
tree | 59cfd3fd39c88145dd581a622b555e3bd119d17d | |
parent | 11ba8899f96066600a7adeee28baed7a4a8cb7eb (diff) |
TTY: speakup, do not use serialP
The structures there are going away. And speakup has enough troubles
already.
So define a structure similar to what 8250 does: old_serial_port.
There define an array of speed, port base and so on needed for
configuration. Then use this structure instead of serial_state defined
in serialP.h.
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: William Hubbs <w.d.hubbs@gmail.com>
Cc: Chris Brannon <chris@the-brannons.com>
Cc: Kirk Reiser <kirk@braille.uwo.ca>
Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/staging/speakup/serialio.c | 11 | ||||
-rw-r--r-- | drivers/staging/speakup/serialio.h | 13 | ||||
-rw-r--r-- | drivers/staging/speakup/spk_priv.h | 2 | ||||
-rw-r--r-- | drivers/staging/speakup/synth.c | 2 |
4 files changed, 19 insertions, 9 deletions
diff --git a/drivers/staging/speakup/serialio.c b/drivers/staging/speakup/serialio.c index 7f3d87bf5927..a97d3d5b58a4 100644 --- a/drivers/staging/speakup/serialio.c +++ b/drivers/staging/speakup/serialio.c @@ -8,21 +8,20 @@ static void start_serial_interrupt(int irq); -static struct serial_state rs_table[] = { +static const struct old_serial_port rs_table[] = { SERIAL_PORT_DFNS }; -static struct serial_state *serstate; +static const struct old_serial_port *serstate; static int timeouts; -struct serial_state *spk_serial_init(int index) +const struct old_serial_port *spk_serial_init(int index) { int baud = 9600, quot = 0; unsigned int cval = 0; int cflag = CREAD | HUPCL | CLOCAL | B9600 | CS8; - struct serial_state *ser = NULL; + const struct old_serial_port *ser = rs_table + index; int err; - ser = rs_table + index; /* Divisor, bytesize and parity */ quot = ser->baud_base / baud; cval = cflag & (CSIZE | CSTOPB); @@ -41,7 +40,7 @@ struct serial_state *spk_serial_init(int index) __release_region(&ioport_resource, ser->port, 8); err = synth_request_region(ser->port, 8); if (err) { - pr_warn("Unable to allocate port at %lx, errno %i", + pr_warn("Unable to allocate port at %x, errno %i", ser->port, err); return NULL; } diff --git a/drivers/staging/speakup/serialio.h b/drivers/staging/speakup/serialio.h index d785b1f6a3b3..614271f9b99f 100644 --- a/drivers/staging/speakup/serialio.h +++ b/drivers/staging/speakup/serialio.h @@ -4,11 +4,22 @@ #include <linux/serial.h> /* for rs_table, serial constants & serial_uart_config */ #include <linux/serial_reg.h> /* for more serial constants */ -#include <linux/serialP.h> /* for struct serial_state */ #ifndef __sparc__ #include <asm/serial.h> #endif +/* + * this is cut&paste from 8250.h. Get rid of the structure, the definitions + * and this whole broken driver. + */ +struct old_serial_port { + unsigned int uart; /* unused */ + unsigned int baud_base; + unsigned int port; + unsigned int irq; + unsigned int flags; /* unused */ +}; + /* countdown values for serial timeouts in us */ #define SPK_SERIAL_TIMEOUT 100000 /* countdown values transmitter/dsr timeouts in us */ diff --git a/drivers/staging/speakup/spk_priv.h b/drivers/staging/speakup/spk_priv.h index 16ace4af68a9..a47c5b78d57d 100644 --- a/drivers/staging/speakup/spk_priv.h +++ b/drivers/staging/speakup/spk_priv.h @@ -44,7 +44,7 @@ #define KT_SPKUP 15 -extern struct serial_state *spk_serial_init(int index); +extern const struct old_serial_port *spk_serial_init(int index); extern void stop_serial_interrupt(void); extern int wait_for_xmitr(void); extern unsigned char spk_serial_in(void); diff --git a/drivers/staging/speakup/synth.c b/drivers/staging/speakup/synth.c index 2222d6919ef5..331eae788700 100644 --- a/drivers/staging/speakup/synth.c +++ b/drivers/staging/speakup/synth.c @@ -34,7 +34,7 @@ static int do_synth_init(struct spk_synth *in_synth); int serial_synth_probe(struct spk_synth *synth) { - struct serial_state *ser; + const struct old_serial_port *ser; int failed = 0; if ((synth->ser >= SPK_LO_TTY) && (synth->ser <= SPK_HI_TTY)) { |