hpt366.c: wrong timings used since 2.6.8
Hi there,
i have an HPT372A (rev 02) (PCI_DEVICE_ID_TTI_HPT372) and since 2.6.8 i've got an Ooooops.
I saw that hpt366.c got support for HPT372_N_ and its special timings, but that timings have been used for my HPT372_A_ and caused the Oops.
I did the following and now it works:
-------------------------------------------
drivers/ide/pci/hpt366.c 2004-08-26 23:22:56.000000000 +0200 renamed from drivers/ide/pci/hpt366.c 2004-08-26 19:42:16.000000000 +0200 +2 -2
@@ -881,7 +881,7 @@ static int __devinit init_hpt37x(struct /* interrupt force enable */ pci_write_config_byte(dev, 0x5a, (reg5ah & ~0x10)); - if(dmabase) + if(dev->device == PCI_DEVICE_ID_TTI_HPT372N && dmabase) { did = inb(dmabase + 0x22); rid = inb(dmabase + 0x28);
@@ -1132,7 +1132,7 @@ static void __devinit init_hwif_hpt366(i unsigned long dmabase = hwif->dma_base; int is_372n = 0; - if(dmabase) + if(dev->device == PCI_DEVICE_ID_TTI_HPT372N && dmabase) { did = inb(dmabase + 0x22); rid = inb(dmabase + 0x28);
-------------------------------------------
Not to also check dev->device for the N-Version at that two places (which are used also for other versions) seems to be wrong.
Kind Regards
Folke Ashberg
Signature · 3 lines
Folke Ashberg [email protected] www.ashberg.de
Quoted 2 lines · Folke Ashberg
I saw that
hpt366.cgot support forHPT372_N_and its special timings, but that timings have been used for myHPT372_A_and caused the Oops.
The change you suggest is definitely wrong and will cause disk corruption on the 372N
Quoted 1 line
I did the following and now it works:
Please post the actual oops data and if you can the rid/did. The 372N is identified by two things - PCI ID _or_ RID/DID. Not all 372N cards have the unique PCI ID.