[PATCH] fix for Toshiba ohci1394 quirk

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



After much testing and agony, I've discovered that my previous ohci1394 
quirk for Toshiba laptops is not 100% reliable.  It apparently fails to 
do the interrupt line change either correctly or in time, since in 
about 2 out of 5 boots, the kernel's irqdebug code will *still* disable 
irq 11 when the ohci1394 driver is loaded (at pci_enable_device time I 
think).

This patch switches things around a little in the workaround.  First, it 
removes the mdelay.  I didn't see a need for it and my testing has 
shown that it's not necessary for the quirk to work.

Secondly, instead of trying to change the interrupt line to what ACPI 
tells us it should be, this patch makes the quirk use the value in the 
PCI_INTERRUPT_LINE register.  On this laptop at least, that seems to be 
the right thing to do, though additional testing on other laptops 
and/or with actual firewire devices would be appreciated.

Thanks,
Jesse

Signed-off-by: Jesse Barnes <[email protected]>
diff --git a/arch/i386/pci/fixup.c b/arch/i386/pci/fixup.c
index 3984226..eeb1b1f 100644
--- a/arch/i386/pci/fixup.c
+++ b/arch/i386/pci/fixup.c
@@ -433,9 +433,8 @@ static void __devinit pci_post_fixup_tos
 		return; /* only applies to certain Toshibas (so far) */
 
 	/* Restore config space on Toshiba laptops */
-	mdelay(10);
 	pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, toshiba_line_size);
-	pci_write_config_word(dev, PCI_INTERRUPT_LINE, dev->irq);
+	pci_read_config_byte(dev, PCI_INTERRUPT_LINE, (u8 *)&dev->irq);
 	pci_write_config_dword(dev, PCI_BASE_ADDRESS_0,
 			       pci_resource_start(dev, 0));
 	pci_write_config_dword(dev, PCI_BASE_ADDRESS_1,
diff --git a/drivers/ieee1394/ohci1394.c b/drivers/ieee1394/ohci1394.c

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux