2.4.x libata updates
PATCH 1/1 2.4.x libata updates
Please do a
bk pull bk://kernel.bkbits.net/jgarzik/libata-upstream-2.4
This will update the following files:
drivers/scsi/libata-core.c | 9 ++++----- drivers/scsi/sata_nv.c | 6 ++++-- drivers/scsi/sata_qstor.c | 30 ++++++++++++++++++++++++------ drivers/scsi/sata_sil.c | 2 +- drivers/scsi/sata_svw.c | 4 ++-- drivers/scsi/sata_vsc.c | 3 ++- 6 files changed, 37 insertions(+), 17 deletions(-)
through these ChangeSets:
<liml:rtr.ca>:
o sata_qstor: eh_timeout fix
Adrian Bunk:
o drivers/scsi/sata_*: make code static
Jeff Garzik:
o [libata] remove_one helper cleanup
drivers/scsi/libata-core.c +4 -5
@@ -3887,15 +3887,12 @@if (host_set->mmio_base)iounmap (host_set->mmio_base); -pci_release_regions (pdev); -for (i =0 ; i < host_set->n_ports; i++) { -struct ata_ioports *ioaddr; - ap = host_set->ports[i]; - ioaddr = &ap->ioaddr;if ((ap->flags &ATA_FLAG_NO_LEGACY ) ==0 ) { +struct ata_ioports *ioaddr = &ap->ioaddr; +if (ioaddr->cmd_addr ==0x1f0 )release_region (0x1f0 ,8 );else if (ioaddr->cmd_addr ==0x170 )
@@ -3904,6 +3901,8 @@ }kfree (host_set); + +pci_release_regions (pdev);pci_disable_device (pdev);dev_set_drvdata (dev,NULL ); }
drivers/scsi/sata_nv.c +4 -2
@@ -99,7 +99,8 @@#define NV_MCP_SATA_CFG_20_SATA_SPACE_EN 0x04static int nv_init_one (struct pci_dev *pdev,const struct pci_device_id *ent); -irqreturn_t nv_interrupt (int irq,void *dev_instance,struct pt_regs *regs); +static irqreturn_t nv_interrupt (int irq,void *dev_instance, +struct pt_regs *regs);static u32 nv_scr_read (struct ata_port *ap,unsigned int sc_reg);static void nv_scr_write (struct ata_port *ap,unsigned int sc_reg,u32 val);static void nv_host_stop (struct ata_host_set *host_set);
@@ -258,7 +259,8 @@MODULE_DEVICE_TABLE (pci, nv_pci_tbl);MODULE_VERSION (DRV_VERSION ); -irqreturn_t nv_interrupt (int irq,void *dev_instance,struct pt_regs *regs) +static irqreturn_t nv_interrupt (int irq,void *dev_instance, +struct pt_regs *regs) {struct ata_host_set *host_set = dev_instance;struct nv_host *host = host_set->private_data;
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 ,
@@ -153,7 +154,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,
@@ -213,7 +214,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 );
@@ -221,15 +222,32 @@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)
drivers/scsi/sata_sil.c +1 -1
@@ -78,7 +78,7 @@/* TODO firmware versions should be added - eric */ -struct sil_drivelist { +static const struct sil_drivelist {const char * product;unsigned int quirk; } sil_blacklist [] = {
drivers/scsi/sata_svw.c +2 -2
@@ -156,7 +156,7 @@* spin_lock_irqsave(host_set lock) */ -void k2_bmdma_setup_mmio (struct ata_queued_cmd *qc) +static void k2_bmdma_setup_mmio (struct ata_queued_cmd *qc) {struct ata_port *ap = qc->ap;unsigned int rw = (qc->tf.flags &ATA_TFLAG_WRITE );
@@ -186,7 +186,7 @@* spin_lock_irqsave(host_set lock) */ -void k2_bmdma_start_mmio (struct ata_queued_cmd *qc) +static void k2_bmdma_start_mmio (struct ata_queued_cmd *qc) {struct ata_port *ap = qc->ap;void *mmio = (void *) ap->ioaddr.bmdma_addr;
drivers/scsi/sata_vsc.c +2 -1
@@ -155,7 +155,8 @@* * Read the interrupt register and process for the devices that have them pending. */ -irqreturn_t vsc_sata_interrupt (int irq,void *dev_instance,struct pt_regs *regs) +static irqreturn_t vsc_sata_interrupt (int irq,void *dev_instance, +struct pt_regs *regs) {struct ata_host_set *host_set = dev_instance;unsigned int i;