On Thu, 30 Apr 2009 13:34:37 -0700, ron minnich rminnich@gmail.com wrote:
On Thu, Apr 30, 2009 at 1:11 PM, Joseph Smith joe@settoplinux.org
wrote:
Right. So in my example: |- USB #1 |- USB #2
|- USB #3
|-EHCI {0x00,(0x1d<<3)|0x0, {{0x60, 0x1ef8}, {0x63, 0x1ef8}, {0x62, 0x1ef8}, {0x6b, 0x01ef8}}, 0x0, 0x0},
is the same as:
{0x00,(0x1d<<3)|0x0, {{0x60, 0x1ef8}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0}, /* [A] USB UHCI 1 */ {0x00,(0x1d<<3)|0x1, {{0x60, 0x1ef8}, {0x63, 0x1ef8}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0}, /* [B] USB UHCI 2 */ {0x00,(0x1d<<3)|0x2, {{0x60, 0x1ef8}, {0x63, 0x1ef8}, {0x62, 0x1ef8}, {0x00, 0x00000}}, 0x0, 0x0}, /* [C] USB UHCI 3 */ {0x00,(0x1d<<3)|0x7, {{0x60, 0x1ef8}, {0x63, 0x1ef8}, {0x62, 0x1ef8}, {0x6b, 0x01ef8}}, 0x0, 0x0}, /* [D] EHCI */
yes, but what I have been trying to explain (badly) is that you don't want to think of those functions as devices. They're functions. So, in your sample table above, all the entries save the first one are illegal -- PIRQ tables don't have non-zero functions. They only describe how the (one or more) wires from a device are hooked up.
[A] USB UHCI 1 [B] USB UHCI 2 [C] USB UHCI 3 [D] EHCI
I still think your diagram is misleading in that it implies wires that are not really there -- correct me if I got this wrong again.
But the way I view it is that the device (which used to be a multi-function board or chip) is what is physically wired to the four IRQ lines. To put it another way, the swizzling you show occurfing inside the device doesn't really occur; that kind of INT swizzling is done on the mainboard itself. It's not possible, for example, for USB UHCI2 to use INTA -- the wires don't exist. But your diagram implies any of the four functions can use any of the four interrupts, which is not correct.
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.
So I draw it differently, with one device with INT A,B,C,D and the functions wired internally, one to each INT.
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?