blob: faa650b8da90c3a374343439cb428aa1b61fb166 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
June 08, 1999 01:23:34
Paul Mackerras went through the OHCI (& USB code) to fix most of the
endianness issues so that the code now works on Linux-PPC. He also
simplified add_td_to_ed to be simpler & atomic to the hardware.
May 16, 1999 16:20:54
EDs are now allocated dynamically from their device's pool. Root hub
status changes should stop the infinite "no device connected" messages
that occurred after removing a device.
TODO:
~ Add the concept of a td_group to lump TDs associated with a single
data transfer request from the higher layers. This will be needed
for bulk and all larger transfers that will span multiple TDs but
which need to allocate/free them as a group as things happen. I
am thinking about create_td_group and free_td_group functions...
~ Add bulk transfer support.
~ Add Isochronous transfer support. These have their own special
format TDs to allow for several DMA data pointers. Kinda neat, but
likely harder to use through a generic interface in practice.
~ Support dynamic allocation & growth of the TD/ED pools. Merge them
into global pools rather than a today's static per device allocation.
KNOWN BUGS:
~ Unplugging a hub causes khubd to Oops. I don't think this is
directly related to OHCI, but due to the fact that the interrupt TD
for the hub is never stopped. We need a usb_release_irq() that gets
called using the "IRQ handle" that should be returned by
usb_request_irq().
May 09, 1999 16:25:58
Cool, things are working "well" now. (I'm not getting oops's from the
OHCI code anyways.. ;). I can attach a usb hub and mouse in any
possible arrangement of the two and they get configured properly.
You can see that the mouse Interrupt transfers are occuring and being
acknowledged because /proc/interrupts usb-ohci goes up accordingly with
mouse movements/events. That means the TD at least returns some data
and requeues itself.
Device attach/detach from the root hub is not working well. Currently
every interrupt checks for root hub status changes and frame number
overflow interrupts are enabled. This means you shouldn't have to
wait more than 32-33 seconds for the change to occur, less if there is
other activity. (due to checking in the WDH caused interrupts)
My OHCI controller [SiS 5598 motherboard] doesn't seem to play well
with the RHSC interrupt so it has been disabled. The ohci_timer
should be polling but it not currently working, I haven't had time to
look into that problem.
However, when I tried telling X to use /dev/psaux for the mouse my
machine locked up...
- greg@electricrain.com
|