History log of /freebsd-10.3-release/sys/dev/ata/ata-pci.h
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 296373 04-Mar-2016 marius

- Copy stable/10@296371 to releng/10.3 in preparation for 10.3-RC1
builds.
- Update newvers.sh to reflect RC1.
- Update __FreeBSD_version to reflect 10.3.
- Update default pkg(8) configuration to use the quarterly branch.

Approved by: re (implicit)

# 287016 22-Aug-2015 mav

MFC r280451:
Remove from legacy ata(4) driver support for hardware, supported by newer
and more functional drivers ahci(4), siis(4) and mvs(4).

This removes about 3400 lines of code, unused since FreeBSD 9.0 release.


# 275439 03-Dec-2014 mav

MFC r275101:
Add bunch of PCI IDs of Intel Wildcat Point (9 Series) chipsets.


# 273725 27-Oct-2014 mav

MFC r273328: Add another PCI ID for JMB368 PATA controller.


# 260348 05-Jan-2014 mav

MFC r258162:
Add some more IDs for Intel ATA, AHCI and USB controllers.


# 256281 10-Oct-2013 gjb

Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


# 253475 19-Jul-2013 jfv

Add new Coleto Creek device support: SATA, SMBus, and Watchdog devices.

MFC after: 1 week


# 249083 04-Apr-2013 mav

Remove all legacy ATA code parts, not used since options ATA_CAM enabled in
most kernels before FreeBSD 9.0. Remove such modules and respective kernel
options: atadisk, ataraid, atapicd, atapifd, atapist, atapicam. Remove the
atacontrol utility and some man pages. Remove useless now options ATA_CAM.

No objections: current@, stable@
MFC after: never


# 244983 02-Jan-2013 jfv

Add Intel Lynx Point PCH SATA Controller Device IDs


# 244146 12-Dec-2012 mav

Add IDs for SATA controllers on AMD Hudson-2 series chipsets.
I am not exactly sure about the naming due to lack of specs on AMD site,
but it is better to have some identification then none at all.

MFC after: 1 month


# 239907 30-Aug-2012 mav

Add IDs for JMicron JMB360/JMB362 AHCI SATA controllers.

MFC after: 1 week


# 233282 21-Mar-2012 marius

- First pass at const'ifying ata(4) as appropriate.
- Use DEVMETHOD_END.
- Use NULL instead of 0 for pointers

MFC after: 1 week


# 233274 21-Mar-2012 marius

Remove remnants of ATA_LOCKING uses in the ATA_CAM case and wrap it
along with functions, SYSCTLs and tunables that are not used with
ATA_CAM in #ifndef ATA_CAM, similar to the existing #ifdef'ed ATA_CAM
code for the other way around. This makes it easier to understand
which parts of ata(4) actually are used in the new world order and
to later on remove the !ATA_CAM bits. It also makes it obvious that
there is something fishy with the C-bus front-end as well as in the
ATP850 support, as these used ATA_LOCKING which is defunct in the
ATA_CAM case. When fixing the former, ATA_LOCKING probably needs to
be brought back in some form or other.

Reviewed by: mav
MFC after: 1 week


# 232380 02-Mar-2012 mav

Fix names of some Marvell SATA chips. It looks like chips with proprietary
interface supported by mvs(4) are 88SX, while AHCI-like chips are 88SE.

PR: kern/165271
Submitted by: Jia-Shiun Li <jiashiun@gmail.com>
MFC after: 1 week


# 230132 15-Jan-2012 uqs

Convert files to UTF-8


# 229671 06-Jan-2012 jimharris

Add 0x2826 device ID for C600 (Patsburg) SATA controller in RAID mode.

Reviewed by: mav
Approved by: scottl


# 228497 14-Dec-2011 mav

Add PCI IDs for the Intel ICH9M SATA controllers.

MFC after: 2 weeks


# 226680 24-Oct-2011 mav

Some dmesg cosmetics:
- for the legacy PCI ATA channels move channel number out of the device
description, same as it is for ahci(4), siis(4) and mvs(4);
- add device description for the ISA ATA channels.


# 224270 22-Jul-2011 mav

