HPT370 controller set wrong udma mode

Oliver Feiler (kiza@gmx.net)
Thu, 10 Jan 2002 16:07:18 +0100


Hello,

My onboard (Epox 8KTA3+) HPT370 controller seems to set the wrong udma
transfer mode for the attached drive. Resulting in BadCRC errors. The drive
attached is an IBM DJSA-205 2.5" drive. It can do udma4 max.

The HD is connected with the controller with a 3.5"->2.5" adapter
cable that is only 40 pin. The controller BIOS shows that the drive uses
udma2. However when I boot Linux the HPT370 driver sets the drive to udma4.
Setting the mode manually with hdparm makes the drive work.

The drive is correctly accessed with udma2 when attached to the
VIA686B IDE controller. Cable type "40w" is shown in /proc/ide/via. Does the
HPT driver even detect if there is an 80w or 40w cable in place? The
chip should be able to distinguish this somehow since the correct mode is
shown in the BIOS.

The log messages for the ide controllers are (drive set to UDMA(66)):

Kernel is 2.4.16
[...]
VP_IDE: IDE controller on PCI bus 00 dev 39
VP_IDE: chipset revision 6
VP_IDE: not 100% native mode: will probe irqs later
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
VP_IDE: VIA vt82c686b (rev 40) IDE UDMA100 controller on pci00:07.1
ide0: BM-DMA at 0xa000-0xa007, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xa008-0xa00f, BIOS settings: hdc:pio, hdd:DMA
HPT370A: IDE controller on PCI bus 00 dev 70
PCI: Found IRQ 10 for device 00:0e.0
PCI: Sharing IRQ 10 with 00:09.0
HPT370A: chipset revision 4
HPT370A: not 100% native mode: will probe irqs later
ide2: BM-DMA at 0xcc00-0xcc07, BIOS settings: hde:DMA, hdf:pio
ide3: BM-DMA at 0xcc08-0xcc0f, BIOS settings: hdg:pio, hdh:pio
hda: IBM-DHEA-36481, ATA DISK drive
hdb: IBM-DJNA-351520, ATA DISK drive
hdd: Pioneer CD-ROM ATAPI Model DR-744 0102, ATAPI CD/DVD-ROM drive
hde: IBM-DJSA-205, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
ide2 at 0xbc00-0xbc07,0xc002 on irq 10
hda: 12692736 sectors (6499 MB) w/472KiB Cache, CHS=790/255/63, UDMA(33)
hdb: 30033360 sectors (15377 MB) w/430KiB Cache, CHS=1869/255/63, UDMA(33)
hde: 9767520 sectors (5001 MB) w/384KiB Cache, CHS=10336/15/63, UDMA(66)
hdd: ATAPI 32X CD-ROM drive, 128kB Cache, DMA

The drive settings after the boot:

/dev/discs/disc2/disc:

Model=IBM-DJSA-205, FwRev=JS1OAB7A, SerialNo=8ZY8Z353728
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=10336/15/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=DualPortCache, BuffSize=384kB, MaxMultSect=16, MultSect=off
CurCHS=10336/15/63, CurSects=9767520, LBA=yes, LBAsects=9767520
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 *udma4

Writing/reading data results in:

Jan 10 15:40:42 kiza kernel: hde: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Jan 10 15:40:42 kiza kernel: hde: dma_intr: error=0x84 { DriveStatusError BadCRC }
Jan 10 15:40:42 kiza kernel: hde: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Jan 10 15:40:42 kiza kernel: hde: dma_intr: error=0x84 { DriveStatusError BadCRC }
Jan 10 15:40:42 kiza kernel: hde: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Jan 10 15:40:42 kiza kernel: hde: dma_intr: error=0x84 { DriveStatusError BadCRC }
Jan 10 15:40:42 kiza kernel: hde: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Jan 10 15:40:42 kiza kernel: hde: dma_intr: error=0x84 { DriveStatusError BadCRC }
Jan 10 15:40:43 kiza kernel: ide2: reset: success

-- 
Oliver Feiler                                               kiza@gmx.net
http://www.lionking.org/~kiza/pgpkey              PGP key ID: 0x561D4FD2
http://www.lionking.org/~kiza/
-
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/