aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/pata_amd.c
diff options
context:
space:
mode:
authorAlan Cox <alan@lxorguk.ukuu.org.uk>2006-09-26 12:53:38 -0400
committerJeff Garzik <jeff@garzik.org>2006-09-26 13:34:27 -0400
commitc961922b73dab429a759f560952fd4c3f60bd6b3 (patch)
treecbd6d6424d508fd208ae9992c1cf11b3b8a91fb1 /drivers/ata/pata_amd.c
parent4735ebedf37731160e3d3efc9fc9d4939c66fefa (diff)
[PATCH] libata-eh: Remove layering violation and duplication when handling absent ports
This removes the layering violation where drivers have to fiddle directly with EH flags. Instead we now recognize -ENOENT means "no port" and do the handling in the core code. This also removes an instance of a call to disable the port, and an identical printk from each driver doing this. Even better - future rule changes will be in one place only. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata/pata_amd.c')
-rw-r--r--drivers/ata/pata_amd.c25
1 files changed, 8 insertions, 17 deletions
diff --git a/drivers/ata/pata_amd.c b/drivers/ata/pata_amd.c
index 3293cf9a7eb5..793a5e1cb4cb 100644
--- a/drivers/ata/pata_amd.c
+++ b/drivers/ata/pata_amd.c
@@ -25,7 +25,7 @@
25#include <linux/libata.h> 25#include <linux/libata.h>
26 26
27#define DRV_NAME "pata_amd" 27#define DRV_NAME "pata_amd"
28#define DRV_VERSION "0.2.3" 28#define DRV_VERSION "0.2.4"
29 29
30/** 30/**
31 * timing_setup - shared timing computation and load 31 * timing_setup - shared timing computation and load
@@ -137,11 +137,8 @@ static int amd_pre_reset(struct ata_port *ap)
137 struct pci_dev *pdev = to_pci_dev(ap->host->dev); 137 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
138 u8 ata66; 138 u8 ata66;
139 139
140 if (!pci_test_config_bits(pdev, &amd_enable_bits[ap->port_no])) { 140 if (!pci_test_config_bits(pdev, &amd_enable_bits[ap->port_no]))
141 ata_port_disable(ap); 141 return -ENOENT;
142 printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
143 return 0;
144 }
145 142
146 pci_read_config_byte(pdev, 0x42, &ata66); 143 pci_read_config_byte(pdev, 0x42, &ata66);
147 if (ata66 & bitmask[ap->port_no]) 144 if (ata66 & bitmask[ap->port_no])
@@ -167,11 +164,9 @@ static int amd_early_pre_reset(struct ata_port *ap)
167 { 0x40, 1, 0x01, 0x01 } 164 { 0x40, 1, 0x01, 0x01 }
168 }; 165 };
169 166
170 if (!pci_test_config_bits(pdev, &amd_enable_bits[ap->port_no])) { 167 if (!pci_test_config_bits(pdev, &amd_enable_bits[ap->port_no]))
171 ata_port_disable(ap); 168 return -ENOENT;
172 printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id); 169
173 return 0;
174 }
175 /* No host side cable detection */ 170 /* No host side cable detection */
176 ap->cbl = ATA_CBL_PATA80; 171 ap->cbl = ATA_CBL_PATA80;
177 return ata_std_prereset(ap); 172 return ata_std_prereset(ap);
@@ -262,12 +257,8 @@ static int nv_pre_reset(struct ata_port *ap) {
262 u8 ata66; 257 u8 ata66;
263 u16 udma; 258 u16 udma;
264 259
265 if (!pci_test_config_bits(pdev, &nv_enable_bits[ap->port_no])) { 260 if (!pci_test_config_bits(pdev, &nv_enable_bits[ap->port_no]))
266 ata_port_disable(ap); 261 return -ENOENT;
267 printk(KERN_INFO "ata%u: port disabled. ignoring.\n", ap->id);
268 return 0;
269 }
270
271 262
272 pci_read_config_byte(pdev, 0x52, &ata66); 263 pci_read_config_byte(pdev, 0x52, &ata66);
273 if (ata66 & bitmask[ap->port_no]) 264 if (ata66 & bitmask[ap->port_no])