summaryrefslogtreecommitdiffstats
path: root/drivers/ata/pata_sis.c
Commit message (Collapse)AuthorAgeFilesLines
...
* [libata reset-seq] build and merge fixesJeff Garzik2007-05-011-1/+1
| | | | Signed-off-by: Jeff Garzik <jeff@garzik.org>
* libata: add deadline support to prereset and reset methodsTejun Heo2007-05-011-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add @deadline to prereset and reset methods and make them honor it. ata_wait_ready() which directly takes @deadline is implemented to be used as the wait function. This patch is in preparation for EH timing improvements. * ata_wait_ready() never does busy sleep. It's only used from EH and no wait in EH is that urgent. This function also prints 'be patient' message automatically after 5 secs of waiting if more than 3 secs is remaining till deadline. * ata_bus_post_reset() now fails with error code if any of its wait fails. This is important because earlier reset tries will have shorter timeout than the spec requires. If a device fails to respond before the short timeout, reset should be retried with longer timeout rather than silently ignoring the device. There are three behavior differences. 1. Timeout is applied to both devices at once, not separately. This is more consistent with what the spec says. 2. When a device passes devchk but fails to become ready before deadline. Previouly, post_reset would just succeed and let device classification remove the device. New code fails the reset thus causing reset retry. After a few times, EH will give up disabling the port. 3. When slave device passes devchk but fails to become accessible (TF-wise) after reset. Original code disables dev1 after 30s timeout and continues as if the device doesn't exist, while the patched code fails reset. When this happens, new code fails reset on whole port rather than proceeding with only the primary device. If the failing device is suffering transient problems, new code retries reset which is a better behavior. If the failing device is actually broken, the net effect is identical to it, but not to the other device sharing the channel. In the previous code, reset would have succeeded after 30s thus detecting the working one. In the new code, reset fails and whole port gets disabled. IMO, it's a pathological case anyway (broken device sharing bus with working one) and doesn't really matter. * ata_bus_softreset() is changed to return error code from ata_bus_post_reset(). It used to return 0 unconditionally. * Spin up waiting is to be removed and not converted to honor deadline. * To be on the safe side, deadline is set to 40s for the time being. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* pata_sis: Clean up using cable_detect methodsAlan Cox2007-04-281-80/+29
| | | | | | | | | | | | | | | This changeset revolves around the fact that all the SiS controllers have the same enable bits, but differing cable detection methods. Previously that meant each type had its own error_handler methods. Instead we can now implement different ->cable_detect methods and share a single error_handler which does the filtering by enable bits. In addition we had some auto const arrays that should be static const. I'm not sure if gcc already treats them intelligently but adding the static will make sure. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* pata_sis: Fix oops on bootAlan Cox2007-04-191-4/+6
| | | | | | | | | | | A small number of SiS setups require special handling (not many judging by how long this dumb bug survived). A couple of Fedora 7 devel testers hit an Oops on pata_sis loading which is caused by terminal confusion between chipset as 'the chipset we have found' and chipset as 'array iterator' Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* libata: add missing CONFIG_PM in LLDsTejun Heo2007-03-021-0/+4
| | | | | | | | Add missing #ifdef CONFIG_PM conditionals around all PM related parts in libata LLDs. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] bump versionsJeff Garzik2007-02-261-1/+1
| | | | | | Bump versions based on changes submitted during 2.6.21 merge window. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* libata: s/ap->id/ap->print_id/gTejun Heo2007-02-211-2/+2
| | | | | | | | | | | | | | | | | | | | ata_port has two different id fields - id and port_no. id is system-wide 1-based unique id for the port while port_no is 0-based host-wide port number. The former is primarily used to identify the ATA port to the user in printk messages while the latter is used in various places in libata core and LLDs to index the port inside the host. The two fields feel quite similar and sometimes ap->id is used in place of ap->port_no, which is very difficult to spot. This patch renames ap->id to ap->print_id to reduce the possibility of such bugs. Some printk messages are adjusted such that id string (ata%u[.%u]) isn't printed twice and/or to use ata_*_printk() instead of hardcoded id format. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* SiS warning fixesAlan2007-02-211-2/+1
| | | | | | | | | | | | | Somehow the sis_info133 external definition ended up in libata.h and that was included by both drivers. However libata.h contains libata-* specific internals and clashing defines like DRV_NAME so this makes a mess. Move the extern into the C file and remove the warnings [akpm@linux-foundation.org: create sis.h to avoid extern-decl-in-C] Signed-off-by: Alan Cox <alan@redhat.com> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* libata: add another IRQ calls (libata drivers)Akira Iguchi2007-02-091-0/+10
| | | | | | | | | | | | | | | | | | This patch is against each libata driver. Two IRQ calls are added in ata_port_operations. - irq_on() is used to enable interrupts. - irq_ack() is used to acknowledge a device interrupt. In most drivers, ata_irq_on() and ata_irq_ack() are used for irq_on and irq_ack respectively. In some drivers (ex: ahci, sata_sil24) which cannot use them as is, ata_dummy_irq_on() and ata_dummy_irq_ack() are used. Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp> Signed-off-by: Akira Iguchi <akira2.iguchi@toshiba.co.jp> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* libata: convert to iomapTejun Heo2007-02-091-5/+5
| | | | | | | | | | | | | | | | Convert libata core layer and LLDs to use iomap. * managed iomap is used. Pointer to pcim_iomap_table() is cached at host->iomap and used through out LLDs. This basically replaces host->mmio_base. * if possible, pcim_iomap_regions() is used Most iomap operation conversions are taken from Jeff Garzik <jgarzik@pobox.com>'s iomap branch. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] Shuffle DRV_xxx in core and SiS drivers, to kill warningsJeff Garzik2007-02-091-0/+1
| | | | Signed-off-by: Jeff Garzik <jeff@garzik.org>
* libata: update libata LLDs to use devresTejun Heo2007-02-091-10/+0
| | | | | | | | | | | | | | | | | Update libata LLDs to use devres. Core layer is already converted to support managed LLDs. This patch simplifies initialization and fixes many resource related bugs in init failure and detach path. For example, all converted drivers now handle ata_device_add() failure gracefully without excessive resource rollback code. As most resources are released automatically on driver detach, many drivers don't need or can do with much simpler ->{port|host}_stop(). In general, stop callbacks are need iff port or host needs to be given commands to shut it down. Note that freezing is enough in many cases and ports are automatically frozen before being detached. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* fix CONFIG_SATA_SIS=y compile errorAdrian Bunk2007-02-091-1/+2
| | | | | | | | | | | | | | | | | Static code shouldn't be used from other modules. drivers/built-in.o: In function `sis_init_one': sata_sis.c:(.text+0x7634cd): undefined reference to `sis_info133' sata_sis.c:(.text+0x7634d6): undefined reference to `sis_info133' While I was at it, I also moved the prototype of this struct to a header file. Signed-off-by: Adrian Bunk <bunk@stusta.de> Cc: Jeff Garzik <jeff@garzik.org> Cc: Tejun Heo <htejun@gmail.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* sata_sis: Support for PATA supportsAlan2007-02-091-0/+2
| | | | | | | | | | | | This is quick rework of the patch Uwe proposed but using Kconfig not ifdefs and user selection to sort out PATA support. Instead of ifdefs and requiring the user to select both drivers the SATA driver selects the PATA one. For neatness I've also moved the extern into the function that uses it. Signed-off-by: Alan Cox Signed-off-by: Jeff Garzik <jeff@garzik.org>
* pata_sis: implement laptop list and add ASUS A6K/A6UJakub W. Jozwicki J2007-02-091-2/+30
| | | | | | | | | | | | | In ASUS A6K/A6U hdd is connected to SiS 96x via 40c cable, however it is short cable and is UDMA66 capable. tj: fixed if () conditionals ah: fixed infinite loop Signed-off-by: Jakub W. Jozwicki <jakub007@go2.pl> Cc: Andreas Henriksson <andreas@fatal.se> Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] trim trailing whitespaceJeff Garzik2007-02-091-1/+1
| | | | | | Most of these contributed by that mysterious figger known as A.C. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] libata: kill unnecessary sht->max_sectors initializationsTejun Heo2006-12-031-1/+0
| | | | | | | sht->max_sectors is overrided unconditionally in ->slave_configure. There's no reason to set it to any value. Signed-off-by: Tejun Heo <htejun@gmail.com>
* [PATCH] pata : more drivers that need only standard suspend and resumeAlan2006-12-011-1/+5
| | | | | Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] libata: add missing sht->slave_destroyTejun Heo2006-11-291-0/+1
| | | | | | | | Many LLDs are missing sht->slave_destroy. The method is mandatory to support device warm unplugging (echo 1 > /sys/.../delete). Without it, libata might access released scsi device. Signed-off-by: Tejun Heo <htejun@gmail.com>
* [libata] PCI ID table cleanup in various driversJeff Garzik2006-09-281-3/+3
| | | | | | | | | | * Use PCI_VDEVICE() macro * const-ify pci_device_id table * standardize list terminator as "{ }" * convert spaces to tab in pci_driver struct (Alan-ism) * various minor whitespace cleanups Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata] Don't use old-EH ->eng_timeout() hook when not neededJeff Garzik2006-09-271-10/+0
| | | | | | | The PATA driver set got converted to the new error handling setup, but the old hooks were accidentally left in place. Now, removed. Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] libata-eh: Remove layering violation and duplication when handling ↵Alan Cox2006-09-261-6/+4
| | | | | | | | | | | | | | | absent ports This removes the layering violation where drivers have to fiddle directly with EH flags. Instead we now recognize -ENOENT means "no port" and do the handling in the core code. This also removes an instance of a call to disable the port, and an identical printk from each driver doing this. Even better - future rule changes will be in one place only. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [PATCH] Update SiS PATAAlan Cox2006-09-121-1/+5
| | | | | | | New chipset identifiers Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
* [libata #pata-drivers] Trim trailing whitespace.Jeff Garzik2006-08-311-4/+4
|
* [libata] Add a bunch of PATA drivers.Jeff Garzik2006-08-291-0/+1030
The vast majority of drivers and changes are from Alan Cox. Albert Lee contributed and maintains pata_pdc2027x. Adrian Bunk, Andrew Morton, and Tejun Heo contributed various minor fixes and updates. Signed-off-by: Jeff Garzik <jeff@garzik.org>