[PATCH 66/68] pata_via: factor out code for finding ISA bridge

From: Bartlomiej Zolnierkiewicz
Date: Fri Jan 29 2010 - 11:10:41 EST


From: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx>
Subject: [PATCH] pata_via: factor out code for finding ISA bridge

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx>
---
drivers/ata/pata_via.c | 35 +++++++++++++++++++++++------------
1 file changed, 23 insertions(+), 12 deletions(-)

Index: b/drivers/ata/pata_via.c
===================================================================
--- a/drivers/ata/pata_via.c
+++ b/drivers/ata/pata_via.c
@@ -431,6 +431,28 @@ static struct ata_port_operations via_po
.sff_data_xfer = ata_sff_data_xfer_noirq,
};

+static const struct via_isa_bridge *via_config_find(void)
+{
+ const struct via_isa_bridge *config;
+ struct pci_dev *isa;
+
+ for (config = via_isa_bridges; config->id != PCI_DEVICE_ID_VIA_ANON;
+ config++) {
+ isa = pci_get_device(PCI_VENDOR_ID_VIA +
+ !!(config->flags & VIA_BAD_ID), config->id, NULL);
+ if (isa) {
+ u8 rev = isa->revision;
+
+ pci_dev_put(isa);
+
+ if (rev >= config->rev_min && rev <= config->rev_max)
+ break;
+ }
+ }
+
+ return config;
+}
+
/**
* via_config_fifo - set up the FIFO
* @pdev: PCI device
@@ -544,7 +566,6 @@ static int via_init_one(struct pci_dev *
.port_ops = &via_port_ops
};
const struct ata_port_info *ppi[] = { NULL, NULL };
- struct pci_dev *isa;
const struct via_isa_bridge *config;
static int printed_version;
u8 enable;
@@ -563,17 +584,7 @@ static int via_init_one(struct pci_dev *

/* To find out how the IDE will behave and what features we
actually have to look at the bridge not the IDE controller */
- for (config = via_isa_bridges; config->id != PCI_DEVICE_ID_VIA_ANON;
- config++)
- if ((isa = pci_get_device(PCI_VENDOR_ID_VIA +
- !!(config->flags & VIA_BAD_ID),
- config->id, NULL))) {
- u8 rev = isa->revision;
- pci_dev_put(isa);
-
- if (rev >= config->rev_min && rev <= config->rev_max)
- break;
- }
+ config = via_config_find();

if (!(config->flags & VIA_NO_ENABLES)) {
/* 0x40 low bits indicate enabled channels */
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/