- Use mutex to serialize index/data register pair usage, when
accessing SATA registers. Unserialized access under heavy load caused
wrong speed reporting and potentially could cause device loss.
- To free memory and other resources (including above), allocated
during chipinit() method call on attach, add new chipdeinit() method,
called during driver detach.

Submitted by: Andrew Boyer <aboyer@averesystems.com> (initial version)
Approved by: re (kib)
MFC after: 1 week


# 221789 11-May-2011 jfv

Chipset support for the new Intel Panther Point PCH, thanks
to Seth Heasley for preparing the changes.


# 220920 21-Apr-2011 mav

- Fix mapping of the last two SATA ports on 6-port Intel controllers.
This improves hard-reset and hot-plug on these ports.
- Device with ID 0x29218086 is a 2-port variant of ICH9 in legacy mode.
Skip probing for nonexistent slave devices there.


# 218149 01-Feb-2011 jfv

Support for the new Patsburg PCH chipset:
- SMBus Controller
- SATA Controller
- HD Audio Controller
- Watchdog Controller

Thanks to Seth Heasley (seth.heasley@intel.com) for providing us code.

MFC after 3 days


# 218140 31-Jan-2011 jfv

Support for the new DH89xxCC PCH chipset including:
- SATA controller
- Watchdog timer
- SMBus controller


# 215431 17-Nov-2010 mav

Add IDs for VIA VX900 chipset SATA controller.
(Missed part of r215428)


# 211920 28-Aug-2010 mav

Add Intel Cougar Point PCH SATA Controller DeviceIDs. Correct some existing
entries for Intel Ibex Peak (5 Series/3400 Series) PCH SATA controllers.

Submitted by: jfv@
MFC after: 1 week


# 208410 22-May-2010 mav

Report ATA/SATA channel number to NewBus at location string.


# 204509 01-Mar-2010 mav

- Add ALI M5228 PATA ID.
- Add missed DMA initialization for ALI SATA chips.


# 203030 26-Jan-2010 mav

Add support for SATA part of Marvell 88SE912x controllers to ahci(4).
Limit early revisions from 6Gb/s to 3Gb/s by default, or they negotiate
only 1.5Gbps, when 3Gb/s devices connected.

Add dummy driver for PATA part of these controllers, preventing generic
driver attach them. It causes system freeze when SATA controller used after
PATA was touched.


# 200857 22-Dec-2009 mav

Add support for Intel SCH PATA controller.

PR: kern/140251


# 200754 20-Dec-2009 mav

Add VIA CX700/VX800 chipsets SATA/PATA support.

PR: kern/121521
Tested by: Alex Deiter


# 200171 06-Dec-2009 mav

MFp4:
Introduce ATA_CAM kernel option, turning ata(4) controller drivers into
cam(4) interface modules. When enabled, this options deprecates all ata(4)
peripheral drivers (ad, acd, ...) and interfaces and allows cam(4) drivers
(ada, cd, ...) and interfaces to be natively used instead.

As side effect of this, ata(4) mode setting code was completely rewritten
to make controller API more strict and permit above change. While doing
this, SATA revision was separated from PATA mode. It allows DMA-incapable
SATA devices to operate and makes hw.ata.atapi_dma tunable work again.

Also allow ata(4) controller drivers (except some specific or broken ones)
to handle larger data transfers. Previous constraint of 64K was artificial
and is not really required by PCI ATA BM specification or hardware.

Submitted by: nwitehorn (powerpc part)


# 199322 16-Nov-2009 mav

Change the way in which AHCI+PATA combined controllers, such as JMicron
and Marvell handled. Instead of trying to attach two different drivers to
single device, wrapping each call, make one of them (atajmicron, atamarvell)
attach do device solely, but create child device for AHCI driver,
passing it all required resources. It is quite easy, as none of
resources are shared, except IRQ.

As result, it:
- makes drivers operation more independent and straitforward,
- allows to use new ahci(4) driver with such devices, adding support for
new features, such as PMP and NCQ, same time keeping legacy PATA support,
- will allow to just drop old ataahci driver, when it's time come.


# 199259 13-Nov-2009 mav

Add support for SATA ports on SATA+PATA Marvell controllers.
These controllers provide combination of AHCI for SATA and legacy
PCI ATA for PATA. Use same solution as used for JMicron controllers.
Add IDs of Marvell 88SX6102, 88SX6111. 88SX6141 alike controllers


