[Linux1394-cvslog] rev 826 - branches/linux-2.4
Brought to you by:
aeb,
bencollins
From: SVN U. <dm...@li...> - 2003-03-08 05:39:45
|
Author: dmaas Date: 2003-03-08 00:38:58 -0500 (Sat, 08 Mar 2003) New Revision: 826 Modified: branches/linux-2.4/ohci1394.c Log: revert bogus ohci1394 bus reset IRQ handler patch from rev 818 - cures infinite loop on module load Modified: branches/linux-2.4/ohci1394.c ============================================================================== --- branches/linux-2.4/ohci1394.c (original) +++ branches/linux-2.4/ohci1394.c 2003-03-08 00:39:00.000000000 -0500 @@ -2251,25 +2251,21 @@ } if (event & OHCI1394_busReset) { - int loops = 0; - /* The busReset event bit can't be cleared during the * selfID phase, so we disable busReset interrupts, to * avoid burying the cpu in interrupt requests. */ spin_lock_irqsave(&ohci->event_lock, flags); reg_write(ohci, OHCI1394_IntMaskClear, OHCI1394_busReset); - udelay(10); - while (reg_read(ohci, OHCI1394_IntEventSet) & OHCI1394_busReset) { - if (loops++ > 10000) { - hpsb_reset_bus(host, 1); - loops = 0; - DBGMSG(ohci->id, "Out of control loop, resetting"); - } - reg_write(ohci, OHCI1394_IntEventClear, OHCI1394_busReset); - spin_unlock_irqrestore(&ohci->event_lock, flags); - udelay(10); - spin_lock_irqsave(&ohci->event_lock, flags); + if (ohci->dev->vendor == PCI_VENDOR_ID_APPLE && + ohci->dev->device == PCI_DEVICE_ID_APPLE_UNI_N_FW) { + udelay(10); + while(reg_read(ohci, OHCI1394_IntEventSet) & OHCI1394_busReset) { + reg_write(ohci, OHCI1394_IntEventClear, OHCI1394_busReset); + spin_unlock_irqrestore(&ohci->event_lock, flags); + udelay(10); + spin_lock_irqsave(&ohci->event_lock, flags); + } } spin_unlock_irqrestore(&ohci->event_lock, flags); |