History

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

Linus Torvalds committed 16 years ago

Commit aa36c7b2 parents 9dda696 43c9c5962 files · +720 −519Browse files

Showing the changes to include/linux (1 of 62 files). Show all

Unified · Split

include/linux/libata.h+29−7
@@ -386,6 +386,7 @@ enum { · 385 unmodified lines
386386 ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */
387387 ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */
388388 ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */
389+ ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */
389390
390391 /* DMA mask for user DMA control: User visible values; DO NOT
391392 renumber */
@@ -513,7 +514,9 @@ struct ata_ioports { · 121 unmodified lines
513514 void __iomem *command_addr;
514515 void __iomem *altstatus_addr;
515516 void __iomem *ctl_addr;
517+#ifdef CONFIG_ATA_BMDMA
516518 void __iomem *bmdma_addr;
519+#endif /* CONFIG_ATA_BMDMA */
517520 void __iomem *scr_addr;
518521 };
519522 #endif /* CONFIG_ATA_SFF */
@@ -721,8 +724,10 @@ struct ata_port { · 201 unmodified lines
721724 u8 ctl; /* cache of ATA control register */
722725 u8 last_ctl; /* Cache last written value */
723726 struct delayed_work sff_pio_task;
727+#ifdef CONFIG_ATA_BMDMA
724728 struct ata_bmdma_prd *bmdma_prd; /* BMDMA SG list */
725729 dma_addr_t bmdma_prd_dma; /* and its DMA mapping */
730+#endif /* CONFIG_ATA_BMDMA */
726731 #endif /* CONFIG_ATA_SFF */
727732
728733 unsigned int pio_mask;
@@ -856,10 +861,12 @@ struct ata_port_operations { · 127 unmodified lines
856861 void (*sff_irq_clear)(struct ata_port *);
857862 void (*sff_drain_fifo)(struct ata_queued_cmd *qc);
858863
864+#ifdef CONFIG_ATA_BMDMA
859865 void (*bmdma_setup)(struct ata_queued_cmd *qc);
860866 void (*bmdma_start)(struct ata_queued_cmd *qc);
861867 void (*bmdma_stop)(struct ata_queued_cmd *qc);
862868 u8 (*bmdma_status)(struct ata_port *ap);
869+#endif /* CONFIG_ATA_BMDMA */
863870 #endif /* CONFIG_ATA_SFF */
864871
865872 ssize_t (*em_show)(struct ata_port *ap, char *buf);
@@ -1555,7 +1562,6 @@ extern void sata_pmp_error_handler(struct ata_port *ap); · 689 unmodified lines
15551562 #ifdef CONFIG_ATA_SFF
15561563
15571564 extern const struct ata_port_operations ata_sff_port_ops;
1558−extern const struct ata_port_operations ata_bmdma_port_ops;
15591565 extern const struct ata_port_operations ata_bmdma32_port_ops;
15601566
15611567 /* 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; · 2 unmodified lines
15641570 .sg_tablesize = LIBATA_MAX_PRD, \
15651571 .dma_boundary = ATA_DMA_BOUNDARY
15661572
1567−#define ATA_BMDMA_SHT(drv_name) \
1568− ATA_BASE_SHT(drv_name), \
1569− .sg_tablesize = LIBATA_MAX_PRD, \
1570− .dma_boundary = ATA_DMA_BOUNDARY
1571−
15721573 extern void ata_sff_dev_select(struct ata_port *ap, unsigned int device);
15731574 extern u8 ata_sff_check_status(struct ata_port *ap);
15741575 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, · 18 unmodified lines
15931594 extern void ata_sff_queue_pio_task(struct ata_port *ap, unsigned long delay);
15941595 extern unsigned int ata_sff_qc_issue(struct ata_queued_cmd *qc);
15951596 extern bool ata_sff_qc_fill_rtf(struct ata_queued_cmd *qc);
1596−extern unsigned int ata_sff_host_intr(struct ata_port *ap,
1597+extern unsigned int ata_sff_port_intr(struct ata_port *ap,
15971598 struct ata_queued_cmd *qc);
15981599 extern irqreturn_t ata_sff_interrupt(int irq, void *dev_instance);
15991600 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, · 25 unmodified lines
16251626 struct scsi_host_template *sht, void *host_priv, int hflags);
16261627 #endif /* CONFIG_PCI */
16271628
1629+#ifdef CONFIG_ATA_BMDMA
1630+
1631+extern const struct ata_port_operations ata_bmdma_port_ops;
1632+
1633+#define ATA_BMDMA_SHT(drv_name) \
1634+ ATA_BASE_SHT(drv_name), \
1635+ .sg_tablesize = LIBATA_MAX_PRD, \
1636+ .dma_boundary = ATA_DMA_BOUNDARY
1637+
16281638 extern void ata_bmdma_qc_prep(struct ata_queued_cmd *qc);
16291639 extern unsigned int ata_bmdma_qc_issue(struct ata_queued_cmd *qc);
16301640 extern void ata_bmdma_dumb_qc_prep(struct ata_queued_cmd *qc);
1641+extern unsigned int ata_bmdma_port_intr(struct ata_port *ap,
1642+ struct ata_queued_cmd *qc);
1643+extern irqreturn_t ata_bmdma_interrupt(int irq, void *dev_instance);
16311644 extern void ata_bmdma_error_handler(struct ata_port *ap);
16321645 extern void ata_bmdma_post_internal_cmd(struct ata_queued_cmd *qc);
1646+extern void ata_bmdma_irq_clear(struct ata_port *ap);
16331647 extern void ata_bmdma_setup(struct ata_queued_cmd *qc);
16341648 extern void ata_bmdma_start(struct ata_queued_cmd *qc);
16351649 extern void ata_bmdma_stop(struct ata_queued_cmd *qc);
@@ -1640,7 +1654,15 @@ extern int ata_bmdma_port_start32(struct ata_port *ap); · 4 unmodified lines
16401654 #ifdef CONFIG_PCI
16411655 extern int ata_pci_bmdma_clear_simplex(struct pci_dev *pdev);
16421656 extern void ata_pci_bmdma_init(struct ata_host *host);
1657+extern int ata_pci_bmdma_prepare_host(struct pci_dev *pdev,
1658+ const struct ata_port_info * const * ppi,
1659+ struct ata_host **r_host);
1660+extern int ata_pci_bmdma_init_one(struct pci_dev *pdev,
1661+ const struct ata_port_info * const * ppi,
1662+ struct scsi_host_template *sht,
1663+ void *host_priv, int hflags);
16431664 #endif /* CONFIG_PCI */
1665+#endif /* CONFIG_ATA_BMDMA */
16441666
16451667 /**
16461668 * ata_sff_busy_wait - Wait for a port status register