# 199074 09-Nov-2009 mav

Add more ICH10 chip IDs.

Submitted by: Dmitry S. Luhtionov <mitya@cabletv.dp.ua>


# 198818 02-Nov-2009 mav

Add IDs for nVidia MCP65/77/79/89 SATA conntrollers.


# 198700 30-Oct-2009 mav

Add support for different request block format used by Gen-IIe Marvell SATA.
This adds support for Marvell 6042/7042 chips and Adaptec 1430SA controller.


# 198481 26-Oct-2009 mav

Add two more VIA SATA chip IDs.

PR: kern/135057


# 194844 24-Jun-2009 raj

Move non-PCI prototypes from ata-pci.h -> ata-all.h.

This removes unnecessary PCI #includes dependency for systems with ATA
controllers living at non-PCI buses.

Submitted by: Piotr Ziecik
Obtained from: Semihalf


# 193716 08-Jun-2009 ariff

Add another PCI id for Nvidia nForce MCP67, found in several Acer laptops.


# 192105 14-May-2009 jhb

- Add a void pointer to the ata-pci controller softc to allow
chipset-specific code to attach chipset-specific data.
- Use chipset-specific data in the acard and promise chipsets rather than
changing the ivars of ATA PCI devices. ivars are reserved for use by the
parent bus driver and are _not_ available for use by devices directly.
This fixes a panic during sysctl -a with certain Promise controllers with
ACPI enabled.

Reviewed by: mav
Tested by: Magnus Kling (kingfon @ gmail) (on 7)
MFC after: 3 days


# 191897 07-May-2009 mav

Add ID of one more SII3132 revision found on adaptec aar-1225sa rev a2.

PR: kern/127289


# 191568 27-Apr-2009 jkim

- Always force AHCI mode on a ATI/AMD SB600/700/800 SATA controller. These
controllers may be configured as legacy IDE mode by modifying subclass and
progif without actually changing PCI device IDs. Instead of complicating
code, we always force AHCI mode while probing. Also we restore AHCI mode
while resuming per ATI/AMD register programming/requirement guides.
- Fix SB700/800 "combined" mode. Unlike SB600, this PATA controller can
combine two SATA ports and emulate one PATA channel as primary or secondary
depending on BIOS configuration. When the combined mode is disabled, this
channel disappears and it works just like SB600 PATA controller, however.
- Add more PCI device IDs for SB700/800 and adjust device descriptions.
SB800 shares the same PCI device IDs and added two more SATA IDs.


# 190581 30-Mar-2009 mav

Integrate user/mav/ata branch:

Add ch_suspend/ch_resume methods for PCI controllers and implement them
for AHCI. Refactor AHCI channel initialization according to it.

Fix Port Multipliers operation. It is far from perfect yet, but works now.
Tested with JMicron JMB363 AHCI + SiI 3726 PMP pair.
Previous version was also tested with SiI 4726 PMP.

Hardware sponsored by: Vitsch Electronics / VEHosting.nl


# 188903 21-Feb-2009 mav

Improve ata_reinit():
- protect againtst recursions,
- add new devices detection using ata_identify().

Improve ata_identify():
- do not add duplicate device if device already exist.

Rework SATA hot-plug events handling. Instead of unsafe duplicate
implementation use common ata_reinit() to handle all state changes.

All together this gives quite stable and robust cold- and hot-plug operation,
invariant to false, lost and duplicate events.


# 188846 20-Feb-2009 mav

Handle nForce MCP67 and MCP73 SATA controllers as AHCI. They report itself
as ATA RAID, but generic ATAPCI driver unable to detect drives there. AHCI
driver reported to handle them fine. Linux does the same.

Submitted by: Andrey V. Elsukov on stable@


# 188769 19-Feb-2009 mav

Quite mechanical ch_detach implementations for all atapci subdrivers.
Some dmainit call fixes for previous commit.


# 188765 18-Feb-2009 mav

As soon as they called in only same one place (ata_pcichannel_attach()),
join allocate() and dmainit() atapci subdriver's channel initialization
methods into single ch_attach() method.

As opposite to ch_attach() add new ch_detach() method to deallocate/disable
channel.


# 188694 16-Feb-2009 mav

