diff options
author | Alan Cox <alan@lxorguk.ukuu.org.uk> | 2007-06-07 11:19:15 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-06-09 22:40:28 -0400 |
commit | d92e74d353345d19f762e9501a50b0a5f43f7ba8 (patch) | |
tree | 9a526823ddba8dd8cd07bb5d918acf7c5e820db7 /include | |
parent | 0522b2869d89b095bf417c8cc6fa404842e91903 (diff) |
libata-core/sff: Fix multiple assumptions about DMA
The ata IRQ ack functions are only used when debugging. Unfortunately
almost every controller that calls them can cause crashes in some
configurations as there are missing checks for bmdma presence.
In addition ata_port_start insists of installing DMA buffers and pad
buffers for controllers regardless. The SFF controllers actually need to
make that decision dynamically at controller setup time and all need the
same helper - so we add ata_sff_port_start. Future patches will switch
the SFF drivers to use this.
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/libata.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h index a6a3113120a4..745c4f9b4caa 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -753,6 +753,7 @@ extern u8 ata_check_status(struct ata_port *ap); | |||
753 | extern u8 ata_altstatus(struct ata_port *ap); | 753 | extern u8 ata_altstatus(struct ata_port *ap); |
754 | extern void ata_exec_command(struct ata_port *ap, const struct ata_taskfile *tf); | 754 | extern void ata_exec_command(struct ata_port *ap, const struct ata_taskfile *tf); |
755 | extern int ata_port_start (struct ata_port *ap); | 755 | extern int ata_port_start (struct ata_port *ap); |
756 | extern int ata_sff_port_start (struct ata_port *ap); | ||
756 | extern irqreturn_t ata_interrupt (int irq, void *dev_instance); | 757 | extern irqreturn_t ata_interrupt (int irq, void *dev_instance); |
757 | extern void ata_data_xfer(struct ata_device *adev, unsigned char *buf, | 758 | extern void ata_data_xfer(struct ata_device *adev, unsigned char *buf, |
758 | unsigned int buflen, int write_data); | 759 | unsigned int buflen, int write_data); |