fix for Toshiba ohci1394 quirk
PATCH 1/1 fix for Toshiba ohci1394 quirk
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
arch/i386/pci/fixup.c +1 -2
@@ -433,9 +433,8 @@ static void __devinit pci_post_fixup_tosreturn ;/* 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,
drivers/ieee1394/ohci1394.c +0 -0
Greg, can you be sure this fix makes it upstream for 2.6.15?
With this patch applied, this laptop (a Toshiba Satellite M45 class box) and Linux get along pretty well. All the hardware, save the TI SD chip, is supported by Linux drivers (i9xx for graphics, ipw2200 wireless, sky2 ethernet, etc.). I'm pretty happy with it.
Thanks,
Jesse
Quoted 1 line · Jesse Barnes
Greg, can you be sure this fix makes it upstream for 2.6.15?
It's in my todo queue to make it there.
thanks,
greg k-h