Give atapci knowledge about set of implemented AHCI ports. It is possible
to not allocate them after the recent ata channels enumeration changes.
It allows to save some resources, not bother user with unexisting hardware
and not check unimplemented ports status on every interrupt.


# 188655 15-Feb-2009 mav

Add initial single-vector MSI support into atapci driver.
Works fine with AHCI and theoretically other MSI capable devices.

At this moment support disabled by default. To enable it, set
"hint.atapci.X.msi=1" device hint.


# 186182 16-Dec-2008 mav

Call ata_legacy() only once on attach and save it's result. Scanning PCI
configuration registers (which are not going to change) on every interrupt
looks expensive, especially when interrupt is shared. Profiling shows me 3%
of time spent by atapci0 on pure network load due to IRQ sharing with em0.


# 185500 01-Dec-2008 mav

Restore AHCI suspend/resume support,
broken with modularization commit (rev 183724).


# 185268 25-Nov-2008 rpaulo

Add support for Marvell PATA M88SX6121.

PR: 129154
Submitted by: João Barros <joao.barros at gmail.com>
MFC after: 1 month


# 183724 09-Oct-2008 sos

This is the roumored ATA modulerisation works, and it needs a little explanation.

If you just config KERNEL as usual there should be no apparent changes, you'll get all chipset support code compiled in.

However there is now a way to only compile in code for chipsets needed on a pr vendor basis. ATA now has the following "device" entries:

atacore: ATA core functionality, always needed for any ATA setup

atacard: CARDBUS support
atacbus: PC98 cbus support
ataisa: ISA bus support
atapci: PCI bus support only generic chipset support.

ataahci: AHCI support, also pulled in by some vendor modules.

ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek, atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron, atamarvell, atamicron, atanational, atanetcell, atanvidia, atapromise, ataserverworks, atasiliconimage, atasis, atavia; Vendor support, ie atavia for VIA chipsets

atadisk: ATA disk driver
ataraid: ATA softraid driver

atapicd: ATAPI cd/dvd driver
atapifd: ATAPI floppy/flashdisk driver
atapist: ATAPI tape driver

atausb: ATA<>USB bridge
atapicam: ATA<>CAM bridge

This makes it possible to config a kernel with just VIA chipset support by having the following ATA lines in the kernel config file:

device atacore
device atapci
device atavia

And then you need the atadisk, atapicd etc lines in there just as usual.

If you use ATA as modules loaded at boot there is few changes except the rename of the "ata" module to "atacore", things looks just as usual.
However under atapci you now have a whole bunch of vendor specific drivers, that you can kldload individually depending on you needs. Drivers have the same names as used in the kernel config explained above.


# 183552 02-Oct-2008 sos

Add ICH10 PCI id's.
Submitted by: Xin Li

Fix the number of PATA ports on newer ICHX chips, they have just 1 port not 2.


# 183380 26-Sep-2008 sos

Add support for the ITE 8213 controller.
Thanks goes to ITE who provided docs and feedback and made this possible.

Minor fixups to the Intel ICH code for bugs found while doing this.
(ITE8213 is very semilar to an Intel ICH)

MFC after: 1 week


# 183141 18-Sep-2008 sos

Cleanup the AHCI code a bit.
Add suspend/resume for AHCI, general methods added.

Inspired by: Andrey V. Elsukov


# 182749 04-Sep-2008 mav

Add one more SII3132 chip PCI ID found on Adaptec Serial ATA II RAID 1220SA.

Submitted by: Dmitry S. Luhtionov <mitya@cabletv.dp.ua>


# 180437 10-Jul-2008 remko

Detect ATA controllers in the Macbook3.

PR: 118135
Submitted by: ed
Approved by: imp (mentor, implicit)
MFC after: 1 week


# 180383 09-Jul-2008 remko

Add new device id for ICH8M, which supports greater than UDMA33 mode
when it worked as generic IDE.

PR: 125422
Submitted by: Andrey V. Elsukov <bu7cher at yandex dot ru>
Approved by: imp (mentor, implicit)
MFC after: 1 week


# 180382 09-Jul-2008 remko

Add support for the ICH9 in non AHCI mode (RAID mode).

Submitted by: Andrey V. Elsukov <bu7cher at yandex dot ru>
Tested by: Vitalij L. Fadeev <fvl at mail dot ru>
Approved by: imp (mentor, implicit)
MFC after: 1 week


# 178375 21-Apr-2008 sos

Add HW level support for the Adaptec 1420SA controller.


# 178156 12-Apr-2008 sos

Dont call hw.status recursively.

Spotted by: Marcel Moolenaar


# 178067 10-Apr-2008 sos

Add experimental support for SATA Port Multipliers

Support is working on the Silicon Image SiI3124/3132.
Support is working on some AHCI chips but far from all.

Remember this is WIP, so test reports and (constructive) suggestions are welcome!


# 176891 07-Mar-2008 sos

Add proper support for the SATA/AHCI part of IXP[67]00


# 173734 18-Nov-2007 sos

Add generic support for chipsets that say they support AHCI. This should catch new chipsets that we dont know but that we should support.
Add a few new PCI id's.
Misc cleanups.


# 172499 09-Oct-2007 delphij

Add PCI ID for ICH9 AHCI w/ two adapters.

Tested by: Abdullah Ibn Hamad Al-Marri <almarrie gmail com>
Approved by: sos
Approved by: re (kensmith)


# 172446 04-Oct-2007 sos

Add support for the VIA 8237S
Fix the LBA28/LBA48 crossover bug.

Approved by: re@


# 172436 04-Oct-2007 phk

Recognize the CS5536 support chip for the AMD Geode LX CPU to enable
UDMA modes.

Please notice that Soekris NET5501 bios versions before 1.32f has a bug
that prevents this from working.

Approved by: re (gnn)
MFC: 2 weeks


# 172134 10-Sep-2007 simon

Add PCI IDs for Intel ICH9.

PR: kern/114473
Submitted by: Michael Fuckner <michael@fuckner.net>
MFC after: 2 weeks
OK'ed by: sos
Approved by: re (bmah)


# 171025 25-Jun-2007 sos

Add support for the nVidia MCP61 series chipset.

Approved by: re (mux@)


# 167386 09-Mar-2007 sos

Add support for the Silicon Image SiI 3124 and SiI 3132.

HW donated by: Adriaan de Groot


# 166901 23-Feb-2007 piso

o break newbus api: add a new argument of type driver_filter_t to
bus_setup_intr()

o add an int return code to all fast handlers

o retire INTR_FAST/IH_FAST

For more info: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=465712+0+current/freebsd-current

Reviewed by: many
Approved by: re@


# 166477 03-Feb-2007 rink

Add support for the NetCell NC3000/5000 series SATA RAID cards.

Reviewed by: sos
Approved by: imp (mentor)
MFC after: 1 week


# 165768 04-Jan-2007 sos

Add support for the Marvell 6101/6145 PATA chips used on many new Intel boards.

HW donated by: Sentex


# 165759 04-Jan-2007 sos

Add new PATA only JMicron chip.


# 162230 11-Sep-2006 sos

Add support for a few more Serverworks and lookalikes chips.


# 161883 02-Sep-2006 sos

Add support for VIA 8237A.


# 161291 14-Aug-2006 sos

Add support for the ICH8 and ESB2 chips, also add a few other missing ICH7 parts.

HW donated by: JMicron


# 161227 11-Aug-2006 sos

Unbreak nForce4 SATA support.
Hopefully I dont break something else this time.....


# 160999 05-Aug-2006 sos

Unbreak nForce3 SATA support.


# 160616 24-Jul-2006 sos

Finally fix support for the newer MCP51/MCP55 nVidia chipsets.
The register layout has changed since the original NV4 - sigh.
Hotplug support has been fixed for all nVidia chipsets that supports it
(including the MCP51/55).

HW donated by: Kingsley College


# 160096 04-Jul-2006 sos

Add preliminary support for the Serverworks HT1000 chip.

HW sponsored by: Yahoo!


# 156683 13-Mar-2006 sos

Add support for the JMicron JMB361, 365 and 366 chips.

HW and documentation kindly provided by JMicron.


# 155761 16-Feb-2006 sos

Add support for the JMicron JMB363 dual SATA + single PATA controller.
Documentation and HW kindly provided by JMicron.


# 154829 25-Jan-2006 sos

Add support for the JMicron JMB360 SATAII controller.
Thanks to JMicron for providing needed info.

