680 Commits

Author SHA1 Message Date
sos
e39859cafe Fix the register timings for AMD/VIA/nVidia chipsets. 2003-12-18 17:36:41 +00:00
sos
8b0e0833ec Add support for the SiS 661 chipset (using SiS 963 south). 2003-12-18 08:07:05 +00:00
sos
55beee1cca Fix compilation on 64bit archs. 2003-12-16 19:41:38 +00:00
sos
a1979e4f7e Print the LBA on failing R/W commands. 2003-12-15 20:43:17 +00:00
sos
fa790cf424 Finetune last commit, we need to take care of empty channels. 2003-12-10 23:06:24 +00:00
sos
e6cf44c49d Add back the national support, this was removed by accident earlier. 2003-12-09 19:13:50 +00:00
sos
8b107990e3 More errata fixing for the SiI3112A disaster chip:
Serialize access to the SATA channels, the chip messes up if
both channels are used at the same time.

The SiI3112 hereby takes the price as the most crappy SATA chip in
existance by a significant amount.

My advise to our userbase is to avoid this chip like the plague...
2003-12-08 09:22:20 +00:00
sos
8a088743db Fix more problems with the Silicon Image 3112A:
Setup decent transfer mode defaults as some BIOS's seem to put in
things that it *knows* doesn't work.
(Note to BIOS writers: stop doing that nonsense, we will get things
working with your crappy HW anyways, and then recommend users to buy
someone else's products that "just works", thankyou.. )

Limit the device transfer mode to ATA100/UDMA5 on generic SATA.
 Since we dont know if the user is using a pure SATA device or an
old PATA drive with a SATA converter dongle, we need to limit the
speed used here to cover up the problems with Marvell ATA-SATA bridges
used in lots of SATA products.

This workaround is enabled for all detectable SATA controllers as they
seem to have semilar problems here. One notable exception is all the
Promise pdc2037x chips which just always work (cudos to Promise!).
2003-12-08 08:27:52 +00:00
sos
7df01b5cbc Try a little harder to catch when fixate finishes.
On the <QSI CD-RW/DVD-ROM SBW-242> that failed causing burncd to
wait forever...
2003-12-07 23:15:22 +00:00
scottl
a6ef4bf45a Fix a potential problem with atapi-cam where an incorrect flag is passed
into the ata queueing layer.

Approved by:	re
2003-12-05 01:02:46 +00:00
sos
86b39578a0 Fix for the missing slave problem.
Approved by: re@
2003-12-03 15:32:53 +00:00
sos
e57603da9f Fix modesetting on ISA only systems.
Approved by: re@
2003-12-03 13:40:26 +00:00
sos
396e8abc85 Fix ata-card.
The altio resource magic no longer worked probably due to other changes
in the kernel. Redo that part so it also fits better into ATAng.
Fix detach so it doesn't panic the system when a pccard device is
yanked.

Approved by: re@
2003-11-30 16:27:59 +00:00
sos
9bcba46103 Workaround for errata on early versions of the sii3112.
Approved by: re@
2003-11-28 19:01:28 +00:00
sos
a7fe60b249 Correct the former patch, I accidently committed the wrong version.
Approved by: re@
2003-11-24 14:54:41 +00:00
sos
fbc1154fb8 Fix panic on certain failed configs.
Approved by: re@
2003-11-24 14:22:30 +00:00
sos
dbb35f2dd3 Be less noisy when GEOM probes around during boot if drive contains
invalid media (ie empty CD/DVD)

Approved by: re@
2003-11-24 14:20:19 +00:00
sos
2c3c1553db Fix support for the cmd646 chip.
Spotted by: tmm
reviewed by: re@
2003-11-21 22:58:56 +00:00
sos
7755abc4df Add support for the SiS964 ATA/SATA southbridge.
This could not have been done without the support from kuriyama.

Approved by: re@
2003-11-18 15:27:28 +00:00
sos
b25c284c76 Work around the problem that some CDROM drives might return different
TOC's for the same media!! that borks up GEOM.
Although this looks like bad HW the following patch removes the
chance for GEOM panic'ing.

Approved by: re@
2003-11-18 15:23:37 +00:00
sos
ebe00702c0 Centralise mode setting. Instead of doing it in all subdrivers, do
it in ata-all.c where it belongs.

Prime controller HW by always setting PIO mode first in attach.
2003-11-11 14:55:36 +00:00
sos
f94d8d190f Update the dump code to flush buffers at the end of the dump
to avoid loosing evt cached data.
2003-11-11 07:49:45 +00:00
scottl
b5775784dd Free the ata_request struct after we are done using it. This should stop
the memory leak seen when using ATAPICAM.
2003-11-09 20:46:08 +00:00
sos
1528f8f6b7 Fix typo in breaking up requests to size limit.
Found by: Peter Edwards <pmedwards@eircom.net>
2003-11-09 10:11:15 +00:00
sos
2b6b524b73 Remove the NOGIANT flag again, it was premature. 2003-11-08 09:56:34 +00:00
sos
4c2de3d46a Better attempt at fooling GEOM into working with burnable media. 2003-11-07 08:31:09 +00:00
sos
d7dd8dce01 Pull ataraid out from under giant.
Use the right bio_* fields for internal stuff.
2003-11-05 15:41:20 +00:00
des
a58f9feb7e Move sysctl declarations next to the corresponding tunable declarations.
Add a sysctl declaration for hw.ata.atapi_dma, which had gone MIA (though
setting it in loader.conf still worked, it was not visible at runtime)

Approved by:	sos
2003-11-03 09:25:02 +00:00
sos
7908dcfbce Fix burning of CD's that got broken by the GEOM'ification.
GEOM was not designed to handle media that does not have
a size. Blank CD's are of that type, so cheat and set the
media size to -1. This allows burning to work, but makes
GEOM issue outofrange reads that makes the ATAPI subsystem
spew out a few warnings. GEOM should be tought about this.

GEOM was not designed to handle changing the sectorsize
between opens. Writing multitack CD's with both audio and
data tracks needs to change sector size on the fly. We
cheat here and stuff the current sectorsize into GEOM
private internals. GEOM should grow some clean way for this.
2003-11-02 22:24:47 +00:00
sos
3cc8e8cc8d On ATA control commands return the registers in the request. 2003-11-02 22:04:53 +00:00
sos
8cb7424022 GEOM'ify atapi-cd. Original patch by phk, subtle changes by me. 2003-11-01 09:44:33 +00:00
sos
4034aaaff9 Fix cable detection on AMD chips. 2003-11-01 09:30:15 +00:00
sos
d72fb90a16 Add support for the VIA 8237 (both PATA and SATA part).
Cleanup the SATA support a bit now we are here anyways.
2003-10-30 13:16:21 +00:00
sos
67cd4eebae Cleanup the interrupt code that deals with the busmaster bits. 2003-10-28 21:08:14 +00:00
sos
b0cc5e450b This should allow us to boot with DMA enabled on unknown PCI ATA
chipsets, well at least newer ones...
2003-10-28 19:01:48 +00:00
sos
63e0f3bdf5 Properly unload the DMA SG list on errors. 2003-10-21 19:25:20 +00:00
sos
08d97161dc Fix the DMA problem that most severely hit on the DS3112a SATA chip
in connection with Marvell based SATA->PATA dongles.

The problem was caused by a combination of things working
together to make it hard to spot...

The ATA driver has always started the ATA command, then build
the SG list for DMA and then finally started the DMA engine.
While this is according to specs, it poses a potential
problem as some controllers apparently do not allow for unlimitted
time between starting the ATA command and starting the DMA engine.

At about the same time as ATAng was committed there were lots
of other changes applied, some of which was locking in parts
that causes the busdma load functions to take significantly
longer to load the SG list.

This pushed the time spent between starting the ATA command and
starting the DMA engine over the hill for some controllers
(especially the Silicon Image DS3112a) and caused what looked
like lost interrupts.

The solution is to get all the SG list work or rather all
busdma related stuff done before we even try to start anything.

This has the nice side effect of seperating busdma out the
way it should be, so the working of the ATA machinery is not
cluttered up with busdma droppings, making the code easier
to read and understand.
2003-10-21 19:20:37 +00:00
silby
f0e686a675 Change all SYSCTLS which are readonly and have a related TUNABLE
from CTLFLAG_RD to CTLFLAG_RDTUN so that sysctl(8) can provide
more useful error messages.
2003-10-21 18:28:36 +00:00
sos
b85e19be51 Up the alignment requirement of the SC1100 to 16 bytes, it has all the bugs and then some of its Cyrix inheritance.
Set the max_iosize for the Cyrix to 63K as the SC1100.
2003-10-21 08:53:29 +00:00
sos
e83edc4bf6 If just gcc could make up its mind... 2003-10-20 14:28:37 +00:00
sos
0468baeb3f Only return valid DMA error bits. 2003-10-20 13:45:11 +00:00
sos
c0bf81d66c Up delay from 10 to 100ms after reset, this helps some slow devices
get their act together before we start probing.
2003-10-20 13:44:33 +00:00
sos
cff8e144fe Only announce ECC errors when its only that. 2003-10-20 13:32:42 +00:00
phk
466d3b80d8 No need to initialize bio_pblkno from bio_blkno, disksort uses bio_offset. 2003-10-18 17:24:51 +00:00
sos
3d089cc2b5 Reintroduce the "recovered from lost interrupt" code, but in a new
(hopefully) panic safe way.

Why the interrupts are lost is still a mystery, to me at least.
2003-10-14 16:53:13 +00:00
sos
7712a47b75 Redo the code that handles eject/close. 2003-10-12 13:11:57 +00:00
sos
e9cd93f034 Avoid potential race on ATA_R_DONE. 2003-10-12 12:38:03 +00:00
sos
e0cb3af529 Put devices into sleep mode (ie spin down) on detach. 2003-10-12 12:37:11 +00:00
sos
4f4aab360e Up timeout to 10s (from 5) in r/w commands. 2003-10-12 12:35:44 +00:00
sos
10cc9981e2 Use isprint instead of isalpha in determining valid ident string. 2003-10-12 11:10:41 +00:00