]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] ide low level driver updates
authorJens Axboe <axboe@suse.de>
Fri, 4 Oct 2002 03:44:14 +0000 (20:44 -0700)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Fri, 4 Oct 2002 03:44:14 +0000 (20:44 -0700)
All of them in a single patch, would be silly to split. Does two things:

o Inc module usage count to forcefully pin the module

o Make the chipset init data __devinitdata

o Kill ->init_setup() and just make it generic

51 files changed:
drivers/ide/pci/adma100.h
drivers/ide/pci/aec62xx.c
drivers/ide/pci/aec62xx.h
drivers/ide/pci/alim15x3.c
drivers/ide/pci/alim15x3.h
drivers/ide/pci/amd74xx.c
drivers/ide/pci/amd74xx.h
drivers/ide/pci/cmd64x.c
drivers/ide/pci/cmd64x.h
drivers/ide/pci/cs5530.c
drivers/ide/pci/cs5530.h
drivers/ide/pci/cy82c693.c
drivers/ide/pci/cy82c693.h
drivers/ide/pci/generic.c
drivers/ide/pci/generic.h
drivers/ide/pci/hpt34x.c
drivers/ide/pci/hpt34x.h
drivers/ide/pci/hpt366.c
drivers/ide/pci/hpt366.h
drivers/ide/pci/it8172.c
drivers/ide/pci/it8172.h
drivers/ide/pci/ns87415.c
drivers/ide/pci/ns87415.h
drivers/ide/pci/nvidia.c
drivers/ide/pci/nvidia.h
drivers/ide/pci/opti621.c
drivers/ide/pci/opti621.h
drivers/ide/pci/pdc202xx_new.c
drivers/ide/pci/pdc202xx_new.h
drivers/ide/pci/pdc202xx_old.c
drivers/ide/pci/pdc202xx_old.h
drivers/ide/pci/pdcadma.c
drivers/ide/pci/pdcadma.h
drivers/ide/pci/piix.c
drivers/ide/pci/piix.h
drivers/ide/pci/rz1000.c
drivers/ide/pci/rz1000.h
drivers/ide/pci/serverworks.c
drivers/ide/pci/serverworks.h
drivers/ide/pci/siimage.c
drivers/ide/pci/siimage.h
drivers/ide/pci/sis5513.c
drivers/ide/pci/sis5513.h
drivers/ide/pci/sl82c105.c
drivers/ide/pci/sl82c105.h
drivers/ide/pci/slc90e66.c
drivers/ide/pci/slc90e66.h
drivers/ide/pci/trm290.c
drivers/ide/pci/trm290.h
drivers/ide/pci/via82cxxx.c
drivers/ide/pci/via82cxxx.h