HW donated by: Ralf Folkerts


# 154515 18-Jan-2006 sos

Whitespace cleanup.


# 154507 18-Jan-2006 sos

Add support for using DMA on dump, greatly speeds up the dump process.
Add dump support in ataraid.


# 154063 05-Jan-2006 sos

Get rid of the advertising clause in the copyright.


# 153753 27-Dec-2005 sos

Add initial support for the Marvell 88SX[56]0[48][01] series of SATA chips.

Hardware donated by: Matthew Jacob
Hardware donated by: Y!


# 153473 16-Dec-2005 sos

Cleanup the strings for printing chipset names, saves quite some space.

Add a couble new nVidia chips now we are here.


# 153415 14-Dec-2005 sos

Add support for VIA VT8251 southbridge.
SATA support for now in compat mode, but all 4 channels usable.


# 153015 02-Dec-2005 sos

Update the ICH7 support so it deals better with chips without AHCI.

Update Intel MatrixRAID support to be able to pick up RAID0+1 (RAID10)
and RAID5 arrays without panic'ing.
This has the side effect of now also supporting multiple volumes on
MatrixRAID's now I have the metadata better understood..

HW sponsored by: Mullet Scandinavia AB


# 151267 12-Oct-2005 sos

Add support for the ATI IXP[234]00 series chipsets.

HW donated by: sentex


# 149565 29-Aug-2005 sos

Fix support for the VIA 6421 controller.


# 149387 23-Aug-2005 sos

Apply fix for "pr82261 DMA-support on Sparc64 broken"
The Acer chip or wiring that SUN uses has problems that this patch
tries to work around.
Original patch by Marius Strobl, hacked into shape by me..


# 148992 12-Aug-2005 sos

Add support for the Promise PDC4071[89] chips used on fx the Fasttrak TX4300.
Docs kindly provided by Promise.


# 148731 05-Aug-2005 sos

Add support for the ITE IT8211F controller.


# 147139 08-Jun-2005 sos

Add support for the Intel 31244.
Most code by the submitters, hammered upon to get the right ATA fell by me.

Submitted by: Olivier Houchard
Submitted by: Jia-Shiun Li


# 146266 16-May-2005 sos

Change the way ioctls are issue to ATA.
The most prominent part is that its now possible to issue ata_requests
directly to say acd0, instead of going through the cumbersome /dev/ata
device.


# 146178 13-May-2005 sos

Cleanup comments


# 146112 11-May-2005 sos

Add new Intel PCI ID's for the ICH7 chips (untested).


# 145713 30-Apr-2005 sos

Take newbusification one step further, ie use the device_t more consequently
all way through the code down the layers, instead of the mix'n'match that
resulted from the conversion done earlier.

Sponsored by: pair.com


# 145191 17-Apr-2005 sos

Add one more Promise SATAII/150 chip id.


# 144861 10-Apr-2005 sos

Refine the SATA PHY code so the time consumed during probe is reduced.

Add the older nVidia nForce2 SATA chip to supported HW.


# 144808 08-Apr-2005 sos

Add support for the PHY on nVidia, SiS and VIA chips
This code is done blindfolded as I dont have such HW here, so reports
of success/failure are most welcome.

More SATA PHY cleanups.


# 144790 08-Apr-2005 sos

Generalise the SATA PHY handling code so it wont be duplicated for
each SATA chip.
Promise and Silicon Image are the current candidates for this.


# 144667 05-Apr-2005 sos

Add firstshot support for Acer Labs Inc SATA parts
Update ALi PATA support to handle ATA133 as well


# 144382 31-Mar-2005 sos

Correct the PCI ID for the SiS 965, and add support for the SATA part
that was left our by accident.

Prodded by: Patrik Backlund


# 144330 30-Mar-2005 sos

This is the much rumoured ATA mkIII update that I've been working on.

o ATA is now fully newbus'd and split into modules.
This means that on a modern system you just load "atapci and ata"
to get the base support, and then one or more of the device
subdrivers "atadisk atapicd atapifd atapist ataraid".
All can be loaded/unloaded anytime, but for obvious reasons you
dont want to unload atadisk when you have mounted filesystems.

o The device identify part of the probe has been rewritten to fix
the problems with odd devices the old had, and to try to remove
so of the long delays some HW could provoke. Also probing is done
without the need for interrupts, making earlier probing possible.

