summaryrefslogtreecommitdiffstats
path: root/drivers/ata
Commit message (Collapse)AuthorAgeFilesLines
* Merge tag 'tag/upstream-linus' of ↵Linus Torvalds2012-05-035-5/+7
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Pull libata fixes from Jeff Garzik: 1) Fix regression that could cause a misdiagnosis, which in turn could lead to an erroneous 3.0 Gbps -> 1.5 downshift, particularly when hotplug and suspend/resume is involved. 2) Fix a regression that led to ata%d controller ids being numbered one larger than in <= 3.4-rc3 (oh, the horror!). Controller ids should now be as expected. 3) add some DT, PCI id's 4) ata/pata_arasan_cf: minor cpp fixing/cleaning * tag 'tag/upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev: ata: ahci_platform: Add synopsys ahci controller in DT's compatible list ata/pata_arasan_cf: Move arasan_cf_pm_ops out of #ifdef, #endif macros libata: init ata_print_id to 0 ahci: Detect Marvell 88SE9172 SATA controller libata: skip old error history when counting probe trials
| * ata: ahci_platform: Add synopsys ahci controller in DT's compatible listViresh Kumar2012-05-031-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | SPEAr13xx series of SoCs contain Synopsys AHCI SATA Controller which shares ahci_platform driver with other controller versions. This patch updates DT compatible list for ahci_platform. It also updates and renames binding documentation to more generic name. Signed-off-by: Viresh Kumar <viresh.kumar@st.com> Cc: Rob Herring <rob.herring@calxeda.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * ata/pata_arasan_cf: Move arasan_cf_pm_ops out of #ifdef, #endif macrosViresh Kumar2012-05-031-3/+1
| | | | | | | | | | | | | | | | #ifdef, #endif is not required in definition/usage of arasan_cf_pm_ops. So, move this definition and its usage outside of them. Signed-off-by: Viresh Kumar <viresh.kumar@st.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * libata: init ata_print_id to 0Tero Roponen2012-05-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When comparing the dmesg between 3.4-rc3 and 3.4-rc4 I found the following differences: -ata1: SATA max UDMA/133 abar m2048@0xf9fff000 port 0xf9fff100 irq 47 -ata2: SATA max UDMA/133 abar m2048@0xf9fff000 port 0xf9fff180 irq 47 -ata3: DUMMY +ata2: SATA max UDMA/133 abar m2048@0xf9fff000 port 0xf9fff100 irq 47 +ata3: SATA max UDMA/133 abar m2048@0xf9fff000 port 0xf9fff180 irq 47 ata4: DUMMY ata5: DUMMY -ata6: SATA max UDMA/133 abar m2048@0xf9fff000 port 0xf9fff380 irq 47 +ata6: DUMMY +ata7: SATA max UDMA/133 abar m2048@0xf9fff000 port 0xf9fff380 irq 47 The change of numbering comes from commit 85d6725b7c0d7e3f ("libata: make ata_print_id atomic") that changed lines like ap->print_id = ata_print_id++; to ap->print_id = atomic_inc_return(&ata_print_id); As the latter behaves like ++ata_print_id, we must initialize it to zero to start the numbering from one. Signed-off-by: Tero Roponen <tero.roponen@gmail.com> Acked-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * ahci: Detect Marvell 88SE9172 SATA controllerMatt Johnson2012-05-031-0/+2
| | | | | | | | | | | | | | | | | | | | The Marvell 88SE9172 SATA controller (PCI ID 1b4b 917a) already worked once it was detected, but was missing an ahci_pci_tbl entry. Boot tested on a Gigabyte Z68X-UD3H-B3 motherboard. Signed-off-by: Matt Johnson <johnso87@illinois.edu> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * libata: skip old error history when counting probe trialsLin Ming2012-05-031-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit d902747("[libata] Add ATA transport class") introduced ATA_EFLAG_OLD_ER to mark entries in the error ring as cleared. But ata_count_probe_trials_cb() didn't check this flag and it still counts the old error history. So wrong probe trials count is returned and it causes problem, for example, SATA link speed is slowed down from 3.0Gbps to 1.5Gbps. Fix it by checking ATA_EFLAG_OLD_ER in ata_count_probe_trials_cb(). Cc: stable <stable@vger.kernel.org> # 2.6.37+ Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* | [SCSI] libsas, libata: fix start of life for a sas ata_portDan Williams2012-04-231-15/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the ordering of initialization and probing events from: 1/ allocate rphy in PORTE_BYTES_DMAED, DISCE_REVALIDATE_DOMAIN 2/ allocate ata_port and schedule port probe in DISCE_PROBE ...to: 1/ allocate ata_port in PORTE_BYTES_DMAED, DISCE_REVALIDATE_DOMAIN 2/ allocate rphy in PORTE_BYTES_DMAED, DISCE_REVALIDATE_DOMAIN 3/ schedule port probe in DISCE_PROBE This ordering prevents PHYE_SIGNAL_LOSS_EVENTS from sneaking in to destrory ata devices before they have been fully initialized: BUG: unable to handle kernel paging request at 0000000000003b10 IP: [<ffffffffa0053d7e>] sas_ata_end_eh+0x12/0x5e [libsas] ... [<ffffffffa004d1af>] sas_unregister_common_dev+0x78/0xc9 [libsas] [<ffffffffa004d4d4>] sas_unregister_dev+0x4f/0xad [libsas] [<ffffffffa004d5b1>] sas_unregister_domain_devices+0x7f/0xbf [libsas] [<ffffffffa004c487>] sas_deform_port+0x61/0x1b8 [libsas] [<ffffffffa004bed0>] sas_phye_loss_of_signal+0x29/0x2b [libsas] ...and kills the awkward "sata domain_device briefly existing in the domain without an ata_port" state. Reported-by: Michal Kosciowski <michal.kosciowski@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> Acked-by: Jeff Garzik <jgarzik@redhat.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
* | [SCSI] libata: Pass correct DMA device to scsi hostLin Ming2012-04-221-1/+2
|/ | | | | | | | | | | | Use scsi_add_host_with_dma in ata_scsi_add_hosts to pass in the correct DMA device(ATA host). Bug report: http://marc.info/?l=linux-ide&m=133177818318187&w=2 Reported-and-tested-by: Jörg Sommer <joerg@alea.gnuu.de> Acked-by: Jeff Garzik <jgarzik@redhat.com> Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
* libata: forbid port runtime pm by default, fixing regressionLin Ming2012-04-181-0/+1
| | | | | | | | | | Forbid port runtime pm by default because it has known hotplug issue. User can allow it by, for example echo auto > /sys/devices/pci0000:00/0000:00:1f.2/ata2/power/control Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* libata: make ata_print_id atomicDan Williams2012-04-123-5/+5
| | | | | | | | | | This variable is incremented from multiple contexts (module_init via libata-lldds and the libsas discovery thread). Make it atomic to head off any chance of libsas and libata creating duplicate ids. Acked-by: Jacek Danecki <jacek.danecki@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* sata_mv: silence an uninitialized variable warningDan Carpenter2012-04-121-1/+2
| | | | | | | | | Gcc version 4.6.2-12 complains that if we can't find the "nr-ports" property in of_property_read_u32_array() then "n_ports" is used uninitialized. Let's set it to zero in that case. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* ata_piix: IDE-mode SATA patch for Intel DH89xxCC DeviceIDsSeth Heasley2012-04-121-0/+2
| | | | | | | This patch adds the IDE-mode SATA DeviceIDs for the Intel DH89xxCC PCH. Signed-off-by: Seth Heasley <seth.heasley@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* Merge tag 'for-linus' of ↵Linus Torvalds2012-03-2210-76/+281
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Pull libata updates from Jeff Garzik: 1) AHCI regression fix. A recent "make driver conform to spec" change broke on deployed hardware. Make new behavior optional, rather than default, turning it on only for specific embedded platforms that need this. Everybody else runs in the famous "non conformant but working" mode. 2) pata_cmd64x, pata_legacy cleanups 3) new Intel SATA PCI IDs 4) misc minor vendor feature additions * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev: pata_cmd64x: implement sff_irq_check() method pata_cmd64x: implement sff_irq_clear() method pata_cmd64x: use interrupt status from MRDMODE register pata_cmd64x: turn string of *if* statements into *switch* drivers/ata/pata_mpc52xx.c: clean up error handling code ahci_platform: add STRICT_AHCI platform type ahci: move AHCI_HFLAGS() macro to ahci.h ahci: add AHCI_HFLAG_DELAY_ENGINE host flag sata_fsl: add support for interrupt coalsecing feature ata/pata_arasan_cf: Add Hibernation support pata_legacy: correctly mask recovery field for HT6560B ata_piix: IDE-mode SATA patch for Intel Lynx Point DeviceIDs ahci: AHCI-mode SATA patch for Intel Lynx Point DeviceIDs
| * pata_cmd64x: implement sff_irq_check() methodSergei Shtylyov2012-03-131-1/+42
| | | | | | | | | | | | | | Implement sff_irq_check() method for both old and new chips. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * pata_cmd64x: implement sff_irq_clear() methodSergei Shtylyov2012-03-131-16/+15
| | | | | | | | | | | | | | | | | | | | Convert the driver's two bmdma_stop() methods into sff_irq_clear() methods -- they shouldn't have been bothering with clearing interrupts from the very start; the driver will now use the standard bmdma_stop() method implementation (where appropriate). Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * pata_cmd64x: use interrupt status from MRDMODE registerSergei Shtylyov2012-03-131-17/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Start using faster version of the bmdma_stop() method for the PCI0646U and newer chips that have the duplicate interrupt status bits in the I/O mapped MRDMODE register. Use the old, slow bmdma_stop() method on the older chips, taking into account that the interrupt bits are not coupled to DMA and that's enough to read the register to clear the interrupt (on the older chips). Determine what method to use at the driver load time. Fix kernel-doc of the bmdma_stop() methods, while at it. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * pata_cmd64x: turn string of *if* statements into *switch*Sergei Shtylyov2012-03-131-11/+17
| | | | | | | | | | | | | | | | | | | | | | Convert string of the *if* statements all checking 'pdev->revision' into more natural *switch* statement. While at it, somewhat clarify the comments there... Increment the driver version, accounting for the patches that neglected to do this in the past. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * drivers/ata/pata_mpc52xx.c: clean up error handling codeJulia Lawall2012-03-131-29/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes a number of changes with respect to the error-handling code: * Remove cleanup calls for the devm functions in both the error handling code and the remove function. This cleanup is done automatically. * The previous change simplifies the cleanup code at the end of the function such that there is nothing to do on the failure of the call to devm_ioremap. So it is changed to just return directly. * There is no need for the ifs in the cleanup code at the end of the function, because in each case the cleanup needed is statically known. Drop the ifs, add new err labels, and drop the initializations of the tested variables to NULL. * Change the call to request_irq to a call to devm_request_irq, so that it is cleaned up on exit. * Cause the return value of devm_request_irq to go into the returned variable rv rather than the unused variable ret. Drop ret. Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * ahci_platform: add STRICT_AHCI platform typeBrian Norris2012-03-131-0/+11
| | | | | | | | | | | | | | | | Some platforms need to make use of the AHCI_HFLAG_DELAY_ENGINE flag. Signed-off-by: Brian Norris <computersforpeace@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com> Cc: stable@kernel.org
| * ahci: move AHCI_HFLAGS() macro to ahci.hBrian Norris2012-03-132-2/+3
| | | | | | | | | | | | | | | | | | We will need this macro in both ahci.c and ahci_platform.c, so just move it to the header. Signed-off-by: Brian Norris <computersforpeace@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com> Cc: stable@kernel.org
| * ahci: add AHCI_HFLAG_DELAY_ENGINE host flagBrian Norris2012-03-132-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The following commit was intended to fix problems with specific AHCI controller(s) that would become bricks if the AHCI specification was not followed strictly (that is, if ahci_start_engine() was called while the controller was in the wrong state): commit 7faa33da9b7add01db9f1ad92c6a5d9145e940a7 ahci: start engine only during soft/hard resets However, some devices currently have issues with that fix, so we must implement a flag that delays the ahci_start_engine() call only for specific controllers. This commit simply introduces the flag, without enabling it in any driver. Note that even when AHCI_HFLAG_DELAY_ENGINE is not enabled, this patch does not constitue a full revert to commit 7faa33da; there is still a change in behavior to the ahci_port_suspend() failure path. Signed-off-by: Brian Norris <computersforpeace@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com> Cc: stable@kernel.org
| * sata_fsl: add support for interrupt coalsecing featureQiang Liu2012-03-131-4/+107
| | | | | | | | | | | | | | | | | | | | Adds support for interrupt coalescing feature to reduce interrupt events. Provides a mechanism of adjusting coalescing count and timeout tick by sysfs at runtime, so that tradeoff of latency and CPU load can be made depending on different applications. Signed-off-by: Qiang Liu <qiang.liu@freescale.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * ata/pata_arasan_cf: Add Hibernation supportViresh Kumar2012-03-131-8/+4
| | | | | | | | | | | | | | | | This patch adds in Hibernation related callbacks. Also we don't really need to free DMA channel on suspend. Signed-off-by: Viresh Kumar <viresh.kumar@st.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * pata_legacy: correctly mask recovery field for HT6560BSergei Shtylyov2012-03-131-2/+1
| | | | | | | | | | | | | | | | | | | | According to the HT6560H datasheet, the recovery timing field is 4-bit wide, with a value of 0 meaning 16 cycles. Correct obvious thinko in the recovery field mask. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Cc: stable@kernel.org Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * ata_piix: IDE-mode SATA patch for Intel Lynx Point DeviceIDsSeth Heasley2012-03-131-0/+8
| | | | | | | | | | | | | | This patch adds the IDE-mode SATA DeviceIDs for the Intel Lynx Point PCH. Signed-off-by: Seth Heasley <seth.heasley@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * ahci: AHCI-mode SATA patch for Intel Lynx Point DeviceIDsSeth Heasley2012-03-131-0/+8
| | | | | | | | | | | | | | This patch adds the AHCI-mode SATA DeviceIDs for the Intel Lynx Point PCH. Signed-off-by: Seth Heasley <seth.heasley@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* | Merge tag 'scsi-misc' of ↵Linus Torvalds2012-03-224-17/+33
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 SCSI updates from James Bottomley: "The update includes the usual assortment of driver updates (lpfc, qla2xxx, qla4xxx, bfa, bnx2fc, bnx2i, isci, fcoe, hpsa) plus a huge amount of infrastructure work in the SAS library and transport class as well as an iSCSI update. There's also a new SCSI based virtio driver." * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (177 commits) [SCSI] qla4xxx: Update driver version to 5.02.00-k15 [SCSI] qla4xxx: trivial cleanup [SCSI] qla4xxx: Fix sparse warning [SCSI] qla4xxx: Add support for multiple session per host. [SCSI] qla4xxx: Export CHAP index as sysfs attribute [SCSI] scsi_transport: Export CHAP index as sysfs attribute [SCSI] qla4xxx: Add support to display CHAP list and delete CHAP entry [SCSI] iscsi_transport: Add support to display CHAP list and delete CHAP entry [SCSI] pm8001: fix endian issue with code optimization. [SCSI] pm8001: Fix possible racing condition. [SCSI] pm8001: Fix bogus interrupt state flag issue. [SCSI] ipr: update PCI ID definitions for new adapters [SCSI] qla2xxx: handle default case in qla2x00_request_firmware() [SCSI] isci: improvements in driver unloading routine [SCSI] isci: improve phy event warnings [SCSI] isci: debug, provide state-enum-to-string conversions [SCSI] scsi_transport_sas: 'enable' phys on reset [SCSI] libsas: don't recover end devices attached to disabled phys [SCSI] libsas: fixup target_port_protocols for expanders that don't report sata [SCSI] libsas: set attached device type and target protocols for local phys ...
| * | [SCSI] libsas: async ata scanningDan Williams2012-02-293-16/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libsas ata error handling is already async but this does not help the scan case. Move initial link recovery out from under host->scan_mutex, and delay synchronization with eh until after all port probe/recovery work has been queued. Device ordering is maintained with scan order by still calling sas_rphy_add() in order of domain discovery. Since we now scan the domain list when invoking libata-eh we need to be careful to check for fully initialized ata ports. Acked-by: Jack Wang <jack_wang@usish.com> Acked-by: Jeff Garzik <jgarzik@redhat.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
| * | [SCSI] libsas: execute transport link resets with libata-eh via host workqueueDan Williams2012-02-192-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Link resets leave ata affiliations intact, so arrange for libsas to make an effort to avoid dropping the device due to a slow-to-recover link. Towards this end carry out reset in the host workqueue so that it can check for ata devices and kick the reset request to libata. Hard resets, in contrast, bypass libata since they are meant for associating an ata device with another initiator in the domain (tears down affiliations). Need to add a new transport_sas_phy_reset() since the current sas_phy_reset() is a utility function to libsas lldds. They are not prepared for it to loop back into eh. Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
* | | ata: remove the second argument of k[un]map_atomic()Cong Wang2012-03-201-4/+4
| |/ |/| | | | | | | Acked-by: Jeff Garzik <jgarzik@redhat.com> Signed-off-by: Cong Wang <amwang@redhat.com>
* | pata/at91: use newly introduced SMC accessorsJean-Christophe PLAGNIOL-VILLARD2012-02-131-27/+21
|/ | | | | | | | | | | | | pata_at91 driver is broken since faee0cc: "make smc register base soc independent" Fix it with newly introduced SMC accessors. The overall action of removal of at91_sys_read/write will allow to use the pata_at91 on a single zImage kernel. Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com> Cc: linux-ide@vger.kernel.org
* [libata] ata_piix: Add Toshiba Satellite Pro A120 to the quirks listBenjamin Larsson2012-01-171-0/+7
| | | | | | | due to broken suspend functionality. Signed-off-by: Benjamin Larsson <benjamin@southpole.se> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* [libata] add DVRTD08A and DVR-215 to NOSETXFER device quirk listVladimir LAVALLADE2012-01-171-0/+2
| | | | Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* [libata] pata_bf54x: Support sg list in bmdma transfer.Sonic Zhang2012-01-171-79/+88
| | | | | | | | BF54x on-chip ATAPI controller allows maximum 0x1fffe bytes to be transfered in one ATAPI transfer. So, set the max sg_tablesize to 4. Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* [libata] sata_fsl: fix the controller operating modeJerry Huang2012-01-171-0/+11
| | | | | | | | | Configure the FSL SATA controller to the preferred, enterprise mode. Signed-off-by: Yutaka Ando <r46913@freescale.com> Signed-off-by: Jerry Huang <Chang-Ming.Huang@freescale.com> CC: Jeff Garzik <jgarzik@pobox.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* [libata] enable ata port async suspendLin Ming2012-01-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | This saves devices suspend/resume time. Tested system suspend/resume with SATA IDE/AHCI mode 3 times. Below is the time took for devices suspend/resume. SATA mode vanilla-kernel patched-kernel --------- --------------------- --------------------- IDE suspend: 0.744 suspend: 0.432 (0.716, 0.768, 0.748) (0.440, 0.428, 0.428) resume: 5.084 resume: 2.209 (5.100, 5.064, 5.088) (2.168, 2.232, 2.228) AHCI: suspend: 0.725 suspend: 0.449 (0.740, 0.708, 0.728) (0.456, 0.448, 0.444) resume: 2.556 resume: 1.896 (2.604, 2.492, 2.572) (1.932, 1.872, 1.884) Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
* module_param: make bool parameters really bool (drivers & misc)Rusty Russell2012-01-132-4/+4
| | | | | | | | | | | | module_param(bool) used to counter-intuitively take an int. In fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy trick. It's time to remove the int/unsigned int option. For this version it'll simply give a warning, but it'll break next kernel version. Acked-by: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* Merge branch 'upstream-linus' of git://github.com/jgarzik/libata-devLinus Torvalds2012-01-1023-319/+288
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'upstream-linus' of git://github.com/jgarzik/libata-dev: ahci: support the STA2X11 I/O Hub pata_bf54x: fix BMIDE status register emulation ata: add ata port hibernate callbacks ata: update ata port's runtime status during system resume [SCSI] runtime resume parent for child's system-resume ahci: platform support for suspend/resume libata-core: kill duplicate statement in ata_do_set_mode() pata_of_platform: remove direct dependency on OF_IRQ SATA/PATA: convert drivers/ata/* to use module_platform_driver() pata_cs5536: forward port changes from cs5536 libata-sff: use ATAPI_{COD|IO} ata: add ata port runtime PM callbacks ata: add ata port system PM callbacks [SCSI] sd: check runtime PM status in sd_shutdown [SCSI] check runtime PM status in system PM [SCSI] add flag to skip the runtime PM calls on the host ata: make ata port as parent device of scsi host ahci: start engine only during soft/hard resets
| * ahci: support the STA2X11 I/O HubAlessandro Rubini2012-01-081-5/+21
| | | | | | | | | | | | | | | | | | | | | | The AHCI controller found in the STA2X11 chip uses BAR number 0 instead of 5. Also, the chip's fixup code sets a special DMA mask for all of its PCI functions, and the mask must be preserved here. Signed-off-by: Alessandro Rubini <rubini@gnudd.com> Acked-by: Giancarlo Asnaghi <giancarlo.asnaghi@st.com> Cc: Alan Cox <alan@linux.intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * pata_bf54x: fix BMIDE status register emulationSergei Shtylyov2012-01-081-18/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The author of this driver clearly wasn't familiar with the BMIDE specification (also known as SFF-8038i) when he implemented the bmdma_status() method: first, the interrupt bit of the BMIDE status register corresponds to nothing else but INTRQ signal (ATAPI_DEV_INT here); second, the error bit is only set if the controller encounters issue doing the bus master transfers, not on the IDE DMA burst termination interrupts like here (moreover, setting the error bit doesn't cause an interrupt). We now need to disable all those unused interrupts... (The only thing I couldn't figure out is how to flush the FIFO to memory once the interrupt happens as required by the mentioned spec.) Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * ata: add ata port hibernate callbacksLin Ming2012-01-081-4/+36
| | | | | | | | | | Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * ata: update ata port's runtime status during system resumeLin Ming2012-01-081-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ata port is brought back to full power state during system resume. So its runtime PM status will have to be updated to reflect the actual post-system sleep status. This also fixes below warning during system suspend/resume. WARNING: at /work/linux/drivers/ata/libata-eh.c:4034 ata_scsi_port_error_handler+0x89/0x557() 4034 WARN_ON(!(ap->pflags & ATA_PFLAG_SUSPENDED)); Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * ahci: platform support for suspend/resumeBrian Norris2012-01-081-0/+68
| | | | | | | | | | | | | | | | | | Add platform hooks for custom suspend() and resume() functions. The generic suspend/resume code in drivers/ata/ahci_platform.c is adapted from the PCI version in drivers/ata/ahci.c. Signed-off-by: Brian Norris <computersforpeace@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * libata-core: kill duplicate statement in ata_do_set_mode()Sergei Shtylyov2012-01-081-2/+2
| | | | | | | | | | | | | | | | | | | | Commit b3a706014e56b1356e7b275fd25b833c63175bf0 (libata: Add a drivers/ide style DMA disable) neglected to remove the line in ata_do_set_mode() it has obviously made useless/duplicated. Do this now, and make a line added back then wrapped properly... Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * pata_of_platform: remove direct dependency on OF_IRQRob Herring2012-01-082-10/+7
| | | | | | | | | | | | | | | | | | | | CONFIG_OF_IRQ is not available on some platforms and using of_irq_* breaks the build. Since resources are already populated in the platform device, get the irq from there instead. Reported-by: David S. Miller <davem@davemloft.net> Signed-off-by: Rob Herring <rob.herring@calxeda.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * SATA/PATA: convert drivers/ata/* to use module_platform_driver()Axel Lin2012-01-0812-158/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch converts the drivers in drivers/ata/* to use the module_platform_driver() macro which makes the code smaller and a bit simpler. Cc: Viresh Kumar <viresh.kumar@st.com> Cc: Jeff Garzik <jgarzik@pobox.com> Cc: Arnaud Patard <arnaud.patard@rtp-net.org> Cc: Alessandro Zummo <a.zummo@towertech.it> Cc: Sylvain Munaut <tnt@246tNt.com> Cc: Anton Vorontsov <avorontsov@ru.mvista.com> Cc: Marek Vasut <marek.vasut@gmail.com> Cc: Florian Fainelli <florian@openwrt.org> Cc: Mark Miesfeld <mmiesfeld@amcc.com> Cc: Ashish Kalra <ashish.kalra@freescale.com> Cc: Paul Mundt <lethal@linux-sh.org> Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * pata_cs5536: forward port changes from cs5536Bartlomiej Zolnierkiewicz2012-01-081-57/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix cable detection to also account for the slave device cable bit. * Disable UDMA when programming MWDMA in cs5536_set_dmamode(). * Don't change UDMA settings in cs5536_set_piomode(). * Add cs5536_program_dtc() helper. * Cleanup and uninline cs5536_[read,write]() methods. Cc: Martin K. Petersen <mkp@mkp.net> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * libata-sff: use ATAPI_{COD|IO}Sergei Shtylyov2012-01-081-2/+2
| | | | | | | | | | | | | | | | atapi_pio_bytes() uses bare numbers for the ATAPI interrupt reason bits despite these are #define'd in <linux/ata.h>. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * ata: add ata port runtime PM callbacksLin Ming2012-01-083-0/+15
| | | | | | | | | | | | | | | | | | | | Add ata port runtime suspend/resume/idle callbacks. Set ->eh_noresume to skip the runtime PM calls on scsi host in the error handler to avoid dead lock. Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * ata: add ata port system PM callbacksLin Ming2012-01-083-70/+76
| | | | | | | | | | | | | | | | | | | | Change ata_host_request_pm to ata_port_request_pm which performs port suspend/resume. Add ata port type driver which implements port PM callbacks. Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>