Subject: VT82C586A IDE Controller mode 5 problem
To: None <port-i386@netbsd.org>
From: Jay Nelson <jnelson@newsstand.com>
List: port-i386
Date: 07/20/2002 16:39:51
I have had no luck running this controller in DMA mode 5. I tried
changing the default in pciide.c to 5 with no luck, so it's clear I
don't understand the ide subsystem. According to the docs, this
controller supports UDMA 133 It appears that pciide.c and
pciide_apollo_reg.h need a change, but I don't know where to go
with this.

Could someone offer some guidance on what needs to be changed?

dmsg reports:

VIA Technologies VT82C586A IDE Controller (IDE mass storage, interface 0x8a, revision 0x06) at ? dev 17 function 1 (tag 0x80008900, intrtag 0x80008900, intrswiz
 0, intrpin 0x1, i/o on, mem on, no quirks): VIA Technologies unknown ATA controller
pciide0: bus-master DMA support present
pciide0: primary channel configured to compatibility mode
wd0 at pciide0 channel 0 drive 0: <WDC WD400BB-00CAA0>
wd0: drive supports 16-sector PIO transfers, LBA addressing
wd0: 32253 MB, 4092 cyl, 16 head, 63 sec, 512 bytes/sect x 66055248 sectors
wd0: 32-bit data port
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
pciide0: primary channel interrupting at irq 14
wd0(pciide0:0:0): using PIO mode 4

(I had it wired to PIO mode in the kernel configuration on this boot.)

The output of pcictl follows.

Thanks.

-- jay

PCI configuration registers:
  Common header:
    0x00: 0x05711106 0x02900007 0x01018a06 0x00002000

    Vendor Name: VIA Technologies (0x1106)
    Device Name: VT82C586A IDE Controller (0x0571)
    Command register: 0x0007
      I/O space accesses: on
      Memory space accesses: on
      Bus mastering: on
      Special cycles: off
      MWI transactions: off
      Palette snooping: off
      Parity error checking: off
      Address/data stepping: off
      System error (SERR): off
      Fast back-to-back transactions: off
    Status register: 0x0290
      Capability List support: on
      66 MHz capable: off
      User Definable Features (UDF) support: off
      Fast back-to-back capable: on
      Data parity error detected: off
      DEVSEL timing: medium (0x1)
      Slave signaled Target Abort: off
      Master received Target Abort: off
      Master received Master Abort: off
      Asserted System Error (SERR): off
      Parity error detected: off
    Class Name: mass storage (0x01)
    Subclass Name: IDE (0x01)
    Interface: 0x8a
    Revision ID: 0x06
    BIST: 0x00
    Header Type: 0x00 (0x00)
    Latency Timer: 0x20
    Cache Line Size: 0x00

  Type 0 ("normal" device) header:
    0x10: 0x00000000 0x00000000 0x00000000 0x00000000
    0x20: 0x0000dc01 0x00000000 0x00000000 0x05711106
    0x30: 0x00000000 0x000000c0 0x00000000 0x000001ff

    Base address register at 0x10
      not implemented(?)
    Base address register at 0x14
      not implemented(?)
    Base address register at 0x18
      not implemented(?)
    Base address register at 0x1c
      not implemented(?)
    Base address register at 0x20
      type: i/o
      base: 0x0000dc00, not sized
    Base address register at 0x24
      not implemented(?)
    Cardbus CIS Pointer: 0x00000000
    Subsystem vendor ID: 0x1106
    Subsystem ID: 0x0571
    Expansion ROM Base Address: 0x00000000
    Capability list pointer: 0xc0
    Reserved @ 0x38: 0x00000000
    Maximum Latency: 0x00
    Minimum Grant: 0x00
    Interrupt pin: 0x01 (pin A)
    Interrupt line: 0xff
    Capability register at 0xc0
      type: 0x01 (Power Management, rev. 1.0)

  Device-dependent header:
    0x40: 0x0509f20a 0x00c01c18 0x2000a8a8 0xb6b600ff
    0x50: 0x00000707 0x0000000c 0xa8a8a8a8 0x00000000
    0x60: 0x00000200 0x00000000 0x00000200 0x00000000
    0x70: 0x00000102 0x00000000 0x00000102 0x00000000
    0x80: 0x00080000 0x00000000 0x00000000 0x00000000
    0x90: 0x00000000 0x00000000 0x00000000 0x00000000
    0xa0: 0x00000000 0x00000000 0x00000000 0x00000000
    0xb0: 0x00000000 0x00000000 0x00000000 0x00000000
    0xc0: 0x00020001 0x00000000 0x00000000 0x00000000
    0xd0: 0x05710006 0x05711106 0x00000000 0x00000000
    0xe0: 0x00000000 0x00000000 0x00000000 0x00000000
    0xf0: 0x00000000 0x00000000 0x00000000 0x00000000