o SATA devices can be hot inserted/removed and devices will be created/
removed in /dev accordingly.
NOTE: only supported on controllers that has this feature:
Promise and Silicon Image for now.
On other controllers the usual atacontrol detach/attach dance is
still needed.

o Support for "atomic" composite ATA requests used for RAID.

o ATA RAID support has been rewritten and and now supports these
metadata formats:
"Adaptec HostRAID"
"Highpoint V2 RocketRAID"
"Highpoint V3 RocketRAID"
"Intel MatrixRAID"
"Integrated Technology Express"
"LSILogic V2 MegaRAID"
"LSILogic V3 MegaRAID"
"Promise FastTrak"
"Silicon Image Medley"
"FreeBSD PseudoRAID"

o Update the ioctl API to match new RAID levels etc.

o Update atacontrol to know about the new RAID levels etc
NOTE: you need to recompile atacontrol with the new sys/ata.h,
make world will take care of that.
NOTE2: that rebuild is done differently from the old system as
the rebuild is now done piggybacked on read requests to the
array, so atacontrol simply starts a background "dd" to rebuild
the array.

o The reinit code has been worked over to be much more robust.

o The timeout code has been overhauled for races.

o Support of new chipsets.

o Lots of fixes for bugs found while doing the modulerization and
reviewing the old code.

Missing or changed features from current ATA:

o atapi-cd no longer has support for ATAPI changers. Todays its
much cheaper and alot faster to copy those CD images to disk
and serve them from there. Besides they dont seem to be made
anymore, maybe for that exact reason.

o ATA RAID can only read metadata from all the above metadata formats,
not write all of them (Promise and Highpoint V2 so far). This means
that arrays can be picked up from the BIOS, but they cannot be
created from FreeBSD. There is more to it than just the missing
write metadata support, those formats are not unique to a given
controller like Promise and Highpoint formats, instead they exist
for several types, and even worse, some controllers can have
different formats and its impossible to tell which one.
The outcome is that we cannot reliably create the metadata of those
formats and be sure the controller BIOS will understand it.
However write support is needed to update/fail/rebuild the arrays
properly so it sits fairly high on the TODO list.

o So far atapicam is not supported with these changes. When/if this
will change is up to the maintainer of atapi-cam so go there for
questions.

HW donated by: Webveveriet AS
HW donated by: Frode Nordahl
HW donated by: Yahoo!
HW donated by: Sentex
Patience by: Vife and my boys (and even the cats)


# 138555 08-Dec-2004 sos

Add support for the ITE IT8212F controller.

HW donated by: Yahoo!


# 138553 08-Dec-2004 sos

Add first shot on support for the new Promise SATAII chips.

HW donated by: pil.dk


# 136324 09-Oct-2004 sos

Add support for the ICH6 in legacy mode.
The AHCI part is not supported yet, but is in the works.

5.3 RC1 candidate


# 136198 06-Oct-2004 sos

Fix the PC98 lockups on boot.
The interchannel locking for PC98 needed to be updated to match the
rest of the locking in ATA.


# 134687 03-Sep-2004 sos

Cleanup the defines used for various chipsets.
Add new nVidia controllers.


# 130521 15-Jun-2004 sos

Increase robustness of SATA handling.


# 128767 30-Apr-2004 sos

Spring cleanup of macros


# 128530 21-Apr-2004 sos

Make the test for ATA PCI legacy addressing mode more robust.
Add code (currently ifdef'd out) to allow ATA PCI native addressing.
Fix the altio offset for ATA PCI devices.


# 128183 13-Apr-2004 sos

Add support for the Promise command sequencer present on all modern Promise
controllers (PDC203** PDC206**).

This also adds preliminary support for the Promise SX4/SX4000 but *only*
as a "normal" Promise ATA controller (ATA RAID's are supported though
but only RAID0, RAID1 and RAID0+1).

This cuts off yet another 5-8% of the command overhead on promise controllers,
making them the fastest we have ever had support for.

Work is now continuing to add support for this in ATA RAID, to accellerate
ATA RAID quite a bit on these controllers, and especially the SX4/SX4000
series as they have quite a few tricks in there..

This commit also adds a few fixes to the SATA code needed for proper support.


# 127080 16-Mar-2004 sos

Update the SiS support to distinguish older southbridges better.


# 127019 15-Mar-2004 sos

Add support for detaching PCI controllers.

This adds support for cardbus ATA/SATA controllers. I get roughly the
same transfer speeds as on true PCI controllers. Nice to be able to add
a couble of "real" disks to a laptop :)


# 126848 11-Mar-2004 sos

Add yet another VIA pci id.


# 126223 25-Feb-2004 sos

Add support for the sii3512 SATA chip.


# 125326 02-Feb-2004 sos

Fix support for the Promise TX4 on amd64.
Somehow the bridge on there shows up with another PCI id than
it does on x86, no idea why...


# 125199 29-Jan-2004 sos

Cleanups/cosmetics.


# 124754 20-Jan-2004 sos

Update the support for the VIA 8237 southbridge.


# 124643 17-Jan-2004 sos

Add support for the Silicon Image 3114 4 channel SATA controller.


# 123632 18-Dec-2003 sos

Add support for the SiS 661 chipset (using SiS 963 south).


# 123034 28-Nov-2003 sos

Workaround for errata on early versions of the sii3112.

Approved by: re@


# 122886 18-Nov-2003 sos

Add support for the SiS964 ATA/SATA southbridge.
This could not have been done without the support from kuriyama.

Approved by: re@


# 121738 30-Oct-2003 sos

Add support for the VIA 8237 (both PATA and SATA part).
Cleanup the SATA support a bit now we are here anyways.


# 119883 08-Sep-2003 sos

Add another ID for the SiI3112a SATA chip as used on the Adaptec 1210SA.
RAID support is still in the works, so for now just normal ATA ops.

Sponsored by: Matt Douhan(www.fruitsalad.org)


# 119699 02-Sep-2003 obrien

Support the nForce3 chip found on Opteron motherboards:
atapci0: <nVidia nForce3 UDMA133 controller>

Approved by: sos


# 119453 25-Aug-2003 sos

Cleanup the dma int/alloc/free code.


# 119404 24-Aug-2003 sos

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.


# 117155 02-Jul-2003 sos

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)


# 115136 18-May-2003 sos

Support the ICH5 SATA part.
Fix HPT374 UDMA133 timing.
Fix Promise ID.
Cosmetics on probe print for Promise & HPT.

Approved by: re


# 114872 10-May-2003 sos

Add a couble new Intel PCI id's

Approved by: re@


# 114784 06-May-2003 jhb

Add PCI ID's for the Intel ICH5 (82801EB) chipset.

Approved by: re (murray)
Sponsored by: The Weather Channel


# 114390 01-May-2003 sos

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 :)


# 113334 10-Apr-2003 sos

Add a few more older SiS ID's.


# 113222 07-Apr-2003 sos

Third round of updates to the ATA driver.

More DMA cleanups, including fix for breakage on older Promise controllers.

Add more ways of getting to the ATA registers.


# 112791 29-Mar-2003 sos

Second round of updates to the ATA driver.

Clean up the DMA interface too much unneeded stuff crept in with
the busdma code back when.

Modify the ATA_IN* / ATA_OUT* macros so that resource and offset
are gotten from a table. That allows for new chipsets that doesn't
nessesarily have things ordered the good old way. This also removes
the need for the wierd PC98 resource functions.

Tested on: i386, PC98, Alpha, Sparc64


# 111812 03-Mar-2003 sos

Minor cleanup of the Promise code.


# 111502 25-Feb-2003 sos

Fix support for Acer chips. The UDMA enable regs wasn't set properly.


# 111480 25-Feb-2003 sos

Fix support for the old CMD 646 chips, interrupt setup was wrong.


# 111188 20-Feb-2003 sos

First round off updates/fixes to the ATA driver.

This moves all chipset specific code to a new file 'ata-chipset.c'.
Extensive use of tables and pointers to avoid having the same switch
on chipset type in several places, and to allow substituting various
functions for different HW arch needs.
Added PIO mode setup and all DMA modes.
Support for all known SiS chipsets. Thanks to Christoph Kukulies for
sponsoring a nice ASUS P4S8X SiS648 based board for this work!

Tested on: i386, PC98, alpha and sparc64