Commit Graph

541 Commits

Author SHA1 Message Date
sos
6fe35ffd35 Be more carefull on nulling the ATAPI magic for fake slave.
Skip polling devices that keeps returning 0xff early (ie no HW there).
2003-08-28 09:15:05 +00:00
sos
2901a39d0d Make sure to call start when retrying. 2003-08-28 08:22:53 +00:00
thomas
967df3d947 Add missing braces. Fixes boot-time kernel panic with ATAng and ATAPI/CAM.
Reviewed by:	roberto
2003-08-28 03:56:04 +00:00
sos
faade93c8f Return the translated result code from ATA/ATAPI commands. 2003-08-27 15:27:56 +00:00
sos
3eeccddac7 Hopefully Fix problem with probing some ATAPI devices, while still
trying to avoid the "fake slave" problem.
2003-08-27 11:21:30 +00:00
sos
17b165ad69 Try to get rid of the fake slave problem. 2003-08-25 13:06:13 +00:00
sos
fd78182c7c Cleanup the dma int/alloc/free code. 2003-08-25 11:13:04 +00:00
sos
1c87c82d4e Unify prototypes.
Cosmetics.
2003-08-25 09:01:49 +00:00
sos
fee680ed0c Only call FLUSH_CACHE on devices that say they can.
This will get rid of the warnings issued at shutdown (that seems to
worry alot of users), but will also no flush cache on lots of
devices that can, but doesn't set the right support bits...
2003-08-25 07:59:50 +00:00
sos
dcf768a2c4 Dont check the cable bit on ich5 when on the SATA channel. 2003-08-25 07:45:54 +00:00
sos
a6eabded19 Sync with local version (cosmetics) 2003-08-24 19:58:11 +00:00
sos
2b6657af81 There is no detach func for PCI ATA devs. 2003-08-24 19:55:41 +00:00
sos
be85bddf34 Fix ad_dump top actually produce a dump.
Reported by: Tor Egge <Tor.Egge@cvsup.no.freebsd.org>
2003-08-24 19:50:22 +00:00
obrien
c63dab466c Use __FBSDID().
Also some minor style cleanups.
2003-08-24 17:55:58 +00:00
sos
acd43345e5 This is a major rework of the ATA driver (ATAng)
Restructure the way ATA/ATAPI commands are processed, use a common
ata_request structure for both. This centralises the way requests
are handled so locking is much easier to handle.

The driver is now layered much more cleanly to seperate the lowlevel
HW access so it can be tailored to specific controllers without touching
the upper layers. This is needed to support some of the newer
semi-intelligent ATA controllers showing up.

The top level drivers (disk, ATAPI devices) are more or less still
the same with just corrections to use the new interface.

Pull ATA out from under Gaint now that locking can be done in a sane way.

Add support for a the National Geode SC1100. Thanks to Soekris engineering
for sponsoring a Soekris 4801 to make this support.

Fixed alot of small bugs in the chipset code for various chips now
we are around in that corner anyways.
2003-08-24 09:22:26 +00:00
imp
c23aaeeba4 Prefer new location of pci include files (which have only been in the
tree for two or more years now), except in a few places where there's
code to be compatible with older versions of FreeBSD.
2003-08-22 05:54:52 +00:00
njl
1cd634adc1 Add a PATH_INQ flag, PIM_NO_6_BYTE, which indicates the SIM never wishes to
receive 6 byte commands.  Add a check for this flag to da(4) and cd(4) so
that they honor it.  This is a quick workaround for many devices (especially
USB) that require da(4) quirks to operate.  The more complete approach is
to finish the new transport code which will be aware of the SCSI version a
transport implements.

MFC after:	1 day
2003-07-28 06:15:59 +00:00
sos
50b0b9ea2f Update the SATA support code to work more correctly with
real SATA disks now that I can test it.

Add support for the SiI 3112 SATA chip using memory mapped I/O.
Update the support for the SiI 0680 to use the memio interface as well.

Sponsored by:	David Leimbach <leimy2k@mac.com> (3112 based controller)
Sponsored by:	FreeBSD Systems (www.FreeBSDsystems.com) (SATA disks)
2003-07-02 10:50:44 +00:00
scottl
4d495abb9d Mega busdma API commit.
Add two new arguments to bus_dma_tag_create(): lockfunc and lockfuncarg.
Lockfunc allows a driver to provide a function for managing its locking
semantics while using busdma.  At the moment, this is used for the
asynchronous busdma_swi and callback mechanism.  Two lockfunc implementations
are provided: busdma_lock_mutex() performs standard mutex operations on the
mutex that is specified from lockfuncarg.  dftl_lock() is a panic
implementation and is defaulted to when NULL, NULL are passed to
bus_dma_tag_create().  The only time that NULL, NULL should ever be used is
when the driver ensures that bus_dmamap_load() will not be deferred.
Drivers that do not provide their own locking can pass
busdma_lock_mutex,&Giant args in order to preserve the former behaviour.

sparc64 and powerpc do not provide real busdma_swi functions, so this is
largely a noop on those platforms.  The busdma_swi on is64 is not properly
locked yet, so warnings will be emitted on this platform when busdma
callback deferrals happen.

If anyone gets panics or warnings from dflt_lock() being called, please
let me know right away.

Reviewed by:	tmm, gibbs
2003-07-01 15:52:06 +00:00
grehan
a82f10f6c9 Prevent probing the secondary channel on CMD646 controllers if the
channel has been disabled by BIOS. This prevents a bus timeout
machine check on B&W G3 PowerMacs, which have a primary-only CMD646
on the motherboard.

Approved by: sos
Obtained from: NetBSD
2003-06-27 10:11:54 +00:00
imp
1653f47186 Remove check to see if the get resource for the second resource
succeeds.  There is a difference between how OLDCARD and NEWCARD deal
with their resources, and this code exposes that difference.  I'm not
sure which behavior is correct, and will need to look into that in
more detail.  However, it appears that we go ahead and allocate the
right thing in both cases that I have access to (CF cards, CDROM, and
external ata enclosures), so go ahead and ignore the failure to get
the resource for the other rid.  There's already another check to make
sure that the actual allocation works correctly, and that should be
sufficient to catch cases that don't work.

Submitted by: wpaul and iedowse
2003-06-27 03:25:43 +00:00
sos
2104a46649 Add support for the HighPoint HPT302 & HPT371
HW sponsored by:	Martin Blapp <mbr@FreeBSD.ORG>
2003-06-19 15:11:04 +00:00
imp
ec215fe3e9 Add FREECOM PCCARD-IDE to the mix. It doesn't have a manufacturer or
product ID, so we have to use the CIS strings to ID it.

dmesg by: Christian Laursen
2003-06-17 12:33:53 +00:00
njl
ea1ca84312 Merge common XPT_CALC_GEOMETRY functions into a single convenience function.
Devices below may experience a change in geometry.

* Due to a bug, aic(4) never used extended geometry.  Changes all drives
  >1G to now use extended translation.
* sbp(4) drives exactly 1 GB in size now no longer use extended geometry.
* umass(4) drives exactly 1 GB in size now no longer use extended geometry.

For all other controllers in this commit, this should be a no-op.

Looked over by:	scottl
2003-06-14 22:17:41 +00:00
sos
2bd32bb6f3 Fix the setup of old Promise controllers, clocks was not setup right
causing way too low transfer rates.

Enable interrupts on old CMD64[89] chips, apparently some bogus BIOS's
doesn't get this right.
2003-06-07 15:19:16 +00:00
imp
c3d6e4dcef Add support for generic PMCICA ATA CARD 2003-06-03 01:30:55 +00:00
sos
4f3a6ab5ad Print the right position on disk errors
Approved by: re@
2003-05-19 13:43:12 +00:00
sos
17d362a0bf Unbork the chip locating code.
Approved by: re@
2003-05-19 13:42:23 +00:00
sos
3602c284c1 Support the ICH5 SATA part.
Fix HPT374 UDMA133 timing.
Fix Promise ID.
Cosmetics on probe print for Promise & HPT.

