Messages in this thread Patch in this message |  | | From | Andris Pavenis <> | Subject | Re: Linux-2.4.20-pre4-ac1: i810_audio broken | Date | Wed, 28 Aug 2002 18:59:38 +0300 |
| |
On Wednesday 28 August 2002 18:21, Doug Ledford wrote: > On Wed, Aug 28, 2002 at 04:22:30PM +0300, Andris Pavenis wrote: > > On Wednesday 28 August 2002 15:51, Juergen Sawinski wrote: > > > Can you drop in the old (working) source into the new tree and see if > > > that works? If that works I'll try making a step by step patch series, > > > to see what breaks it. > > > > Today's tests were done in that way (I only replaced i810_audio.c, > > removed i810_audio.o, run 'make modules' and 'make modules_install' and > > tested the results). As I wrote earlier it seems that Dough's patch (to > > 2.4.20-pre1-ac2) broke driver > > (In an email Juergen sent to me privately he mentioned that on the ICH4 > the CIV register is now read-only where as on previous ICH chips it was > read-write, which is something I missed as far as changes to the chip are > concerned) > > Now, given the tidbit of information above, I would expect ICH4 chipsets > to break with the driver. We currently rely upon the ability to set the > CIV register to what we want in order to start the DMA where we want. If > that's now readonly, I'll have to rethink how I reset the DMA hardware and > how I will have to start recording the new DMA position instead of setting > the new DMA position. The one thing about this though, I would expect > this issue to cause previously non-working ICH4 chips to work poorly with > my patch instead of previously working ICH4 chips to now start working > poorly since my patch didn't change the (/me stops mid-sentence and > realizes that "yes, in fact there is a change in my patch to base DMA > operations that could cause this"). Hmmm...backup....try backing out my > changes to stop_dac and stop_adc (the part where I change how we do a DMA > engine reset every time we stop the dac and adc) and see if that solves > your problem. The changes to __stop_dac() and __stop_adc() are localized > actually and you should be able to safely leave all of those hunks out > without effecting the rest of the patch.
Tried, it helps for i810_audio.c both from 2.4.20-pre1-ac2 and 2.4.20-pre4-ac1. (Patch simply to be sure we're talking about the same thing). In both cases I put i810_audio.c in 2.4.20-pre4-ac1 source tree.
Andris
--- i810_audio.c-2.4.20-pre1-ac2 2002-08-28 09:50:44.000000000 +0300 +++ i810_audio.c 2002-08-28 18:51:34.000000000 +0300 @@ -732,8 +732,6 @@ outb(0, card->iobase + PI_CR); // wait for the card to acknowledge shutdown while( inb(card->iobase + PI_CR) != 0 ) ; - // reset the dma engine now - outb(0x02, card->iobase + PI_CR); // now clear any latent interrupt bits (like the halt bit) if(card->pci_id == PCI_DEVICE_ID_SI_7012) outb( inb(card->iobase + PI_PICB), card->iobase + PI_PICB ); @@ -784,8 +782,6 @@ outb(0, card->iobase + PO_CR); // wait for the card to acknowledge shutdown while( inb(card->iobase + PO_CR) != 0 ) ; - // reset the dma engine now - outb(0x02, card->iobase + PO_CR); // now clear any latent interrupt bits (like the halt bit) if(card->pci_id == PCI_DEVICE_ID_SI_7012) outb( inb(card->iobase + PO_PICB), card->iobase + PO_PICB ); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |