Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev

* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev:
  [libata] Don't use old-EH ->eng_timeout() hook when not needed
  [libata] sata_mv: fix oops by filling in missing hook
  [libata] One more s/15/ATA_SECONDARY_IRQ/ substitution
  [libata] pata_serverworks: fill in ->irq_clear hook
  [PATCH] pata_serverworks: correct PCI ID in cable detection table
  [PATCH] libata-sff: use our IRQ defines
  [PATCH] libata-eh: Remove layering violation and duplication when handling absent ports
  [PATCH] libata: tighten rules for legacy dependancies
  [PATCH] libata: refuse to register IRQless ports
This commit is contained in:
Linus Torvalds 2006-09-27 14:41:00 -07:00
commit ac7f6b5e44
43 changed files with 138 additions and 188 deletions

View file

@ -311,7 +311,7 @@ config PATA_JMICRON
config PATA_LEGACY config PATA_LEGACY
tristate "Legacy ISA PATA support (Experimental)" tristate "Legacy ISA PATA support (Experimental)"
depends on PCI && EXPERIMENTAL depends on ISA && EXPERIMENTAL
help help
This option enables support for ISA/VLB bus legacy PATA This option enables support for ISA/VLB bus legacy PATA
ports and allows them to be accessed via the new ATA layer. ports and allows them to be accessed via the new ATA layer.
@ -400,6 +400,7 @@ config PATA_PDC_OLD
config PATA_QDI config PATA_QDI
tristate "QDI VLB PATA support" tristate "QDI VLB PATA support"
depends on ISA
help help
Support for QDI 6500 and 6580 PATA controllers on VESA local bus. Support for QDI 6500 and 6580 PATA controllers on VESA local bus.

View file

@ -143,7 +143,7 @@ static struct ata_port_operations generic_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear, .irq_clear = ata_bmdma_irq_clear,

View file

@ -643,11 +643,9 @@ static int piix_pata_prereset(struct ata_port *ap)
{ {
struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct pci_dev *pdev = to_pci_dev(ap->host->dev);
if (!pci_test_config_bits(pdev, &piix_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &piix_enable_bits[ap->port_no]))
ata_port_printk(ap, KERN_INFO, "port disabled. ignoring.\n"); return -ENOENT;
ap->eh_context.i.action &= ~ATA_EH_RESET_MASK;
return 0;
}
ap->cbl = ATA_CBL_PATA40; ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap); return ata_std_prereset(ap);
} }

View file

@ -5453,6 +5453,11 @@ int ata_device_add(const struct ata_probe_ent *ent)
int rc; int rc;
DPRINTK("ENTER\n"); DPRINTK("ENTER\n");
if (ent->irq == 0) {
dev_printk(KERN_ERR, dev, "is not available: No interrupt assigned.\n");
return 0;
}
/* alloc a container for our list of ATA ports (buses) */ /* alloc a container for our list of ATA ports (buses) */
host = kzalloc(sizeof(struct ata_host) + host = kzalloc(sizeof(struct ata_host) +
(ent->n_ports * sizeof(void *)), GFP_KERNEL); (ent->n_ports * sizeof(void *)), GFP_KERNEL);

View file