index 1e0e711464f57cccf986718858f1151814e1b728..d3d5754c2e9638286773501961c1466b8fad69e1 100644 (file)
@@ -10,7 +10,7 @@ extern unsigned int init_chipset_pdcadma(struct pci_dev *, const char *);
 extern void init_hwif_pdcadma(ide_hwif_t *);
 extern void init_dma_pdcadma(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t pdcadma_chipsets[] __initdata = {
+static ide_pci_device_t pdcadma_chipsets[] __devinitdata = {
        {
                vendor: PCI_VENDOR_ID_PDC,
                device: PCI_DEVICE_ID_PDC_1841,
index be9b489acb1d0192ecaf0f51ca5c643d08d47cd8..bc597da43cdc428bc1eb729d3e69752e06a87c88 100644 (file)
@@ -530,6 +530,7 @@ static int __devinit aec62xx_init_one(struct pci_dev *dev, const struct pci_devi
        if (dev->device != d->device)
                BUG();
        d->init_setup(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 8e149c089015909982c7eb9ff0ac0a30aad0e08c..0a6b05e89b34a3b43e6f8f14058a7b46c7299bfc 100644 (file)
@@ -98,7 +98,7 @@ static unsigned int init_chipset_aec62xx(struct pci_dev *, const char *);
 static void init_hwif_aec62xx(ide_hwif_t *);
 static void init_dma_aec62xx(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t aec62xx_chipsets[] __initdata = {
+static ide_pci_device_t aec62xx_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_ARTOP,
                device:         PCI_DEVICE_ID_ARTOP_ATP850UF,
index dee0a2c0f21b0df41c8f82e94be259f430cab471..217e1fa3d492f3c53cbb2f25392600ac31c01615 100644 (file)
@@ -858,6 +858,7 @@ static int __devinit alim15x3_init_one(struct pci_dev *dev, const struct pci_dev
        d->init_hwif = init_hwif_common_ali15x3;
 #endif /* CONFIG_SPARC64 */
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index bbd8fa7b0c549448f7ce5f5235d5986c7b244eff..4ec8964aab70f39c2836458fb0c239b26005346c 100644 (file)
@@ -30,7 +30,7 @@ static void init_hwif_common_ali15x3(ide_hwif_t *);
 static void init_hwif_ali15x3(ide_hwif_t *);
 static void init_dma_ali15x3(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t ali15x3_chipsets[] __initdata = {
+static ide_pci_device_t ali15x3_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_AL,
                device:         PCI_DEVICE_ID_AL_M5229,
index 564e585eb72919f5fcae2ee2823fdb1ec04ec806..710f69981544f9894a63410bc29bde396b50f237 100644 (file)
@@ -400,6 +400,7 @@ static int __devinit amd74xx_init_one(struct pci_dev *dev, const struct pci_devi
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index bc2a50060fb254f742fe73d92660d22df3aeec44..503c54843ddfd5e82e2e7b4a95e0007b226d14ad 100644 (file)
@@ -29,7 +29,7 @@ static unsigned int init_chipset_amd74xx(struct pci_dev *, const char *);
 static void init_hwif_amd74xx(ide_hwif_t *);
 static void init_dma_amd74xx(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t amd74xx_chipsets[] __initdata = {
+static ide_pci_device_t amd74xx_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_AMD,
                device:         PCI_DEVICE_ID_AMD_COBRA_7401,
index 847d26d7e6fdbf3a08c868306fc1c617f3a10bee..8aafeef4050f42d21aaa12c66ca458d32b3aadb2 100644 (file)
@@ -728,12 +728,9 @@ static void __init init_hwif_cmd64x (ide_hwif_t *hwif)
        if (dev->device == PCI_DEVICE_ID_CMD_643)
                hwif->ultra_mask = 0x80;
        if (dev->device == PCI_DEVICE_ID_CMD_646)
-       {
-               if (class_rev > 0x04)
-                       hwif->ultra_mask = 0x07;
-               else
-                       hwif->ultra_mask = 0x80;
-       }
+               hwif->ultra_mask = (class_rev > 0x04) ? 0x07 : 0x80;
+       if (dev->device == PCI_DEVICE_ID_CMD_648)
+               hwif->ultra_mask = 0x1f;
 
 #ifdef CONFIG_BLK_DEV_IDEDMA
        hwif->ide_dma_check = &cmd64x_config_drive_for_dma;
@@ -774,6 +771,7 @@ static int __devinit cmd64x_init_one(struct pci_dev *dev, const struct pci_devic
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index b68f863a305738284e555ff31f9811abe947b9e7..bcbb645198ffd5198f9b88c4d41f14f0ba3e1cab 100644 (file)
@@ -83,7 +83,7 @@ static unsigned int init_chipset_cmd64x(struct pci_dev *, const char *);
 static void init_hwif_cmd64x(ide_hwif_t *);
 static void init_dma_cmd64x(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t cmd64x_chipsets[] __initdata = {
+static ide_pci_device_t cmd64x_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_CMD,
                device:         PCI_DEVICE_ID_CMD_643,
index 2a974ee018cebc553d3596e30999bfa5b6dbe9a5..772b65e11a6e2d71a2c819b22f42c2228c68eeda 100644 (file)
@@ -427,6 +427,7 @@ static int __devinit cs5530_init_one(struct pci_dev *dev, const struct pci_devic
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index b68f73392117c81b6bbd9c2c507bdf15e96f8ca4..500388a0d1ed3ebd99d280d316acb2f92c50f10e 100644 (file)
@@ -29,7 +29,7 @@ static unsigned int init_chipset_cs5530(struct pci_dev *, const char *);
 static void init_hwif_cs5530(ide_hwif_t *);
 static void init_dma_cs5530(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t cs5530_chipsets[] __initdata = {
+static ide_pci_device_t cs5530_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_CYRIX,
                device:         PCI_DEVICE_ID_CYRIX_5530_IDE,
index cbb0abb97407fb07d5b814199b61fa1064f857c4..09272d4c6601c49fbd4239c1fe87b7d201a9d280 100644 (file)
@@ -438,6 +438,7 @@ static int __devinit cy82c693_init_one(struct pci_dev *dev, const struct pci_dev
                dev2 = pci_find_slot(dev->bus->number, dev->devfn + 1);
                ide_setup_pci_devices(dev, dev2, d);
        }
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index d7c8d19a852310cc86a9085784d1aa994a641c56..29155eedb9cd407d12b44db7962c264ed1d055d7 100644 (file)
@@ -68,7 +68,7 @@ extern unsigned int init_chipset_cy82c693(struct pci_dev *, const char *);
 extern void init_hwif_cy82c693(ide_hwif_t *);
 extern void init_iops_cy82c693(ide_hwif_t *);
 
-static ide_pci_device_t cy82c693_chipsets[] __initdata = {
+static ide_pci_device_t cy82c693_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_CONTAQ,
                device:         PCI_DEVICE_ID_CONTAQ_82C693,
index 353d02906dca6befc60a68e8858142f8d058ca61..a039e7a83fe4cb74ff094b24cf649ef6ba6757e7 100644 (file)
@@ -65,26 +65,6 @@ static void init_dma_generic (ide_hwif_t *hwif, unsigned long dmabase)
 
 extern void ide_setup_pci_device(struct pci_dev *, ide_pci_device_t *);
 
-static void __init init_setup_generic (struct pci_dev *dev, ide_pci_device_t *d)
-{
-       if ((d->vendor == PCI_VENDOR_ID_UMC) &&
-           (d->device == PCI_DEVICE_ID_UMC_UM8886A) &&
-           (!(PCI_FUNC(dev->devfn) & 1)))
-               return; /* UM8886A/BF pair */
-
-       if ((d->vendor == PCI_VENDOR_ID_OPTI) &&
-           (d->device == PCI_DEVICE_ID_OPTI_82C558) &&
-           (!(PCI_FUNC(dev->devfn) & 1)))
-               return;
-
-       ide_setup_pci_device(dev, d);
-}
-
-static void __init init_setup_unknown (struct pci_dev *dev, ide_pci_device_t *d)
-{
-       ide_setup_pci_device(dev, d);
-}
-
 #if 0
 
        /* Logic to add back later on */
@@ -114,7 +94,18 @@ static int __devinit generic_init_one(struct pci_dev *dev, const struct pci_devi
 
        if (dev->device != d->device)
                BUG();
-       d->init_setup(dev, d);
+       if ((d->vendor == PCI_VENDOR_ID_UMC) &&
+           (d->device == PCI_DEVICE_ID_UMC_UM8886A) &&
+           (!(PCI_FUNC(dev->devfn) & 1)))
+               return 1; /* UM8886A/BF pair */
+
+       if ((d->vendor == PCI_VENDOR_ID_OPTI) &&
+           (d->device == PCI_DEVICE_ID_OPTI_82C558) &&
+           (!(PCI_FUNC(dev->devfn) & 1)))
+               return 1;
+
+       ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index ea594b5ebdfbc143b1b9073dbf028814f0576347..c4a5c31cdf40ac93a55493916efc07961893ae7d 100644 (file)
@@ -5,17 +5,15 @@
 #include <linux/pci.h>
 #include <linux/ide.h>
 
-static void init_setup_generic(struct pci_dev *, ide_pci_device_t *);
 static unsigned int init_chipset_generic(struct pci_dev *, const char *);
 static void init_hwif_generic(ide_hwif_t *);
 static void init_dma_generic(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t generic_chipsets[] __initdata = {
+static ide_pci_device_t generic_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_NS,
                device:         PCI_DEVICE_ID_NS_87410,
                name:           "NS87410",
-               init_setup:     init_setup_generic,
                init_chipset:   init_chipset_generic,
                init_iops:      NULL,
                init_hwif:      init_hwif_generic,
@@ -29,7 +27,6 @@ static ide_pci_device_t generic_chipsets[] __initdata = {
                vendor:         PCI_VENDOR_ID_PCTECH,
                device:         PCI_DEVICE_ID_PCTECH_SAMURAI_IDE,
                name:           "SAMURAI",
-               init_setup:     init_setup_generic,
                init_chipset:   init_chipset_generic,
                init_iops:      NULL,
                init_hwif:      init_hwif_generic,
@@ -43,7 +40,6 @@ static ide_pci_device_t generic_chipsets[] __initdata = {
                vendor:         PCI_VENDOR_ID_HOLTEK,
                device:         PCI_DEVICE_ID_HOLTEK_6565,
                name:           "HT6565",
-               init_setup:     init_setup_generic,
                init_chipset:   init_chipset_generic,
                init_iops:      NULL,
                init_hwif:      init_hwif_generic,
@@ -57,7 +53,6 @@ static ide_pci_device_t generic_chipsets[] __initdata = {
                vendor:         PCI_VENDOR_ID_UMC,
                device:         PCI_DEVICE_ID_UMC_UM8673F,
                name:           "UM8673F",
-               init_setup:     init_setup_generic,
                init_chipset:   init_chipset_generic,
                init_iops:      NULL,
                init_hwif:      init_hwif_generic,
@@ -71,7 +66,6 @@ static ide_pci_device_t generic_chipsets[] __initdata = {
                vendor:         PCI_VENDOR_ID_UMC,
                device:         PCI_DEVICE_ID_UMC_UM8886A,
                name:           "UM8886A",
-               init_setup:     init_setup_generic,
                init_chipset:   init_chipset_generic,
                init_iops:      NULL,
                init_hwif:      init_hwif_generic,
@@ -85,7 +79,6 @@ static ide_pci_device_t generic_chipsets[] __initdata = {
                vendor:         PCI_VENDOR_ID_UMC,
                device:         PCI_DEVICE_ID_UMC_UM8886BF,
                name:           "UM8886BF",
-               init_setup:     init_setup_generic,
                init_chipset:   init_chipset_generic,
                init_iops:      NULL,
                init_hwif:      init_hwif_generic,
@@ -99,7 +92,6 @@ static ide_pci_device_t generic_chipsets[] __initdata = {
                vendor:         PCI_VENDOR_ID_HINT,
                device:         PCI_DEVICE_ID_HINT_VXPROII_IDE,
                name:           "HINT_IDE",
-               init_setup:     init_setup_generic,
                init_chipset:   init_chipset_generic,
                init_iops:      NULL,
                init_hwif:      init_hwif_generic,
@@ -113,7 +105,6 @@ static ide_pci_device_t generic_chipsets[] __initdata = {
                vendor:         PCI_VENDOR_ID_VIA,
                device:         PCI_DEVICE_ID_VIA_82C561,
                name:           "VIA_IDE",
-               init_setup:     init_setup_generic,
                init_chipset:   init_chipset_generic,
                init_iops:      NULL,
                init_hwif:      init_hwif_generic,
@@ -127,7 +118,6 @@ static ide_pci_device_t generic_chipsets[] __initdata = {
                vendor:         PCI_VENDOR_ID_OPTI,
                device:         PCI_DEVICE_ID_OPTI_82C558,
                name:           "OPTI621V",
-               init_setup:     init_setup_generic,
                init_chipset:   init_chipset_generic,
                init_iops:      NULL,
                init_hwif:      init_hwif_generic,
@@ -145,12 +135,11 @@ static ide_pci_device_t generic_chipsets[] __initdata = {
        }
 };
 
-static ide_pci_device_t unknown_chipset[] __initdata = {
+static ide_pci_device_t unknown_chipset[] __devinitdata = {
        {       /* 0 */
                vendor:         0,
                device:         0,
                name:           "PCI_IDE",
-               init_setup:     init_setup_generic,
                init_chipset:   init_chipset_generic,
                init_iops:      NULL,
                init_hwif:      init_hwif_generic,
index 5baf197540e7cb5e482170fc45cae95ff10614df..2c9a09a8b7427d7e40e75774c71e5c836c80a9b2 100644 (file)
@@ -334,6 +334,7 @@ static int __devinit hpt34x_init_one(struct pci_dev *dev, const struct pci_devic
        d->bootable = (pcicmd & PCI_COMMAND_MEMORY) ? OFF_BOARD : NEVER_BOARD;
 
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 9410929748510be8a6ea3198b13a9980d908bf06..5a4ddfe90334a1a2252157dacf1d2e60d06b78c3 100644 (file)
@@ -35,7 +35,7 @@ static unsigned int init_chipset_hpt34x(struct pci_dev *, const char *);
 static void init_hwif_hpt34x(ide_hwif_t *);
 static void init_dma_hpt34x(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t hpt34x_chipsets[] __initdata = {
+static ide_pci_device_t hpt34x_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_TTI,
                device:         PCI_DEVICE_ID_TTI_HPT343,
index a4b1f7e1b33bd6b9dd9b79fc726c33aa78e0dc93..10c4a6485717152708a670dbe2826ce43152da9e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * linux/drivers/ide/hpt366.c          Version 0.33    April 17, 2002
+ * linux/drivers/ide/hpt366.c          Version 0.34    Sept 17, 2002
  *
  * Copyright (C) 1999-2002             Andre Hedrick <andre@linux-ide.org>
  * Portions Copyright (C) 2001         Sun Microsystems, Inc.
@@ -1185,6 +1185,7 @@ static int __devinit hpt366_init_one(struct pci_dev *dev, const struct pci_devic
        if (dev->device != d->device)
                BUG();
        d->init_setup(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index a993b0a75275e389c4880f7d0c808899fa5ca3b5..3fa6cf9f76fad1f72ffb7ced69680b149782cd5b 100644 (file)
@@ -441,7 +441,7 @@ static unsigned int init_chipset_hpt366(struct pci_dev *, const char *);
 static void init_hwif_hpt366(ide_hwif_t *);
 static void init_dma_hpt366(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t hpt366_chipsets[] __initdata = {
+static ide_pci_device_t hpt366_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_TTI,
                device:         PCI_DEVICE_ID_TTI_HPT366,
index 7e38e63a14958e0c140f032945b88e582152f6c3..6e3f9f81eabc700c1246a7cf98d7eac77c897138 100644 (file)
@@ -303,8 +303,9 @@ static int __devinit it8172_init_one(struct pci_dev *dev, const struct pci_devic
        ide_pci_device_t *d = &it8172_chipsets[id->driver_data];
         if ((!(PCI_FUNC(dev->devfn) & 1) ||
             (!((dev->class >> 8) == PCI_CLASS_STORAGE_IDE))))
-                return 0; /* IT8172 is more than only a IDE controller */
+                return 1; /* IT8172 is more than only a IDE controller */
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 555bde0bd3e1f8ac17edbdb32df944b3112e7144..a9df8d4041b3c5dafc34df82ab8c6b785fa90e98 100644 (file)
@@ -19,7 +19,7 @@ static unsigned int init_chipset_it8172(struct pci_dev *, const char *);
 static void init_hwif_it8172(ide_hwif_t *);
 static void init_dma_it8172(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t it8172_chipsets[] __initdata = {
+static ide_pci_device_t it8172_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_ITE,
                device:         PCI_DEVICE_ID_ITE_IT8172G,
index 5a9e8dd5fec49ce9b6dfb5f4c87f697edd08f89c..ac94d5d121c31df24ef2ac88c7ccc3278aae993e 100644 (file)
@@ -236,6 +236,7 @@ static int __devinit ns87415_init_one(struct pci_dev *dev, const struct pci_devi
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 636481478a92abebd45135978b477e1f81004747..775bf11b50cd359b7a1f595227bd305e063fbb8f 100644 (file)
@@ -8,7 +8,7 @@
 static void init_hwif_ns87415(ide_hwif_t *);
 static void init_dma_ns87415(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t ns87415_chipsets[] __initdata = {
+static ide_pci_device_t ns87415_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_NS,
                device:         PCI_DEVICE_ID_NS_87415,
index 7be314a7f5ff7bfd81e78a3ce3cc905066d2ddc1..98be9258f716feec166fa370b478ca1dba6225dd 100644 (file)
@@ -343,6 +343,7 @@ static int __devinit nforce_init_one(struct pci_dev *dev, const struct pci_devic
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 2ba7c8b5bcfdf49f5e417e55cfc0c7593881a709..5426cfd1b6b20cdd72534e8c60c614f60882b666 100644 (file)
@@ -29,7 +29,7 @@ static unsigned int init_chipset_nforce(struct pci_dev *, const char *);
 static void init_hwif_nforce(ide_hwif_t *);
 static void init_dma_nforce(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t nvidia_chipsets[] __initdata = {
+static ide_pci_device_t nvidia_chipsets[] __devinitdata = {
        {
                vendor:         PCI_VENDOR_ID_NVIDIA,
                device:         PCI_DEVICE_ID_NVIDIA_NFORCE_IDE,
index 0b491210fa573123c9da32dfb4970805d6972529..7449a03d643b472c457868dc7e47ab5f44ffc0c7 100644 (file)
@@ -370,6 +370,7 @@ static int __devinit opti621_init_one(struct pci_dev *dev, const struct pci_devi
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 4db7740856840fd451df1f3002e80507584889bf..388a2244c47c94ce8f53014a33e926bd8ab8a60c 100644 (file)
@@ -9,7 +9,7 @@ static void init_setup_opti621(struct pci_dev *, ide_pci_device_t *);
 static void init_hwif_opti621(ide_hwif_t *);
 static void init_dma_opti621(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t opti621_chipsets[] __initdata = {
+static ide_pci_device_t opti621_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_OPTI,
                device:         PCI_DEVICE_ID_OPTI_82C621,
index abdefb40956a5dd01229114c83e1a8814b292ca5..c86e7d90ac82e15d7c769e47694fa00c93ebc30d 100644 (file)
@@ -663,6 +663,7 @@ static int __devinit pdc202new_init_one(struct pci_dev *dev, const struct pci_de
        if (dev->device != d->device)
                BUG();
        d->init_setup(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 064dba8b412cbf7f00d6e59bbbafcca8fc59a4b2..1f19978163b38f29648cc3b32c4cd7509c3ee672 100644 (file)
@@ -225,7 +225,7 @@ static unsigned int init_chipset_pdcnew(struct pci_dev *, const char *);
 static void init_hwif_pdc202new(ide_hwif_t *);
 static void init_dma_pdc202new(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t pdcnew_chipsets[] __initdata = {
+static ide_pci_device_t pdcnew_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_PROMISE,
                device:         PCI_DEVICE_ID_PROMISE_20268,
index 6c89e77fadc8e4eeccc52e0671883a3b89fdd41a..15d1b95bf2bde62c52ed142a26a70f73b67e8dbb 100644 (file)
@@ -397,6 +397,9 @@ static int config_chipset_for_dma (ide_drive_t *drive)
                                cable ? "40" : "80", cable);
 #endif /* PDC202_DEBUG_CABLE */
                        break;
+               case PCI_DEVICE_ID_PROMISE_20246:
+                       ultra_66 = 0;
+                       break;
                default:
                        BUG();
        }
@@ -544,16 +547,18 @@ static int pdc202xx_old_ide_dma_begin(ide_drive_t *drive)
        if (drive->addressing == 1) {
                struct request *rq      = HWGROUP(drive)->rq;
                ide_hwif_t *hwif        = HWIF(drive);
-               struct pci_dev *dev     = hwif->pci_dev;
-               u32 high_16     = pci_resource_start(dev, 4);
+//             struct pci_dev *dev     = hwif->pci_dev;
+//             u32 high_16     = pci_resource_start(dev, 4);
+               u32 high_16     = hwif->dma_master;
                u32 atapi_reg   = high_16 + (hwif->channel ? 0x24 : 0x20);
                u32 word_count  = 0;
                u8 clock = hwif->INB(high_16 + 0x11);
 
                hwif->OUTB(clock|(hwif->channel ? 0x08 : 0x02), high_16+0x11);
                word_count = (rq->nr_sectors << 8);
-               word_count = (rq->cmd == READ) ? word_count | 0x05000000 :
-                                                word_count | 0x06000000;
+               word_count = (rq_data_dir(rq) == READ) ?
+                                       word_count | 0x05000000 :
+                                       word_count | 0x06000000;
                hwif->OUTL(word_count, atapi_reg);
        }
        return __ide_dma_begin(drive);
@@ -563,7 +568,8 @@ static int pdc202xx_old_ide_dma_end(ide_drive_t *drive)
 {
        if (drive->addressing == 1) {
                ide_hwif_t *hwif        = HWIF(drive);
-               u32 high_16     = pci_resource_start(hwif->pci_dev, 4);
+//             u32 high_16     = pci_resource_start(hwif->pci_dev, 4);
+               u32 high_16     = hwif->dma_master;
                u32 atapi_reg   = high_16 + (hwif->channel ? 0x24 : 0x20);
                u8 clock        = 0;
 
@@ -577,8 +583,9 @@ static int pdc202xx_old_ide_dma_end(ide_drive_t *drive)
 static int pdc202xx_old_ide_dma_test_irq(ide_drive_t *drive)
 {
        ide_hwif_t *hwif        = HWIF(drive);
-       struct pci_dev *dev     = hwif->pci_dev;
-       unsigned long high_16   = pci_resource_start(dev, 4);
+//     struct pci_dev *dev     = hwif->pci_dev;
+//     unsigned long high_16   = pci_resource_start(dev, 4);
+       u32 high_16             = hwif->dma_master;
        u8 dma_stat             = hwif->INB(hwif->dma_status);
        u8 sc1d                 = hwif->INB((high_16 + 0x001d));
 
@@ -935,6 +942,7 @@ static int __devinit pdc202xx_init_one(struct pci_dev *dev, const struct pci_dev
        if (dev->device != d->device)
                BUG();
        d->init_setup(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 9b897e3728b493f27c53a5212451b85667e2f499..955d1ba75a463866d6f798a91173c8c391495cd9 100644 (file)
@@ -225,7 +225,7 @@ static unsigned int init_chipset_pdc202xx(struct pci_dev *, const char *);
 static void init_hwif_pdc202xx(ide_hwif_t *);
 static void init_dma_pdc202xx(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t pdc202xx_chipsets[] __initdata = {
+static ide_pci_device_t pdc202xx_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_PROMISE,
                device:         PCI_DEVICE_ID_PROMISE_20246,
index 7c0f47096ddec3436b9734ce4509fe6ccfe767c7..114a6e9647968f774e33e8400f05c78acbb0dbc4 100644 (file)
@@ -133,6 +133,7 @@ static int __devinit pdcadma_init_one(struct pci_dev *dev, const struct pci_devi
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 1;
 }
 
index 50f2a5646031fc710248232e6c08b351c9bfa16f..359be0095a52b037ce846ec75982d795973e91b3 100644 (file)
@@ -30,7 +30,7 @@ static unsigned int init_chipset_pdcadma(struct pci_dev *, const char *);
 static void init_hwif_pdcadma(ide_hwif_t *);
 static void init_dma_pdcadma(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t pdcadma_chipsets[] __initdata = {
+static ide_pci_device_t pdcadma_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_PDC,
                device:         PCI_DEVICE_ID_PDC_1841,
index fa92084ccda39e94dfc35082da32b66ca085549d..3fd7c4708ba31ef0beef77d1277c4ffc00dff2c7 100644 (file)
@@ -529,7 +529,7 @@ no_dma_set:
  *     out to be nice and simple
  */
  
-static unsigned int __init init_chipset_piix (struct pci_dev *dev, const char *name)
+static unsigned int __devinit init_chipset_piix (struct pci_dev *dev, const char *name)
 {
         switch(dev->device) {
                case PCI_DEVICE_ID_INTEL_82801AA_1:
@@ -680,6 +680,7 @@ static int __devinit piix_init_one(struct pci_dev *dev, const struct pci_device_
        if (dev->device != d->device)
                BUG();
        d->init_setup(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 0ff4cf262c080c7418f764a6765317507c9a0c55..c445acb8719a3751d8679e41bd2c4ca4c82ccc0d 100644 (file)
@@ -17,7 +17,7 @@ static u8 piix_proc;
 
 static int piix_get_info(char *, char **, off_t, int);
 
-static ide_pci_host_proc_t piix_procs[] __initdata = {
+static ide_pci_host_proc_t piix_procs[] __devinitdata = {
        {
                name:           "piix",
                set:            1,
@@ -28,7 +28,7 @@ static ide_pci_host_proc_t piix_procs[] __initdata = {
 #endif  /* defined(DISPLAY_PIIX_TIMINGS) && defined(CONFIG_PROC_FS) */
 
 static void init_setup_piix(struct pci_dev *, ide_pci_device_t *);
-static unsigned int __init init_chipset_piix(struct pci_dev *, const char *);
+static unsigned int __devinit init_chipset_piix(struct pci_dev *, const char *);
 static void init_hwif_piix(ide_hwif_t *);
 static void init_dma_piix(ide_hwif_t *, unsigned long);
 
@@ -38,7 +38,7 @@ static void init_dma_piix(ide_hwif_t *, unsigned long);
  *
  */
  
-static ide_pci_device_t piix_pci_info[] __initdata = {
+static ide_pci_device_t piix_pci_info[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_INTEL,
                device:         PCI_DEVICE_ID_INTEL_82371FB_0,
index d4e93888559e6df9cd3ec5847a4382246f8cd619..8e9adc70313f6a2d0a7f4139a6e7bd48debb6088 100644 (file)
@@ -62,6 +62,7 @@ static int __devinit rz1000_init_one(struct pci_dev *dev, const struct pci_devic
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 91dbe888943685d207566df7ad2a8d519ea7c491..90b1f1bc63809090f49d9a416c59f50a041ee894 100644 (file)
@@ -7,7 +7,7 @@
 
 static void init_hwif_rz1000(ide_hwif_t *);
 
-static ide_pci_device_t rz1000_chipsets[] __initdata = {
+static ide_pci_device_t rz1000_chipsets[] __devinitdata = {
 {
                vendor:         PCI_VENDOR_ID_PCTECH,
                device:         PCI_DEVICE_ID_PCTECH_RZ1000,
index 64ff9a25a0c4f03356e45752b0a6960d41e55b65..9c610a4d337d8c353d66cc154e6b8e91f545ad2e 100644 (file)
@@ -784,6 +784,7 @@ static int __devinit svwks_init_one(struct pci_dev *dev, const struct pci_device
        if (dev->device != d->device)
                BUG();
        d->init_setup(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 22218e46514d8eb3b51be8ed28901fe4ab40ae17..380520a9f1fcf144604ff16c5fdfe52ca85c93f6 100644 (file)
@@ -37,7 +37,7 @@ static unsigned int init_chipset_svwks(struct pci_dev *, const char *);
 static void init_hwif_svwks(ide_hwif_t *);
 static void init_dma_svwks(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t serverworks_chipsets[] __initdata = {
+static ide_pci_device_t serverworks_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_SERVERWORKS,
                device:         PCI_DEVICE_ID_SERVERWORKS_OSB4IDE,
index da40fecedb6d8ad5f38d62c005bc9e4aba23d72c..40a6720b3e798e0a66352d13c965f9491f7c2e43 100644 (file)
@@ -844,6 +844,7 @@ static int __devinit siimage_init_one(struct pci_dev *dev, const struct pci_devi
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 4df8918eca1cb19c070c9f76e7a434d59f951dd6..c1e2402b6bee4fa96af49cb86776149873bab1b2 100644 (file)
@@ -112,7 +112,7 @@ static void init_iops_siimage(ide_hwif_t *);
 static void init_hwif_siimage(ide_hwif_t *);
 static void init_dma_siimage(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t siimage_chipsets[] __initdata = {
+static ide_pci_device_t siimage_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_CMD,
                device:         PCI_DEVICE_ID_SII_680,
index de20926972cfcf28a431045c17a02209b7647295..039197cac1ae103b3a1dc948215a8e620ca5038e 100644 (file)
@@ -1030,6 +1030,7 @@ static int __devinit sis5513_init_one(struct pci_dev *dev, const struct pci_devi
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index d15fc9c1ad8ea9530a56e918b20c8bd891314216..62786992df15b0b805c7787417084de44e907170 100644 (file)
@@ -29,7 +29,7 @@ static unsigned int init_chipset_sis5513(struct pci_dev *, const char *);
 static void init_hwif_sis5513(ide_hwif_t *);
 static void init_dma_sis5513(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t sis5513_chipsets[] __initdata = {
+static ide_pci_device_t sis5513_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_SI,
                device:         PCI_DEVICE_ID_SI_5513,
index 0385ff4e30cfbcdd66f045d0d865c9b12ad71b3f..69ca2cfab3a112c43977df686edb4d03a30827e8 100644 (file)
@@ -288,6 +288,7 @@ static int __devinit sl82c105_init_one(struct pci_dev *dev, const struct pci_dev
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index f8d9777c38927a1bb687907ab6b8c97a93f87da8..7da99149ccb5ebee1638a8bb4aedc03fe32ea30a 100644 (file)
@@ -9,7 +9,7 @@ static unsigned int init_chipset_sl82c105(struct pci_dev *, const char *);
 static void init_hwif_sl82c105(ide_hwif_t *);
 static void init_dma_sl82c105(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t sl82c105_chipsets[] __initdata = {
+static ide_pci_device_t sl82c105_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_WINBOND,
                device:         PCI_DEVICE_ID_WINBOND_82C105,
index 063b409bfc75e05a3d1f94e1cb843d1b864dacd7..86bfa5f7b768de5b53720619c54d8fd08abd187c 100644 (file)
@@ -372,6 +372,7 @@ static int __devinit slc90e66_init_one(struct pci_dev *dev, const struct pci_dev
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 58c764fe0b3be281137b74c258ea886ea478c1cd..624d6f848f50b7f67f3505a818d5f30cf1b183ca 100644 (file)
@@ -31,7 +31,7 @@ static unsigned int init_chipset_slc90e66(struct pci_dev *, const char *);
 static void init_hwif_slc90e66(ide_hwif_t *);
 static void init_dma_slc90e66(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t slc90e66_chipsets[] __initdata = {
+static ide_pci_device_t slc90e66_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_EFAR,
                device:         PCI_DEVICE_ID_EFAR_SLC90E66_1,
index 731d6a61c936d56e24d990c4e16d9c4ce36c9ae2..7653024b715e101d6633f064cf614e5ebfceb1e6 100644 (file)
@@ -403,6 +403,7 @@ static int __devinit trm290_init_one(struct pci_dev *dev, const struct pci_devic
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 81bb6194ef7ed58c1c6d6d82e2497f6ccb4a6a76..c4c46d4b98960cc9f20492a5eb96d473322070e7 100644 (file)
@@ -7,7 +7,7 @@
 
 extern void init_hwif_trm290(ide_hwif_t *);
 
-static ide_pci_device_t trm290_chipsets[] __initdata = {
+static ide_pci_device_t trm290_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_TEKRAM,
                device:         PCI_DEVICE_ID_TEKRAM_DC290,
index aa5c3ff5a6daa1bbd86ac9aba2f65650799ba36a..7470ef20326fba5dae423f9cf84a73d61bf6c416 100644 (file)
@@ -641,6 +641,7 @@ static int __devinit via_init_one(struct pci_dev *dev, const struct pci_device_i
        if (dev->device != d->device)
                BUG();
        ide_setup_pci_device(dev, d);
+       MOD_INC_USE_COUNT;
        return 0;
 }
 
index 16349b338122063db107bd4581b3e546bb6dc63e..64f983763c56a72de4d3fef80c3efb1eb3f64e31 100644 (file)
@@ -29,7 +29,7 @@ static unsigned int init_chipset_via82cxxx(struct pci_dev *, const char *);
 static void init_hwif_via82cxxx(ide_hwif_t *);
 static void init_dma_via82cxxx(ide_hwif_t *, unsigned long);
 
-static ide_pci_device_t via82cxxx_chipsets[] __initdata = {
+static ide_pci_device_t via82cxxx_chipsets[] __devinitdata = {
        {       /* 0 */
                vendor:         PCI_VENDOR_ID_VIA,
                device:         PCI_DEVICE_ID_VIA_82C576_1,