libata-dev queue updated
A minor update, mostly to update to the latest kernel.
BK users:
bk pull bk://gkernel.bkbits.net/libata-dev-2.6
Patch:
http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.6.11-rc5-bk4-libata-dev1.patch.bz2
This will update the following files:
drivers/scsi/Kconfig | 18 drivers/scsi/Makefile | 2 drivers/scsi/ahci.c | 107 ++++- drivers/scsi/ata_adma.c | 778 +++++++++++++++++++++++++++++++++++++++++++ drivers/scsi/libata-core.c | 312 +++++++++-------- drivers/scsi/libata-scsi.c | 701 ++++++++++++++++++++++++++++++++------ drivers/scsi/libata.h | 6 drivers/scsi/pata_pdc2027x.c | 771 ++++++++++++++++++++++++++++++++++++++++++ drivers/scsi/sata_promise.c | 84 ++++ drivers/scsi/sata_qstor.c | 20 - drivers/scsi/sata_vsc.c | 4 include/linux/ata.h | 15 include/linux/libata.h | 10 include/scsi/scsi.h | 3 14 files changed, 2531 insertions(+), 300 deletions(-)
through these ChangeSets:
<andyw:pobox.com>:
o [libata scsi] support 12-byte passthru CDB
o [libata scsi] passthru CDB check condition processing
o T10/04-262 ATA pass thru - patch
<erikbenada:yahoo.ca>:
o [libata sata_promise] support PATA ports on SATA controllers
<tklauser:nuerscht.ch>:
o drivers/scsi/ahci: Use the DMA_{64,32}BIT_MASK constants
o drivers/scsi/sata_vsc: Use the DMA_{64,32}BIT_MASK constants
Adam J. Richter:
o ata_pci_remove_one used freed memory
Albert Lee:
o [libata] use init-device-params ATA command where needed
o [libata] ata_scsi_verify_xlat() fix
o pdc2027x timing register fix for 100MHz
o [libata] CHS support: add CHS support to ata_scsi_verify_xlat(), ata_scsi_rw_xlat() and ata_scsiop_read_cap().
o [libata] CHS support: reorganize read/write translation in ata_scsi_rw_xlat()
o [libata] CHS support: rename vars (s/sector/block/) in ata_scsi_verify_xlat()
o [libata] CHS support: detect C/H/S at IDENTIFY DEVICE time
o [libata] CHS support: add definitions to headers
o pdc2027x timing register bug fix
o [libata pdc2027x] fix incorrect pio and mwdma masks
o [libata pdc2027x] remove quirks and ROM enable
o [libata] add driver for Promise PATA 2027x
Brad Campbell:
o libata basic detection and errata for PATA->SATA bridges
Jeff Garzik:
o [libata ahci] Print out port id on error messages
o [libata ahci] support PCI MSI interrupt vector
o [libata adma] Add init code, fix CPB submission code
o [libata ahci] finish ATAPI support
o [libata adma] trivial whitespace cleanup
o [libata dma] fix DMA mode config; add some more initialization code
o [libata adma] add support for configuring PIO/DMA modes
o [libata] turn on ATAPI support
o [libata sata_promise] merge Tobias Lorenz' pdc20619 patch, part 2
o [libata] small cleanups
o [libata] remove unused execute-device-diagnostic reset method
o [libata] add new driver ata_adma
o [libata pdc2027x] update for upstream struct device conversion
o [libata sata_promise] fix merge bugs
o [libata] fix build breakage
o [libata] fix SATA->PATA bridge detect compile breakage
o [libata] fix printk warning
John W. Linville:
o libata: update ATA pass thru opcodes
o libata: minor style changes in ata_scsi_pass_thru
o libata: filter SET_FEATURES - XFER MODE from ATA pass thru
o libata: sync SMART ioctls with ATA pass thru spec (T10/04-262r7)
o libata: fix command queue leak when xlat_func fails
o libata: SMART support via ATA pass-thru
Mark Lord:
o [libata qstor] minor update per LKML comments
Tobias Lorenz:
o [libata sata_promise] pdc20619 (PATA) support
o libata-scsi: get-identity ioctl support
PATCH 1/1 sata_qstor: eh_timeout fix (RESEND)
(I think this got missed first time around, so resubmitting here)
Here is an update to sata_qstor.c to enable full/proper register access during eh_timeout handling.
Patch is against 2.6.11-rc5 + earlier sata_qstor cosmetic patch.
Signature · 3 lines
Mark Lord Real-Time Remedies Inc. [email protected]
drivers/scsi/sata_qstor.c +24 -6
@@ -38,7 +38,7 @@#include <linux/libata.h> #define DRV_NAME "sata_qstor" -#define DRV_VERSION "0.03" +#define DRV_VERSION "0.04"enum {QS_PORTS =4 ,
@@ -120,6 +120,7 @@static void qs_bmdma_stop (struct ata_port *ap);static u8 qs_bmdma_status (struct ata_port *ap);static void qs_irq_clear (struct ata_port *ap); +static void qs_eng_timeout (struct ata_port *ap);static Scsi_Host_Template qs_ata_sht = { .module =THIS_MODULE ,
@@ -152,7 +153,7 @@ .phy_reset = qs_phy_reset, .qc_prep = qs_qc_prep, .qc_issue = qs_qc_issue, - .eng_timeout = ata_eng_timeout, + .eng_timeout = qs_eng_timeout, .irq_handler = qs_intr, .irq_clear = qs_irq_clear, .scr_read = qs_scr_read,
@@ -212,7 +213,7 @@/* nothing */ } -static void qs_enter_reg_mode (struct ata_port *ap) +static inline void qs_enter_reg_mode (struct ata_port *ap) {u8 __iomem *chan = ap->host_set->mmio_base + (ap->port_no *0x4000 );
@@ -220,17 +221,34 @@readb (chan +QS_CCT_CTR0 );/* flush */ } -static void qs_phy_reset (struct ata_port *ap) +static inline void qs_reset_channel_logic (struct ata_port *ap) {u8 __iomem *chan = ap->host_set->mmio_base + (ap->port_no *0x4000 ); -struct qs_port_priv *pp = ap->private_data; - pp->state = qs_state_idle;writeb (QS_CTR1_RCHN , chan +QS_CCT_CTR1 ); +readb (chan +QS_CCT_CTR0 );/* flush */ qs_enter_reg_mode (ap); +} + +static void qs_phy_reset (struct ata_port *ap) +{ +struct qs_port_priv *pp = ap->private_data; + + pp->state = qs_state_idle; +qs_reset_channel_logic (ap);sata_phy_reset (ap); } +static void qs_eng_timeout (struct ata_port *ap) +{ +struct qs_port_priv *pp = ap->private_data; + +if (pp->state != qs_state_idle)/* healthy paranoia */ + pp->state = qs_state_mmio; +qs_reset_channel_logic (ap); +ata_eng_timeout (ap); +} +static u32 qs_scr_read (struct ata_port *ap,unsigned int sc_reg) {if (sc_reg >SCR_CONTROL )