From: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>

- convert ->isa_ports into ->flags (IDEPCI_FLAG_ISA_PORTS)
- add IDEPCI_FLAG_{OBS_FORCE_PDC,FORCE_MASTER} flags
  and use them in setup-pci.c
- use struct pci_dev ->vendor and ->device fields directly
  in generic.c and serverworks.c
- remove no longer needed debug checks (dev->device != d->device)
- remove ->vendor and ->device fields from ide_pci_device_t
- misc cleanups

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@elka.pw.edu.pl>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/drivers/ide/pci/aec62xx.c      |    2 -
 25-akpm/drivers/ide/pci/aec62xx.h      |   10 -------
 25-akpm/drivers/ide/pci/alim15x3.h     |    2 -
 25-akpm/drivers/ide/pci/amd74xx.c      |    1 
 25-akpm/drivers/ide/pci/amd74xx.h      |   26 ------------------
 25-akpm/drivers/ide/pci/atiixp.c       |    8 -----
 25-akpm/drivers/ide/pci/cmd64x.c       |    5 ---
 25-akpm/drivers/ide/pci/cmd64x.h       |    8 -----
 25-akpm/drivers/ide/pci/cs5520.h       |    8 +----
 25-akpm/drivers/ide/pci/cs5530.c       |    5 ---
 25-akpm/drivers/ide/pci/cs5530.h       |    3 --
 25-akpm/drivers/ide/pci/cy82c693.h     |    2 -
 25-akpm/drivers/ide/pci/generic.c      |   12 ++------
 25-akpm/drivers/ide/pci/generic.h      |   28 --------------------
 25-akpm/drivers/ide/pci/hpt34x.h       |    2 -
 25-akpm/drivers/ide/pci/hpt366.c       |    2 -
 25-akpm/drivers/ide/pci/hpt366.h       |   10 -------
 25-akpm/drivers/ide/pci/it8172.c       |    3 --
 25-akpm/drivers/ide/pci/it8172.h       |    2 -
 25-akpm/drivers/ide/pci/ns87415.c      |    5 ---
 25-akpm/drivers/ide/pci/ns87415.h      |    2 -
 25-akpm/drivers/ide/pci/opti621.c      |    5 ---
 25-akpm/drivers/ide/pci/opti621.h      |    4 --
 25-akpm/drivers/ide/pci/pdc202xx_new.c |    2 -
 25-akpm/drivers/ide/pci/pdc202xx_new.h |   14 ----------
 25-akpm/drivers/ide/pci/pdc202xx_old.c |    2 -
 25-akpm/drivers/ide/pci/pdc202xx_old.h |   12 +-------
 25-akpm/drivers/ide/pci/piix.c         |    2 -
 25-akpm/drivers/ide/pci/piix.h         |   46 +++++++++++++++------------------
 25-akpm/drivers/ide/pci/rz1000.c       |    5 ---
 25-akpm/drivers/ide/pci/rz1000.h       |    6 ----
 25-akpm/drivers/ide/pci/sc1200.c       |    5 ---
 25-akpm/drivers/ide/pci/sc1200.h       |    2 -
 25-akpm/drivers/ide/pci/serverworks.c  |    6 +---
 25-akpm/drivers/ide/pci/serverworks.h  |    8 -----
 25-akpm/drivers/ide/pci/sgiioc4.c      |   13 ---------
 25-akpm/drivers/ide/pci/siimage.c      |    5 ---
 25-akpm/drivers/ide/pci/siimage.h      |    6 ----
 25-akpm/drivers/ide/pci/sis5513.c      |    5 ---
 25-akpm/drivers/ide/pci/sis5513.h      |    2 -
 25-akpm/drivers/ide/pci/sl82c105.c     |    5 ---
 25-akpm/drivers/ide/pci/sl82c105.h     |    2 -
 25-akpm/drivers/ide/pci/slc90e66.c     |    5 ---
 25-akpm/drivers/ide/pci/slc90e66.h     |    2 -
 25-akpm/drivers/ide/pci/triflex.c      |    8 +----
 25-akpm/drivers/ide/pci/triflex.h      |    2 -
 25-akpm/drivers/ide/pci/trm290.c       |    5 ---
 25-akpm/drivers/ide/pci/trm290.h       |    2 -
 25-akpm/drivers/ide/pci/via82cxxx.c    |    7 +----
 25-akpm/drivers/ide/pci/via82cxxx.h    |   12 --------
 25-akpm/drivers/ide/setup-pci.c        |   21 +++------------
 25-akpm/include/linux/ide.h            |   12 ++++++--
 52 files changed, 65 insertions(+), 314 deletions(-)

diff -puN drivers/ide/pci/aec62xx.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/aec62xx.c
--- 25/drivers/ide/pci/aec62xx.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/aec62xx.c	Tue Jun  1 17:06:22 2004
@@ -525,8 +525,6 @@ static int __devinit aec62xx_init_one(st
 {
 	ide_pci_device_t *d = &aec62xx_chipsets[id->driver_data];
 
-	if (dev->device != d->device)
-		BUG();
 	d->init_setup(dev, d);
 	return 0;
 }
diff -puN drivers/ide/pci/aec62xx.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/aec62xx.h
--- 25/drivers/ide/pci/aec62xx.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/aec62xx.h	Tue Jun  1 17:06:22 2004
@@ -78,8 +78,6 @@ static void init_dma_aec62xx(ide_hwif_t 
 
 static ide_pci_device_t aec62xx_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_ARTOP,
-		.device		= PCI_DEVICE_ID_ARTOP_ATP850UF,
 		.name		= "AEC6210",
 		.init_setup	= init_setup_aec62xx,
 		.init_chipset	= init_chipset_aec62xx,
@@ -90,8 +88,6 @@ static ide_pci_device_t aec62xx_chipsets
 		.enablebits	= {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}},
 		.bootable	= OFF_BOARD,
 	},{	/* 1 */
-		.vendor		= PCI_VENDOR_ID_ARTOP,
-		.device		= PCI_DEVICE_ID_ARTOP_ATP860,
 		.name		= "AEC6260",
 		.init_setup	= init_setup_aec62xx,
 		.init_chipset	= init_chipset_aec62xx,
@@ -101,8 +97,6 @@ static ide_pci_device_t aec62xx_chipsets
 		.autodma	= NOAUTODMA,
 		.bootable	= OFF_BOARD,
 	},{	/* 2 */
-		.vendor		= PCI_VENDOR_ID_ARTOP,
-		.device		= PCI_DEVICE_ID_ARTOP_ATP860R,
 		.name		= "AEC6260R",
 		.init_setup	= init_setup_aec62xx,
 		.init_chipset	= init_chipset_aec62xx,
@@ -113,8 +107,6 @@ static ide_pci_device_t aec62xx_chipsets
 		.enablebits	= {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}},
 		.bootable	= NEVER_BOARD,
 	},{	/* 3 */
-		.vendor		= PCI_VENDOR_ID_ARTOP,
-		.device		= PCI_DEVICE_ID_ARTOP_ATP865,
 		.name		= "AEC6X80",
 		.init_setup	= init_setup_aec6x80,
 		.init_chipset	= init_chipset_aec62xx,
@@ -124,8 +116,6 @@ static ide_pci_device_t aec62xx_chipsets
 		.autodma	= AUTODMA,
 		.bootable	= OFF_BOARD,
 	},{	/* 4 */
-		.vendor		= PCI_VENDOR_ID_ARTOP,
-		.device		= PCI_DEVICE_ID_ARTOP_ATP865R,
 		.name		= "AEC6X80R",
 		.init_setup	= init_setup_aec6x80,
 		.init_chipset	= init_chipset_aec62xx,
diff -puN drivers/ide/pci/alim15x3.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/alim15x3.h
--- 25/drivers/ide/pci/alim15x3.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/alim15x3.h	Tue Jun  1 17:06:22 2004
@@ -14,8 +14,6 @@ static void init_dma_ali15x3(ide_hwif_t 
 
 static ide_pci_device_t ali15x3_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_AL,
-		.device		= PCI_DEVICE_ID_AL_M5229,
 		.name		= "ALI15X3",
 		.init_chipset	= init_chipset_ali15x3,
 		.init_hwif	= init_hwif_ali15x3,
diff -puN drivers/ide/pci/amd74xx.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/amd74xx.c
--- 25/drivers/ide/pci/amd74xx.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/amd74xx.c	Tue Jun  1 17:06:22 2004
@@ -445,7 +445,6 @@ static int __devinit amd74xx_probe(struc
 {
 	amd_chipset = amd74xx_chipsets + id->driver_data;
 	amd_config = amd_ide_chips + id->driver_data;
-	if (dev->device != amd_chipset->device) BUG();
 	if (dev->device != amd_config->id) BUG();
 	ide_setup_pci_device(dev, amd_chipset);
 	return 0;
diff -puN drivers/ide/pci/amd74xx.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/amd74xx.h
--- 25/drivers/ide/pci/amd74xx.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/amd74xx.h	Tue Jun  1 17:06:22 2004
@@ -12,8 +12,6 @@ static void init_hwif_amd74xx(ide_hwif_t
 
 static ide_pci_device_t amd74xx_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_AMD,
-		.device		= PCI_DEVICE_ID_AMD_COBRA_7401,
 		.name		= "AMD7401",
 		.init_chipset	= init_chipset_amd74xx,
 		.init_hwif	= init_hwif_amd74xx,
@@ -22,8 +20,6 @@ static ide_pci_device_t amd74xx_chipsets
 		.enablebits	= {{0x40,0x02,0x02}, {0x40,0x01,0x01}},
 		.bootable	= ON_BOARD,
 	},{	/* 1 */
-		.vendor		= PCI_VENDOR_ID_AMD,
-		.device		= PCI_DEVICE_ID_AMD_VIPER_7409,
 		.name		= "AMD7409",
 		.init_chipset	= init_chipset_amd74xx,
 		.init_hwif	= init_hwif_amd74xx,
@@ -32,8 +28,6 @@ static ide_pci_device_t amd74xx_chipsets
 		.enablebits	= {{0x40,0x02,0x02}, {0x40,0x01,0x01}},
 		.bootable	= ON_BOARD,
 	},{	/* 2 */
-		.vendor		= PCI_VENDOR_ID_AMD,
-		.device		= PCI_DEVICE_ID_AMD_VIPER_7411,
 		.name		= "AMD7411",
 		.init_chipset	= init_chipset_amd74xx,
 		.init_hwif	= init_hwif_amd74xx,
@@ -42,8 +36,6 @@ static ide_pci_device_t amd74xx_chipsets
 		.enablebits	= {{0x40,0x02,0x02}, {0x40,0x01,0x01}},
 		.bootable	= ON_BOARD,
 	},{	/* 3 */
-		.vendor		= PCI_VENDOR_ID_AMD,
-		.device		= PCI_DEVICE_ID_AMD_OPUS_7441,
 		.name		= "AMD7441",
 		.init_chipset	= init_chipset_amd74xx,
 		.init_hwif	= init_hwif_amd74xx,
@@ -52,8 +44,6 @@ static ide_pci_device_t amd74xx_chipsets
 		.enablebits	= {{0x40,0x02,0x02}, {0x40,0x01,0x01}},
 		.bootable	= ON_BOARD,
 	},{	/* 4 */
-		.vendor		= PCI_VENDOR_ID_AMD,
-		.device		= PCI_DEVICE_ID_AMD_8111_IDE,
 		.name		= "AMD8111",
 		.init_chipset	= init_chipset_amd74xx,
 		.init_hwif	= init_hwif_amd74xx,
@@ -63,8 +53,6 @@ static ide_pci_device_t amd74xx_chipsets
 		.bootable	= ON_BOARD,
 	},
 	{	/* 5 */
-		.vendor		= PCI_VENDOR_ID_NVIDIA,
-		.device		= PCI_DEVICE_ID_NVIDIA_NFORCE_IDE,
 		.name		= "NFORCE",
 		.init_chipset	= init_chipset_amd74xx,
 		.init_hwif	= init_hwif_amd74xx,
@@ -74,8 +62,6 @@ static ide_pci_device_t amd74xx_chipsets
 		.bootable	= ON_BOARD,
 	},
 	{	/* 6 */
-		.vendor		= PCI_VENDOR_ID_NVIDIA,
-		.device		= PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE,
 		.name		= "NFORCE2",
 		.init_chipset	= init_chipset_amd74xx,
 		.init_hwif	= init_hwif_amd74xx,
@@ -85,8 +71,6 @@ static ide_pci_device_t amd74xx_chipsets
 		.bootable	= ON_BOARD,
 	},
 	{	/* 7 */
-		.vendor		= PCI_VENDOR_ID_NVIDIA,
-		.device		= PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE,
 		.name		= "NFORCE2S",
 		.init_chipset	= init_chipset_amd74xx,
 		.init_hwif	= init_hwif_amd74xx,
@@ -96,8 +80,6 @@ static ide_pci_device_t amd74xx_chipsets
 		.bootable	= ON_BOARD,
 	},
 	{	/* 8 */
-		.vendor		= PCI_VENDOR_ID_NVIDIA,
-		.device		= PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA,
 		.name		= "NFORCE2S-SATA",
 		.init_chipset	= init_chipset_amd74xx,
 		.init_hwif	= init_hwif_amd74xx,
@@ -107,8 +89,6 @@ static ide_pci_device_t amd74xx_chipsets
 		.bootable	= ON_BOARD,
 	},
 	{	/* 9 */
-		.vendor		= PCI_VENDOR_ID_NVIDIA,
-		.device		= PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE,
 		.name		= "NFORCE3",
 		.init_chipset	= init_chipset_amd74xx,
 		.init_hwif	= init_hwif_amd74xx,
@@ -118,8 +98,6 @@ static ide_pci_device_t amd74xx_chipsets
 		.bootable	= ON_BOARD,
 	},
 	{	/* 10 */
-		.vendor		= PCI_VENDOR_ID_NVIDIA,
-		.device		= PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE,
 		.name		= "NFORCE3S",
 		.init_chipset	= init_chipset_amd74xx,
 		.init_hwif	= init_hwif_amd74xx,
@@ -129,8 +107,6 @@ static ide_pci_device_t amd74xx_chipsets
 		.bootable	= ON_BOARD,
 	},
 	{	/* 11 */
-		.vendor		= PCI_VENDOR_ID_NVIDIA,
-		.device		= PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA,
 		.name		= "NFORCE3S-SATA",
 		.init_chipset	= init_chipset_amd74xx,
 		.init_hwif	= init_hwif_amd74xx,
@@ -140,8 +116,6 @@ static ide_pci_device_t amd74xx_chipsets
 		.bootable	= ON_BOARD,
 	},
 	{	/* 12 */
-		.vendor		= PCI_VENDOR_ID_NVIDIA,
-		.device		= PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2,
 		.name		= "NFORCE3S-SATA2",
 		.init_chipset	= init_chipset_amd74xx,
 		.init_hwif	= init_hwif_amd74xx,
diff -puN drivers/ide/pci/atiixp.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/atiixp.c
--- 25/drivers/ide/pci/atiixp.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/atiixp.c	Tue Jun  1 17:06:22 2004
@@ -458,8 +458,6 @@ static void __devinit init_hwif_atiixp(i
 
 static ide_pci_device_t atiixp_pci_info[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_ATI,
-		.device		= PCI_DEVICE_ID_ATI_IXP_IDE,
 		.name		= "ATIIXP",
 		.init_chipset	= init_chipset_atiixp,
 		.init_hwif	= init_hwif_atiixp,
@@ -481,11 +479,7 @@ static ide_pci_device_t atiixp_pci_info[
 
 static int __devinit atiixp_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &atiixp_pci_info[id->driver_data];
-
-	if (dev->device != d->device)
-		BUG();
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &atiixp_pci_info[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/cmd64x.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/cmd64x.c
--- 25/drivers/ide/pci/cmd64x.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/cmd64x.c	Tue Jun  1 17:06:22 2004
@@ -746,10 +746,7 @@ static void __init init_hwif_cmd64x (ide
 
 static int __devinit cmd64x_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &cmd64x_chipsets[id->driver_data];
-	if (dev->device != d->device)
-		BUG();
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &cmd64x_chipsets[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/cmd64x.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/cmd64x.h
--- 25/drivers/ide/pci/cmd64x.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/cmd64x.h	Tue Jun  1 17:06:22 2004
@@ -65,8 +65,6 @@ static void init_hwif_cmd64x(ide_hwif_t 
 
 static ide_pci_device_t cmd64x_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_CMD,
-		.device		= PCI_DEVICE_ID_CMD_643,
 		.name		= "CMD643",
 		.init_chipset	= init_chipset_cmd64x,
 		.init_hwif	= init_hwif_cmd64x,
@@ -74,8 +72,6 @@ static ide_pci_device_t cmd64x_chipsets[
 		.autodma	= AUTODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 1 */
-		.vendor		= PCI_VENDOR_ID_CMD,
-		.device		= PCI_DEVICE_ID_CMD_646,
 		.name		= "CMD646",
 		.init_chipset	= init_chipset_cmd64x,
 		.init_hwif	= init_hwif_cmd64x,
@@ -84,8 +80,6 @@ static ide_pci_device_t cmd64x_chipsets[
 		.enablebits	= {{0x00,0x00,0x00}, {0x51,0x80,0x80}},
 		.bootable	= ON_BOARD,
 	},{	/* 2 */
-		.vendor		= PCI_VENDOR_ID_CMD,
-		.device	= PCI_DEVICE_ID_CMD_648,
 		.name		= "CMD648",
 		.init_chipset	= init_chipset_cmd64x,
 		.init_hwif	= init_hwif_cmd64x,
@@ -93,8 +87,6 @@ static ide_pci_device_t cmd64x_chipsets[
 		.autodma	= AUTODMA,
 		.bootable	= ON_BOARD,
 	},{
-		.vendor		= PCI_VENDOR_ID_CMD,
-		.device		= PCI_DEVICE_ID_CMD_649,
 		.name		= "CMD649",
 		.init_chipset	= init_chipset_cmd64x,
 		.init_hwif	= init_hwif_cmd64x,
diff -puN drivers/ide/pci/cs5520.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/cs5520.h
--- 25/drivers/ide/pci/cs5520.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/cs5520.h	Tue Jun  1 17:06:22 2004
@@ -13,28 +13,24 @@ static void cs5520_init_setup_dma(struct
 
 static ide_pci_device_t cyrix_chipsets[] __devinitdata = {
 	{
-		.vendor		= PCI_VENDOR_ID_CYRIX,
-		.device		= PCI_DEVICE_ID_CYRIX_5510,
 		.name		= "Cyrix 5510",
 		.init_chipset	= init_chipset_cs5520,
 		.init_setup_dma = cs5520_init_setup_dma,
 		.init_hwif	= init_hwif_cs5520,
-		.isa_ports	= 1,
 		.channels	= 2,
 		.autodma	= AUTODMA,
 		.bootable	= ON_BOARD,
+		.flags		= IDEPCI_FLAG_ISA_PORTS,
 	},
 	{
-		.vendor		= PCI_VENDOR_ID_CYRIX,
-		.device		= PCI_DEVICE_ID_CYRIX_5520,
 		.name		= "Cyrix 5520",
 		.init_chipset	= init_chipset_cs5520,
 		.init_setup_dma = cs5520_init_setup_dma,
 		.init_hwif	= init_hwif_cs5520,
-		.isa_ports	= 1,
 		.channels	= 2,
 		.autodma	= AUTODMA,
 		.bootable	= ON_BOARD,
+		.flags		= IDEPCI_FLAG_ISA_PORTS,
 	}
 };
 
diff -puN drivers/ide/pci/cs5530.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/cs5530.c
--- 25/drivers/ide/pci/cs5530.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/cs5530.c	Tue Jun  1 17:06:22 2004
@@ -406,10 +406,7 @@ static void __init init_hwif_cs5530 (ide
 
 static int __devinit cs5530_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &cs5530_chipsets[id->driver_data];
-	if (dev->device != d->device)
-		BUG();
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &cs5530_chipsets[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/cs5530.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/cs5530.h
--- 25/drivers/ide/pci/cs5530.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/cs5530.h	Tue Jun  1 17:06:22 2004
@@ -12,14 +12,13 @@ static void init_hwif_cs5530(ide_hwif_t 
 
 static ide_pci_device_t cs5530_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_CYRIX,
-		.device		= PCI_DEVICE_ID_CYRIX_5530_IDE,
 		.name		= "CS5530",
 		.init_chipset	= init_chipset_cs5530,
 		.init_hwif	= init_hwif_cs5530,
 		.channels	= 2,
 		.autodma	= AUTODMA,
 		.bootable	= ON_BOARD,
+		.flags		= IDEPCI_FLAG_FORCE_MASTER,
 	}
 };
 
diff -puN drivers/ide/pci/cy82c693.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/cy82c693.h
--- 25/drivers/ide/pci/cy82c693.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/cy82c693.h	Tue Jun  1 17:06:22 2004
@@ -70,8 +70,6 @@ static void init_iops_cy82c693(ide_hwif_
 
 static ide_pci_device_t cy82c693_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_CONTAQ,
-		.device		= PCI_DEVICE_ID_CONTAQ_82C693,
 		.name		= "CY82C693",
 		.init_chipset	= init_chipset_cy82c693,
 		.init_iops	= init_iops_cy82c693,
diff -puN drivers/ide/pci/generic.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/generic.c
--- 25/drivers/ide/pci/generic.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/generic.c	Tue Jun  1 17:06:22 2004
@@ -77,8 +77,6 @@ static void __init init_hwif_generic (id
 
 	if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
 		ide_pci_device_t *unknown = unknown_chipset;
-//		unknown->vendor = dev->vendor;
-//		unknown->device = dev->device;
 		init_setup_unknown(dev, unknown);
 		return 1;
 	}
@@ -99,15 +97,13 @@ static int __devinit generic_init_one(st
 	ide_pci_device_t *d = &generic_chipsets[id->driver_data];
 	u16 command;
 
-	if (dev->device != d->device)
-		BUG();
-	if ((d->vendor == PCI_VENDOR_ID_UMC) &&
-	    (d->device == PCI_DEVICE_ID_UMC_UM8886A) &&
+	if (dev->vendor == PCI_VENDOR_ID_UMC &&
+	    dev->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) &&
+	if (dev->vendor == PCI_VENDOR_ID_OPTI &&
+	    dev->device == PCI_DEVICE_ID_OPTI_82C558 &&
 	    (!(PCI_FUNC(dev->devfn) & 1)))
 		return 1;
 
diff -puN drivers/ide/pci/generic.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/generic.h
--- 25/drivers/ide/pci/generic.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/generic.h	Tue Jun  1 17:06:22 2004
@@ -10,8 +10,6 @@ static void init_hwif_generic(ide_hwif_t
 
 static ide_pci_device_t generic_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_NS,
-		.device		= PCI_DEVICE_ID_NS_87410,
 		.name		= "NS87410",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
@@ -20,8 +18,6 @@ static ide_pci_device_t generic_chipsets
 		.enablebits	= {{0x43,0x08,0x08}, {0x47,0x08,0x08}},
 		.bootable	= ON_BOARD,
         },{	/* 1 */
-		.vendor		= PCI_VENDOR_ID_PCTECH,
-		.device		= PCI_DEVICE_ID_PCTECH_SAMURAI_IDE,
 		.name		= "SAMURAI",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
@@ -29,8 +25,6 @@ static ide_pci_device_t generic_chipsets
 		.autodma	= AUTODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 2 */
-		.vendor		= PCI_VENDOR_ID_HOLTEK,
-		.device		= PCI_DEVICE_ID_HOLTEK_6565,
 		.name		= "HT6565",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
@@ -38,8 +32,6 @@ static ide_pci_device_t generic_chipsets
 		.autodma	= AUTODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 3 */
-		.vendor		= PCI_VENDOR_ID_UMC,
-		.device		= PCI_DEVICE_ID_UMC_UM8673F,
 		.name		= "UM8673F",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
@@ -47,8 +39,6 @@ static ide_pci_device_t generic_chipsets
 		.autodma	= NODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 4 */
-		.vendor		= PCI_VENDOR_ID_UMC,
-		.device		= PCI_DEVICE_ID_UMC_UM8886A,
 		.name		= "UM8886A",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
@@ -56,8 +46,6 @@ static ide_pci_device_t generic_chipsets
 		.autodma	= NODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 5 */
-		.vendor		= PCI_VENDOR_ID_UMC,
-		.device		= PCI_DEVICE_ID_UMC_UM8886BF,
 		.name		= "UM8886BF",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
@@ -65,8 +53,6 @@ static ide_pci_device_t generic_chipsets
 		.autodma	= NODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 6 */
-		.vendor		= PCI_VENDOR_ID_HINT,
-		.device		= PCI_DEVICE_ID_HINT_VXPROII_IDE,
 		.name		= "HINT_IDE",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
@@ -74,8 +60,6 @@ static ide_pci_device_t generic_chipsets
 		.autodma	= AUTODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 7 */
-		.vendor		= PCI_VENDOR_ID_VIA,
-		.device		= PCI_DEVICE_ID_VIA_82C561,
 		.name		= "VIA_IDE",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
@@ -83,8 +67,6 @@ static ide_pci_device_t generic_chipsets
 		.autodma	= NOAUTODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 8 */
-		.vendor		= PCI_VENDOR_ID_OPTI,
-		.device		= PCI_DEVICE_ID_OPTI_82C558,
 		.name		= "OPTI621V",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
@@ -92,8 +74,6 @@ static ide_pci_device_t generic_chipsets
 		.autodma	= NOAUTODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 9 */
-		.vendor		= PCI_VENDOR_ID_VIA,
-		.device		= PCI_DEVICE_ID_VIA_8237_SATA,
 		.name		= "VIA8237SATA",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
@@ -101,8 +81,6 @@ static ide_pci_device_t generic_chipsets
 		.autodma	= AUTODMA,
 		.bootable	= OFF_BOARD,
 	},{ /* 10 */
-		.vendor		= PCI_VENDOR_ID_TOSHIBA,
-		.device		= PCI_DEVICE_ID_TOSHIBA_PICCOLO,
 		.name 		= "Piccolo0102",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
@@ -110,8 +88,6 @@ static ide_pci_device_t generic_chipsets
 		.autodma	= NOAUTODMA,
 		.bootable	= ON_BOARD,
 	},{ /* 11 */
-		.vendor		= PCI_VENDOR_ID_TOSHIBA,
-		.device		= PCI_DEVICE_ID_TOSHIBA_PICCOLO_1,
 		.name 		= "Piccolo0103",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
@@ -119,8 +95,6 @@ static ide_pci_device_t generic_chipsets
 		.autodma	= NOAUTODMA,
 		.bootable	= ON_BOARD,
 	},{ /* 12 */
-		.vendor		= PCI_VENDOR_ID_TOSHIBA,
-		.device		= PCI_DEVICE_ID_TOSHIBA_PICCOLO_2,
 		.name 		= "Piccolo0105",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
@@ -133,8 +107,6 @@ static ide_pci_device_t generic_chipsets
 #if 0
 static ide_pci_device_t unknown_chipset[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= 0,
-		.device		= 0,
 		.name		= "PCI_IDE",
 		.init_chipset	= init_chipset_generic,
 		.init_hwif	= init_hwif_generic,
diff -puN drivers/ide/pci/hpt34x.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/hpt34x.h
--- 25/drivers/ide/pci/hpt34x.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/hpt34x.h	Tue Jun  1 17:06:22 2004
@@ -18,8 +18,6 @@ static void init_hwif_hpt34x(ide_hwif_t 
 
 static ide_pci_device_t hpt34x_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_TTI,
-		.device		= PCI_DEVICE_ID_TTI_HPT343,
 		.name		= "HPT34X",
 		.init_chipset	= init_chipset_hpt34x,
 		.init_hwif	= init_hwif_hpt34x,
diff -puN drivers/ide/pci/hpt366.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/hpt366.c
--- 25/drivers/ide/pci/hpt366.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/hpt366.c	Tue Jun  1 17:06:22 2004
@@ -1241,8 +1241,6 @@ static int __devinit hpt366_init_one(str
 {
 	ide_pci_device_t *d = &hpt366_chipsets[id->driver_data];
 
-	if (dev->device != d->device)
-		BUG();
 	d->init_setup(dev, d);
 	return 0;
 }
diff -puN drivers/ide/pci/hpt366.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/hpt366.h
--- 25/drivers/ide/pci/hpt366.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/hpt366.h	Tue Jun  1 17:06:22 2004
@@ -425,8 +425,6 @@ static void init_dma_hpt366(ide_hwif_t *
 
 static ide_pci_device_t hpt366_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_TTI,
-		.device		= PCI_DEVICE_ID_TTI_HPT366,
 		.name		= "HPT366",
 		.init_setup	= init_setup_hpt366,
 		.init_chipset	= init_chipset_hpt366,
@@ -437,8 +435,6 @@ static ide_pci_device_t hpt366_chipsets[
 		.bootable	= OFF_BOARD,
 		.extra		= 240
 	},{	/* 1 */
-		.vendor		= PCI_VENDOR_ID_TTI,
-		.device		= PCI_DEVICE_ID_TTI_HPT372,
 		.name		= "HPT372A",
 		.init_setup	= init_setup_hpt37x,
 		.init_chipset	= init_chipset_hpt366,
@@ -448,8 +444,6 @@ static ide_pci_device_t hpt366_chipsets[
 		.autodma	= AUTODMA,
 		.bootable	= OFF_BOARD,
 	},{	/* 2 */
-		.vendor		= PCI_VENDOR_ID_TTI,
-		.device		= PCI_DEVICE_ID_TTI_HPT302,
 		.name		= "HPT302",
 		.init_setup	= init_setup_hpt37x,
 		.init_chipset	= init_chipset_hpt366,
@@ -459,8 +453,6 @@ static ide_pci_device_t hpt366_chipsets[
 		.autodma	= AUTODMA,
 		.bootable	= OFF_BOARD,
 	},{	/* 3 */
-		.vendor		= PCI_VENDOR_ID_TTI,
-		.device		= PCI_DEVICE_ID_TTI_HPT371,
 		.name		= "HPT371",
 		.init_setup	= init_setup_hpt37x,
 		.init_chipset	= init_chipset_hpt366,
@@ -470,8 +462,6 @@ static ide_pci_device_t hpt366_chipsets[
 		.autodma	= AUTODMA,
 		.bootable	= OFF_BOARD,
 	},{	/* 4 */
-		.vendor		= PCI_VENDOR_ID_TTI,
-		.device		= PCI_DEVICE_ID_TTI_HPT374,
 		.name		= "HPT374",
 		.init_setup	= init_setup_hpt374,
 		.init_chipset	= init_chipset_hpt366,
diff -puN drivers/ide/pci/it8172.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/it8172.c
--- 25/drivers/ide/pci/it8172.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/it8172.c	Tue Jun  1 17:06:22 2004
@@ -288,11 +288,10 @@ static void __init init_hwif_it8172 (ide
 
 static int __devinit it8172_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &it8172_chipsets[id->driver_data];
         if ((!(PCI_FUNC(dev->devfn) & 1) ||
             (!((dev->class >> 8) == PCI_CLASS_STORAGE_IDE))))
                 return 1; /* IT8172 is more than only a IDE controller */
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &it8172_chipsets[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/it8172.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/it8172.h
--- 25/drivers/ide/pci/it8172.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/it8172.h	Tue Jun  1 17:06:22 2004
@@ -20,8 +20,6 @@ static void init_hwif_it8172(ide_hwif_t 
 
 static ide_pci_device_t it8172_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_ITE,
-		.device		= PCI_DEVICE_ID_ITE_IT8172G,
 		.name		= "IT8172G",
 		.init_setup	= init_setup_it8172,
 		.init_chipset	= init_chipset_it8172,
diff -puN drivers/ide/pci/ns87415.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/ns87415.c
--- 25/drivers/ide/pci/ns87415.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/ns87415.c	Tue Jun  1 17:06:22 2004
@@ -219,10 +219,7 @@ static void __init init_hwif_ns87415 (id
 
 static int __devinit ns87415_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &ns87415_chipsets[id->driver_data];
-	if (dev->device != d->device)
-		BUG();
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &ns87415_chipsets[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/ns87415.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/ns87415.h
--- 25/drivers/ide/pci/ns87415.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/ns87415.h	Tue Jun  1 17:06:22 2004
@@ -9,8 +9,6 @@ static void init_hwif_ns87415(ide_hwif_t
 
 static ide_pci_device_t ns87415_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_NS,
-		.device		= PCI_DEVICE_ID_NS_87415,
 		.name		= "NS87415",
 		.init_hwif	= init_hwif_ns87415,
 		.channels	= 2,
diff -puN drivers/ide/pci/opti621.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/opti621.c
--- 25/drivers/ide/pci/opti621.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/opti621.c	Tue Jun  1 17:06:22 2004
@@ -355,10 +355,7 @@ static void __init init_setup_opti621 (s
 
 static int __devinit opti621_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &opti621_chipsets[id->driver_data];
-	if (dev->device != d->device)
-		BUG();
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &opti621_chipsets[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/opti621.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/opti621.h
--- 25/drivers/ide/pci/opti621.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/opti621.h	Tue Jun  1 17:06:22 2004
@@ -10,8 +10,6 @@ static void init_hwif_opti621(ide_hwif_t
 
 static ide_pci_device_t opti621_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_OPTI,
-		.device		= PCI_DEVICE_ID_OPTI_82C621,
 		.name		= "OPTI621",
 		.init_setup	= init_setup_opti621,
 		.init_hwif	= init_hwif_opti621,
@@ -20,8 +18,6 @@ static ide_pci_device_t opti621_chipsets
 		.enablebits	= {{0x45,0x80,0x00}, {0x40,0x08,0x00}},
 		.bootable	= ON_BOARD,
 	},{	/* 1 */
-		.vendor		= PCI_VENDOR_ID_OPTI,
-		.device		= PCI_DEVICE_ID_OPTI_82C825,
 		.name		= "OPTI621X",
 		.init_setup	= init_setup_opti621,
 		.init_hwif	= init_hwif_opti621,
diff -puN drivers/ide/pci/pdc202xx_new.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/pdc202xx_new.c
--- 25/drivers/ide/pci/pdc202xx_new.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/pdc202xx_new.c	Tue Jun  1 17:06:23 2004
@@ -514,8 +514,6 @@ static int __devinit pdc202new_init_one(
 {
 	ide_pci_device_t *d = &pdcnew_chipsets[id->driver_data];
 
-	if (dev->device != d->device)
-		BUG();
 	d->init_setup(dev, d);
 	return 0;
 }
diff -puN drivers/ide/pci/pdc202xx_new.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/pdc202xx_new.h
--- 25/drivers/ide/pci/pdc202xx_new.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/pdc202xx_new.h	Tue Jun  1 17:06:23 2004
@@ -53,8 +53,6 @@ static void init_hwif_pdc202new(ide_hwif
 
 static ide_pci_device_t pdcnew_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_PROMISE,
-		.device		= PCI_DEVICE_ID_PROMISE_20268,
 		.name		= "PDC20268",
 		.init_setup	= init_setup_pdcnew,
 		.init_chipset	= init_chipset_pdcnew,
@@ -63,8 +61,6 @@ static ide_pci_device_t pdcnew_chipsets[
 		.autodma	= AUTODMA,
 		.bootable	= OFF_BOARD,
 	},{	/* 1 */
-		.vendor		= PCI_VENDOR_ID_PROMISE,
-		.device		= PCI_DEVICE_ID_PROMISE_20269,
 		.name		= "PDC20269",
 		.init_setup	= init_setup_pdcnew,
 		.init_chipset	= init_chipset_pdcnew,
@@ -73,8 +69,6 @@ static ide_pci_device_t pdcnew_chipsets[
 		.autodma	= AUTODMA,
 		.bootable	= OFF_BOARD,
 	},{	/* 2 */
-		.vendor		= PCI_VENDOR_ID_PROMISE,
-		.device		= PCI_DEVICE_ID_PROMISE_20270,
 		.name		= "PDC20270",
 		.init_setup	= init_setup_pdc20270,
 		.init_chipset	= init_chipset_pdcnew,
@@ -86,8 +80,6 @@ static ide_pci_device_t pdcnew_chipsets[
 #endif
 		.bootable	= OFF_BOARD,
 	},{	/* 3 */
-		.vendor		= PCI_VENDOR_ID_PROMISE,
-		.device		= PCI_DEVICE_ID_PROMISE_20271,
 		.name		= "PDC20271",
 		.init_setup	= init_setup_pdcnew,
 		.init_chipset	= init_chipset_pdcnew,
@@ -96,8 +88,6 @@ static ide_pci_device_t pdcnew_chipsets[
 		.autodma	= AUTODMA,
 		.bootable	= OFF_BOARD,
 	},{	/* 4 */
-		.vendor		= PCI_VENDOR_ID_PROMISE,
-		.device		= PCI_DEVICE_ID_PROMISE_20275,
 		.name		= "PDC20275",
 		.init_setup	= init_setup_pdcnew,
 		.init_chipset	= init_chipset_pdcnew,
@@ -106,8 +96,6 @@ static ide_pci_device_t pdcnew_chipsets[
 		.autodma	= AUTODMA,
 		.bootable	= OFF_BOARD,
 	},{	/* 5 */
-		.vendor		= PCI_VENDOR_ID_PROMISE,
-		.device		= PCI_DEVICE_ID_PROMISE_20276,
 		.name		= "PDC20276",
 		.init_setup	= init_setup_pdc20276,
 		.init_chipset	= init_chipset_pdcnew,
@@ -119,8 +107,6 @@ static ide_pci_device_t pdcnew_chipsets[
 #endif
 		.bootable	= OFF_BOARD,
 	},{	/* 6 */
-		.vendor		= PCI_VENDOR_ID_PROMISE,
-		.device		= PCI_DEVICE_ID_PROMISE_20277,
 		.name		= "PDC20277",
 		.init_setup	= init_setup_pdcnew,
 		.init_chipset	= init_chipset_pdcnew,
diff -puN drivers/ide/pci/pdc202xx_old.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/pdc202xx_old.c
--- 25/drivers/ide/pci/pdc202xx_old.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/pdc202xx_old.c	Tue Jun  1 17:06:23 2004
@@ -884,8 +884,6 @@ static int __devinit pdc202xx_init_one(s
 {
 	ide_pci_device_t *d = &pdc202xx_chipsets[id->driver_data];
 
-	if (dev->device != d->device)
-		BUG();
 	d->init_setup(dev, d);
 	return 0;
 }
diff -puN drivers/ide/pci/pdc202xx_old.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/pdc202xx_old.h
--- 25/drivers/ide/pci/pdc202xx_old.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/pdc202xx_old.h	Tue Jun  1 17:06:23 2004
@@ -180,8 +180,6 @@ static void init_dma_pdc202xx(ide_hwif_t
 
 static ide_pci_device_t pdc202xx_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_PROMISE,
-		.device		= PCI_DEVICE_ID_PROMISE_20246,
 		.name		= "PDC20246",
 		.init_setup	= init_setup_pdc202ata4,
 		.init_chipset	= init_chipset_pdc202xx,
@@ -195,8 +193,6 @@ static ide_pci_device_t pdc202xx_chipset
 		.bootable	= OFF_BOARD,
 		.extra		= 16,
 	},{	/* 1 */
-		.vendor		= PCI_VENDOR_ID_PROMISE,
-		.device		= PCI_DEVICE_ID_PROMISE_20262,
 		.name		= "PDC20262",
 		.init_setup	= init_setup_pdc202ata4,
 		.init_chipset	= init_chipset_pdc202xx,
@@ -209,9 +205,8 @@ static ide_pci_device_t pdc202xx_chipset
 #endif
 		.bootable	= OFF_BOARD,
 		.extra		= 48,
+		.flags		= IDEPCI_FLAG_FORCE_PDC,
 	},{	/* 2 */
-		.vendor		= PCI_VENDOR_ID_PROMISE,
-		.device		= PCI_DEVICE_ID_PROMISE_20263,
 		.name		= "PDC20263",
 		.init_setup	= init_setup_pdc202ata4,
 		.init_chipset	= init_chipset_pdc202xx,
@@ -225,8 +220,6 @@ static ide_pci_device_t pdc202xx_chipset
 		.bootable	= OFF_BOARD,
 		.extra		= 48,
 	},{	/* 3 */
-		.vendor		= PCI_VENDOR_ID_PROMISE,
-		.device		= PCI_DEVICE_ID_PROMISE_20265,
 		.name		= "PDC20265",
 		.init_setup	= init_setup_pdc20265,
 		.init_chipset	= init_chipset_pdc202xx,
@@ -239,9 +232,8 @@ static ide_pci_device_t pdc202xx_chipset
 #endif
 		.bootable	= OFF_BOARD,
 		.extra		= 48,
+		.flags		= IDEPCI_FLAG_FORCE_PDC,
 	},{	/* 4 */
-		.vendor		= PCI_VENDOR_ID_PROMISE,
-		.device		= PCI_DEVICE_ID_PROMISE_20267,
 		.name		= "PDC20267",
 		.init_setup	= init_setup_pdc202xx,
 		.init_chipset	= init_chipset_pdc202xx,
diff -puN drivers/ide/pci/piix.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/piix.c
--- 25/drivers/ide/pci/piix.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/piix.c	Tue Jun  1 17:06:23 2004
@@ -744,8 +744,6 @@ static int __devinit piix_init_one(struc
 {
 	ide_pci_device_t *d = &piix_pci_info[id->driver_data];
 
-	if (dev->device != d->device)
-		BUG();
 	d->init_setup(dev, d);
 	return 0;
 }
diff -puN drivers/ide/pci/piix.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/piix.h
--- 25/drivers/ide/pci/piix.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/piix.h	Tue Jun  1 17:06:23 2004
@@ -13,10 +13,8 @@ static void init_setup_piix(struct pci_d
 static unsigned int __devinit init_chipset_piix(struct pci_dev *, const char *);
 static void init_hwif_piix(ide_hwif_t *);
 
-#define DECLARE_PIIX_DEV(pci_id, name_str) \
+#define DECLARE_PIIX_DEV(name_str) \
 	{						\
-		.vendor		= PCI_VENDOR_ID_INTEL,	\
-		.device		= pci_id,		\
 		.name		= name_str,		\
 		.init_setup	= init_setup_piix,	\
 		.init_chipset	= init_chipset_piix,	\
@@ -33,12 +31,10 @@ static void init_hwif_piix(ide_hwif_t *)
  */
  
 static ide_pci_device_t piix_pci_info[] __devinitdata = {
-	/* 0  */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82371FB_0,  "PIIXa"),
-	/* 1  */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82371FB_1,  "PIIXb"),
+	/*  0 */ DECLARE_PIIX_DEV("PIIXa"),
+	/*  1 */ DECLARE_PIIX_DEV("PIIXb"),
 
 	{	/* 2 */
-		.vendor		= PCI_VENDOR_ID_INTEL,
-		.device		= PCI_DEVICE_ID_INTEL_82371MX,
 		.name		= "MPIIX",
 		.init_setup	= init_setup_piix,
 		.init_hwif	= init_hwif_piix,
@@ -48,24 +44,24 @@ static ide_pci_device_t piix_pci_info[] 
 		.bootable	= ON_BOARD,
 	},
 
-	/* 3  */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82371SB_1,  "PIIX3"),
-	/* 4  */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82371AB,    "PIIX4"),
-	/* 5  */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82801AB_1,  "ICH0"),
-	/* 6  */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82443MX_1,  "PIIX4"),
-	/* 7  */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82801AA_1,  "ICH"),
-	/* 8  */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82372FB_1,  "PIIX4"),
-	/* 9  */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82451NX,    "PIIX4"),
-	/* 10 */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82801BA_9,  "ICH2"),
-	/* 11 */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82801BA_8,  "ICH2M"),
-	/* 12 */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82801CA_10, "ICH3M"),
-	/* 13 */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82801CA_11, "ICH3"),
-	/* 14 */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82801DB_11, "ICH4"),
-	/* 15 */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82801EB_11, "ICH5"),
-	/* 16 */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82801E_11,  "C-ICH"),
-	/* 17 */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82801DB_10, "ICH4"),
-	/* 18 */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_82801EB_1,  "ICH5-SATA"),
-	/* 19 */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_ESB_2,      "ICH5"),
-	/* 20 */ DECLARE_PIIX_DEV(PCI_DEVICE_ID_INTEL_ICH6_19,    "ICH6")
+	/*  3 */ DECLARE_PIIX_DEV("PIIX3"),
+	/*  4 */ DECLARE_PIIX_DEV("PIIX4"),
+	/*  5 */ DECLARE_PIIX_DEV("ICH0"),
+	/*  6 */ DECLARE_PIIX_DEV("PIIX4"),
+	/*  7 */ DECLARE_PIIX_DEV("ICH"),
+	/*  8 */ DECLARE_PIIX_DEV("PIIX4"),
+	/*  9 */ DECLARE_PIIX_DEV("PIIX4"),
+	/* 10 */ DECLARE_PIIX_DEV("ICH2"),
+	/* 11 */ DECLARE_PIIX_DEV("ICH2M"),
+	/* 12 */ DECLARE_PIIX_DEV("ICH3M"),
+	/* 13 */ DECLARE_PIIX_DEV("ICH3"),
+	/* 14 */ DECLARE_PIIX_DEV("ICH4"),
+	/* 15 */ DECLARE_PIIX_DEV("ICH5"),
+	/* 16 */ DECLARE_PIIX_DEV("C-ICH"),
+	/* 17 */ DECLARE_PIIX_DEV("ICH4"),
+	/* 18 */ DECLARE_PIIX_DEV("ICH5-SATA"),
+	/* 19 */ DECLARE_PIIX_DEV("ICH5"),
+	/* 20 */ DECLARE_PIIX_DEV("ICH6")
 };
 
 #endif /* PIIX_H */
diff -puN drivers/ide/pci/rz1000.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/rz1000.c
--- 25/drivers/ide/pci/rz1000.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/rz1000.c	Tue Jun  1 17:06:23 2004
@@ -56,10 +56,7 @@ static void __init init_hwif_rz1000 (ide
 
 static int __devinit rz1000_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &rz1000_chipsets[id->driver_data];
-	if (dev->device != d->device)
-		BUG();
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &rz1000_chipsets[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/rz1000.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/rz1000.h
--- 25/drivers/ide/pci/rz1000.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/rz1000.h	Tue Jun  1 17:06:23 2004
@@ -8,17 +8,13 @@
 static void init_hwif_rz1000(ide_hwif_t *);
 
 static ide_pci_device_t rz1000_chipsets[] __devinitdata = {
-{
-		.vendor		= PCI_VENDOR_ID_PCTECH,
-		.device		= PCI_DEVICE_ID_PCTECH_RZ1000,
+	{
 		.name		= "RZ1000",
 		.init_hwif	= init_hwif_rz1000,
 		.channels	= 2,
 		.autodma	= NODMA,
 		.bootable	= ON_BOARD,
 	},{
-		.vendor		= PCI_VENDOR_ID_PCTECH,
-		.device		= PCI_DEVICE_ID_PCTECH_RZ1001,
 		.name		= "RZ1001",
 		.init_hwif	= init_hwif_rz1000,
 		.channels	= 2,
diff -puN drivers/ide/pci/sc1200.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/sc1200.c
--- 25/drivers/ide/pci/sc1200.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/sc1200.c	Tue Jun  1 17:06:23 2004
@@ -547,10 +547,7 @@ static void __init init_hwif_sc1200 (ide
 
 static int __devinit sc1200_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &sc1200_chipsets[id->driver_data];
-	if (dev->device != d->device)
-		BUG();
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &sc1200_chipsets[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/sc1200.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/sc1200.h
--- 25/drivers/ide/pci/sc1200.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/sc1200.h	Tue Jun  1 17:06:23 2004
@@ -12,8 +12,6 @@ static void init_hwif_sc1200(ide_hwif_t 
 
 static ide_pci_device_t sc1200_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_NS,
-		.device		= PCI_DEVICE_ID_NS_SCx200_IDE,
 		.name		= "SC1200",
 		.init_chipset	= init_chipset_sc1200,
 		.init_hwif	= init_hwif_sc1200,
diff -puN drivers/ide/pci/serverworks.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/serverworks.c
--- 25/drivers/ide/pci/serverworks.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/serverworks.c	Tue Jun  1 17:06:23 2004
@@ -777,8 +777,8 @@ static void __init init_setup_csb6 (stru
 		d->autodma = AUTODMA;
 #endif
 
-	d->channels = (((d->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE) ||
-			(d->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2)) &&
+	d->channels = ((dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE ||
+			dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2) &&
 		       (!(PCI_FUNC(dev->devfn) & 1))) ? 1 : 2;
 
 	ide_setup_pci_device(dev, d);
@@ -798,8 +798,6 @@ static int __devinit svwks_init_one(stru
 {
 	ide_pci_device_t *d = &serverworks_chipsets[id->driver_data];
 
-	if (dev->device != d->device)
-		BUG();
 	d->init_setup(dev, d);
 	return 0;
 }
diff -puN drivers/ide/pci/serverworks.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/serverworks.h
--- 25/drivers/ide/pci/serverworks.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/serverworks.h	Tue Jun  1 17:06:23 2004
@@ -31,8 +31,6 @@ static void init_dma_svwks(ide_hwif_t *,
 
 static ide_pci_device_t serverworks_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_SERVERWORKS,
-		.device		= PCI_DEVICE_ID_SERVERWORKS_OSB4IDE,
 		.name		= "SvrWks OSB4",
 		.init_setup	= init_setup_svwks,
 		.init_chipset	= init_chipset_svwks,
@@ -41,8 +39,6 @@ static ide_pci_device_t serverworks_chip
 		.autodma	= AUTODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 1 */
-		.vendor		= PCI_VENDOR_ID_SERVERWORKS,
-		.device		= PCI_DEVICE_ID_SERVERWORKS_CSB5IDE,
 		.name		= "SvrWks CSB5",
 		.init_setup	= init_setup_svwks,
 		.init_chipset	= init_chipset_svwks,
@@ -52,8 +48,6 @@ static ide_pci_device_t serverworks_chip
 		.autodma	= AUTODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 2 */
-		.vendor		= PCI_VENDOR_ID_SERVERWORKS,
-		.device		= PCI_DEVICE_ID_SERVERWORKS_CSB6IDE,
 		.name		= "SvrWks CSB6",
 		.init_setup	= init_setup_csb6,
 		.init_chipset	= init_chipset_svwks,
@@ -63,8 +57,6 @@ static ide_pci_device_t serverworks_chip
 		.autodma	= AUTODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 3 */
-		.vendor		= PCI_VENDOR_ID_SERVERWORKS,
-		.device		= PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2,
 		.name		= "SvrWks CSB6",
 		.init_setup	= init_setup_csb6,
 		.init_chipset	= init_chipset_svwks,
diff -puN drivers/ide/pci/sgiioc4.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/sgiioc4.c
--- 25/drivers/ide/pci/sgiioc4.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/sgiioc4.c	Tue Jun  1 17:06:23 2004
@@ -757,8 +757,6 @@ pci_init_sgiioc4(struct pci_dev *dev, id
 static ide_pci_device_t sgiioc4_chipsets[] __devinitdata = {
 	{
 	 /* Channel 0 */
-	 .vendor = PCI_VENDOR_ID_SGI,
-	 .device = PCI_DEVICE_ID_SGI_IOC4,
 	 .name = "SGIIOC4",
 	 .init_hwif = ide_init_sgiioc4,
 	 .init_dma = ide_dma_sgiioc4,
@@ -772,16 +770,7 @@ static ide_pci_device_t sgiioc4_chipsets
 static int __devinit
 sgiioc4_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &sgiioc4_chipsets[id->driver_data];
-	if (dev->device != d->device) {
-		printk(KERN_ERR "Error in %s(dev 0x%p | id 0x%p )\n",
-		       __FUNCTION__, (void *) dev, (void *) id);
-		BUG();
-	}
-
-	if (pci_init_sgiioc4(dev, d))
-		return 0;
-
+	pci_init_sgiioc4(dev, &sgiioc4_chipsets[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/siimage.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/siimage.c
--- 25/drivers/ide/pci/siimage.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/siimage.c	Tue Jun  1 17:06:23 2004
@@ -1192,10 +1192,7 @@ static void __init init_hwif_siimage (id
  
 static int __devinit siimage_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &siimage_chipsets[id->driver_data];
-	if (dev->device != d->device)
-		BUG();
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &siimage_chipsets[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/siimage.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/siimage.h
--- 25/drivers/ide/pci/siimage.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/siimage.h	Tue Jun  1 17:06:23 2004
@@ -27,8 +27,6 @@ static void init_hwif_siimage(ide_hwif_t
 
 static ide_pci_device_t siimage_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_CMD,
-		.device		= PCI_DEVICE_ID_SII_680,
 		.name		= "SiI680",
 		.init_chipset	= init_chipset_siimage,
 		.init_iops	= init_iops_siimage,
@@ -37,8 +35,6 @@ static ide_pci_device_t siimage_chipsets
 		.autodma	= AUTODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 1 */
-		.vendor		= PCI_VENDOR_ID_CMD,
-		.device		= PCI_DEVICE_ID_SII_3112,
 		.name		= "SiI3112 Serial ATA",
 		.init_chipset	= init_chipset_siimage,
 		.init_iops	= init_iops_siimage,
@@ -47,8 +43,6 @@ static ide_pci_device_t siimage_chipsets
 		.autodma	= AUTODMA,
 		.bootable	= ON_BOARD,
 	},{	/* 2 */
-		.vendor		= PCI_VENDOR_ID_CMD,
-		.device		= PCI_DEVICE_ID_SII_1210SA,
 		.name		= "Adaptec AAR-1210SA",
 		.init_chipset	= init_chipset_siimage,
 		.init_iops	= init_iops_siimage,
diff -puN drivers/ide/pci/sis5513.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/sis5513.c
--- 25/drivers/ide/pci/sis5513.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/sis5513.c	Tue Jun  1 17:06:23 2004
@@ -946,10 +946,7 @@ static void __init init_hwif_sis5513 (id
 
 static int __devinit sis5513_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &sis5513_chipsets[id->driver_data];
-	if (dev->device != d->device)
-		BUG();
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &sis5513_chipsets[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/sis5513.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/sis5513.h
--- 25/drivers/ide/pci/sis5513.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/sis5513.h	Tue Jun  1 17:06:23 2004
@@ -12,8 +12,6 @@ static void init_hwif_sis5513(ide_hwif_t
 
 static ide_pci_device_t sis5513_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_SI,
-		.device		= PCI_DEVICE_ID_SI_5513,
 		.name		= "SIS5513",
 		.init_chipset	= init_chipset_sis5513,
 		.init_hwif	= init_hwif_sis5513,
diff -puN drivers/ide/pci/sl82c105.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/sl82c105.c
--- 25/drivers/ide/pci/sl82c105.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/sl82c105.c	Tue Jun  1 17:06:23 2004
@@ -483,10 +483,7 @@ static void __init init_hwif_sl82c105(id
 
 static int __devinit sl82c105_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &sl82c105_chipsets[id->driver_data];
-	if (dev->device != d->device)
-		BUG();
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &sl82c105_chipsets[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/sl82c105.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/sl82c105.h
--- 25/drivers/ide/pci/sl82c105.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/sl82c105.h	Tue Jun  1 17:06:23 2004
@@ -11,8 +11,6 @@ static void init_dma_sl82c105(ide_hwif_t
 
 static ide_pci_device_t sl82c105_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_WINBOND,
-		.device		= PCI_DEVICE_ID_WINBOND_82C105,
 		.name		= "W82C105",
 		.init_chipset	= init_chipset_sl82c105,
 		.init_hwif	= init_hwif_sl82c105,
diff -puN drivers/ide/pci/slc90e66.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/slc90e66.c
--- 25/drivers/ide/pci/slc90e66.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/slc90e66.c	Tue Jun  1 17:06:23 2004
@@ -366,10 +366,7 @@ static void __init init_hwif_slc90e66 (i
 
 static int __devinit slc90e66_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &slc90e66_chipsets[id->driver_data];
-	if (dev->device != d->device)
-		BUG();
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &slc90e66_chipsets[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/slc90e66.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/slc90e66.h
--- 25/drivers/ide/pci/slc90e66.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/slc90e66.h	Tue Jun  1 17:06:23 2004
@@ -14,8 +14,6 @@ static void init_hwif_slc90e66(ide_hwif_
 
 static ide_pci_device_t slc90e66_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_EFAR,
-		.device		= PCI_DEVICE_ID_EFAR_SLC90E66_1,
 		.name		= "SLC90E66",
 		.init_chipset	= init_chipset_slc90e66,
 		.init_hwif	= init_hwif_slc90e66,
diff -puN drivers/ide/pci/triflex.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/triflex.c
--- 25/drivers/ide/pci/triflex.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/triflex.c	Tue Jun  1 17:06:23 2004
@@ -220,13 +220,9 @@ static unsigned int __init init_chipset_
 static int __devinit triflex_init_one(struct pci_dev *dev, 
 		const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &triflex_devices[id->driver_data];
-	if (dev->device != d->device)
-		BUG();
-	
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &triflex_devices[id->driver_data]);
 	triflex_dev = dev;
-	
+
 	return 0;
 }
 
diff -puN drivers/ide/pci/triflex.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/triflex.h
--- 25/drivers/ide/pci/triflex.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/triflex.h	Tue Jun  1 17:06:23 2004
@@ -17,8 +17,6 @@ static void init_hwif_triflex(ide_hwif_t
 
 static ide_pci_device_t triflex_devices[] __devinitdata = {
 	{
-		.vendor 	= PCI_VENDOR_ID_COMPAQ,
-		.device		= PCI_DEVICE_ID_COMPAQ_TRIFLEX_IDE,
 		.name		= "TRIFLEX",
 		.init_chipset	= init_chipset_triflex,
 		.init_hwif	= init_hwif_triflex,
diff -puN drivers/ide/pci/trm290.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/trm290.c
--- 25/drivers/ide/pci/trm290.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/trm290.c	Tue Jun  1 17:06:23 2004
@@ -397,10 +397,7 @@ void __init init_hwif_trm290 (ide_hwif_t
 
 static int __devinit trm290_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &trm290_chipsets[id->driver_data];
-	if (dev->device != d->device)
-		BUG();
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &trm290_chipsets[id->driver_data]);
 	return 0;
 }
 
diff -puN drivers/ide/pci/trm290.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/trm290.h
--- 25/drivers/ide/pci/trm290.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/trm290.h	Tue Jun  1 17:06:23 2004
@@ -9,8 +9,6 @@ extern void init_hwif_trm290(ide_hwif_t 
 
 static ide_pci_device_t trm290_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_TEKRAM,
-		.device		= PCI_DEVICE_ID_TEKRAM_DC290,
 		.name		= "TRM290",
 		.init_hwif	= init_hwif_trm290,
 		.channels	= 2,
diff -puN drivers/ide/pci/via82cxxx.c~ide-ide_pci_device_t-sanitization drivers/ide/pci/via82cxxx.c
--- 25/drivers/ide/pci/via82cxxx.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/via82cxxx.c	Tue Jun  1 17:06:23 2004
@@ -609,16 +609,13 @@ static void __init init_hwif_via82cxxx(i
 
 static int __devinit via_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
-	ide_pci_device_t *d = &via82cxxx_chipsets[id->driver_data];
-	if (dev->device != d->device)
-		BUG();
-	ide_setup_pci_device(dev, d);
+	ide_setup_pci_device(dev, &via82cxxx_chipsets[id->driver_data]);
 	return 0;
 }
 
 static struct pci_device_id via_pci_tbl[] = {
 	{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
-	{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1},
+	{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
 	{ 0, },
 };
 MODULE_DEVICE_TABLE(pci, via_pci_tbl);
diff -puN drivers/ide/pci/via82cxxx.h~ide-ide_pci_device_t-sanitization drivers/ide/pci/via82cxxx.h
--- 25/drivers/ide/pci/via82cxxx.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/pci/via82cxxx.h	Tue Jun  1 17:06:23 2004
@@ -12,18 +12,6 @@ static void init_hwif_via82cxxx(ide_hwif
 
 static ide_pci_device_t via82cxxx_chipsets[] __devinitdata = {
 	{	/* 0 */
-		.vendor		= PCI_VENDOR_ID_VIA,
-		.device		= PCI_DEVICE_ID_VIA_82C576_1,
-		.name		= "VP_IDE",
-		.init_chipset	= init_chipset_via82cxxx,
-		.init_hwif	= init_hwif_via82cxxx,
-		.channels	= 2,
-		.autodma	= NOAUTODMA,
-		.enablebits	= {{0x40,0x02,0x02}, {0x40,0x01,0x01}},
-		.bootable	= ON_BOARD,
-	},{	/* 1 */
-		.vendor		= PCI_VENDOR_ID_VIA,
-		.device		= PCI_DEVICE_ID_VIA_82C586_1,
 		.name		= "VP_IDE",
 		.init_chipset	= init_chipset_via82cxxx,
 		.init_hwif	= init_hwif_via82cxxx,
diff -puN drivers/ide/setup-pci.c~ide-ide_pci_device_t-sanitization drivers/ide/setup-pci.c
--- 25/drivers/ide/setup-pci.c~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/drivers/ide/setup-pci.c	Tue Jun  1 17:06:23 2004
@@ -285,14 +285,8 @@ second_chance_to_dma:
 
 void ide_setup_pci_noise (struct pci_dev *dev, ide_pci_device_t *d)
 {
-	if ((d->vendor != dev->vendor) && (d->device != dev->device)) {
-		printk(KERN_INFO "%s: unknown IDE controller at PCI slot "
-			"%s, VID=%04x, DID=%04x\n",
-			d->name, pci_name(dev), dev->vendor, dev->device);
-        } else {
-		printk(KERN_INFO "%s: IDE controller at PCI slot %s\n",
-			d->name, pci_name(dev));
-	}
+	printk(KERN_INFO "%s: IDE controller at PCI slot %s\n",
+			 d->name, pci_name(dev));
 }
 
 EXPORT_SYMBOL_GPL(ide_setup_pci_noise);
@@ -422,8 +416,7 @@ static ide_hwif_t *ide_hwif_configure(st
 	unsigned long ctl = 0, base = 0;
 	ide_hwif_t *hwif;
 
-	if(!d->isa_ports)
-	{
+	if ((d->flags & IDEPCI_FLAG_ISA_PORTS) == 0) {
 		/*  Possibly we should fail if these checks report true */
 		ide_pci_check_iomem(dev, d, 2*port);
 		ide_pci_check_iomem(dev, d, 2*port+1);
@@ -495,9 +488,7 @@ static void ide_hwif_setup_dma(struct pc
  			 * Set up BM-DMA capability
 			 * (PnP BIOS should have done this)
  			 */
-			if (!((d->device == PCI_DEVICE_ID_CYRIX_5530_IDE && d->vendor == PCI_VENDOR_ID_CYRIX)
-			    ||(d->device == PCI_DEVICE_ID_NS_SCx200_IDE && d->vendor == PCI_VENDOR_ID_NS)))
-			{
+			if ((d->flags & IDEPCI_FLAG_FORCE_MASTER) == 0) {
 				/*
 				 * default DMA off if we had to
 				 * configure it here
@@ -613,9 +604,7 @@ void ide_pci_setup_ports(struct pci_dev 
 		 * by the bios for raid purposes. 
 		 * Skip the normal "is it enabled" test for those.
 		 */
-		if (((d->vendor == PCI_VENDOR_ID_PROMISE) &&
-		     ((d->device == PCI_DEVICE_ID_PROMISE_20262) ||
-		      (d->device == PCI_DEVICE_ID_PROMISE_20265))) &&
+		if ((d->flags & IDEPCI_FLAG_FORCE_PDC) &&
 		    (secondpdc++==1) && (port==1))
 			goto controller_ok;
 			
diff -puN include/linux/ide.h~ide-ide_pci_device_t-sanitization include/linux/ide.h
--- 25/include/linux/ide.h~ide-ide_pci_device_t-sanitization	Tue Jun  1 17:06:22 2004
+++ 25-akpm/include/linux/ide.h	Tue Jun  1 17:06:23 2004
@@ -1559,9 +1559,15 @@ typedef struct ide_pci_enablebit_s {
 	u8	val;	/* value of masked reg when "enabled" */
 } ide_pci_enablebit_t;
 
+enum {
+	/* Uses ISA control ports not PCI ones. */
+	IDEPCI_FLAG_ISA_PORTS		= (1 << 0),
+
+	IDEPCI_FLAG_FORCE_MASTER	= (1 << 1),
+	IDEPCI_FLAG_FORCE_PDC		= (1 << 2),
+};
+
 typedef struct ide_pci_device_s {
-	u16			vendor;
-	u16			device;
 	char			*name;
 	void			(*init_setup)(struct pci_dev *, struct ide_pci_device_s *);
 	void			(*init_setup_dma)(struct pci_dev *, struct ide_pci_device_s *, ide_hwif_t *);
@@ -1575,7 +1581,7 @@ typedef struct ide_pci_device_s {
 	u8			bootable;
 	unsigned int		extra;
 	struct ide_pci_device_s	*next;
-	u8			isa_ports; 	/* Uses ISA control ports not PCI ones */
+	u8			flags;
 } ide_pci_device_t;
 
 extern void ide_setup_pci_device(struct pci_dev *, ide_pci_device_t *);
_