summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata
Commit message (Collapse)AuthorAgeFilesLines
* Fix non-AHCI channels detection on combined JMicron controllers,mav2009-02-231-0/+2
| | | | broken by r188694.
* Move the uaudio and ata-usb drivers into their correct locations.thompsa2009-02-231-0/+1102
|
* Move two missed usb drivers out to the graveyard location under sys/legacy/dev.thompsa2009-02-231-970/+0
|
* Do not call devices probe/attach if there is nothing new was found.mav2009-02-231-0/+4
|
* Fix spelling.mav2009-02-232-2/+2
| | | | Submitted by: gavin
* Tune AHCI verbose messages to make log more readable.mav2009-02-221-12/+23
|
* Remove one more place of master/slave terms usage.mav2009-02-221-2/+1
|
* Use only higher half of device signature to identify device type. Somemav2009-02-214-15/+15
| | | | | devices return incorrect values in lower part confusing detection, while higher part itself gives enough information for proper detetion.
* Increase initial busy waiting time. If drive was hot-plugged, it may needmav2009-02-211-4/+4
| | | | much time to spin-up.
* Improve ata_reinit():mav2009-02-215-89/+48
| | | | | | | | | | | | | | - 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.
* Teach device drivers' ata_reinit() methods, that there can be more then twomav2009-02-214-14/+13
| | | | devices per channel.
* Disable port hardware on detach. First switch it to slumber mode tomav2009-02-201-0/+16
| | | | | power-down peer transmitter, then disable completely. Side effect of this is saving about 0.5W of power per detached device.
* Don't read the TOC for DIOCGPROVIDERALIAS. This causes themarcel2009-02-201-1/+4
| | | | | acd code to create new provider (?), but not from an expected context, which results in a panic (GEOM topology not held).
* Fix typo: s/SLUMPER/SLUMBER/mav2009-02-201-1/+1
|
* Reduce soft-reset assertion time from 5ms to 50us.mav2009-02-201-1/+1
| | | | | | ATA specification declares minimal reset time of 5us. SATA keeps it, but requires devices to handle commands transmitted even one by one without any gap.
* Disable port interrupts before doing PHY reset.mav2009-02-201-0/+3
| | | | PHY reset causes drive connect/disconnect events, unwanted at this moment.
* Fix pc98 build error due to missing variable.mav2009-02-201-0/+1
| | | | Submitted by: avg
* Handle nForce MCP67 and MCP73 SATA controllers as AHCI. They report itselfmav2009-02-202-1/+53
| | | | | | | 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@
* Add basic support for DDF, often found on Adaptec HostRAID controllers.scottl2009-02-203-1/+743
| | | | | Spares and rebuilds are not supported, so this code should be considered for entertainment purposes only.
* Use channel driver's attach/detach routines instead of ata_attach()/mav2009-02-197-13/+58
| | | | | | ata_detach() to implement IOCATAATTACH/IOCATADETACH ioctls. This will permit channel drivers to properly shutdown port hardware on channel detach and init it on attach.
* Quite mechanical ch_detach implementations for all atapci subdrivers.mav2009-02-1917-31/+171
| | | | Some dmainit call fixes for previous commit.
* As soon as they called in only same one place (ata_pcichannel_attach()),mav2009-02-1816-103/+108
| | | | | | | | 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.
* Make ch->dma.free() called symmetrically to ch->dma.alloc().mav2009-02-182-3/+5
|
* Implement proper attach/detach routines for ISA driver.mav2009-02-181-5/+55
|
* Remove unused variable.mav2009-02-181-2/+1
| | | | Submitted by: ganbold
* Adaptively increase control command timeout when drive is spun down.mav2009-02-171-1/+8
| | | | | | | This should fix, for example, cache flush timeout error on shutdown, if some drives are not mounted. PR: kern/111023
* Remove useless return, that left from previous commit.mav2009-02-171-1/+0
|
* ata_interrupt() does not need to return anything. It is not it's businessmav2009-02-173-6/+8
| | | | to report request completion, expecially when it is not reliable.
* Make core dumping to ad not to freeze even if interrupts, not disabledmav2009-02-161-1/+1
| | | | for some reason, stealing our events.
* Give atapci knowledge about set of implemented AHCI ports. It is possiblemav2009-02-163-6/+6
| | | | | | 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.
* Remove unneeded AND operation. We have already checked that bit is set.mav2009-02-151-1/+1
|
* Add initial single-vector MSI support into atapci driver.mav2009-02-152-4/+15
| | | | | | | 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.
* Add workaround for some ATI chips, failing to soft-resetmav2009-02-151-5/+12
| | | | when port multiplicator supported, but absent.
* Tunes to AHCI reset sequences:mav2009-02-141-34/+71
| | | | | | | | | | | | | | - specification claims that 1 second is just a maximum controller reset time; implement controller reset properly to save almost 1 second of boot, and about half second of resume time; - enable channel interrupts only after channel status reset to fix duplicate device creation on resume due to unwanted device connection event; - as described in specification, wait for disk ready status after channel power-up; it is not so important when disk already touched by BIOS, but solves device not ready problems on resume and probably some other cases. - uncomment channel stop/start on soft-reset as it is declared mandatory by specification; it was commented due to some random drive detection problems on VIA and JMicron controllers, but I hope it is fixed by previous point.
* DEVICE_PROBE(9) claims that we must not initialize softc on probe stage.mav2009-02-143-59/+53
| | | | | | | | Move channel softc initialization from ata_XXX_probe() to ata_XXX_attach(). Instead of calculating ata channel number as position in child device list, pass it's real number directly from controller probe routine using ivars. It is simpler and IMHO more correct.
* Fix shutdown routine to return 0 and change signature from void returnimp2009-02-044-4/+8
| | | | to int.
* Correct signature for the identify routine. The bad parameter wasn'timp2009-02-041-2/+2
| | | | used at all, so this is just a tidiness excersize.
* Fix issue where ata_atapicmd() can never really return EBUSY which isobrien2009-01-121-1/+2
| | | | | | | | | | | expected in acd_fixate(). This should fix various problems folks are having with 'burncd' reporting "burncd: ioctl(CDRIOCFIXATE): Input/output error" during the fixate phase when "fixate" is issued together with the "data" command. PR: 95979 Submitted by: Jaakko Heinonen <jh@saunalahti.fi>
* Make "kldunload atapicam" return EBUSY instead of deadlocking when a devicetrasz2009-01-081-0/+4
| | | | | | | | | | created by atapicam is being kept opened or mounted. This is probably just a temporary solution until we invent something better. Reviewed by: scottl Approved by: rwatson (mentor) Sponsored by: FreeBSD Foundation Reported by: Jaakko Heinonen
* Before modularization commit, atapci driver was attaching only to devices ofmav2008-12-182-2/+6
| | | | | | | | | storage class. This check was lost. It is not important for the most cases, but as it was reported on current@, it does important for sis driver and surely inportant for AHCI driver. So restore it there. Submitted by: Toshikazu ICHINOSEKI, Andrey V. Elsukov Discussed on: current@
* Improve error handling at ata_ahci_chipinit().mav2008-12-171-3/+8
| | | | Submitted by: Andrey V. Elsukov
* Call ata_legacy() only once on attach and save it's result. Scanning PCImav2008-12-162-11/+20
| | | | | | 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.
* Restore AHCI suspend/resume support,mav2008-12-011-2/+2
| | | | broken with modularization commit (rev 183724).
* Don't let ata_completed() dereference a null request->dma pointer topeter2008-11-271-1/+1
| | | | print dma status after a media error.
* Add support for Marvell PATA M88SX6121.rpaulo2008-11-252-0/+2
| | | | | | PR: 129154 Submitted by: João Barros <joao.barros at gmail.com> MFC after: 1 month
* Only call dma.unload() if initialized.sos2008-10-271-1/+2
| | | | Reported by: Stanislav Sedov
* Restore the default maximum segment size for the bus dma tag to 64k as itjhb2008-10-211-1/+1
| | | | | is in 6.x and 7.x. The typo caused 64k transactions to be unnecessarily split up into two PRD entries.
* - For chipsets that can't do 64k transfers, fall back to 32k transfersjhb2008-10-174-5/+5
| | | | | | | | | | | | | (still a power of 2) rather than 63k transfers. Even with 63k transfers some machines (such as Dell SC1435's) were experiencing chronic data corruption. - Use the MIO method to talk to the Serverworks HT1000_S1 SATA controller like all the other SATA controllers rather than the compat PATA method. This lets the controller see all 4 SATA ports and also matches the behavior of the Linux driver. Silence from: sos MFC after: 3 days
* This is the roumored ATA modulerisation works, and it needs a little ↵sos2008-10-0930-6823/+8254
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Add ICH10 PCI id's.sos2008-10-022-53/+69
| | | | | | Submitted by: Xin Li Fix the number of PATA ports on newer ICHX chips, they have just 1 port not 2.
OpenPOWER on IntegriCloud