Commit Graph

53 Commits

Author SHA1 Message Date
Al Viro
38d0d001b9 [PATCH] rio ->Copy() expects the sourse as first argument
... so conversion from rio_pcicopy() to rio_copy_to_card() had broken the
damn thing.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2006-05-27 02:26:23 -04:00
Al Viro
d886cb586f [PATCH] trivial annotations in rio
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2006-05-27 02:26:14 -04:00
Alan Cox
655fdeab80 [PATCH] Final rio polish
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-05-15 11:20:57 -07:00
Alan Cox
554b7c801e [PATCH] Yet more rio cleaning (2 of 2)
- Remove more unused headers
- Remove various typedefs
- Correct type of PaddrP (physical addresses should be ulong)
- Kill use of bcopy
- More printk cleanups
- Kill true/false
- Clean up direct access to pci BARs

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-24 07:33:29 -08:00
Alan Cox
57c2d60e1e [PATCH] Yet more rio cleaning (1 of 2)
- Remove more unused headers
- Remove various typedefs
- Correct type of PaddrP (physical addresses should be ulong)
- Kill use of bcopy
- More printk cleanups
- Kill true/false
- Clean up direct access to pci BARs

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-24 07:33:29 -08:00
Alan Cox
db3185242a [PATCH] rio driver rework continued #5
Final polish.  There is no more save_flags/cli type locking left.  We also no
longer use the pcicopy function and file so they can go.

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-24 07:33:29 -08:00
Alan Cox
3d336aa257 [PATCH] rio driver rework continued #4
Third large chunk of code cleanup.  The split between this and #3 and #4 is
fairly arbitary and due to the message length limit on the list.  These
patches continue the process of ripping out macros and typedefs while cleaning
up lots of 32bit assumptions.  Several inlines for compatibility also get
removed and that causes a lot of noise.

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-24 07:33:29 -08:00
Alan Cox
00d83a54aa [PATCH] rio driver rework continued #3
Second large chunk of code cleanup.  The split between this and #3 and #4 is
fairly arbitary and due to the message length limit on the list.  These
patches continue the process of ripping out macros and typedefs while cleaning
up lots of 32bit assumptions.  Several inlines for compatibility also get
removed and that causes a lot of noise.

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-24 07:33:29 -08:00
Alan Cox
e2b3afd676 [PATCH] rio driver rework continued #2
First large chunk of code cleanup.  The split between this and #3 and #4 is
fairly arbitary and due to the message length limit on the list.  These
patches continue the process of ripping out macros and typedefs while cleaning
up lots of 32bit assumptions.  Several inlines for compatibility also get
removed and that causes a lot of noise.

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-24 07:33:29 -08:00
Alan Cox
27c6e526f3 [PATCH] rio driver rework continued #1
More header cleanups, strip out typedefs and remove cruft.  There are a lot of
magic macros that can go and also a great deal of abuse of volatile that is
not needed any more as this patch set cleans up the misuse of pointer access
to ISA and PCI space.

It now builds cleanly on 64bit, although there is more work left to do

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-24 07:33:29 -08:00
Alan Cox
b6c6b6021e [PATCH] rioboot: post-Lindent
After the indent we can now clean up unused code, and fix all myriad cases
that don't use readb/writeb properly.

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-24 07:33:28 -08:00
Alan Cox
3b8e3f1e44 [PATCH] rioboot: lindent
This is the result of indent -kr -i8 -bri0 -l255

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-24 07:33:28 -08:00
Alan Cox
74769abfcb [PATCH] rio: more header cleanup
Strip some of the typedef mess out Remove a small subset of unused defines
and the like.

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-24 07:33:28 -08:00
Alan Cox
84542838a3 [PATCH] rio cleanups
INKERNEL is always defined
HOST is never defined
therefore RTA is also never defined

Strip the relevant garbage out of the headers on this basis.

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-02-03 08:32:04 -08:00
Alan Cox
f4caf1606d [PATCH] Remove unused code from rioctrl.c (Last for this batch of work)
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:31:29 -08:00
Alan Cox
1384cee55d [PATCH] Remove rio_table.c unused code
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:31:28 -08:00
Alan Cox
542ea6c37c [PATCH] Remove unused code from rio_linux.c
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:31:28 -08:00
Alan Cox
283c9d546e [PATCH] Remove unused CHECK code from riocmd.c
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:31:28 -08:00
Alan Cox
8b03de1f66 [PATCH] Remove unused code from rioroute.h
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:31:28 -08:00
Alan Cox
f099bfb708 [PATCH] Remove unused code from rioboot.h
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:31:28 -08:00
Alan Cox
c7306c0287 [PATCH] Remove unused code from rioboot
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:31:28 -08:00
Alan Cox
a6176eeab0 [PATCH] Remove #if 0 and other long dead code from rio_tty
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:31:27 -08:00
Alan Cox
925d70d64b [PATCH] Remove long dead #if 0 code from rio_param
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:31:27 -08:00
Alan Cox
09979236d6 [PATCH] Remove old firmware headers from rio drivers
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:31:27 -08:00
Alan Cox
3918276ce5 [PATCH] Remove rtahw.h from rio driver (unused file)
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:31:27 -08:00
Alan Cox
169da21f40 [PATCH] Remove file riscos.h from rio driver (unused file)
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:31 -08:00
Alan Cox
a09be029bb [PATCH] Remove file riowinif.h from rio driver (unused file)
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:31 -08:00
Alan Cox
69da7f9a63 [PATCH] Remove riotime.h from rio driver (unused file)
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:31 -08:00
Alan Cox
8618751503 [PATCH] Remove file riolocks.h from rio driver (unused file)
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:31 -08:00
Alan Cox
0d336ceb1e [PATCH] Remove proto.h from rio driver (unused file)
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:30 -08:00
Alan Cox
735f88c62e [PATCH] Remove poll.h from rio driver (unused file)
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:30 -08:00
Alan Cox
009c4cb8aa [PATCH] Remove mesg.h from rio driver (unused file)
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:30 -08:00
Alan Cox
125ca8fb5b [PATCH] Remove mca.h from rio driver (unused file)
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:30 -08:00
Alan Cox
67abbfe7de [PATCH] Remove internal firmware building files from rio
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:30 -08:00
Alan Cox
b52a90dbe6 [PATCH] Remove hosthw.h from rio (unused file)
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:30 -08:00
Alan Cox
85ae2f9cab [PATCH] Remove formpkt.h from rio (unused file)
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:30 -08:00
Alan Cox
bed445d41e [PATCH] Remove enable.h from rio (unused file)
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:29 -08:00
Alan Cox
e67f76a6b1 [PATCH] Remove enable.h from rio driver (unused file)
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:29 -08:00
Alan Cox
0d23368127 [PATCH] Remove debug.h from rio.h (unused file)
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:29 -08:00
Alan Cox
4198d8c368 [PATCH] Remove data.h from rio driver (unused file)
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:29 -08:00
Alan Cox
98da212f0d [PATCH] Remove chan.h from rio driver (unused file)
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:29 -08:00
Alan Cox
e8a9858aa2 [PATCH] Remove cmd.h from rio driver (unused file)
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:29 -08:00
Alan Cox
f504fb59c7 [PATCH] Remove brates.h from rio driver (unused file)
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-16 23:30:29 -08:00
Andrew Morton
8d8706e2f8 [PATCH] lindent rio drivers
Run all rio files through indent -kr -i8 -bri0 -l255, as requested by Alan.

rioboot.c and rioinit.c were skipped due to worrisome lindent warnings.

Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-11 18:42:14 -08:00
Alan Cox
33f0f88f1c [PATCH] TTY layer buffering revamp
The API and code have been through various bits of initial review by
serial driver people but they definitely need to live somewhere for a
while so the unconverted drivers can get knocked into shape, existing
drivers that have been updated can be better tuned and bugs whacked out.

This replaces the tty flip buffers with kmalloc objects in rings. In the
normal situation for an IRQ driven serial port at typical speeds the
behaviour is pretty much the same, two buffers end up allocated and the
kernel cycles between them as before.

When there are delays or at high speed we now behave far better as the
buffer pool can grow a bit rather than lose characters. This also means
that we can operate at higher speeds reliably.

For drivers that receive characters in blocks (DMA based, USB and
especially virtualisation) the layer allows a lot of driver specific
code that works around the tty layer with private secondary queues to be
removed. The IBM folks need this sort of layer, the smart serial port
people do, the virtualisers do (because a virtualised tty typically
operates at infinite speed rather than emulating 9600 baud).

Finally many drivers had invalid and unsafe attempts to avoid buffer
overflows by directly invoking tty methods extracted out of the innards
of work queue structs. These are no longer needed and all go away. That
fixes various random hangs with serial ports on overflow.

The other change in here is to optimise the receive_room path that is
used by some callers. It turns out that only one ldisc uses receive room
except asa constant and it updates it far far less than the value is
read. We thus make it a variable not a function call.

I expect the code to contain bugs due to the size alone but I'll be
watching and squashing them and feeding out new patches as it goes.

Because the buffers now dynamically expand you should only run out of
buffering when the kernel runs out of memory for real.  That means a lot of
the horrible hacks high performance drivers used to do just aren't needed any
more.

Description:

tty_insert_flip_char is an old API and continues to work as before, as does
tty_flip_buffer_push() [this is why many drivers dont need modification].  It
does now also return the number of chars inserted

There are also

tty_buffer_request_room(tty, len)

which asks for a buffer block of the length requested and returns the space
found.  This improves efficiency with hardware that knows how much to
transfer.

and tty_insert_flip_string_flags(tty, str, flags, len)

to insert a string of characters and flags

For a smart interface the usual code is

    len = tty_request_buffer_room(tty, amount_hardware_says);
    tty_insert_flip_string(tty, buffer_from_card, len);

More description!

At the moment tty buffers are attached directly to the tty.  This is causing a
lot of the problems related to tty layer locking, also problems at high speed
and also with bursty data (such as occurs in virtualised environments)

I'm working on ripping out the flip buffers and replacing them with a pool of
dynamically allocated buffers.  This allows both for old style "byte I/O"
devices and also helps virtualisation and smart devices where large blocks of
data suddenely materialise and need storing.

So far so good.  Lots of drivers reference tty->flip.*.  Several of them also
call directly and unsafely into function pointers it provides.  This will all
break.  Most drivers can use tty_insert_flip_char which can be kept as an API
but others need more.

At the moment I've added the following interfaces, if people think more will
be needed now is a good time to say

 int tty_buffer_request_room(tty, size)

Try and ensure at least size bytes are available, returns actual room (may be
zero).  At the moment it just uses the flipbuf space but that will change.
Repeated calls without characters being added are not cumulative.  (ie if you
call it with 1, 1, 1, and then 4 you'll have four characters of space.  The
other functions will also try and grow buffers in future but this will be a
more efficient way when you know block sizes.

 int tty_insert_flip_char(tty, ch, flag)

As before insert a character if there is room.  Now returns 1 for success, 0
for failure.

 int tty_insert_flip_string(tty, str, len)

Insert a block of non error characters.  Returns the number inserted.

 int tty_prepare_flip_string(tty, strptr, len)

Adjust the buffer to allow len characters to be added.  Returns a buffer
pointer in strptr and the length available.  This allows for hardware that
needs to use functions like insl or mencpy_fromio.

Signed-off-by: Alan Cox <alan@redhat.com>
Cc: Paul Fulghum <paulkf@microgate.com>
Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
Signed-off-by: Serge Hallyn <serue@us.ibm.com>
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: John Hawkes <hawkes@sgi.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-10 08:01:59 -08:00
Tobias Klauser
fe971071a8 [PATCH] drivers/char: Use ARRAY_SIZE macro
Use ARRAY_SIZE macro instead of sizeof(x)/sizeof(x[0]) and remove
duplicates of ARRAY_SIZE.

Signed-off-by: Tobias Klauser <tklauser@nuerscht.ch>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-10 08:01:56 -08:00
Alexey Dobriyan
aed615a95f [PATCH] Disable rio on 64-bit platforms
Do it via Kconfig rather than via #error.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-10 08:01:26 -08:00
Olaf Hering
44456d37b5 [PATCH] turn many #if $undefined_string into #ifdef $undefined_string
turn many #if $undefined_string into #ifdef $undefined_string to fix some
warnings after -Wno-def was added to global CFLAGS

Signed-off-by: Olaf Hering <olh@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-07-27 16:26:08 -07:00
Amit Gud
efe1ec2783 [PATCH] pci: remove deprecates
Replace pci_find_device() with more safer pci_get_device().

Signed-off-by: Amit Gud <gud@eth.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-06-27 21:52:38 -07:00
Adrian Bunk
97998d8fdb [PATCH] drivers/char/rio/: kill rio_udelay
There's no need for a function that only calls udelay.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-25 16:25:10 -07:00