On Thu, 30 Apr 2009 14:55:59 -0700, ron minnich rminnich@gmail.com wrote:
On Thu, Apr 30, 2009 at 2:01 PM, Joseph Smith joe@settoplinux.org
wrote:
Right the INT lines A,B,C, and D are hard wired. But you can asign any
PIRQ
to a function and any available IRQ to the PIRQ these are software controlled.
The 3d register lists what functions can assert what interrupt lines. what is the value of 3d for each of these four device functions? You can use setpci to see. setpci -s bus:dev.fn 3d.b
Hmm. That is another way of looking at it. The doc does say the "device" acts as a interrupt router (which is INTA in this case). So the other
three
are directly connected to it? Like the attached image?
I doubt that is exactly it but I think it's closer to my internal picture.
I wish you could make your internal picture external, so I could see what it is then. So to test this I theory I should just be able to pluck out oh lets say function 2 on INTB. If everythings works great except USB2 than that theory is correct. On the otherhand if we loose USB2, USB3, and EHCI than we know they are routed through each other. Correct? Like this: {0x00,(0x1d<<3)|0x0, {{0x60, 0x1ef8}, {0x00, 0x00000}, {0x62, 0x1ef8}, {0x6b, 0x01ef8}}, 0x0, 0x0},
What the 3d register will tell you is what INT is wired to each function. So, e.g., I would guest that 3d is like this:
USB1 1 USB2 2 USB3 3 EHCI 4
Yup. 00:1d.0 USB Controller #1 - 0x3d = 0x01 00:1d.1 USB Controller #2 - 0x3d = 0x02 00:1d.2 USB Controller #3 - 0x3d = 0x03 00:1d.7 USB Controller EHCI - 0x3d = 0x04