Bug 21627

Summary: Chipset SiS630E / ATA SiS 5591
Product: Base System Reporter: roland <roland>
Component: kernAssignee: Søren Schmidt <sos>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Unspecified   
Hardware: Any   
OS: Any   

Description roland 2000-09-28 19:20:00 UTC
The SiS630E (recognized as SiS 5591) Driver will do only UDMA33.

Fix: 

Its not a fix but adds UDMA66 to the SiS 5591 for the
primary master.
Dont use a UDMA33-Device there because it will fallback
to plain PIO later and I dont know where to fix this...
Bonnie shows no difference between UDMA33 and UDMA66.

Insert the following in sys/dev/ata/ata-dma.c just bevore line #409:

if (udmamode >= 4 && scp->unit == 0 && device == ATA_MASTER ) {
  error = ata_command(scp, device, ATA_C_SETFEATURES, 0, 0, 0,
    ATA_UDMA4, ATA_C_F_SETXFER, ATA_WAIT_READY);
  if (bootverbose)
  ata_printf(scp, device, "%s setting UDMA4 on SiS chip\n",
    (error) ? "failed" : "success");
  if (!error) {
    pci_write_config(parent, 0x40 + (devno << 1), 0xa301, 2);
    scp->mode[ATA_DEV(device)] = ATA_UDMA4;
    return;
  }
}


From /var/run/dmesg.boot:

ata0-master: success setting UDMA4 on SiS chip
ad0: <QUANTUM FIREBALLP LM15/A35.0700> ATA-5 disk at ata0 as master
ad0: 14324MB (29336832 sectors), 29104 cyls, 16 heads, 63 S/T, 512 B/S
ad0: 16 secs/int, 1 depth queue, UDMA66
ad0: piomode=4 dmamode=2 udmamode=4 cblid=1

ata1-master: success setting UDMA2 on SiS chip
ad2: <ST313032A/3.09> ATA-4 disk at ata1 as master
ad2: 12419MB (25434228 sectors), 25232 cyls, 16 heads, 63 S/T, 512 B/S
ad2: 16 secs/int, 1 depth queue, UDMA33
ad2: piomode=4 dmamode=2 udmamode=4 cblid=1
How-To-Repeat: Install FreeBSD on a ASUS CUSI-FX with UDMA66-Disk.
Comment 1 Johan Karlsson freebsd_committer freebsd_triage 2000-10-06 21:07:32 UTC
Responsible Changed
From-To: freebsd-bugs->sos

Over to ATA maintainer.
Comment 2 Søren Schmidt freebsd_committer freebsd_triage 2000-11-14 09:06:44 UTC
State Changed
From-To: open->closed

This patch is bogus, it just sets ATA33 mode timing and pretends 
to be ATA66. Reeal support is coming as soon as I get docs from 
SiS
Comment 3 scs 2001-07-09 18:56:05 UTC
I have verified this problem still exists in the 4.3 stable release.
My workaround was to unset the UDMA mode in the bios, which at least
made the drive reachable.  Motherboard in question is a new (as of
7/1/2001) ASUS CUSI-FX, using SIS-630E chip set, BIOS release 1007m.

However, I was never able to successfully format and partition IDE
drives in this unit.  All attempts to write labels failed with messages
about slice 4 being too large to fit in the drive.  The only way I got a
successful install was to move the drive to another machine, format,
partition, and newfs it there, then return it to the CUSI-FX.  This
problem occurred with two different Seagate drives, one 10.005GB, one
8.4GB.

FYI, there were two other problems with this board.

The first was failure to properly recognize the (admittedly ancient)
CD-ROM.  Workaround was to manually set various BIOS options for it;
details on request.

The second (which I have not given up on) is failure to activate all
the USB ports.  Currently I have only been able to get activity on
the lower built-in port.  USB devices attached to other ports are not
seen by FreeBSD, and the devices themselves do not see the system
unless attached to that single port.  I continue to investigate.
-- 
   "The optimist proclaims that we live in the best of all possible worlds;
and the pessimist fears this is true."
	      -- James Branch Cabell, from 'The Silver Stallion', 1926.