Approved by: re
2003-05-18 16:45:48 +00:00
sos
a24b07885a Add string for SATA150
Approved by: re
2003-05-18 16:43:08 +00:00
thomas
5608416700 In atapi_cam_reinit_bus, only call reinit_bus if the ATAPI channel
has already been registered with ATAPI/CAM (else there is nothing
to do). atapi_cam_reinit_bus may be called before the bus is
registered if an ATAPI command times out during the boot sequence.

PR:		i386/51421
Reviewed by:	roberto
Approved by:	re (rwatson)
MFC after:	1 week
2003-05-14 14:20:22 +00:00
sos
9096783972 Fix typo (that even got cut/pasted 2 times)
Found by:	phk
Approved by:	re@
2003-05-12 16:43:13 +00:00
phk
ae479db7f7 Fix an off-by-1 error.
Found by:	FlexeLint
Reviewed by:	sos
Approved by:	re/rwatson
2003-05-12 15:26:05 +00:00
sos
f4683501f3 Add a couble new Intel PCI id's
Approved by: re@
2003-05-10 14:49:19 +00:00
jhb
503dbfc11c Acquire Giant at the start of the raid rebuild kthreads.
Reported by:	Masachika ISHIZUKA <ishizuka@ish.org>
Reviewed by:	sos
Approved by:	re (bmah)
2003-05-08 16:38:14 +00:00
jhb
cbf2af31a0 Add PCI ID's for the Intel ICH5 (82801EB) chipset.
Approved by:	re (murray)
Sponsored by:	The Weather Channel
2003-05-06 19:31:56 +00:00
sos
068969a74d Add a missing ~ when clearing flags in close.
PR: 35392
2003-05-05 10:11:17 +00:00
sos
e39ff77330 Change the way loadbalancing works on RAID1's.
Based on code partially by me and by <Tor.Egge@cvsup.no.freebsd.org>.
2003-05-04 16:17:54 +00:00
sos
0d0a999ff9 Implement dump function for ATA RAID's. Minor fixes by me...
Submitted by: Tor Egge <Tor.Egge@cvsup.no.freebsd.org>
2003-05-04 12:16:47 +00:00
sos
874ca20952 Grap the ATA lock on all channels before suspend, this makes certain
that we have no outstanding ops in transit, which would cause problems
on resume.
2003-05-04 09:34:14 +00:00
sos
7113858cc7 Fix locking on reinit. 2003-05-03 18:28:43 +00:00
sos
43f1ae07c3 Add the pdc20268r as candidate for the TX test. 2003-05-03 18:26:00 +00:00
sos
f1adb32797 Add flushing of devices on shutdown.
Note: this might print failure messages on some systems, unfortunatly
the info from the device, stating if flushing is supported, cannot be trusted
so the operation is always issued on all devices, just in case...
2003-05-02 13:47:44 +00:00
sos
66a49a9d90 Add ioctl to add a spare disk to a RAID array.
Fix the discovery of RAID's to not grap unused disks.
Change the probe printing of a RAID a bit.
2003-05-02 12:41:44 +00:00
sos
485a0c5f9a Dont try to call detached interrupt routine. 2003-05-02 12:37:03 +00:00
sos
9f4de55ff2 I'm pleased to announce that Promise is now supporting the FreeBSD
project by providing documentation (under NDA) and hardware for
testing. This commit is the first result of the cooperation, and
adds support for several of their new controllers that we didn't
support before (and probably newer would have without this arrangement).

Add support for the Promise SATA150 TX2/TX4 and the Promise TX4000
controllers. This also adds support for various motherboard fitted
Promise SATA/ATA chips.
Note that this code uses memory mapped registers to minimize overhead.
I belive FreeBSD has made another first in the Open Source world
by being able to release support for this :)
2003-05-01 06:20:50 +00:00
sos
4cf0da39d0 Relax the test for when to use LBA instead of CHS size. 2003-05-01 06:17:30 +00:00
imp
bc99b2572b MF-p4:
"Ian gave me this patch"  I assume this is iadowse@.

Also, pull in a few devices NetBSD's table.  More are there, but I need
to properly move them to pccarddev before including them here.
2003-04-26 22:19:02 +00:00
sos
a733e8a7dd Cosmetics. 2003-04-16 08:30:40 +00:00
sos
212b001639 Fix a panic with Cenatek controllers. 2003-04-16 08:30:10 +00:00