From b118e598090300ee35fef1d3de0e9bcd76f3fab6 Mon Sep 17 00:00:00 2001 From: Bartlomiej Zolnierkiewicz Date: Fri, 19 Oct 2007 00:30:09 +0200 Subject: [PATCH] --- yaml --- r: 71353 b: refs/heads/master c: 7ed5829758d8d6c5486ec54fb4414b7683541fad h: refs/heads/master i: 71351: 2da3d7baaf173951c1422408e6c1711741c68d30 v: v3 --- [refs] | 2 +- trunk/drivers/ide/pci/serverworks.c | 45 +++++++++-------------------- 2 files changed, 15 insertions(+), 32 deletions(-) diff --git a/[refs] b/[refs] index 77aa3f7e3dea..f9fc2085ceb5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: aaf707f061d5d87c9f671caa2904cd41c1c1a99e +refs/heads/master: 7ed5829758d8d6c5486ec54fb4414b7683541fad diff --git a/trunk/drivers/ide/pci/serverworks.c b/trunk/drivers/ide/pci/serverworks.c index 760e0e3e118e..c506b8bc4bcd 100644 --- a/trunk/drivers/ide/pci/serverworks.c +++ b/trunk/drivers/ide/pci/serverworks.c @@ -379,34 +379,9 @@ static void __devinit init_hwif_svwks (ide_hwif_t *hwif) } } -static int __devinit init_setup_svwks (struct pci_dev *dev, ide_pci_device_t *d) -{ - return ide_setup_pci_device(dev, d); -} - -static int __devinit init_setup_csb6 (struct pci_dev *dev, ide_pci_device_t *d) -{ - if (!(PCI_FUNC(dev->devfn) & 1)) { - if (dev->resource[0].start == 0x01f1) - d->host_flags |= IDE_HFLAG_BOOTABLE; - else - d->host_flags &= ~IDE_HFLAG_BOOTABLE; - } - - if ((dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE || - dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2) && - (!(PCI_FUNC(dev->devfn) & 1))) - d->host_flags |= IDE_HFLAG_SINGLE; - else - d->host_flags &= ~IDE_HFLAG_SINGLE; - - return ide_setup_pci_device(dev, d); -} - static ide_pci_device_t serverworks_chipsets[] __devinitdata = { { /* 0 */ .name = "SvrWks OSB4", - .init_setup = init_setup_svwks, .init_chipset = init_chipset_svwks, .init_hwif = init_hwif_svwks, .host_flags = IDE_HFLAG_BOOTABLE, @@ -415,7 +390,6 @@ static ide_pci_device_t serverworks_chipsets[] __devinitdata = { .udma_mask = 0x00, /* UDMA is problematic on OSB4 */ },{ /* 1 */ .name = "SvrWks CSB5", - .init_setup = init_setup_svwks, .init_chipset = init_chipset_svwks, .init_hwif = init_hwif_svwks, .host_flags = IDE_HFLAG_BOOTABLE, @@ -424,7 +398,6 @@ static ide_pci_device_t serverworks_chipsets[] __devinitdata = { .udma_mask = ATA_UDMA5, },{ /* 2 */ .name = "SvrWks CSB6", - .init_setup = init_setup_csb6, .init_chipset = init_chipset_svwks, .init_hwif = init_hwif_svwks, .host_flags = IDE_HFLAG_BOOTABLE, @@ -433,7 +406,6 @@ static ide_pci_device_t serverworks_chipsets[] __devinitdata = { .udma_mask = ATA_UDMA5, },{ /* 3 */ .name = "SvrWks CSB6", - .init_setup = init_setup_csb6, .init_chipset = init_chipset_svwks, .init_hwif = init_hwif_svwks, .host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_BOOTABLE, @@ -442,7 +414,6 @@ static ide_pci_device_t serverworks_chipsets[] __devinitdata = { .udma_mask = ATA_UDMA5, },{ /* 4 */ .name = "SvrWks HT1000", - .init_setup = init_setup_svwks, .init_chipset = init_chipset_svwks, .init_hwif = init_hwif_svwks, .host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_BOOTABLE, @@ -463,9 +434,21 @@ static ide_pci_device_t serverworks_chipsets[] __devinitdata = { static int __devinit svwks_init_one(struct pci_dev *dev, const struct pci_device_id *id) { - ide_pci_device_t *d = &serverworks_chipsets[id->driver_data]; + ide_pci_device_t d; + u8 idx = id->driver_data; + + d = serverworks_chipsets[idx]; + + if (idx == 2 || idx == 3) { + if ((PCI_FUNC(dev->devfn) & 1) == 0) { + if (pci_resource_start(dev, 0) != 0x01f1) + d.host_flags &= ~IDE_HFLAG_BOOTABLE; + d.host_flags |= IDE_HFLAG_SINGLE; + } else + d.host_flags &= ~IDE_HFLAG_SINGLE; + } - return d->init_setup(dev, d); + return ide_setup_pci_device(dev, &d); } static const struct pci_device_id svwks_pci_tbl[] = {