diff options
| author | Jeff Garzik <jgarzik@pobox.com> | 2004-11-12 09:01:32 -0500 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2004-11-12 09:01:32 -0500 |
| commit | b5625ce6fb2a3b46d68b7b3c32a10eed8f5c686c (patch) | |
| tree | b91859aebfe5541047146a07e7f2a2ec2bc72edc /include/linux/libata.h | |
| parent | 9ba41447b7226301b3db2ef60b0969a7ab619be3 (diff) | |
[libata] remove dependence on PCI
Most of this work was done by "Mat Loikkanen" <Mat.Loikkanen@synopsys.com>.
* use struct device rather than struct pci_dev
* use generic DMA routines (dma_xxx) and generic struct device
routines (dev_xxx)
* isolate PCI-specific helpers inside CONFIG_PCI
Diffstat (limited to 'include/linux/libata.h')
| -rw-r--r-- | include/linux/libata.h | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h index 79145d1a807a..605e0a728c0e 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h @@ -25,6 +25,7 @@ #include <linux/delay.h> #include <linux/interrupt.h> +#include <linux/pci.h> #include <asm/io.h> #include <linux/ata.h> #include <linux/workqueue.h> @@ -68,6 +69,12 @@ /* defines only for the constants which don't work well as enums */ #define ATA_TAG_POISON 0xfafbfcfdU +/* move to PCI layer? */ +static inline struct device *pci_dev_to_dev(struct pci_dev *pdev) +{ + return &pdev->dev; +} + enum { /* various global constants */ LIBATA_MAX_PRD = ATA_MAX_PRD / 2, @@ -184,7 +191,7 @@ struct ata_ioports { struct ata_probe_ent { struct list_head node; - struct pci_dev *pdev; + struct device *dev; struct ata_port_operations *port_ops; Scsi_Host_Template *sht; struct ata_ioports port[ATA_MAX_PORTS]; @@ -203,7 +210,7 @@ struct ata_probe_ent { struct ata_host_set { spinlock_t lock; - struct pci_dev *pdev; + struct device *dev; unsigned long irq; void __iomem *mmio_base; unsigned int n_ports; @@ -226,7 +233,7 @@ struct ata_queued_cmd { unsigned int tag; unsigned int n_elem; - int pci_dma_dir; + int dma_dir; unsigned int nsect; unsigned int cursect; @@ -361,12 +368,6 @@ struct ata_port_info { struct ata_port_operations *port_ops; }; -struct pci_bits { - unsigned int reg; /* PCI config register to read */ - unsigned int width; /* 1 (8 bit), 2 (16 bit), 4 (32 bit) */ - unsigned long mask; - unsigned long val; -}; extern void ata_port_probe(struct ata_port *); extern void __sata_phy_reset(struct ata_port *ap); @@ -374,9 +375,11 @@ extern void sata_phy_reset(struct ata_port *ap); extern void ata_bus_reset(struct ata_port *ap); extern void ata_port_disable(struct ata_port *); extern void ata_std_ports(struct ata_ioports *ioaddr); +#ifdef CONFIG_PCI extern int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_info, unsigned int n_ports); extern void ata_pci_remove_one (struct pci_dev *pdev); +#endif /* CONFIG_PCI */ extern int ata_device_add(struct ata_probe_ent *ent); extern int ata_scsi_detect(Scsi_Host_Template *sht); extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); @@ -398,10 +401,6 @@ extern void ata_exec_command(struct ata_port *ap, struct ata_taskfile *tf); extern int ata_port_start (struct ata_port *ap); extern void ata_port_stop (struct ata_port *ap); extern irqreturn_t ata_interrupt (int irq, void *dev_instance, struct pt_regs *regs); -extern struct ata_probe_ent * -ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port); -extern struct ata_probe_ent * -ata_pci_init_legacy_mode(struct pci_dev *pdev, struct ata_port_info **port); extern void ata_qc_prep(struct ata_queued_cmd *qc); extern int ata_qc_issue_prot(struct ata_queued_cmd *qc); extern void ata_sg_init_one(struct ata_queued_cmd *qc, void *buf, @@ -414,7 +413,6 @@ extern void ata_dev_id_string(u16 *id, unsigned char *s, extern void ata_bmdma_setup (struct ata_queued_cmd *qc); extern void ata_bmdma_start (struct ata_queued_cmd *qc); extern void ata_bmdma_irq_clear(struct ata_port *ap); -extern int pci_test_config_bits(struct pci_dev *pdev, struct pci_bits *bits); extern void ata_qc_complete(struct ata_queued_cmd *qc, u8 drv_stat); extern void ata_eng_timeout(struct ata_port *ap); extern void ata_scsi_simulate(u16 *id, struct scsi_cmnd *cmd, @@ -424,6 +422,24 @@ extern int ata_std_bios_param(struct scsi_device *sdev, sector_t capacity, int geom[]); extern int ata_scsi_slave_config(struct scsi_device *sdev); + +#ifdef CONFIG_PCI +struct pci_bits { + unsigned int reg; /* PCI config register to read */ + unsigned int width; /* 1 (8 bit), 2 (16 bit), 4 (32 bit) */ + unsigned long mask; + unsigned long val; +}; + +extern struct ata_probe_ent * +ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port); +extern struct ata_probe_ent * +ata_pci_init_legacy_mode(struct pci_dev *pdev, struct ata_port_info **port); +extern int pci_test_config_bits(struct pci_dev *pdev, struct pci_bits *bits); + +#endif /* CONFIG_PCI */ + + static inline unsigned int ata_tag_valid(unsigned int tag) { return (tag < ATA_MAX_QUEUE) ? 1 : 0; |
