Re: I need some info on driver development status
Brought to you by:
aeb,
bencollins
From: Daniel K. <dan...@st...> - 2000-05-11 10:52:22
|
On Thu, 11 May 2000, Sebastien Rougeaux wrote: [No-go Sony CXD3222 w/ current OHCI driver] > Something wrong is happening during the bus reset phase, but there is > not much I can do without the proper hardware to figure it out... > I am starting to suspect that irqs are not detected properly... is the > irq shared with other devices ? Indeed it is shared, and it has worried me before. It looks like Sony saved a few lines and routes every PCI device to IRQ 9. Both CardBus controllers are actually active. The rest of the stuff shouldn't generate any interrupts. > Another stuff to look at is the > content of the phy registers (you might have to uncomment some > code and add a few debug lines in the driver source for that), and see > if there is something wrong (using the 1394 specs). I had only access to the OHCI specs so far but 1394 is on its way. I'll try to get my hands on the PHYs then. > Look also back > in the mailing list. Someone suggested to loop in the irq_handler until > the node id become valid... but I haven't done anything about that yet. Okay, I'll give it a try as well. Btw. is anyone else still seeing the no-nodes-on-bus problem with the CXD3222 chipset (that's Sony's OHCI-compliant chipset in latest Vaios)? Sebastien, below is a patch against the current ohci driver from CVS which you might want to consider. It does * process only those events in the IRQ handler that we haven't masked. * shut up interrupts from the card before freeing the IRQ. * not go through all ifs in the IRQ handler when there are no events to process. I think they are correct, however testing is a bit tough when the driver refuses to find any nodes on the bus. Well, my changes certainly didn't make things worse for me. ;) Regards, Daniel. Index: ohci1394.c =================================================================== RCS file: /cvsroot/linux1394/ieee1394/ohci1394.c,v retrieving revision 1.26 diff -u -r1.26 ohci1394.c --- ohci1394.c 2000/04/25 09:46:32 1.26 +++ ohci1394.c 2000/05/11 09:31:44 @@ -1538,7 +1538,9 @@ do { /* read the interrupt event register */ - event=reg_read(ohci, OHCI1394_IntEventSet); + event=reg_read(ohci, OHCI1394_IntEventClear); + if (!event) + return; /* clear the interrupt event register */ reg_write(ohci, OHCI1394_IntEventClear, event); @@ -1700,11 +1702,9 @@ "sequence"); #endif } - timeout--; - } while (event && timeout); + } while (--timeout); - if (event) PRINT(KERN_ERR, ohci->id, - "irq_handler timeout event=0x%08x", event); + PRINT(KERN_ERR, ohci->id, "irq_handler timeout event=0x%08x", event); } /* Put the buffer back into the dma context */ @@ -2571,6 +2571,9 @@ free_dma_fbuf_ctx(&ohci->fbuf_context[i]); } #endif + + /* Shut up card */ + reg_write(ohci, OHCI1394_IntMaskClear, OHCI1394_masterIntEnable); /* Free self-id buffer */ if (ohci->self_id_buffer) -- GNU/Linux Audio Mechanics - http://www.glame.de GPG Key ID 89BF7E2B - http://www.keyserver.net |