@ -1515,7 +1515,11 @@ static int ata_eh_reset(struct ata_port *ap, int classify,
if (prereset) { if (prereset) {
rc = prereset(ap); rc = prereset(ap);
if (rc) { if (rc) {
ata_port_printk(ap, KERN_ERR, if (rc == -ENOENT) {
ata_port_printk(ap, KERN_DEBUG, "port disabled. ignoring.\n");
ap->eh_context.i.action &= ~ATA_EH_RESET_MASK;
} else
ata_port_printk(ap, KERN_ERR,
"prereset failed (errno=%d)\n", rc); "prereset failed (errno=%d)\n", rc);
return rc; return rc;
} }

View file

@ -881,7 +881,7 @@ static struct ata_probe_ent *ata_pci_init_legacy_port(struct pci_dev *pdev,
probe_ent->private_data = port[0]->private_data; probe_ent->private_data = port[0]->private_data;
if (port_mask & ATA_PORT_PRIMARY) { if (port_mask & ATA_PORT_PRIMARY) {
probe_ent->irq = 14; probe_ent->irq = ATA_PRIMARY_IRQ;
probe_ent->port[0].cmd_addr = ATA_PRIMARY_CMD; probe_ent->port[0].cmd_addr = ATA_PRIMARY_CMD;
probe_ent->port[0].altstatus_addr = probe_ent->port[0].altstatus_addr =
probe_ent->port[0].ctl_addr = ATA_PRIMARY_CTL; probe_ent->port[0].ctl_addr = ATA_PRIMARY_CTL;
@ -896,9 +896,9 @@ static struct ata_probe_ent *ata_pci_init_legacy_port(struct pci_dev *pdev,
if (port_mask & ATA_PORT_SECONDARY) { if (port_mask & ATA_PORT_SECONDARY) {
if (probe_ent->irq) if (probe_ent->irq)
probe_ent->irq2 = 15; probe_ent->irq2 = ATA_SECONDARY_IRQ;
else else
probe_ent->irq = 15; probe_ent->irq = ATA_SECONDARY_IRQ;
probe_ent->port[1].cmd_addr = ATA_SECONDARY_CMD; probe_ent->port[1].cmd_addr = ATA_SECONDARY_CMD;
probe_ent->port[1].altstatus_addr = probe_ent->port[1].altstatus_addr =
probe_ent->port[1].ctl_addr = ATA_SECONDARY_CTL; probe_ent->port[1].ctl_addr = ATA_SECONDARY_CTL;

View file

@ -369,7 +369,7 @@ static struct ata_port_operations ali_early_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -410,7 +410,7 @@ static struct ata_port_operations ali_20_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -448,7 +448,7 @@ static struct ata_port_operations ali_c2_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -485,7 +485,7 @@ static struct ata_port_operations ali_c5_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -25,7 +25,7 @@
#include <linux/libata.h> #include <linux/libata.h>
#define DRV_NAME "pata_amd" #define DRV_NAME "pata_amd"
#define DRV_VERSION "0.2.3" #define DRV_VERSION "0.2.4"
/** /**
* timing_setup - shared timing computation and load * timing_setup - shared timing computation and load
@ -137,11 +137,8 @@ static int amd_pre_reset(struct ata_port *ap)
struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct pci_dev *pdev = to_pci_dev(ap->host->dev);
u8 ata66; u8 ata66;
if (!pci_test_config_bits(pdev, &amd_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &amd_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
pci_read_config_byte(pdev, 0x42, &ata66); pci_read_config_byte(pdev, 0x42, &ata66);
if (ata66 & bitmask[ap->port_no]) if (ata66 & bitmask[ap->port_no])
@ -167,11 +164,9 @@ static int amd_early_pre_reset(struct ata_port *ap)
{ 0x40, 1, 0x01, 0x01 } { 0x40, 1, 0x01, 0x01 }
}; };
if (!pci_test_config_bits(pdev, &amd_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &amd_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
/* No host side cable detection */ /* No host side cable detection */
ap->cbl = ATA_CBL_PATA80; ap->cbl = ATA_CBL_PATA80;
return ata_std_prereset(ap); return ata_std_prereset(ap);
@ -262,12 +257,8 @@ static int nv_pre_reset(struct ata_port *ap) {
u8 ata66; u8 ata66;
u16 udma; u16 udma;
if (!pci_test_config_bits(pdev, &nv_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &nv_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
pci_read_config_byte(pdev, 0x52, &ata66); pci_read_config_byte(pdev, 0x52, &ata66);
if (ata66 & bitmask[ap->port_no]) if (ata66 & bitmask[ap->port_no])
@ -368,7 +359,7 @@ static struct ata_port_operations amd33_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -402,7 +393,7 @@ static struct ata_port_operations amd66_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -436,7 +427,7 @@ static struct ata_port_operations amd100_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -470,7 +461,7 @@ static struct ata_port_operations amd133_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -504,7 +495,7 @@ static struct ata_port_operations nv100_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -538,7 +529,7 @@ static struct ata_port_operations nv133_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -28,7 +28,7 @@
#include <linux/ata.h> #include <linux/ata.h>
#define DRV_NAME "pata_artop" #define DRV_NAME "pata_artop"
#define DRV_VERSION "0.4.1" #define DRV_VERSION "0.4.2"
/* /*
* The ARTOP has 33 Mhz and "over clocked" timing tables. Until we * The ARTOP has 33 Mhz and "over clocked" timing tables. Until we
@ -47,11 +47,9 @@ static int artop6210_pre_reset(struct ata_port *ap)
{ 0x4AU, 1U, 0x04UL, 0x04UL }, /* port 1 */ { 0x4AU, 1U, 0x04UL, 0x04UL }, /* port 1 */
}; };
if (!pci_test_config_bits(pdev, &artop_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &artop_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
ap->cbl = ATA_CBL_PATA40; ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap); return ata_std_prereset(ap);
} }
@ -90,11 +88,9 @@ static int artop6260_pre_reset(struct ata_port *ap)
u8 tmp; u8 tmp;
/* Odd numbered device ids are the units with enable bits (the -R cards) */ /* Odd numbered device ids are the units with enable bits (the -R cards) */
if (pdev->device % 1 && !pci_test_config_bits(pdev, &artop_enable_bits[ap->port_no])) { if (pdev->device % 1 && !pci_test_config_bits(pdev, &artop_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
pci_read_config_byte(pdev, 0x49, &tmp); pci_read_config_byte(pdev, 0x49, &tmp);
if (tmp & (1 >> ap->port_no)) if (tmp & (1 >> ap->port_no))
ap->cbl = ATA_CBL_PATA40; ap->cbl = ATA_CBL_PATA40;
@ -344,7 +340,7 @@ static const struct ata_port_operations artop6210_ops = {
.bmdma_status = ata_bmdma_status, .bmdma_status = ata_bmdma_status,
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -379,8 +375,6 @@ static const struct ata_port_operations artop6260_ops = {
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear, .irq_clear = ata_bmdma_irq_clear,

View file

@ -22,7 +22,7 @@
#include <linux/libata.h> #include <linux/libata.h>
#define DRV_NAME "pata_atiixp" #define DRV_NAME "pata_atiixp"
#define DRV_VERSION "0.4.2" #define DRV_VERSION "0.4.3"
enum { enum {
ATIIXP_IDE_PIO_TIMING = 0x40, ATIIXP_IDE_PIO_TIMING = 0x40,
@ -41,11 +41,9 @@ static int atiixp_pre_reset(struct ata_port *ap)
{ 0x48, 1, 0x08, 0x00 } { 0x48, 1, 0x08, 0x00 }
}; };
if (!pci_test_config_bits(pdev, &atiixp_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &atiixp_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
ap->cbl = ATA_CBL_PATA80; ap->cbl = ATA_CBL_PATA80;
return ata_std_prereset(ap); return ata_std_prereset(ap);
} }
@ -244,7 +242,7 @@ static struct ata_port_operations atiixp_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -301,7 +301,7 @@ static struct ata_port_operations cmd64x_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -335,7 +335,7 @@ static struct ata_port_operations cmd646r1_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -369,7 +369,7 @@ static struct ata_port_operations cmd648_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -193,8 +193,6 @@ static struct ata_port_operations cs5520_port_ops = {
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear, .irq_clear = ata_bmdma_irq_clear,

View file

@ -207,7 +207,7 @@ static struct ata_port_operations cs5530_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = cs5530_qc_issue_prot, .qc_issue = cs5530_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -211,7 +211,7 @@ static struct ata_port_operations cs5535_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -162,7 +162,7 @@ static struct ata_port_operations cy82c693_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -22,7 +22,7 @@
#include <linux/ata.h> #include <linux/ata.h>
#define DRV_NAME "pata_efar" #define DRV_NAME "pata_efar"
#define DRV_VERSION "0.4.1" #define DRV_VERSION "0.4.2"
/** /**
* efar_pre_reset - check for 40/80 pin * efar_pre_reset - check for 40/80 pin
@ -42,11 +42,9 @@ static int efar_pre_reset(struct ata_port *ap)
struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct pci_dev *pdev = to_pci_dev(ap->host->dev);
u8 tmp; u8 tmp;
if (!pci_test_config_bits(pdev, &efar_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &efar_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
pci_read_config_byte(pdev, 0x47, &tmp); pci_read_config_byte(pdev, 0x47, &tmp);
if (tmp & (2 >> ap->port_no)) if (tmp & (2 >> ap->port_no))
ap->cbl = ATA_CBL_PATA40; ap->cbl = ATA_CBL_PATA40;
@ -263,8 +261,6 @@ static const struct ata_port_operations efar_ops = {
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear, .irq_clear = ata_bmdma_irq_clear,

View file

@ -360,7 +360,7 @@ static struct ata_port_operations hpt366_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -793,7 +793,7 @@ static struct ata_port_operations hpt370_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -832,7 +832,7 @@ static struct ata_port_operations hpt370a_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -872,7 +872,7 @@ static struct ata_port_operations hpt372_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -912,7 +912,7 @@ static struct ata_port_operations hpt374_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -372,7 +372,7 @@ static struct ata_port_operations hpt3x2n_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = hpt3x2n_qc_issue_prot, .qc_issue = hpt3x2n_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -145,7 +145,7 @@ static struct ata_port_operations hpt3x3_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -52,7 +52,7 @@ static struct ata_port_operations isapnp_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -703,7 +703,7 @@ static struct ata_port_operations it821x_smart_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = it821x_smart_qc_issue_prot, .qc_issue = it821x_smart_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -739,7 +739,7 @@ static struct ata_port_operations it821x_passthru_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = it821x_passthru_qc_issue_prot, .qc_issue = it821x_passthru_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_clear = ata_bmdma_irq_clear, .irq_clear = ata_bmdma_irq_clear,

View file

@ -51,7 +51,7 @@ static int jmicron_pre_reset(struct ata_port *ap)
/* Check if our port is enabled */ /* Check if our port is enabled */
pci_read_config_dword(pdev, 0x40, &control); pci_read_config_dword(pdev, 0x40, &control);
if ((control & port_mask) == 0) if ((control & port_mask) == 0)
return 0; return -ENOENT;
/* There are two basic mappings. One has the two SATA ports merged /* There are two basic mappings. One has the two SATA ports merged
as master/slave and the secondary as PATA, the other has only the as master/slave and the secondary as PATA, the other has only the
@ -164,8 +164,7 @@ static const struct ata_port_operations jmicron_ops = {
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
/* Timeout handling. Special recovery hooks here */ /* IRQ-related hooks */
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear, .irq_clear = ata_bmdma_irq_clear,

View file

@ -161,7 +161,7 @@ static struct ata_port_operations simple_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer_noirq, .data_xfer = ata_pio_data_xfer_noirq,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -186,7 +186,7 @@ static struct ata_port_operations legacy_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer_noirq, .data_xfer = ata_pio_data_xfer_noirq,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -296,7 +296,7 @@ static struct ata_port_operations pdc20230_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = pdc_data_xfer_vlb, .data_xfer = pdc_data_xfer_vlb,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -348,7 +348,7 @@ static struct ata_port_operations ht6560a_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, /* Check vlb/noirq */ .data_xfer = ata_pio_data_xfer, /* Check vlb/noirq */
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -411,7 +411,7 @@ static struct ata_port_operations ht6560b_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, /* FIXME: Check 32bit and noirq */ .data_xfer = ata_pio_data_xfer, /* FIXME: Check 32bit and noirq */
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -529,7 +529,7 @@ static struct ata_port_operations opti82c611a_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -659,7 +659,7 @@ static struct ata_port_operations opti82c46x_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = opti82c46x_qc_issue_prot, .qc_issue = opti82c46x_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -18,7 +18,7 @@
* The driver conciously keeps this logic internally to avoid pushing quirky * The driver conciously keeps this logic internally to avoid pushing quirky
* PATA history into the clean libata layer. * PATA history into the clean libata layer.
* *
* Thinkpad specific note: If you boot an MPIIX using thinkpad with a PCMCIA * Thinkpad specific note: If you boot an MPIIX using a thinkpad with a PCMCIA
* hard disk present this driver will not detect it. This is not a bug. In this * hard disk present this driver will not detect it. This is not a bug. In this
* configuration the secondary port of the MPIIX is disabled and the addresses * configuration the secondary port of the MPIIX is disabled and the addresses
* are decoded by the PCMCIA bridge and therefore are for a generic IDE driver * are decoded by the PCMCIA bridge and therefore are for a generic IDE driver
@ -35,7 +35,7 @@
#include <linux/libata.h> #include <linux/libata.h>
#define DRV_NAME "pata_mpiix" #define DRV_NAME "pata_mpiix"
#define DRV_VERSION "0.7.1" #define DRV_VERSION "0.7.2"
enum { enum {
IDETIM = 0x6C, /* IDE control register */ IDETIM = 0x6C, /* IDE control register */
@ -54,11 +54,8 @@ static int mpiix_pre_reset(struct ata_port *ap)
{ 0x6F, 1, 0x80, 0x80 } { 0x6F, 1, 0x80, 0x80 }
}; };
if (!pci_test_config_bits(pdev, &mpiix_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &mpiix_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
ap->cbl = ATA_CBL_PATA40; ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap); return ata_std_prereset(ap);
} }

View file

@ -90,8 +90,7 @@ static const struct ata_port_operations netcell_ops = {
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
/* Timeout handling. Special recovery hooks here */ /* IRQ-related hooks */
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear, .irq_clear = ata_bmdma_irq_clear,

View file

@ -45,11 +45,8 @@ static int ns87410_pre_reset(struct ata_port *ap)
{ 0x47, 1, 0x08, 0x08 } { 0x47, 1, 0x08, 0x08 }
}; };
if (!pci_test_config_bits(pdev, &ns87410_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &ns87410_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
ap->cbl = ATA_CBL_PATA40; ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap); return ata_std_prereset(ap);
} }
@ -179,7 +176,7 @@ static struct ata_port_operations ns87410_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ns87410_qc_issue_prot, .qc_issue = ns87410_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -25,7 +25,7 @@
#include <linux/ata.h> #include <linux/ata.h>
#define DRV_NAME "pata_oldpiix" #define DRV_NAME "pata_oldpiix"
#define DRV_VERSION "0.5.1" #define DRV_VERSION "0.5.2"
/** /**
* oldpiix_pre_reset - probe begin * oldpiix_pre_reset - probe begin
@ -42,11 +42,8 @@ static int oldpiix_pre_reset(struct ata_port *ap)
{ 0x43U, 1U, 0x80UL, 0x80UL }, /* port 1 */ { 0x43U, 1U, 0x80UL, 0x80UL }, /* port 1 */
}; };
if (!pci_test_config_bits(pdev, &oldpiix_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &oldpiix_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
ap->cbl = ATA_CBL_PATA40; ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap); return ata_std_prereset(ap);
} }

View file

@ -34,7 +34,7 @@
#include <linux/libata.h> #include <linux/libata.h>
#define DRV_NAME "pata_opti" #define DRV_NAME "pata_opti"
#define DRV_VERSION "0.2.4" #define DRV_VERSION "0.2.5"
enum { enum {
READ_REG = 0, /* index of Read cycle timing register */ READ_REG = 0, /* index of Read cycle timing register */
@ -59,11 +59,9 @@ static int opti_pre_reset(struct ata_port *ap)
{ 0x40, 1, 0x08, 0x00 } { 0x40, 1, 0x08, 0x00 }
}; };
if (!pci_test_config_bits(pdev, &opti_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &opti_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
ap->cbl = ATA_CBL_PATA40; ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap); return ata_std_prereset(ap);
} }
@ -229,7 +227,7 @@ static struct ata_port_operations opti_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -33,7 +33,7 @@
#include <linux/libata.h> #include <linux/libata.h>
#define DRV_NAME "pata_optidma" #define DRV_NAME "pata_optidma"
#define DRV_VERSION "0.2.1" #define DRV_VERSION "0.2.2"
enum { enum {
READ_REG = 0, /* index of Read cycle timing register */ READ_REG = 0, /* index of Read cycle timing register */
@ -59,11 +59,9 @@ static int optidma_pre_reset(struct ata_port *ap)
0x40, 1, 0x08, 0x00 0x40, 1, 0x08, 0x00
}; };
if (ap->port_no && !pci_test_config_bits(pdev, &optidma_enable_bits)) { if (ap->port_no && !pci_test_config_bits(pdev, &optidma_enable_bits))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
ap->cbl = ATA_CBL_PATA40; ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap); return ata_std_prereset(ap);
} }
@ -388,7 +386,7 @@ static struct ata_port_operations optidma_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -423,7 +421,7 @@ static struct ata_port_operations optiplus_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -87,7 +87,7 @@ static struct ata_port_operations pcmcia_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer_noirq, .data_xfer = ata_pio_data_xfer_noirq,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -36,7 +36,7 @@
#include <asm/io.h> #include <asm/io.h>
#define DRV_NAME "pata_pdc2027x" #define DRV_NAME "pata_pdc2027x"
#define DRV_VERSION "0.74-ac3" #define DRV_VERSION "0.74-ac5"
#undef PDC_DEBUG #undef PDC_DEBUG
#ifdef PDC_DEBUG #ifdef PDC_DEBUG
@ -311,10 +311,8 @@ static inline int pdc2027x_port_enabled(struct ata_port *ap)
static int pdc2027x_prereset(struct ata_port *ap) static int pdc2027x_prereset(struct ata_port *ap)
{ {
/* Check whether port enabled */ /* Check whether port enabled */
if (!pdc2027x_port_enabled(ap)) { if (!pdc2027x_port_enabled(ap))
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); return -ENOENT;
return 0;
}
pdc2027x_cbl_detect(ap); pdc2027x_cbl_detect(ap);
return ata_std_prereset(ap); return ata_std_prereset(ap);
} }

View file

@ -184,7 +184,7 @@ static struct ata_port_operations qdi6500_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = qdi_qc_issue_prot, .qc_issue = qdi_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = qdi_data_xfer, .data_xfer = qdi_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -212,7 +212,7 @@ static struct ata_port_operations qdi6580_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = qdi_qc_issue_prot, .qc_issue = qdi_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = qdi_data_xfer, .data_xfer = qdi_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -255,8 +255,6 @@ static const struct ata_port_operations radisys_pata_ops = {
.qc_issue = radisys_qc_issue_prot, .qc_issue = radisys_qc_issue_prot,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear, .irq_clear = ata_bmdma_irq_clear,

View file

@ -112,7 +112,7 @@ static struct ata_port_operations rz1000_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.freeze = ata_bmdma_freeze, .freeze = ata_bmdma_freeze,

View file

@ -217,7 +217,7 @@ static struct ata_port_operations sc1200_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = sc1200_qc_issue_prot, .qc_issue = sc1200_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -41,7 +41,7 @@
#include <linux/libata.h> #include <linux/libata.h>
#define DRV_NAME "pata_serverworks" #define DRV_NAME "pata_serverworks"
#define DRV_VERSION "0.3.6" #define DRV_VERSION "0.3.7"
#define SVWKS_CSB5_REVISION_NEW 0x92 /* min PCI_REVISION_ID for UDMA5 (A2.0) */ #define SVWKS_CSB5_REVISION_NEW 0x92 /* min PCI_REVISION_ID for UDMA5 (A2.0) */
#define SVWKS_CSB6_REVISION 0xa0 /* min PCI_REVISION_ID for UDMA4 (A1.0) */ #define SVWKS_CSB6_REVISION 0xa0 /* min PCI_REVISION_ID for UDMA4 (A1.0) */
@ -128,7 +128,7 @@ static struct sv_cable_table cable_detect[] = {
{ PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_VENDOR_ID_DELL, dell_cable }, { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_VENDOR_ID_DELL, dell_cable },
{ PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_VENDOR_ID_DELL, dell_cable }, { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_VENDOR_ID_DELL, dell_cable },
{ PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_VENDOR_ID_SUN, sun_cable }, { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_VENDOR_ID_SUN, sun_cable },
{ PCI_DEVICE_ID_SERVERWORKS_OSB4, PCI_ANY_ID, osb4_cable }, { PCI_DEVICE_ID_SERVERWORKS_OSB4IDE, PCI_ANY_ID, osb4_cable },
{ PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_ANY_ID, csb_cable }, { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, PCI_ANY_ID, csb_cable },
{ PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_ANY_ID, csb_cable }, { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE, PCI_ANY_ID, csb_cable },
{ PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2, PCI_ANY_ID, csb_cable }, { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2, PCI_ANY_ID, csb_cable },
@ -352,10 +352,12 @@ static struct ata_port_operations serverworks_osb4_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear,
.port_start = ata_port_start, .port_start = ata_port_start,
.port_stop = ata_port_stop, .port_stop = ata_port_stop,
.host_stop = ata_host_stop .host_stop = ata_host_stop
@ -385,10 +387,12 @@ static struct ata_port_operations serverworks_csb_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear,
.port_start = ata_port_start, .port_start = ata_port_start,
.port_stop = ata_port_stop, .port_stop = ata_port_stop,
.host_stop = ata_host_stop .host_stop = ata_host_stop

View file

@ -251,7 +251,7 @@ static struct ata_port_operations sil680_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -34,7 +34,7 @@
#include <linux/ata.h> #include <linux/ata.h>
#define DRV_NAME "pata_sis" #define DRV_NAME "pata_sis"
#define DRV_VERSION "0.4.3" #define DRV_VERSION "0.4.4"
struct sis_chipset { struct sis_chipset {
u16 device; /* PCI host ID */ u16 device; /* PCI host ID */
@ -74,11 +74,9 @@ static int sis_133_pre_reset(struct ata_port *ap)
struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct pci_dev *pdev = to_pci_dev(ap->host->dev);
u16 tmp; u16 tmp;
if (!pci_test_config_bits(pdev, &sis_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &sis_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
/* The top bit of this register is the cable detect bit */ /* The top bit of this register is the cable detect bit */
pci_read_config_word(pdev, 0x50 + 2 * ap->port_no, &tmp); pci_read_config_word(pdev, 0x50 + 2 * ap->port_no, &tmp);
if (tmp & 0x8000) if (tmp & 0x8000)
@ -575,8 +573,6 @@ static const struct ata_port_operations sis_133_ops = {
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear, .irq_clear = ata_bmdma_irq_clear,
@ -610,8 +606,6 @@ static const struct ata_port_operations sis_133_early_ops = {
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear, .irq_clear = ata_bmdma_irq_clear,
@ -646,8 +640,6 @@ static const struct ata_port_operations sis_100_ops = {
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear, .irq_clear = ata_bmdma_irq_clear,
@ -681,8 +673,6 @@ static const struct ata_port_operations sis_66_ops = {
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear, .irq_clear = ata_bmdma_irq_clear,
@ -716,8 +706,6 @@ static const struct ata_port_operations sis_old_ops = {
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.eng_timeout = ata_eng_timeout,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
.irq_clear = ata_bmdma_irq_clear, .irq_clear = ata_bmdma_irq_clear,

View file

@ -19,7 +19,7 @@
#include <linux/libata.h> #include <linux/libata.h>
#define DRV_NAME "pata_sl82c105" #define DRV_NAME "pata_sl82c105"
#define DRV_VERSION "0.2.2" #define DRV_VERSION "0.2.3"
enum { enum {
/* /*
@ -49,11 +49,8 @@ static int sl82c105_pre_reset(struct ata_port *ap)
}; };
struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct pci_dev *pdev = to_pci_dev(ap->host->dev);
if (ap->port_no && !pci_test_config_bits(pdev, &sl82c105_enable_bits[ap->port_no])) { if (ap->port_no && !pci_test_config_bits(pdev, &sl82c105_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
dev_printk(KERN_INFO, &pdev->dev, "port disabled. ignoring.\n");
return 0;
}
ap->cbl = ATA_CBL_PATA40; ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap); return ata_std_prereset(ap);
} }
@ -264,7 +261,7 @@ static struct ata_port_operations sl82c105_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -46,13 +46,13 @@
#define DRV_VERSION "0.2.5" #define DRV_VERSION "0.2.5"
/** /**
* triflex_probe_init - probe begin * triflex_prereset - probe begin
* @ap: ATA port * @ap: ATA port
* *
* Set up cable type and use generic probe init * Set up cable type and use generic probe init
*/ */
static int triflex_probe_init(struct ata_port *ap) static int triflex_prereset(struct ata_port *ap)
{ {
static const struct pci_bits triflex_enable_bits[] = { static const struct pci_bits triflex_enable_bits[] = {
{ 0x80, 1, 0x01, 0x01 }, { 0x80, 1, 0x01, 0x01 },
@ -61,11 +61,8 @@ static int triflex_probe_init(struct ata_port *ap)
struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct pci_dev *pdev = to_pci_dev(ap->host->dev);
if (!pci_test_config_bits(pdev, &triflex_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &triflex_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
ap->cbl = ATA_CBL_PATA40; ap->cbl = ATA_CBL_PATA40;
return ata_std_prereset(ap); return ata_std_prereset(ap);
} }
@ -74,7 +71,7 @@ static int triflex_probe_init(struct ata_port *ap)
static void triflex_error_handler(struct ata_port *ap) static void triflex_error_handler(struct ata_port *ap)
{ {
ata_bmdma_drive_eh(ap, triflex_probe_init, ata_std_softreset, NULL, ata_std_postreset); ata_bmdma_drive_eh(ap, triflex_prereset, ata_std_softreset, NULL, ata_std_postreset);
} }
/** /**
@ -221,7 +218,7 @@ static struct ata_port_operations triflex_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -60,7 +60,7 @@
#include <linux/libata.h> #include <linux/libata.h>
#define DRV_NAME "pata_via" #define DRV_NAME "pata_via"
#define DRV_VERSION "0.1.13" #define DRV_VERSION "0.1.14"
/* /*
* The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx
@ -155,11 +155,8 @@ static int via_pre_reset(struct ata_port *ap)
struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct pci_dev *pdev = to_pci_dev(ap->host->dev);
if (!pci_test_config_bits(pdev, &via_enable_bits[ap->port_no])) { if (!pci_test_config_bits(pdev, &via_enable_bits[ap->port_no]))
ata_port_disable(ap); return -ENOENT;
printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
return 0;
}
} }
if ((config->flags & VIA_UDMA) >= VIA_UDMA_66) if ((config->flags & VIA_UDMA) >= VIA_UDMA_66)
@ -325,7 +322,7 @@ static struct ata_port_operations via_port_ops = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer, .data_xfer = ata_pio_data_xfer,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,
@ -360,7 +357,7 @@ static struct ata_port_operations via_port_ops_noirq = {
.qc_prep = ata_qc_prep, .qc_prep = ata_qc_prep,
.qc_issue = ata_qc_issue_prot, .qc_issue = ata_qc_issue_prot,
.eng_timeout = ata_eng_timeout,
.data_xfer = ata_pio_data_xfer_noirq, .data_xfer = ata_pio_data_xfer_noirq,
.irq_handler = ata_interrupt, .irq_handler = ata_interrupt,

View file

@ -463,6 +463,7 @@ static const struct ata_port_operations mv_iie_ops = {
.qc_prep = mv_qc_prep_iie, .qc_prep = mv_qc_prep_iie,
.qc_issue = mv_qc_issue, .qc_issue = mv_qc_issue,
.data_xfer = ata_mmio_data_xfer,
.eng_timeout = mv_eng_timeout, .eng_timeout = mv_eng_timeout,