Commit aa36c7bf authored by Linus Torvalds's avatar Linus Torvalds

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

* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
  libata: implement dump_id force param
  libata: disable ATAPI AN by default
  libata-sff: make BMDMA optional
  libata-sff: kill dummy BMDMA ops from sata_qstor and pata_octeon_cf
  libata-sff: separate out BMDMA init
  libata-sff: separate out BMDMA irq handler
  libata-sff: ata_sff_irq_clear() is BMDMA specific
  sata_mv: drop unncessary EH callback resetting
parents 9dda696f 43c9c591
...@@ -1252,6 +1252,8 @@ and is between 256 and 4096 characters. It is defined in the file ...@@ -1252,6 +1252,8 @@ and is between 256 and 4096 characters. It is defined in the file
* nohrst, nosrst, norst: suppress hard, soft * nohrst, nosrst, norst: suppress hard, soft
and both resets. and both resets.
* dump_id: dump IDENTIFY data.
If there are multiple matching configurations changing If there are multiple matching configurations changing
the same attribute, the last one is used. the same attribute, the last one is used.
......
This diff is collapsed.
obj-$(CONFIG_ATA) += libata.o obj-$(CONFIG_ATA) += libata.o
# non-SFF interface
obj-$(CONFIG_SATA_AHCI) += ahci.o libahci.o obj-$(CONFIG_SATA_AHCI) += ahci.o libahci.o
obj-$(CONFIG_SATA_AHCI_PLATFORM) += ahci_platform.o libahci.o obj-$(CONFIG_SATA_AHCI_PLATFORM) += ahci_platform.o libahci.o
obj-$(CONFIG_SATA_SVW) += sata_svw.o obj-$(CONFIG_SATA_FSL) += sata_fsl.o
obj-$(CONFIG_SATA_INIC162X) += sata_inic162x.o
obj-$(CONFIG_SATA_SIL24) += sata_sil24.o
# SFF w/ custom DMA
obj-$(CONFIG_PDC_ADMA) += pdc_adma.o
obj-$(CONFIG_PATA_MPC52xx) += pata_mpc52xx.o
obj-$(CONFIG_PATA_OCTEON_CF) += pata_octeon_cf.o
obj-$(CONFIG_SATA_QSTOR) += sata_qstor.o
obj-$(CONFIG_SATA_SX4) += sata_sx4.o
# SFF SATA w/ BMDMA
obj-$(CONFIG_ATA_PIIX) += ata_piix.o obj-$(CONFIG_ATA_PIIX) += ata_piix.o
obj-$(CONFIG_SATA_MV) += sata_mv.o
obj-$(CONFIG_SATA_NV) += sata_nv.o
obj-$(CONFIG_SATA_PROMISE) += sata_promise.o obj-$(CONFIG_SATA_PROMISE) += sata_promise.o
obj-$(CONFIG_SATA_QSTOR) += sata_qstor.o
obj-$(CONFIG_SATA_SIL) += sata_sil.o obj-$(CONFIG_SATA_SIL) += sata_sil.o
obj-$(CONFIG_SATA_SIL24) += sata_sil24.o
obj-$(CONFIG_SATA_VIA) += sata_via.o
obj-$(CONFIG_SATA_VITESSE) += sata_vsc.o
obj-$(CONFIG_SATA_SIS) += sata_sis.o obj-$(CONFIG_SATA_SIS) += sata_sis.o
obj-$(CONFIG_SATA_SX4) += sata_sx4.o obj-$(CONFIG_SATA_SVW) += sata_svw.o
obj-$(CONFIG_SATA_NV) += sata_nv.o
obj-$(CONFIG_SATA_ULI) += sata_uli.o obj-$(CONFIG_SATA_ULI) += sata_uli.o
obj-$(CONFIG_SATA_MV) += sata_mv.o obj-$(CONFIG_SATA_VIA) += sata_via.o
obj-$(CONFIG_SATA_INIC162X) += sata_inic162x.o obj-$(CONFIG_SATA_VITESSE) += sata_vsc.o
obj-$(CONFIG_PDC_ADMA) += pdc_adma.o
obj-$(CONFIG_SATA_FSL) += sata_fsl.o
obj-$(CONFIG_PATA_MACIO) += pata_macio.o
# SFF PATA w/ BMDMA
obj-$(CONFIG_PATA_ALI) += pata_ali.o obj-$(CONFIG_PATA_ALI) += pata_ali.o
obj-$(CONFIG_PATA_AMD) += pata_amd.o obj-$(CONFIG_PATA_AMD) += pata_amd.o
obj-$(CONFIG_PATA_ARTOP) += pata_artop.o obj-$(CONFIG_PATA_ARTOP) += pata_artop.o
obj-$(CONFIG_PATA_ATP867X) += pata_atp867x.o
obj-$(CONFIG_PATA_AT32) += pata_at32.o
obj-$(CONFIG_PATA_ATIIXP) += pata_atiixp.o obj-$(CONFIG_PATA_ATIIXP) += pata_atiixp.o
obj-$(CONFIG_PATA_CMD640_PCI) += pata_cmd640.o obj-$(CONFIG_PATA_ATP867X) += pata_atp867x.o
obj-$(CONFIG_PATA_BF54X) += pata_bf54x.o
obj-$(CONFIG_PATA_CMD64X) += pata_cmd64x.o obj-$(CONFIG_PATA_CMD64X) += pata_cmd64x.o
obj-$(CONFIG_PATA_CS5520) += pata_cs5520.o obj-$(CONFIG_PATA_CS5520) += pata_cs5520.o
obj-$(CONFIG_PATA_CS5530) += pata_cs5530.o obj-$(CONFIG_PATA_CS5530) += pata_cs5530.o
...@@ -39,47 +45,50 @@ obj-$(CONFIG_PATA_HPT366) += pata_hpt366.o ...@@ -39,47 +45,50 @@ obj-$(CONFIG_PATA_HPT366) += pata_hpt366.o
obj-$(CONFIG_PATA_HPT37X) += pata_hpt37x.o obj-$(CONFIG_PATA_HPT37X) += pata_hpt37x.o
obj-$(CONFIG_PATA_HPT3X2N) += pata_hpt3x2n.o obj-$(CONFIG_PATA_HPT3X2N) += pata_hpt3x2n.o
obj-$(CONFIG_PATA_HPT3X3) += pata_hpt3x3.o obj-$(CONFIG_PATA_HPT3X3) += pata_hpt3x3.o
obj-$(CONFIG_PATA_ISAPNP) += pata_isapnp.o obj-$(CONFIG_PATA_ICSIDE) += pata_icside.o
obj-$(CONFIG_PATA_IT821X) += pata_it821x.o
obj-$(CONFIG_PATA_IT8213) += pata_it8213.o obj-$(CONFIG_PATA_IT8213) += pata_it8213.o
obj-$(CONFIG_PATA_IT821X) += pata_it821x.o
obj-$(CONFIG_PATA_JMICRON) += pata_jmicron.o obj-$(CONFIG_PATA_JMICRON) += pata_jmicron.o
obj-$(CONFIG_PATA_MACIO) += pata_macio.o
obj-$(CONFIG_PATA_MARVELL) += pata_marvell.o
obj-$(CONFIG_PATA_NETCELL) += pata_netcell.o obj-$(CONFIG_PATA_NETCELL) += pata_netcell.o
obj-$(CONFIG_PATA_NINJA32) += pata_ninja32.o obj-$(CONFIG_PATA_NINJA32) += pata_ninja32.o
obj-$(CONFIG_PATA_NS87410) += pata_ns87410.o
obj-$(CONFIG_PATA_NS87415) += pata_ns87415.o obj-$(CONFIG_PATA_NS87415) += pata_ns87415.o
obj-$(CONFIG_PATA_OPTI) += pata_opti.o
obj-$(CONFIG_PATA_OPTIDMA) += pata_optidma.o
obj-$(CONFIG_PATA_MPC52xx) += pata_mpc52xx.o
obj-$(CONFIG_PATA_MARVELL) += pata_marvell.o
obj-$(CONFIG_PATA_MPIIX) += pata_mpiix.o
obj-$(CONFIG_PATA_OLDPIIX) += pata_oldpiix.o obj-$(CONFIG_PATA_OLDPIIX) += pata_oldpiix.o
obj-$(CONFIG_PATA_PALMLD) += pata_palmld.o obj-$(CONFIG_PATA_OPTIDMA) += pata_optidma.o
obj-$(CONFIG_PATA_PCMCIA) += pata_pcmcia.o
obj-$(CONFIG_PATA_PDC2027X) += pata_pdc2027x.o obj-$(CONFIG_PATA_PDC2027X) += pata_pdc2027x.o
obj-$(CONFIG_PATA_PDC_OLD) += pata_pdc202xx_old.o obj-$(CONFIG_PATA_PDC_OLD) += pata_pdc202xx_old.o
obj-$(CONFIG_PATA_QDI) += pata_qdi.o
obj-$(CONFIG_PATA_RADISYS) += pata_radisys.o obj-$(CONFIG_PATA_RADISYS) += pata_radisys.o
obj-$(CONFIG_PATA_RB532) += pata_rb532_cf.o
obj-$(CONFIG_PATA_RDC) += pata_rdc.o obj-$(CONFIG_PATA_RDC) += pata_rdc.o
obj-$(CONFIG_PATA_RZ1000) += pata_rz1000.o
obj-$(CONFIG_PATA_SC1200) += pata_sc1200.o obj-$(CONFIG_PATA_SC1200) += pata_sc1200.o
obj-$(CONFIG_PATA_SCC) += pata_scc.o
obj-$(CONFIG_PATA_SCH) += pata_sch.o
obj-$(CONFIG_PATA_SERVERWORKS) += pata_serverworks.o obj-$(CONFIG_PATA_SERVERWORKS) += pata_serverworks.o
obj-$(CONFIG_PATA_SIL680) += pata_sil680.o obj-$(CONFIG_PATA_SIL680) += pata_sil680.o
obj-$(CONFIG_PATA_SIS) += pata_sis.o
obj-$(CONFIG_PATA_TOSHIBA) += pata_piccolo.o obj-$(CONFIG_PATA_TOSHIBA) += pata_piccolo.o
obj-$(CONFIG_PATA_TRIFLEX) += pata_triflex.o
obj-$(CONFIG_PATA_VIA) += pata_via.o obj-$(CONFIG_PATA_VIA) += pata_via.o
obj-$(CONFIG_PATA_WINBOND) += pata_sl82c105.o obj-$(CONFIG_PATA_WINBOND) += pata_sl82c105.o
obj-$(CONFIG_PATA_WINBOND_VLB) += pata_winbond.o
obj-$(CONFIG_PATA_SIS) += pata_sis.o # SFF PIO only
obj-$(CONFIG_PATA_TRIFLEX) += pata_triflex.o obj-$(CONFIG_PATA_AT32) += pata_at32.o
obj-$(CONFIG_PATA_AT91) += pata_at91.o
obj-$(CONFIG_PATA_CMD640_PCI) += pata_cmd640.o
obj-$(CONFIG_PATA_ISAPNP) += pata_isapnp.o
obj-$(CONFIG_PATA_IXP4XX_CF) += pata_ixp4xx_cf.o obj-$(CONFIG_PATA_IXP4XX_CF) += pata_ixp4xx_cf.o
obj-$(CONFIG_PATA_SCC) += pata_scc.o obj-$(CONFIG_PATA_MPIIX) += pata_mpiix.o
obj-$(CONFIG_PATA_SCH) += pata_sch.o obj-$(CONFIG_PATA_NS87410) += pata_ns87410.o
obj-$(CONFIG_PATA_BF54X) += pata_bf54x.o obj-$(CONFIG_PATA_OPTI) += pata_opti.o
obj-$(CONFIG_PATA_OCTEON_CF) += pata_octeon_cf.o obj-$(CONFIG_PATA_PCMCIA) += pata_pcmcia.o
obj-$(CONFIG_PATA_PALMLD) += pata_palmld.o
obj-$(CONFIG_PATA_PLATFORM) += pata_platform.o obj-$(CONFIG_PATA_PLATFORM) += pata_platform.o
obj-$(CONFIG_PATA_AT91) += pata_at91.o
obj-$(CONFIG_PATA_OF_PLATFORM) += pata_of_platform.o obj-$(CONFIG_PATA_OF_PLATFORM) += pata_of_platform.o
obj-$(CONFIG_PATA_ICSIDE) += pata_icside.o obj-$(CONFIG_PATA_QDI) += pata_qdi.o
obj-$(CONFIG_PATA_RB532) += pata_rb532_cf.o
obj-$(CONFIG_PATA_RZ1000) += pata_rz1000.o
obj-$(CONFIG_PATA_WINBOND_VLB) += pata_winbond.o
# Should be last but two libata driver # Should be last but two libata driver
obj-$(CONFIG_PATA_ACPI) += pata_acpi.o obj-$(CONFIG_PATA_ACPI) += pata_acpi.o
# Should be last but one libata driver # Should be last but one libata driver
......
...@@ -155,7 +155,7 @@ static int ata_generic_init_one(struct pci_dev *dev, const struct pci_device_id ...@@ -155,7 +155,7 @@ static int ata_generic_init_one(struct pci_dev *dev, const struct pci_device_id
return rc; return rc;
pcim_pin_device(dev); pcim_pin_device(dev);
} }
return ata_pci_sff_init_one(dev, ppi, &generic_sht, NULL, 0); return ata_pci_bmdma_init_one(dev, ppi, &generic_sht, NULL, 0);
} }
static struct pci_device_id ata_generic[] = { static struct pci_device_id ata_generic[] = {
......
...@@ -1589,7 +1589,7 @@ static int __devinit piix_init_one(struct pci_dev *pdev, ...@@ -1589,7 +1589,7 @@ static int __devinit piix_init_one(struct pci_dev *pdev,
hpriv->map = piix_init_sata_map(pdev, port_info, hpriv->map = piix_init_sata_map(pdev, port_info,
piix_map_db_table[ent->driver_data]); piix_map_db_table[ent->driver_data]);
rc = ata_pci_sff_prepare_host(pdev, ppi, &host); rc = ata_pci_bmdma_prepare_host(pdev, ppi, &host);
if (rc) if (rc)
return rc; return rc;
host->private_data = hpriv; host->private_data = hpriv;
...@@ -1626,7 +1626,7 @@ static int __devinit piix_init_one(struct pci_dev *pdev, ...@@ -1626,7 +1626,7 @@ static int __devinit piix_init_one(struct pci_dev *pdev,
host->flags |= ATA_HOST_PARALLEL_SCAN; host->flags |= ATA_HOST_PARALLEL_SCAN;
pci_set_master(pdev); pci_set_master(pdev);
return ata_pci_sff_activate_host(host, ata_sff_interrupt, &piix_sht); return ata_pci_sff_activate_host(host, ata_bmdma_interrupt, &piix_sht);
} }
static void piix_remove_one(struct pci_dev *pdev) static void piix_remove_one(struct pci_dev *pdev)
......
...@@ -160,6 +160,10 @@ int libata_allow_tpm = 0; ...@@ -160,6 +160,10 @@ int libata_allow_tpm = 0;
module_param_named(allow_tpm, libata_allow_tpm, int, 0444); module_param_named(allow_tpm, libata_allow_tpm, int, 0444);
MODULE_PARM_DESC(allow_tpm, "Permit the use of TPM commands (0=off [default], 1=on)"); MODULE_PARM_DESC(allow_tpm, "Permit the use of TPM commands (0=off [default], 1=on)");
static int atapi_an;
module_param(atapi_an, int, 0444);
MODULE_PARM_DESC(atapi_an, "Enable ATAPI AN media presence notification (0=0ff [default], 1=on)");
MODULE_AUTHOR("Jeff Garzik"); MODULE_AUTHOR("Jeff Garzik");
MODULE_DESCRIPTION("Library module for ATA devices"); MODULE_DESCRIPTION("Library module for ATA devices");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
...@@ -2122,6 +2126,14 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class, ...@@ -2122,6 +2126,14 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class,
goto err_out; goto err_out;
} }
if (dev->horkage & ATA_HORKAGE_DUMP_ID) {
ata_dev_printk(dev, KERN_DEBUG, "dumping IDENTIFY data, "
"class=%d may_fallback=%d tried_spinup=%d\n",
class, may_fallback, tried_spinup);
print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET,
16, 2, id, ATA_ID_WORDS * sizeof(*id), true);
}
/* Falling back doesn't make sense if ID data was read /* Falling back doesn't make sense if ID data was read
* successfully at least once. * successfully at least once.
*/ */
...@@ -2510,7 +2522,8 @@ int ata_dev_configure(struct ata_device *dev) ...@@ -2510,7 +2522,8 @@ int ata_dev_configure(struct ata_device *dev)
* to enable ATAPI AN to discern between PHY status * to enable ATAPI AN to discern between PHY status
* changed notifications and ATAPI ANs. * changed notifications and ATAPI ANs.
*/ */
if ((ap->flags & ATA_FLAG_AN) && ata_id_has_atapi_AN(id) && if (atapi_an &&
(ap->flags & ATA_FLAG_AN) && ata_id_has_atapi_AN(id) &&
(!sata_pmp_attached(ap) || (!sata_pmp_attached(ap) ||
sata_scr_read(&ap->link, SCR_NOTIFICATION, &sntf) == 0)) { sata_scr_read(&ap->link, SCR_NOTIFICATION, &sntf) == 0)) {
unsigned int err_mask; unsigned int err_mask;
...@@ -6372,6 +6385,7 @@ static int __init ata_parse_force_one(char **cur, ...@@ -6372,6 +6385,7 @@ static int __init ata_parse_force_one(char **cur,
{ "3.0Gbps", .spd_limit = 2 }, { "3.0Gbps", .spd_limit = 2 },
{ "noncq", .horkage_on = ATA_HORKAGE_NONCQ }, { "noncq", .horkage_on = ATA_HORKAGE_NONCQ },
{ "ncq", .horkage_off = ATA_HORKAGE_NONCQ }, { "ncq", .horkage_off = ATA_HORKAGE_NONCQ },
{ "dump_id", .horkage_on = ATA_HORKAGE_DUMP_ID },
{ "pio0", .xfer_mask = 1 << (ATA_SHIFT_PIO + 0) }, { "pio0", .xfer_mask = 1 << (ATA_SHIFT_PIO + 0) },
{ "pio1", .xfer_mask = 1 << (ATA_SHIFT_PIO + 1) }, { "pio1", .xfer_mask = 1 << (ATA_SHIFT_PIO + 1) },
{ "pio2", .xfer_mask = 1 << (ATA_SHIFT_PIO + 2) }, { "pio2", .xfer_mask = 1 << (ATA_SHIFT_PIO + 2) },
......
This diff is collapsed.
...@@ -260,7 +260,7 @@ static int pacpi_init_one (struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -260,7 +260,7 @@ static int pacpi_init_one (struct pci_dev *pdev, const struct pci_device_id *id)
return rc; return rc;
pcim_pin_device(pdev); pcim_pin_device(pdev);
} }
return ata_pci_sff_init_one(pdev, ppi, &pacpi_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &pacpi_sht, NULL, 0);
} }
static const struct pci_device_id pacpi_pci_tbl[] = { static const struct pci_device_id pacpi_pci_tbl[] = {
......
...@@ -583,7 +583,10 @@ static int ali_init_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -583,7 +583,10 @@ static int ali_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
ppi[0] = &info_20_udma; ppi[0] = &info_20_udma;
} }
return ata_pci_sff_init_one(pdev, ppi, &ali_sht, NULL, 0); if (!ppi[0]->mwdma_mask && !ppi[0]->udma_mask)
return ata_pci_sff_init_one(pdev, ppi, &ali_sht, NULL, 0);
else
return ata_pci_bmdma_init_one(pdev, ppi, &ali_sht, NULL, 0);
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
......
...@@ -574,7 +574,7 @@ static int amd_init_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -574,7 +574,7 @@ static int amd_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
} }
/* And fire it up */ /* And fire it up */
return ata_pci_sff_init_one(pdev, ppi, &amd_sht, hpriv, 0); return ata_pci_bmdma_init_one(pdev, ppi, &amd_sht, hpriv, 0);
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
......
...@@ -421,7 +421,7 @@ static int artop_init_one (struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -421,7 +421,7 @@ static int artop_init_one (struct pci_dev *pdev, const struct pci_device_id *id)
BUG_ON(ppi[0] == NULL); BUG_ON(ppi[0] == NULL);
return ata_pci_sff_init_one(pdev, ppi, &artop_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &artop_sht, NULL, 0);
} }
static const struct pci_device_id artop_pci_tbl[] = { static const struct pci_device_id artop_pci_tbl[] = {
......
...@@ -246,8 +246,8 @@ static int atiixp_init_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -246,8 +246,8 @@ static int atiixp_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
if (!pci_test_config_bits(pdev, &atiixp_enable_bits[i])) if (!pci_test_config_bits(pdev, &atiixp_enable_bits[i]))
ppi[i] = &ata_dummy_port_info; ppi[i] = &ata_dummy_port_info;
return ata_pci_sff_init_one(pdev, ppi, &atiixp_sht, NULL, return ata_pci_bmdma_init_one(pdev, ppi, &atiixp_sht, NULL,
ATA_HOST_PARALLEL_SCAN); ATA_HOST_PARALLEL_SCAN);
} }
static const struct pci_device_id atiixp[] = { static const struct pci_device_id atiixp[] = {
......
...@@ -525,7 +525,7 @@ static int atp867x_init_one(struct pci_dev *pdev, ...@@ -525,7 +525,7 @@ static int atp867x_init_one(struct pci_dev *pdev,
pci_set_master(pdev); pci_set_master(pdev);
rc = ata_host_activate(host, pdev->irq, ata_sff_interrupt, rc = ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
IRQF_SHARED, &atp867x_sht); IRQF_SHARED, &atp867x_sht);
if (rc) if (rc)
dev_printk(KERN_ERR, &pdev->dev, "failed to activate host\n"); dev_printk(KERN_ERR, &pdev->dev, "failed to activate host\n");
......
...@@ -1214,7 +1214,7 @@ static unsigned int bfin_data_xfer(struct ata_device *dev, unsigned char *buf, ...@@ -1214,7 +1214,7 @@ static unsigned int bfin_data_xfer(struct ata_device *dev, unsigned char *buf,
* bfin_irq_clear - Clear ATAPI interrupt. * bfin_irq_clear - Clear ATAPI interrupt.
* @ap: Port associated with this ATA transaction. * @ap: Port associated with this ATA transaction.
* *
* Note: Original code is ata_sff_irq_clear(). * Note: Original code is ata_bmdma_irq_clear().
*/ */
static void bfin_irq_clear(struct ata_port *ap) static void bfin_irq_clear(struct ata_port *ap)
......
...@@ -367,7 +367,7 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -367,7 +367,7 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
pci_write_config_byte(pdev, UDIDETCR0, 0xF0); pci_write_config_byte(pdev, UDIDETCR0, 0xF0);
#endif #endif
return ata_pci_sff_init_one(pdev, ppi, &cmd64x_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &cmd64x_sht, NULL, 0);
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
......
...@@ -221,7 +221,7 @@ static int __devinit cs5520_init_one(struct pci_dev *pdev, const struct pci_devi ...@@ -221,7 +221,7 @@ static int __devinit cs5520_init_one(struct pci_dev *pdev, const struct pci_devi
continue; continue;
rc = devm_request_irq(&pdev->dev, irq[ap->port_no], rc = devm_request_irq(&pdev->dev, irq[ap->port_no],
ata_sff_interrupt, 0, DRV_NAME, host); ata_bmdma_interrupt, 0, DRV_NAME, host);
if (rc) if (rc)
return rc; return rc;
......
...@@ -324,7 +324,7 @@ static int cs5530_init_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -324,7 +324,7 @@ static int cs5530_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
ppi[1] = &info_palmax_secondary; ppi[1] = &info_palmax_secondary;
/* Now kick off ATA set up */ /* Now kick off ATA set up */
return ata_pci_sff_init_one(pdev, ppi, &cs5530_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &cs5530_sht, NULL, 0);
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
......
...@@ -198,7 +198,7 @@ static int cs5535_init_one(struct pci_dev *dev, const struct pci_device_id *id) ...@@ -198,7 +198,7 @@ static int cs5535_init_one(struct pci_dev *dev, const struct pci_device_id *id)
rdmsr(ATAC_CH0D1_PIO, timings, dummy); rdmsr(ATAC_CH0D1_PIO, timings, dummy);
if (CS5535_BAD_PIO(timings)) if (CS5535_BAD_PIO(timings))
wrmsr(ATAC_CH0D1_PIO, 0xF7F4F7F4UL, 0); wrmsr(ATAC_CH0D1_PIO, 0xF7F4F7F4UL, 0);
return ata_pci_sff_init_one(dev, ppi, &cs5535_sht, NULL, 0); return ata_pci_bmdma_init_one(dev, ppi, &cs5535_sht, NULL, 0);
} }
static const struct pci_device_id cs5535[] = { static const struct pci_device_id cs5535[] = {
......
...@@ -260,7 +260,7 @@ static int cs5536_init_one(struct pci_dev *dev, const struct pci_device_id *id) ...@@ -260,7 +260,7 @@ static int cs5536_init_one(struct pci_dev *dev, const struct pci_device_id *id)
return -ENODEV; return -ENODEV;
} }
return ata_pci_sff_init_one(dev, ppi, &cs5536_sht, NULL, 0); return ata_pci_bmdma_init_one(dev, ppi, &cs5536_sht, NULL, 0);
} }
static const struct pci_device_id cs5536[] = { static const struct pci_device_id cs5536[] = {
......
...@@ -138,7 +138,7 @@ static int cy82c693_init_one(struct pci_dev *pdev, const struct pci_device_id *i ...@@ -138,7 +138,7 @@ static int cy82c693_init_one(struct pci_dev *pdev, const struct pci_device_id *i
if (PCI_FUNC(pdev->devfn) != 1) if (PCI_FUNC(pdev->devfn) != 1)
return -ENODEV; return -ENODEV;
return ata_pci_sff_init_one(pdev, ppi, &cy82c693_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &cy82c693_sht, NULL, 0);
} }
static const struct pci_device_id cy82c693[] = { static const struct pci_device_id cy82c693[] = {
......
...@@ -277,8 +277,8 @@ static int efar_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -277,8 +277,8 @@ static int efar_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
dev_printk(KERN_DEBUG, &pdev->dev, dev_printk(KERN_DEBUG, &pdev->dev,
"version " DRV_VERSION "\n"); "version " DRV_VERSION "\n");
return ata_pci_sff_init_one(pdev, ppi, &efar_sht, NULL, return ata_pci_bmdma_init_one(pdev, ppi, &efar_sht, NULL,
ATA_HOST_PARALLEL_SCAN); ATA_HOST_PARALLEL_SCAN);
} }
static const struct pci_device_id efar_pci_tbl[] = { static const struct pci_device_id efar_pci_tbl[] = {
......
...@@ -361,7 +361,7 @@ static int hpt36x_init_one(struct pci_dev *dev, const struct pci_device_id *id) ...@@ -361,7 +361,7 @@ static int hpt36x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
break; break;
} }
/* Now kick off ATA set up */ /* Now kick off ATA set up */
return ata_pci_sff_init_one(dev, ppi, &hpt36x_sht, hpriv, 0); return ata_pci_bmdma_init_one(dev, ppi, &hpt36x_sht, hpriv, 0);
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
......
...@@ -987,7 +987,7 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id) ...@@ -987,7 +987,7 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
} }
/* Now kick off ATA set up */ /* Now kick off ATA set up */
return ata_pci_sff_init_one(dev, ppi, &hpt37x_sht, private_data, 0); return ata_pci_bmdma_init_one(dev, ppi, &hpt37x_sht, private_data, 0);
} }
static const struct pci_device_id hpt37x[] = { static const struct pci_device_id hpt37x[] = {
......
...@@ -548,7 +548,7 @@ static int hpt3x2n_init_one(struct pci_dev *dev, const struct pci_device_id *id) ...@@ -548,7 +548,7 @@ static int hpt3x2n_init_one(struct pci_dev *dev, const struct pci_device_id *id)
outb(inb(iobase + 0x9c) | 0x04, iobase + 0x9c); outb(inb(iobase + 0x9c) | 0x04, iobase + 0x9c);
/* Now kick off ATA set up */ /* Now kick off ATA set up */
return ata_pci_sff_init_one(dev, ppi, &hpt3x2n_sht, hpriv, 0); return ata_pci_bmdma_init_one(dev, ppi, &hpt3x2n_sht, hpriv, 0);
} }
static const struct pci_device_id hpt3x2n[] = { static const struct pci_device_id hpt3x2n[] = {
......
...@@ -248,7 +248,7 @@ static int hpt3x3_init_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -248,7 +248,7 @@ static int hpt3x3_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
ata_port_pbar_desc(ap, 4, offset_cmd[i], "cmd"); ata_port_pbar_desc(ap, 4, offset_cmd[i], "cmd");
} }
pci_set_master(pdev); pci_set_master(pdev);
return ata_host_activate(host, pdev->irq, ata_sff_interrupt, return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
IRQF_SHARED, &hpt3x3_sht); IRQF_SHARED, &hpt3x3_sht);
} }
......
...@@ -470,7 +470,7 @@ static int __devinit pata_icside_add_ports(struct pata_icside_info *info) ...@@ -470,7 +470,7 @@ static int __devinit pata_icside_add_ports(struct pata_icside_info *info)
pata_icside_setup_ioaddr(ap, info->base, info, info->port[i]); pata_icside_setup_ioaddr(ap, info->base, info, info->port[i]);
} }
return ata_host_activate(host, ec->irq, ata_sff_interrupt, 0, return ata_host_activate(host, ec->irq, ata_bmdma_interrupt, 0,
&pata_icside_sht); &pata_icside_sht);
} }
......
...@@ -273,7 +273,7 @@ static int it8213_init_one (struct pci_dev *pdev, const struct pci_device_id *en ...@@ -273,7 +273,7 @@ static int it8213_init_one (struct pci_dev *pdev, const struct pci_device_id *en
dev_printk(KERN_DEBUG, &pdev->dev, dev_printk(KERN_DEBUG, &pdev->dev,
"version " DRV_VERSION "\n"); "version " DRV_VERSION "\n");
return ata_pci_sff_init_one(pdev, ppi, &it8213_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &it8213_sht, NULL, 0);
} }
static const struct pci_device_id it8213_pci_tbl[] = { static const struct pci_device_id it8213_pci_tbl[] = {
......
...@@ -933,7 +933,7 @@ static int it821x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -933,7 +933,7 @@ static int it821x_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
else else
ppi[0] = &info_smart; ppi[0] = &info_smart;
} }
return ata_pci_sff_init_one(pdev, ppi, &it821x_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &it821x_sht, NULL, 0);
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
......
...@@ -144,7 +144,7 @@ static int jmicron_init_one (struct pci_dev *pdev, const struct pci_device_id *i ...@@ -144,7 +144,7 @@ static int jmicron_init_one (struct pci_dev *pdev, const struct pci_device_id *i
}; };
const struct ata_port_info *ppi[] = { &info, NULL }; const struct ata_port_info *ppi[] = { &info, NULL };
return ata_pci_sff_init_one(pdev, ppi, &jmicron_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &jmicron_sht, NULL, 0);
} }
static const struct pci_device_id jmicron_pci_tbl[] = { static const struct pci_device_id jmicron_pci_tbl[] = {
......
...@@ -1110,7 +1110,7 @@ static int __devinit pata_macio_common_init(struct pata_macio_priv *priv, ...@@ -1110,7 +1110,7 @@ static int __devinit pata_macio_common_init(struct pata_macio_priv *priv,
/* Start it up */ /* Start it up */
priv->irq = irq; priv->irq = irq;
return ata_host_activate(priv->host, irq, ata_sff_interrupt, 0, return ata_host_activate(priv->host, irq, ata_bmdma_interrupt, 0,
&pata_macio_sht); &pata_macio_sht);
} }
......
...@@ -153,7 +153,7 @@ static int marvell_init_one (struct pci_dev *pdev, const struct pci_device_id *i ...@@ -153,7 +153,7 @@ static int marvell_init_one (struct pci_dev *pdev, const struct pci_device_id *i
return -ENODEV; return -ENODEV;
} }
#endif #endif
return ata_pci_sff_init_one(pdev, ppi, &marvell_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &marvell_sht, NULL, 0);
} }
static const struct pci_device_id marvell_pci_tbl[] = { static const struct pci_device_id marvell_pci_tbl[] = {
......
...@@ -659,7 +659,7 @@ mpc52xx_ata_init_one(struct device *dev, struct mpc52xx_ata_priv *priv, ...@@ -659,7 +659,7 @@ mpc52xx_ata_init_one(struct device *dev, struct mpc52xx_ata_priv *priv,
ata_port_desc(ap, "ata_regs 0x%lx", raw_ata_regs); ata_port_desc(ap, "ata_regs 0x%lx", raw_ata_regs);
/* activate host */ /* activate host */
return ata_host_activate(host, priv->ata_irq, ata_sff_interrupt, 0, return ata_host_activate(host, priv->ata_irq, ata_bmdma_interrupt, 0,
&mpc52xx_ata_sht); &mpc52xx_ata_sht);
} }
......
...@@ -82,7 +82,7 @@ static int netcell_init_one (struct pci_dev *pdev, const struct pci_device_id *e ...@@ -82,7 +82,7 @@ static int netcell_init_one (struct pci_dev *pdev, const struct pci_device_id *e
ata_pci_bmdma_clear_simplex(pdev); ata_pci_bmdma_clear_simplex(pdev);
/* And let the library code do the work */ /* And let the library code do the work */
return ata_pci_sff_init_one(pdev, port_info, &netcell_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, port_info, &netcell_sht, NULL, 0);
} }
static const struct pci_device_id netcell_pci_tbl[] = { static const struct pci_device_id netcell_pci_tbl[] = {
......
...@@ -149,7 +149,7 @@ static int ninja32_init_one(struct pci_dev *dev, const struct pci_device_id *id) ...@@ -149,7 +149,7 @@ static int ninja32_init_one(struct pci_dev *dev, const struct pci_device_id *id)
ninja32_program(base); ninja32_program(base);
/* FIXME: Should we disable them at remove ? */ /* FIXME: Should we disable them at remove ? */
return ata_host_activate(host, dev->irq, ata_sff_interrupt, return ata_host_activate(host, dev->irq, ata_bmdma_interrupt,
IRQF_SHARED, &ninja32_sht); IRQF_SHARED, &ninja32_sht);
} }
......
...@@ -380,7 +380,7 @@ static int ns87415_init_one (struct pci_dev *pdev, const struct pci_device_id *e ...@@ -380,7 +380,7 @@ static int ns87415_init_one (struct pci_dev *pdev, const struct pci_device_id *e
ns87415_fixup(pdev); ns87415_fixup(pdev);
return ata_pci_sff_init_one(pdev, ppi, &ns87415_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &ns87415_sht, NULL, 0);
} }
static const struct pci_device_id ns87415_pci_tbl[] = { static const struct pci_device_id ns87415_pci_tbl[] = {
......
...@@ -749,20 +749,6 @@ static void octeon_cf_dev_config(struct ata_device *dev) ...@@ -749,20 +749,6 @@ static void octeon_cf_dev_config(struct ata_device *dev)
dev->max_sectors = min(dev->max_sectors, 4095U); dev->max_sectors = min(dev->max_sectors, 4095U);
} }
/*
* Trap if driver tries to do standard bmdma commands. They are not
* supported.
*/
static void unreachable_qc(struct ata_queued_cmd *qc)
{
BUG();
}
static u8 unreachable_port(struct ata_port *ap)
{
BUG();
}
/* /*
* We don't do ATAPI DMA so return 0. * We don't do ATAPI DMA so return 0.
*/ */
...@@ -804,10 +790,6 @@ static struct ata_port_operations octeon_cf_ops = { ...@@ -804,10 +790,6 @@ static struct ata_port_operations octeon_cf_ops = {
.sff_dev_select = octeon_cf_dev_select, .sff_dev_select = octeon_cf_dev_select,
.sff_irq_on = octeon_cf_irq_on, .sff_irq_on = octeon_cf_irq_on,
.sff_irq_clear = octeon_cf_irq_clear, .sff_irq_clear = octeon_cf_irq_clear,
.bmdma_setup = unreachable_qc,
.bmdma_start = unreachable_qc,
.bmdma_stop = unreachable_qc,
.bmdma_status = unreachable_port,
.cable_detect = ata_cable_40wire, .cable_detect = ata_cable_40wire,
.set_piomode = octeon_cf_set_piomode, .set_piomode = octeon_cf_set_piomode,
.set_dmamode = octeon_cf_set_dmamode, .set_dmamode = octeon_cf_set_dmamode,
......
...@@ -248,7 +248,7 @@ static int oldpiix_init_one (struct pci_dev *pdev, const struct pci_device_id *e ...@@ -248,7 +248,7 @@ static int oldpiix_init_one (struct pci_dev *pdev, const struct pci_device_id *e
dev_printk(KERN_DEBUG, &pdev->dev, dev_printk(KERN_DEBUG, &pdev->dev,
"version " DRV_VERSION "\n"); "version " DRV_VERSION "\n");
return ata_pci_sff_init_one(pdev, ppi, &oldpiix_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &oldpiix_sht, NULL, 0);
} }
static const struct pci_device_id oldpiix_pci_tbl[] = { static const struct pci_device_id oldpiix_pci_tbl[] = {
......
...@@ -429,7 +429,7 @@ static int optidma_init_one(struct pci_dev *dev, const struct pci_device_id *id) ...@@ -429,7 +429,7 @@ static int optidma_init_one(struct pci_dev *dev, const struct pci_device_id *id)
if (optiplus_with_udma(dev)) if (optiplus_with_udma(dev))
ppi[0] = &info_82c700_udma; ppi[0] = &info_82c700_udma;
return ata_pci_sff_init_one(dev, ppi, &optidma_sht, NULL, 0); return ata_pci_bmdma_init_one(dev, ppi, &optidma_sht, NULL, 0);
} }
static const struct pci_device_id optidma[] = { static const struct pci_device_id optidma[] = {
......
...@@ -754,7 +754,7 @@ static int __devinit pdc2027x_init_one(struct pci_dev *pdev, const struct pci_de ...@@ -754,7 +754,7 @@ static int __devinit pdc2027x_init_one(struct pci_dev *pdev, const struct pci_de
return -EIO; return -EIO;
pci_set_master(pdev); pci_set_master(pdev);
return ata_host_activate(host, pdev->irq, ata_sff_interrupt, return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
IRQF_SHARED, &pdc2027x_sht); IRQF_SHARED, &pdc2027x_sht);
} }
......
...@@ -337,7 +337,7 @@ static int pdc202xx_init_one(struct pci_dev *dev, const struct pci_device_id *id ...@@ -337,7 +337,7 @@ static int pdc202xx_init_one(struct pci_dev *dev, const struct pci_device_id *id
return -ENODEV; return -ENODEV;
} }
} }
return ata_pci_sff_init_one(dev, ppi, &pdc202xx_sht, NULL, 0); return ata_pci_bmdma_init_one(dev, ppi, &pdc202xx_sht, NULL, 0);
} }
static const struct pci_device_id pdc202xx[] = { static const struct pci_device_id pdc202xx[] = {
......
...@@ -95,7 +95,7 @@ static int ata_tosh_init_one(struct pci_dev *dev, const struct pci_device_id *id ...@@ -95,7 +95,7 @@ static int ata_tosh_init_one(struct pci_dev *dev, const struct pci_device_id *id
}; };
const struct ata_port_info *ppi[] = { &info, &ata_dummy_port_info }; const struct ata_port_info *ppi[] = { &info, &ata_dummy_port_info };
/* Just one port for the moment */ /* Just one port for the moment */
return ata_pci_sff_init_one(dev, ppi, &tosh_sht, NULL, 0); return ata_pci_bmdma_init_one(dev, ppi, &tosh_sht, NULL, 0);
} }
static struct pci_device_id ata_tosh[] = { static struct pci_device_id ata_tosh[] = {
......
...@@ -227,7 +227,7 @@ static int radisys_init_one (struct pci_dev *pdev, const struct pci_device_id *e ...@@ -227,7 +227,7 @@ static int radisys_init_one (struct pci_dev *pdev, const struct pci_device_id *e
dev_printk(KERN_DEBUG, &pdev->dev, dev_printk(KERN_DEBUG, &pdev->dev,
"version " DRV_VERSION "\n"); "version " DRV_VERSION "\n");
return ata_pci_sff_init_one(pdev, ppi, &radisys_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &radisys_sht, NULL, 0);
} }
static const struct pci_device_id radisys_pci_tbl[] = { static const struct pci_device_id radisys_pci_tbl[] = {
......
...@@ -344,7 +344,7 @@ static int __devinit rdc_init_one(struct pci_dev *pdev, ...@@ -344,7 +344,7 @@ static int __devinit rdc_init_one(struct pci_dev *pdev,
*/ */
pci_read_config_dword(pdev, 0x54, &hpriv->saved_iocfg); pci_read_config_dword(pdev, 0x54, &hpriv->saved_iocfg);
rc = ata_pci_sff_prepare_host(pdev, ppi, &host); rc = ata_pci_bmdma_prepare_host(pdev, ppi, &host);
if (rc) if (rc)
return rc; return rc;
host->private_data = hpriv; host->private_data = hpriv;
...@@ -354,7 +354,7 @@ static int __devinit rdc_init_one(struct pci_dev *pdev, ...@@ -354,7 +354,7 @@ static int __devinit rdc_init_one(struct pci_dev *pdev,
host->flags |= ATA_HOST_PARALLEL_SCAN; host->flags |= ATA_HOST_PARALLEL_SCAN;
pci_set_master(pdev); pci_set_master(pdev);
return ata_pci_sff_activate_host(host, ata_sff_interrupt, &rdc_sht); return ata_pci_sff_activate_host(host, ata_bmdma_interrupt, &rdc_sht);
} }
static void rdc_remove_one(struct pci_dev *pdev) static void rdc_remove_one(struct pci_dev *pdev)
......
...@@ -237,7 +237,7 @@ static int sc1200_init_one(struct pci_dev *dev, const struct pci_device_id *id) ...@@ -237,7 +237,7 @@ static int sc1200_init_one(struct pci_dev *dev, const struct pci_device_id *id)
}; };
const struct ata_port_info *ppi[] = { &info, NULL }; const struct ata_port_info *ppi[] = { &info, NULL };
return ata_pci_sff_init_one(dev, ppi, &sc1200_sht, NULL, 0); return ata_pci_bmdma_init_one(dev, ppi, &sc1200_sht, NULL, 0);
} }
static const struct pci_device_id sc1200[] = { static const struct pci_device_id sc1200[] = {
......
...@@ -875,7 +875,7 @@ static void scc_postreset(struct ata_link *link, unsigned int *classes) ...@@ -875,7 +875,7 @@ static void scc_postreset(struct ata_link *link, unsigned int *classes)
* scc_irq_clear - Clear PCI IDE BMDMA interrupt. * scc_irq_clear - Clear PCI IDE BMDMA interrupt.
* @ap: Port associated with this ATA transaction. * @ap: Port associated with this ATA transaction.
* *
* Note: Original code is ata_sff_irq_clear(). * Note: Original code is ata_bmdma_irq_clear().
*/ */
static void scc_irq_clear (struct ata_port *ap) static void scc_irq_clear (struct ata_port *ap)
...@@ -1105,7 +1105,7 @@ static int scc_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -1105,7 +1105,7 @@ static int scc_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
if (rc) if (rc)
return rc; return rc;
return ata_host_activate(host, pdev->irq, ata_sff_interrupt, return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
IRQF_SHARED, &scc_sht); IRQF_SHARED, &scc_sht);
} }
......
...@@ -179,7 +179,7 @@ static int __devinit sch_init_one(struct pci_dev *pdev, ...@@ -179,7 +179,7 @@ static int __devinit sch_init_one(struct pci_dev *pdev,
dev_printk(KERN_DEBUG, &pdev->dev, dev_printk(KERN_DEBUG, &pdev->dev,
"version " DRV_VERSION "\n"); "version " DRV_VERSION "\n");
return ata_pci_sff_init_one(pdev, ppi, &sch_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &sch_sht, NULL, 0);
} }
static int __init sch_init(void) static int __init sch_init(void)
......
...@@ -460,7 +460,7 @@ static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id ...@@ -460,7 +460,7 @@ static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id
if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE) if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE)
ata_pci_bmdma_clear_simplex(pdev); ata_pci_bmdma_clear_simplex(pdev);
return ata_pci_sff_init_one(pdev, ppi, &serverworks_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &serverworks_sht, NULL, 0);
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
......
...@@ -374,11 +374,11 @@ static int __devinit sil680_init_one(struct pci_dev *pdev, ...@@ -374,11 +374,11 @@ static int __devinit sil680_init_one(struct pci_dev *pdev,
ata_sff_std_ports(&host->ports[1]->ioaddr); ata_sff_std_ports(&host->ports[1]->ioaddr);
/* Register & activate */ /* Register & activate */
return ata_host_activate(host, pdev->irq, ata_sff_interrupt, return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
IRQF_SHARED, &sil680_sht); IRQF_SHARED, &sil680_sht);
use_ioports: use_ioports:
return ata_pci_sff_init_one(pdev, ppi, &sil680_sht, NULL, 0); return ata_pci_bmdma_init_one(pdev, ppi, &sil680_sht, NULL, 0);
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
......
...@@ -826,7 +826,7 @@ static int sis_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -826,7 +826,7 @@ static int sis_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
sis_fixup(pdev, chipset); sis_fixup(pdev, chipset);
return ata_pci_sff_init_one(pdev, ppi, &sis_sht, chipset, 0); return ata_pci_bmdma_init_one(pdev, ppi, &sis_sht, chipset, 0);
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
......
...@@ -316,7 +316,7 @@ static int sl82c105_init_one(struct pci_dev *dev, const struct pci_device_id *id ...@@ -316,7 +316,7 @@ static int sl82c105_init_one(struct pci_dev *dev, const struct pci_device_id *id
val |= CTRL_P0EN | CTRL_P0F16 | CTRL_P1F16; val |= CTRL_P0EN | CTRL_P0F16 | CTRL_P1F16;
pci_write_config_dword(dev, 0x40, val); pci_write_config_dword(dev, 0x40, val);
return ata_pci_sff_init_one(dev, ppi, &sl82c105_sht, NULL, 0); return ata_pci_bmdma_init_one(dev, ppi, &sl82c105_sht, NULL, 0);
} }
static const struct pci_device_id sl82c105[] = { static const struct pci_device_id sl82c105[] = {
......
...@@ -201,7 +201,7 @@ static int triflex_init_one(struct pci_dev *dev, const struct pci_device_id *id) ...@@ -201,7 +201,7 @@ static int triflex_init_one(struct pci_dev *dev, const struct pci_device_id *id)
if (!printed_version++) if (!printed_version++)
dev_printk(KERN_DEBUG, &dev->dev, "version " DRV_VERSION "\n"); dev_printk(KERN_DEBUG, &dev->dev, "version " DRV_VERSION "\n");
return ata_pci_sff_init_one(dev, ppi, &triflex_sht, NULL, 0); return ata_pci_bmdma_init_one(dev, ppi, &triflex_sht, NULL, 0);
} }
static const struct pci_device_id triflex[] = { static const struct pci_device_id triflex[] = {
......
...@@ -627,7 +627,7 @@ static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -627,7 +627,7 @@ static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
} }
/* We have established the device type, now fire it up */ /* We have established the device type, now fire it up */
return ata_pci_sff_init_one(pdev, ppi, &via_sht, (void *)config, 0); return ata_pci_bmdma_init_one(pdev, ppi, &via_sht, (void *)config, 0);
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
......
...@@ -675,8 +675,6 @@ static struct ata_port_operations mv5_ops = { ...@@ -675,8 +675,6 @@ static struct ata_port_operations mv5_ops = {
.freeze = mv_eh_freeze, .freeze = mv_eh_freeze,
.thaw = mv_eh_thaw, .thaw = mv_eh_thaw,
.hardreset = mv_hardreset, .hardreset = mv_hardreset,
.error_handler = ata_std_error_handler, /* avoid SFF EH */
.post_internal_cmd = ATA_OP_NULL,
.scr_read = mv5_scr_read, .scr_read = mv5_scr_read,
.scr_write = mv5_scr_write, .scr_write = mv5_scr_write,
...@@ -2813,7 +2811,7 @@ static void mv_port_intr(struct ata_port *ap, u32 port_cause) ...@@ -2813,7 +2811,7 @@ static void mv_port_intr(struct ata_port *ap, u32 port_cause)
} else if (!edma_was_enabled) { } else if (!edma_was_enabled) {
struct ata_queued_cmd *qc = mv_get_active_qc(ap); struct ata_queued_cmd *qc = mv_get_active_qc(ap);
if (qc) if (qc)
ata_sff_host_intr(ap, qc); ata_bmdma_port_intr(ap, qc);
else else
mv_unexpected_intr(ap, edma_was_enabled); mv_unexpected_intr(ap, edma_was_enabled);
} }
......
...@@ -920,7 +920,7 @@ static int nv_host_intr(struct ata_port *ap, u8 irq_stat) ...@@ -920,7 +920,7 @@ static int nv_host_intr(struct ata_port *ap, u8 irq_stat)
} }
/* handle interrupt */ /* handle interrupt */
return ata_sff_host_intr(ap, qc); return ata_bmdma_port_intr(ap, qc);
} }
static irqreturn_t nv_adma_interrupt(int irq, void *dev_instance) static irqreturn_t nv_adma_interrupt(int irq, void *dev_instance)
...@@ -1100,7 +1100,7 @@ static void nv_adma_irq_clear(struct ata_port *ap) ...@@ -1100,7 +1100,7 @@ static void nv_adma_irq_clear(struct ata_port *ap)
u32 notifier_clears[2]; u32 notifier_clears[2];
if (pp->flags & NV_ADMA_ATAPI_SETUP_COMPLETE) { if (pp->flags & NV_ADMA_ATAPI_SETUP_COMPLETE) {
ata_sff_irq_clear(ap); ata_bmdma_irq_clear(ap);
return; return;
} }
...@@ -1505,7 +1505,7 @@ static irqreturn_t nv_generic_interrupt(int irq, void *dev_instance) ...@@ -1505,7 +1505,7 @@ static irqreturn_t nv_generic_interrupt(int irq, void *dev_instance)
qc = ata_qc_from_tag(ap, ap->link.active_tag); qc = ata_qc_from_tag(ap, ap->link.active_tag);
if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING))) { if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING))) {
handled += ata_sff_host_intr(ap, qc); handled += ata_bmdma_port_intr(ap, qc);
} else { } else {
/* /*
* No request pending? Clear interrupt status * No request pending? Clear interrupt status
...@@ -2430,7 +2430,7 @@ static int nv_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -2430,7 +2430,7 @@ static int nv_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
ppi[0] = &nv_port_info[type]; ppi[0] = &nv_port_info[type];
ipriv = ppi[0]->private_data; ipriv = ppi[0]->private_data;
rc = ata_pci_sff_prepare_host(pdev, ppi, &host); rc = ata_pci_bmdma_prepare_host(pdev, ppi, &host);
if (rc) if (rc)
return rc; return rc;
......
...@@ -120,8 +120,6 @@ static void qs_host_stop(struct ata_host *host); ...@@ -120,8 +120,6 @@ static void qs_host_stop(struct ata_host *host);
static void qs_qc_prep(struct ata_queued_cmd *qc); static void qs_qc_prep(struct ata_queued_cmd *qc);
static unsigned int qs_qc_issue(struct ata_queued_cmd *qc); static unsigned int qs_qc_issue(struct ata_queued_cmd *qc);
static int qs_check_atapi_dma(struct ata_queued_cmd *qc); static int qs_check_atapi_dma(struct ata_queued_cmd *qc);
static void qs_bmdma_stop(struct ata_queued_cmd *qc);
static u8 qs_bmdma_status(struct ata_port *ap);
static void qs_freeze(struct ata_port *ap); static void qs_freeze(struct ata_port *ap);
static void qs_thaw(struct ata_port *ap); static void qs_thaw(struct ata_port *ap);
static int qs_prereset(struct ata_link *link, unsigned long deadline); static int qs_prereset(struct ata_link *link, unsigned long deadline);
...@@ -137,8 +135,6 @@ static struct ata_port_operations qs_ata_ops = { ...@@ -137,8 +135,6 @@ static struct ata_port_operations qs_ata_ops = {
.inherits = &ata_sff_port_ops, .inherits = &ata_sff_port_ops,
.check_atapi_dma = qs_check_atapi_dma, .check_atapi_dma = qs_check_atapi_dma,
.bmdma_stop = qs_bmdma_stop,
.bmdma_status = qs_bmdma_status,
.qc_prep = qs_qc_prep, .qc_prep = qs_qc_prep,
.qc_issue = qs_qc_issue, .qc_issue = qs_qc_issue,
...@@ -190,16 +186,6 @@ static int qs_check_atapi_dma(struct ata_queued_cmd *qc) ...@@ -190,16 +186,6 @@ static int qs_check_atapi_dma(struct ata_queued_cmd *qc)
return 1; /* ATAPI DMA not supported */ return 1; /* ATAPI DMA not supported */
} }
static void qs_bmdma_stop(struct ata_queued_cmd *qc)
{
/* nothing */
}
static u8 qs_bmdma_status(struct ata_port *ap)
{
return 0;
}
static inline void qs_enter_reg_mode(struct ata_port *ap) static inline void qs_enter_reg_mode(struct ata_port *ap)
{ {
u8 __iomem *chan = qs_mmio_base(ap->host) + (ap->port_no * 0x4000); u8 __iomem *chan = qs_mmio_base(ap->host) + (ap->port_no * 0x4000);
...@@ -454,7 +440,7 @@ static inline unsigned int qs_intr_mmio(struct ata_host *host) ...@@ -454,7 +440,7 @@ static inline unsigned int qs_intr_mmio(struct ata_host *host)
if (!pp || pp->state != qs_state_mmio) if (!pp || pp->state != qs_state_mmio)
continue; continue;
if (!(qc->tf.flags & ATA_TFLAG_POLLING)) if (!(qc->tf.flags & ATA_TFLAG_POLLING))
handled |= ata_sff_host_intr(ap, qc); handled |= ata_sff_port_intr(ap, qc);
} }
return handled; return handled;
} }
......
...@@ -503,7 +503,7 @@ static void sil_host_intr(struct ata_port *ap, u32 bmdma2) ...@@ -503,7 +503,7 @@ static void sil_host_intr(struct ata_port *ap, u32 bmdma2)
goto err_hsm; goto err_hsm;
/* ack bmdma irq events */ /* ack bmdma irq events */
ata_sff_irq_clear(ap); ata_bmdma_irq_clear(ap);
/* kick HSM in the ass */ /* kick HSM in the ass */
ata_sff_hsm_move(ap, qc, status, 0); ata_sff_hsm_move(ap, qc, status, 0);
...@@ -584,7 +584,7 @@ static void sil_thaw(struct ata_port *ap) ...@@ -584,7 +584,7 @@ static void sil_thaw(struct ata_port *ap)
/* clear IRQ */ /* clear IRQ */
ap->ops->sff_check_status(ap); ap->ops->sff_check_status(ap);
ata_sff_irq_clear(ap); ata_bmdma_irq_clear(ap);
/* turn on SATA IRQ if supported */ /* turn on SATA IRQ if supported */
if (!(ap->flags & SIL_FLAG_NO_SATA_IRQ)) if (!(ap->flags & SIL_FLAG_NO_SATA_IRQ))
......
...@@ -279,7 +279,7 @@ static int sis_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -279,7 +279,7 @@ static int sis_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
break; break;
} }
rc = ata_pci_sff_prepare_host(pdev, ppi, &host); rc = ata_pci_bmdma_prepare_host(pdev, ppi, &host);
if (rc) if (rc)
return rc; return rc;
...@@ -308,7 +308,7 @@ static int sis_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -308,7 +308,7 @@ static int sis_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
pci_set_master(pdev); pci_set_master(pdev);
pci_intx(pdev, 1); pci_intx(pdev, 1);
return ata_host_activate(host, pdev->irq, ata_sff_interrupt, return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
IRQF_SHARED, &sis_sht); IRQF_SHARED, &sis_sht);
} }
......
...@@ -502,7 +502,7 @@ static int k2_sata_init_one(struct pci_dev *pdev, const struct pci_device_id *en ...@@ -502,7 +502,7 @@ static int k2_sata_init_one(struct pci_dev *pdev, const struct pci_device_id *en
writel(0x0, mmio_base + K2_SATA_SIM_OFFSET); writel(0x0, mmio_base + K2_SATA_SIM_OFFSET);
pci_set_master(pdev); pci_set_master(pdev);
return ata_host_activate(host, pdev->irq, ata_sff_interrupt, return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
IRQF_SHARED, &k2_sata_sht); IRQF_SHARED, &k2_sata_sht);
} }
......
...@@ -242,7 +242,7 @@ static int uli_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -242,7 +242,7 @@ static int uli_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
pci_set_master(pdev); pci_set_master(pdev);
pci_intx(pdev, 1); pci_intx(pdev, 1);
return ata_host_activate(host, pdev->irq, ata_sff_interrupt, return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
IRQF_SHARED, &uli_sht); IRQF_SHARED, &uli_sht);
} }
......
...@@ -308,7 +308,7 @@ static void svia_noop_freeze(struct ata_port *ap) ...@@ -308,7 +308,7 @@ static void svia_noop_freeze(struct ata_port *ap)
* certain way. Leave it alone and just clear pending IRQ. * certain way. Leave it alone and just clear pending IRQ.
*/ */
ap->ops->sff_check_status(ap); ap->ops->sff_check_status(ap);
ata_sff_irq_clear(ap); ata_bmdma_irq_clear(ap);
} }
/** /**
...@@ -463,7 +463,7 @@ static int vt6420_prepare_host(struct pci_dev *pdev, struct ata_host **r_host) ...@@ -463,7 +463,7 @@ static int vt6420_prepare_host(struct pci_dev *pdev, struct ata_host **r_host)
struct ata_host *host; struct ata_host *host;
int rc; int rc;
rc = ata_pci_sff_prepare_host(pdev, ppi, &host); rc = ata_pci_bmdma_prepare_host(pdev, ppi, &host);
if (rc) if (rc)
return rc; return rc;
*r_host = host; *r_host = host;
...@@ -520,7 +520,7 @@ static int vt8251_prepare_host(struct pci_dev *pdev, struct ata_host **r_host) ...@@ -520,7 +520,7 @@ static int vt8251_prepare_host(struct pci_dev *pdev, struct ata_host **r_host)
struct ata_host *host; struct ata_host *host;
int i, rc; int i, rc;
rc = ata_pci_sff_prepare_host(pdev, ppi, &host); rc = ata_pci_bmdma_prepare_host(pdev, ppi, &host);
if (rc) if (rc)
return rc; return rc;
*r_host = host; *r_host = host;
...@@ -628,7 +628,7 @@ static int svia_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -628,7 +628,7 @@ static int svia_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
svia_configure(pdev); svia_configure(pdev);
pci_set_master(pdev); pci_set_master(pdev);
return ata_host_activate(host, pdev->irq, ata_sff_interrupt, return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
IRQF_SHARED, &svia_sht); IRQF_SHARED, &svia_sht);
} }
......
...@@ -245,7 +245,7 @@ static void vsc_port_intr(u8 port_status, struct ata_port *ap) ...@@ -245,7 +245,7 @@ static void vsc_port_intr(u8 port_status, struct ata_port *ap)
qc = ata_qc_from_tag(ap, ap->link.active_tag); qc = ata_qc_from_tag(ap, ap->link.active_tag);
if (qc && likely(!(qc->tf.flags & ATA_TFLAG_POLLING))) if (qc && likely(!(qc->tf.flags & ATA_TFLAG_POLLING)))
handled = ata_sff_host_intr(ap, qc); handled = ata_bmdma_port_intr(ap, qc);
/* We received an interrupt during a polled command, /* We received an interrupt during a polled command,
* or some other spurious condition. Interrupt reporting * or some other spurious condition. Interrupt reporting
......
...@@ -386,6 +386,7 @@ enum { ...@@ -386,6 +386,7 @@ enum {
ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */ ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */
ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */ ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */
ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */ ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */
ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */
/* DMA mask for user DMA control: User visible values; DO NOT /* DMA mask for user DMA control: User visible values; DO NOT
renumber */ renumber */
...@@ -513,7 +514,9 @@ struct ata_ioports { ...@@ -513,7 +514,9 @@ struct ata_ioports {
void __iomem *command_addr; void __iomem *command_addr;
void __iomem *altstatus_addr; void __iomem *altstatus_addr;
void __iomem *ctl_addr; void __iomem *ctl_addr;
#ifdef CONFIG_ATA_BMDMA
void __iomem *bmdma_addr; void __iomem *bmdma_addr;
#endif /* CONFIG_ATA_BMDMA */
void __iomem *scr_addr; void __iomem *scr_addr;
}; };
#endif /* CONFIG_ATA_SFF */ #endif /* CONFIG_ATA_SFF */
...@@ -721,8 +724,10 @@ struct ata_port { ...@@ -721,8 +724,10 @@ struct ata_port {
u8 ctl; /* cache of ATA control register */ u8 ctl; /* cache of ATA control register */
u8 last_ctl; /* Cache last written value */ u8 last_ctl; /* Cache last written value */
struct delayed_work sff_pio_task; struct delayed_work sff_pio_task;
#ifdef CONFIG_ATA_BMDMA
struct ata_bmdma_prd *bmdma_prd; /* BMDMA SG list */ struct ata_bmdma_prd *bmdma_prd; /* BMDMA SG list */
dma_addr_t bmdma_prd_dma; /* and its DMA mapping */ dma_addr_t bmdma_prd_dma; /* and its DMA mapping */
#endif /* CONFIG_ATA_BMDMA */
#endif /* CONFIG_ATA_SFF */ #endif /* CONFIG_ATA_SFF */
unsigned int pio_mask; unsigned int pio_mask;
...@@ -856,10 +861,12 @@ struct ata_port_operations { ...@@ -856,10 +861,12 @@ struct ata_port_operations {
void (*sff_irq_clear)(struct ata_port *); void (*sff_irq_clear)(struct ata_port *);
void (*sff_drain_fifo)(struct ata_queued_cmd *qc); void (*sff_drain_fifo)(struct ata_queued_cmd *qc);
#ifdef CONFIG_ATA_BMDMA
void (*bmdma_setup)(struct ata_queued_cmd *qc); void (*bmdma_setup)(struct ata_queued_cmd *qc);
void (*bmdma_start)(struct ata_queued_cmd *qc); void (*bmdma_start)(struct ata_queued_cmd *qc);
void (*bmdma_stop)(struct ata_queued_cmd *qc); void (*bmdma_stop)(struct ata_queued_cmd *qc);
u8 (*bmdma_status)(struct ata_port *ap); u8 (*bmdma_status)(struct ata_port *ap);
#endif /* CONFIG_ATA_BMDMA */
#endif /* CONFIG_ATA_SFF */ #endif /* CONFIG_ATA_SFF */
ssize_t (*em_show)(struct ata_port *ap, char *buf); ssize_t (*em_show)(struct ata_port *ap, char *buf);
...@@ -1555,7 +1562,6 @@ extern void sata_pmp_error_handler(struct ata_port *ap); ...@@ -1555,7 +1562,6 @@ extern void sata_pmp_error_handler(struct ata_port *ap);
#ifdef CONFIG_ATA_SFF #ifdef CONFIG_ATA_SFF
extern const struct ata_port_operations ata_sff_port_ops; extern const struct ata_port_operations ata_sff_port_ops;
extern const struct ata_port_operations ata_bmdma_port_ops;
extern const struct ata_port_operations ata_bmdma32_port_ops; extern const struct ata_port_operations ata_bmdma32_port_ops;
/* PIO only, sg_tablesize and dma_boundary limits can be removed */ /* PIO only, sg_tablesize and dma_boundary limits can be removed */
...@@ -1564,11 +1570,6 @@ extern const struct ata_port_operations ata_bmdma32_port_ops; ...@@ -1564,11 +1570,6 @@ extern const struct ata_port_operations ata_bmdma32_port_ops;
.sg_tablesize = LIBATA_MAX_PRD, \ .sg_tablesize = LIBATA_MAX_PRD, \
.dma_boundary = ATA_DMA_BOUNDARY .dma_boundary = ATA_DMA_BOUNDARY
#define ATA_BMDMA_SHT(drv_name) \
ATA_BASE_SHT(drv_name), \
.sg_tablesize = LIBATA_MAX_PRD, \
.dma_boundary = ATA_DMA_BOUNDARY
extern void ata_sff_dev_select(struct ata_port *ap, unsigned int device); extern void ata_sff_dev_select(struct ata_port *ap, unsigned int device);
extern u8 ata_sff_check_status(struct ata_port *ap); extern u8 ata_sff_check_status(struct ata_port *ap);
extern void ata_sff_pause(struct ata_port *ap); extern void ata_sff_pause(struct ata_port *ap);
...@@ -1593,7 +1594,7 @@ extern int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc, ...@@ -1593,7 +1594,7 @@ extern int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc,
extern void ata_sff_queue_pio_task(struct ata_port *ap, unsigned long delay); extern void ata_sff_queue_pio_task(struct ata_port *ap, unsigned long delay);
extern unsigned int ata_sff_qc_issue(struct ata_queued_cmd *qc); extern unsigned int ata_sff_qc_issue(struct ata_queued_cmd *qc);
extern bool ata_sff_qc_fill_rtf(struct ata_queued_cmd *qc); extern bool ata_sff_qc_fill_rtf(struct ata_queued_cmd *qc);
extern unsigned int ata_sff_host_intr(struct ata_port *ap, extern unsigned int ata_sff_port_intr(struct ata_port *ap,
struct ata_queued_cmd *qc); struct ata_queued_cmd *qc);
extern irqreturn_t ata_sff_interrupt(int irq, void *dev_instance); extern irqreturn_t ata_sff_interrupt(int irq, void *dev_instance);
extern void ata_sff_lost_interrupt(struct ata_port *ap); extern void ata_sff_lost_interrupt(struct ata_port *ap);
...@@ -1625,11 +1626,24 @@ extern int ata_pci_sff_init_one(struct pci_dev *pdev, ...@@ -1625,11 +1626,24 @@ extern int ata_pci_sff_init_one(struct pci_dev *pdev,
struct scsi_host_template *sht, void *host_priv, int hflags); struct scsi_host_template *sht, void *host_priv, int hflags);
#endif /* CONFIG_PCI */ #endif /* CONFIG_PCI */
#ifdef CONFIG_ATA_BMDMA
extern const struct ata_port_operations ata_bmdma_port_ops;
#define ATA_BMDMA_SHT(drv_name) \
ATA_BASE_SHT(drv_name), \
.sg_tablesize = LIBATA_MAX_PRD, \
.dma_boundary = ATA_DMA_BOUNDARY
extern void ata_bmdma_qc_prep(struct ata_queued_cmd *qc); extern void ata_bmdma_qc_prep(struct ata_queued_cmd *qc);
extern unsigned int ata_bmdma_qc_issue(struct ata_queued_cmd *qc); extern unsigned int ata_bmdma_qc_issue(struct ata_queued_cmd *qc);
extern void ata_bmdma_dumb_qc_prep(struct ata_queued_cmd *qc); extern void ata_bmdma_dumb_qc_prep(struct ata_queued_cmd *qc);
extern unsigned int ata_bmdma_port_intr(struct ata_port *ap,
struct ata_queued_cmd *qc);
extern irqreturn_t ata_bmdma_interrupt(int irq, void *dev_instance);
extern void ata_bmdma_error_handler(struct ata_port *ap); extern void ata_bmdma_error_handler(struct ata_port *ap);
extern void ata_bmdma_post_internal_cmd(struct ata_queued_cmd *qc); extern void ata_bmdma_post_internal_cmd(struct ata_queued_cmd *qc);
extern void ata_bmdma_irq_clear(struct ata_port *ap);
extern void ata_bmdma_setup(struct ata_queued_cmd *qc); extern void ata_bmdma_setup(struct ata_queued_cmd *qc);
extern void ata_bmdma_start(struct ata_queued_cmd *qc); extern void ata_bmdma_start(struct ata_queued_cmd *qc);
extern void ata_bmdma_stop(struct ata_queued_cmd *qc); extern void ata_bmdma_stop(struct ata_queued_cmd *qc);
...@@ -1640,7 +1654,15 @@ extern int ata_bmdma_port_start32(struct ata_port *ap); ...@@ -1640,7 +1654,15 @@ extern int ata_bmdma_port_start32(struct ata_port *ap);
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
extern int ata_pci_bmdma_clear_simplex(struct pci_dev *pdev); extern int ata_pci_bmdma_clear_simplex(struct pci_dev *pdev);
extern void ata_pci_bmdma_init(struct ata_host *host); extern void ata_pci_bmdma_init(struct ata_host *host);
extern int ata_pci_bmdma_prepare_host(struct pci_dev *pdev,
const struct ata_port_info * const * ppi,
struct ata_host **r_host);
extern int ata_pci_bmdma_init_one(struct pci_dev *pdev,
const struct ata_port_info * const * ppi,
struct scsi_host_template *sht,
void *host_priv, int hflags);
#endif /* CONFIG_PCI */ #endif /* CONFIG_PCI */
#endif /* CONFIG_ATA_BMDMA */
/** /**
* ata_sff_busy_wait - Wait for a port status register * ata_sff_busy_wait - Wait for a port status register
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment