pcmcia: pcmcia_config_loop() ConfigIndex unification

Almost all drivers set p_dev->conf.ConfigIndex to cfg->index in
the pcmcia_config_loop() callback function. Therefore, factor it out.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
diff --git a/drivers/ata/pata_pcmcia.c b/drivers/ata/pata_pcmcia.c
index 8cccd1b..4b8bd20 100644
--- a/drivers/ata/pata_pcmcia.c
+++ b/drivers/ata/pata_pcmcia.c
@@ -181,7 +181,6 @@
 
 	if ((cfg->io.nwin > 0) || (stk->dflt.io.nwin > 0)) {
 		cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &stk->dflt.io;
-		pdev->conf.ConfigIndex = cfg->index;
 		pdev->io.BasePort1 = io->win[0].base;
 		pdev->io.IOAddrLines = io->flags & CISTPL_IO_LINES_MASK;
 		if (!(io->flags & CISTPL_IO_16BIT))
diff --git a/drivers/bluetooth/bt3c_cs.c b/drivers/bluetooth/bt3c_cs.c
index 6ec366f1..3436be1 100644
--- a/drivers/bluetooth/bt3c_cs.c
+++ b/drivers/bluetooth/bt3c_cs.c
@@ -688,7 +688,6 @@
 		p_dev->conf.Vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
 	if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) &&
 	    (cf->io.win[0].base != 0)) {
-		p_dev->conf.ConfigIndex = cf->index;
 		p_dev->io.BasePort1 = cf->io.win[0].base;
 		p_dev->io.IOAddrLines = (try == 0) ? 16 :
 			cf->io.flags & CISTPL_IO_LINES_MASK;
@@ -706,7 +705,6 @@
 	int j;
 
 	if ((cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
-		p_dev->conf.ConfigIndex = cf->index;
 		for (j = 0; j < 5; j++) {
 			p_dev->io.BasePort1 = base[j];
 			p_dev->io.IOAddrLines = base[j] ? 16 : 3;
diff --git a/drivers/bluetooth/btuart_cs.c b/drivers/bluetooth/btuart_cs.c
index 39cca28..5e31ea2 100644
--- a/drivers/bluetooth/btuart_cs.c
+++ b/drivers/bluetooth/btuart_cs.c
@@ -617,7 +617,6 @@
 		p_dev->conf.Vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
 	if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) &&
 	    (cf->io.win[0].base != 0)) {
-		p_dev->conf.ConfigIndex = cf->index;
 		p_dev->io.BasePort1 = cf->io.win[0].base;
 		p_dev->io.IOAddrLines = (try == 0) ? 16 :
 			cf->io.flags & CISTPL_IO_LINES_MASK;
@@ -635,7 +634,6 @@
 	int j;
 
 	if ((cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
-		p_dev->conf.ConfigIndex = cf->index;
 		for (j = 0; j < 5; j++) {
 			p_dev->io.BasePort1 = base[j];
 			p_dev->io.IOAddrLines = base[j] ? 16 : 3;
diff --git a/drivers/bluetooth/dtl1_cs.c b/drivers/bluetooth/dtl1_cs.c
index e30a633..1846e2a 100644
--- a/drivers/bluetooth/dtl1_cs.c
+++ b/drivers/bluetooth/dtl1_cs.c
@@ -595,7 +595,6 @@
 			  void *priv_data)
 {
 	if ((cf->io.nwin == 1) && (cf->io.win[0].len > 8)) {
-		p_dev->conf.ConfigIndex = cf->index;
 		p_dev->io.BasePort1 = cf->io.win[0].base;
 		p_dev->io.NumPorts1 = cf->io.win[0].len;	/*yo */
 		p_dev->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK;
diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c
index 47adec4..7eafd2f 100644
--- a/drivers/char/pcmcia/cm4000_cs.c
+++ b/drivers/char/pcmcia/cm4000_cs.c
@@ -1763,8 +1763,6 @@
 			       cistpl_cftable_entry_t *cfg,
 			       void *priv_data)
 {
-	p_dev->conf.ConfigIndex = cfg->index;
-
 	if (!cfg->io.nwin)
 		return -ENODEV;
 
diff --git a/drivers/char/pcmcia/cm4040_cs.c b/drivers/char/pcmcia/cm4040_cs.c
index e0f5d8c..71ca8c4 100644
--- a/drivers/char/pcmcia/cm4040_cs.c
+++ b/drivers/char/pcmcia/cm4040_cs.c
@@ -531,8 +531,6 @@
 			       void *priv_data)
 {
 	int rc;
-	p_dev->conf.ConfigIndex = cfg->index;
-
 	if (!cfg->io.nwin)
 		return -ENODEV;
 
diff --git a/drivers/isdn/hardware/avm/avm_cs.c b/drivers/isdn/hardware/avm/avm_cs.c
index 7a1ead1..3569c68d 100644
--- a/drivers/isdn/hardware/avm/avm_cs.c
+++ b/drivers/isdn/hardware/avm/avm_cs.c
@@ -161,7 +161,6 @@
 	if (cf->io.nwin <= 0)
 		return -ENODEV;
 
-	p_dev->conf.ConfigIndex = cf->index;
 	p_dev->io.BasePort1 = cf->io.win[0].base;
 	p_dev->io.NumPorts1 = cf->io.win[0].len;
 	p_dev->io.NumPorts2 = 0;
diff --git a/drivers/isdn/hisax/avma1_cs.c b/drivers/isdn/hisax/avma1_cs.c
index 8142d9f..76164d6 100644
--- a/drivers/isdn/hisax/avma1_cs.c
+++ b/drivers/isdn/hisax/avma1_cs.c
@@ -181,7 +181,6 @@
 	if (cf->io.nwin <= 0)
 		return -ENODEV;
 
-	p_dev->conf.ConfigIndex = cf->index;
 	p_dev->io.BasePort1 = cf->io.win[0].base;
 	p_dev->io.NumPorts1 = cf->io.win[0].len;
 	p_dev->io.NumPorts2 = 0;
diff --git a/drivers/isdn/hisax/elsa_cs.c b/drivers/isdn/hisax/elsa_cs.c
index 4498008..c9899e5 100644
--- a/drivers/isdn/hisax/elsa_cs.c
+++ b/drivers/isdn/hisax/elsa_cs.c
@@ -212,13 +212,11 @@
 
 	if ((cf->io.nwin > 0) && cf->io.win[0].base) {
 		printk(KERN_INFO "(elsa_cs: looks like the 96 model)\n");
-		p_dev->conf.ConfigIndex = cf->index;
 		p_dev->io.BasePort1 = cf->io.win[0].base;
 		if (!pcmcia_request_io(p_dev, &p_dev->io))
 			return 0;
 	} else {
 		printk(KERN_INFO "(elsa_cs: looks like the 97 model)\n");
-		p_dev->conf.ConfigIndex = cf->index;
 		for (j = 0x2f0; j > 0x100; j -= 0x10) {
 			p_dev->io.BasePort1 = j;
 			if (!pcmcia_request_io(p_dev, &p_dev->io))
diff --git a/drivers/isdn/hisax/sedlbauer_cs.c b/drivers/isdn/hisax/sedlbauer_cs.c
index 0f80b56..2c611f9 100644
--- a/drivers/isdn/hisax/sedlbauer_cs.c
+++ b/drivers/isdn/hisax/sedlbauer_cs.c
@@ -233,7 +233,6 @@
 		cfg_mem->dflt = *cfg;
 	if (cfg->index == 0)
 		return -ENODEV;
-	p_dev->conf.ConfigIndex = cfg->index;
 
 	/* Does this card need audio output? */
 	if (cfg->flags & CISTPL_CFTABLE_AUDIO) {
diff --git a/drivers/isdn/hisax/teles_cs.c b/drivers/isdn/hisax/teles_cs.c
index 2b063a2..ecb75ae 100644
--- a/drivers/isdn/hisax/teles_cs.c
+++ b/drivers/isdn/hisax/teles_cs.c
@@ -202,13 +202,11 @@
 
 	if ((cf->io.nwin > 0) && cf->io.win[0].base) {
 		printk(KERN_INFO "(teles_cs: looks like the 96 model)\n");
-		p_dev->conf.ConfigIndex = cf->index;
 		p_dev->io.BasePort1 = cf->io.win[0].base;
 		if (!pcmcia_request_io(p_dev, &p_dev->io))
 			return 0;
 	} else {
 		printk(KERN_INFO "(teles_cs: looks like the 97 model)\n");
-		p_dev->conf.ConfigIndex = cf->index;
 		for (j = 0x2f0; j > 0x100; j -= 0x10) {
 			p_dev->io.BasePort1 = j;
 			if (!pcmcia_request_io(p_dev, &p_dev->io))
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c
index 7a9eeca..a606087 100644
--- a/drivers/net/pcmcia/pcnet_cs.c
+++ b/drivers/net/pcmcia/pcnet_cs.c
@@ -523,8 +523,6 @@
 	if (cfg->index == 0 || cfg->io.nwin == 0)
 		return -EINVAL;
 
-	p_dev->conf.ConfigIndex = cfg->index;
-
 	/* For multifunction cards, by convention, we configure the
 	   network function with window 0, and serial with window 1 */
 	if (io->nwin > 1) {
diff --git a/drivers/net/pcmcia/smc91c92_cs.c b/drivers/net/pcmcia/smc91c92_cs.c
index c012e34..1e59503 100644
--- a/drivers/net/pcmcia/smc91c92_cs.c
+++ b/drivers/net/pcmcia/smc91c92_cs.c
@@ -464,7 +464,6 @@
 				void *priv_data)
 {
 	int k;
-	p_dev->conf.ConfigIndex = cf->index;
 	p_dev->io.BasePort2 = cf->io.win[0].base;
 	for (k = 0; k < 0x400; k += 0x10) {
 		if (k & 0x80)
@@ -654,7 +653,6 @@
 			   cistpl_cftable_entry_t *cf,
 			   void *priv_data)
 {
-	p_dev->conf.ConfigIndex = cf->index;
 	p_dev->io.BasePort1 = cf->io.win[0].base;
 	p_dev->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK;
 	return pcmcia_request_io(p_dev, &p_dev->io);
diff --git a/drivers/net/pcmcia/xirc2ps_cs.c b/drivers/net/pcmcia/xirc2ps_cs.c
index b57f022..b0de704 100644
--- a/drivers/net/pcmcia/xirc2ps_cs.c
+++ b/drivers/net/pcmcia/xirc2ps_cs.c
@@ -724,7 +724,6 @@
 
 	if (cf->io.nwin > 0  &&  (cf->io.win[0].base & 0xf) == 8) {
 		for (ioaddr = 0x300; ioaddr < 0x400; ioaddr += 0x10) {
-			p_dev->conf.ConfigIndex = cf->index ;
 			p_dev->io.BasePort2 = cf->io.win[0].base;
 			p_dev->io.BasePort1 = ioaddr;
 			if (!pcmcia_request_io(p_dev, &p_dev->io))
@@ -742,7 +741,6 @@
 	int *pass = priv_data;
 
 	if (cf->io.nwin > 0 && (cf->io.win[0].base & 0xf) == 8) {
-		p_dev->conf.ConfigIndex = cf->index ;
 		p_dev->io.BasePort2 = cf->io.win[0].base;
 		p_dev->io.BasePort1 = p_dev->io.BasePort2
 			+ (*pass ? (cf->index & 0x20 ? -24:8)
diff --git a/drivers/net/wireless/airo_cs.c b/drivers/net/wireless/airo_cs.c
index 4fbe811..d721673 100644
--- a/drivers/net/wireless/airo_cs.c
+++ b/drivers/net/wireless/airo_cs.c
@@ -223,8 +223,6 @@
 	if (cfg->index == 0)
 		return -ENODEV;
 
-	p_dev->conf.ConfigIndex = cfg->index;
-
 	/* Does this card need audio output? */
 	if (cfg->flags & CISTPL_CFTABLE_AUDIO) {
 		p_dev->conf.Attributes |= CONF_ENABLE_SPKR;
diff --git a/drivers/net/wireless/atmel_cs.c b/drivers/net/wireless/atmel_cs.c
index 263c36f..12efd44 100644
--- a/drivers/net/wireless/atmel_cs.c
+++ b/drivers/net/wireless/atmel_cs.c
@@ -234,8 +234,6 @@
 		*dflt = *cfg;
 	if (cfg->index == 0)
 		return -ENODEV;
-	p_dev->conf.ConfigIndex = cfg->index;
-
 	/* Does this card need audio output? */
 	if (cfg->flags & CISTPL_CFTABLE_AUDIO) {
 		p_dev->conf.Attributes |= CONF_ENABLE_SPKR;
diff --git a/drivers/net/wireless/hostap/hostap_cs.c b/drivers/net/wireless/hostap/hostap_cs.c
index 3d914dd..2abaa90 100644
--- a/drivers/net/wireless/hostap/hostap_cs.c
+++ b/drivers/net/wireless/hostap/hostap_cs.c
@@ -552,7 +552,6 @@
 	if (cfg->index == 0)
 		return -ENODEV;
 
-	p_dev->conf.ConfigIndex = cfg->index;
 	PDEBUG(DEBUG_EXTRA, "Checking CFTABLE_ENTRY 0x%02X "
 	       "(default 0x%02X)\n", cfg->index, cfg_mem->dflt.index);
 
diff --git a/drivers/net/wireless/orinoco_cs.c b/drivers/net/wireless/orinoco_cs.c
index 473370c..67a172d 100644
--- a/drivers/net/wireless/orinoco_cs.c
+++ b/drivers/net/wireless/orinoco_cs.c
@@ -179,7 +179,6 @@
 		cfg_mem->dflt = *cfg;
 	if (cfg->index == 0)
 		goto next_entry;
-	p_dev->conf.ConfigIndex = cfg->index;
 
 	/* Use power settings for Vcc and Vpp if present */
 	/* Note that the CIS values need to be rescaled */
diff --git a/drivers/net/wireless/spectrum_cs.c b/drivers/net/wireless/spectrum_cs.c
index 8e1951c..7536aa9 100644
--- a/drivers/net/wireless/spectrum_cs.c
+++ b/drivers/net/wireless/spectrum_cs.c
@@ -648,7 +648,6 @@
 		cfg_mem->dflt = *cfg;
 	if (cfg->index == 0)
 		goto next_entry;
-	p_dev->conf.ConfigIndex = cfg->index;
 
 	/* Use power settings for Vcc and Vpp if present */
 	/* Note that the CIS values need to be rescaled */
diff --git a/drivers/parport/parport_cs.c b/drivers/parport/parport_cs.c
index 6362317..814c525 100644
--- a/drivers/parport/parport_cs.c
+++ b/drivers/parport/parport_cs.c
@@ -156,7 +156,6 @@
 	cistpl_cftable_entry_t *dflt = priv_data;
 	if ((cfg->io.nwin > 0) || (dflt->io.nwin > 0)) {
 		cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &dflt->io;
-		p_dev->conf.ConfigIndex = cfg->index;
 		if (epp_mode)
 			p_dev->conf.ConfigIndex |= FORCE_EPP_MODE;
 		p_dev->io.BasePort1 = io->win[0].base;
diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c
index 9f054bc..ba34ac8 100644
--- a/drivers/pcmcia/pcmcia_resource.c
+++ b/drivers/pcmcia/pcmcia_resource.c
@@ -953,14 +953,18 @@
 
 	ret = pcmcia_get_first_tuple(p_dev, tuple);
 	while (!ret) {
+		cistpl_cftable_entry_t *cfg = &cfg_mem->parse.cftable_entry;
+
 		if (pcmcia_get_tuple_data(p_dev, tuple))
 			goto next_entry;
 
 		if (pcmcia_parse_tuple(p_dev, tuple, &cfg_mem->parse))
 			goto next_entry;
 
-		ret = conf_check(p_dev, &cfg_mem->parse.cftable_entry,
-				 priv_data);
+		/* default values */
+		p_dev->conf.ConfigIndex = cfg->index;
+
+		ret = conf_check(p_dev, cfg, priv_data);
 		if (!ret)
 			break;
 
diff --git a/drivers/scsi/pcmcia/aha152x_stub.c b/drivers/scsi/pcmcia/aha152x_stub.c
index bbcc20f..5e4d8e4 100644
--- a/drivers/scsi/pcmcia/aha152x_stub.c
+++ b/drivers/scsi/pcmcia/aha152x_stub.c
@@ -152,7 +152,6 @@
 		p_dev->io.BasePort1 = cfg->io.win[1].base;
 	if ((cfg->io.nwin > 0) &&
 	    (p_dev->io.BasePort1 < 0xffff)) {
-		p_dev->conf.ConfigIndex = cfg->index;
 		if (!pcmcia_request_io(p_dev, &p_dev->io))
 			return 0;
 	}
diff --git a/drivers/scsi/pcmcia/fdomain_stub.c b/drivers/scsi/pcmcia/fdomain_stub.c
index fefef7d..e3d6937 100644
--- a/drivers/scsi/pcmcia/fdomain_stub.c
+++ b/drivers/scsi/pcmcia/fdomain_stub.c
@@ -127,7 +127,6 @@
 				  cistpl_cftable_entry_t *cfg,
 				  void *priv_data)
 {
-	p_dev->conf.ConfigIndex = cfg->index;
 	p_dev->io.BasePort1 = cfg->io.win[0].base;
 	return pcmcia_request_io(p_dev, &p_dev->io);
 }
diff --git a/drivers/scsi/pcmcia/nsp_cs.c b/drivers/scsi/pcmcia/nsp_cs.c
index a29a6f2..aee24b7 100644
--- a/drivers/scsi/pcmcia/nsp_cs.c
+++ b/drivers/scsi/pcmcia/nsp_cs.c
@@ -1626,8 +1626,6 @@
 	if (cfg->index == 0)
 		return -ENODEV;
 
-	p_dev->conf.ConfigIndex = cfg->index;
-
 	/* Does this card need audio output? */
 	if (cfg->flags & CISTPL_CFTABLE_AUDIO) {
 		p_dev->conf.Attributes |= CONF_ENABLE_SPKR;
diff --git a/drivers/scsi/pcmcia/qlogic_stub.c b/drivers/scsi/pcmcia/qlogic_stub.c
index aa9b9e0..a361275 100644
--- a/drivers/scsi/pcmcia/qlogic_stub.c
+++ b/drivers/scsi/pcmcia/qlogic_stub.c
@@ -199,7 +199,6 @@
 				  cistpl_cftable_entry_t *cfg,
 				  void *priv_data)
 {
-	p_dev->conf.ConfigIndex = cfg->index;
 	p_dev->io.BasePort1 = cfg->io.win[0].base;
 	p_dev->io.NumPorts1 = cfg->io.win[0].len;
 
diff --git a/drivers/scsi/pcmcia/sym53c500_cs.c b/drivers/scsi/pcmcia/sym53c500_cs.c
index 15369d9..23a5219 100644
--- a/drivers/scsi/pcmcia/sym53c500_cs.c
+++ b/drivers/scsi/pcmcia/sym53c500_cs.c
@@ -704,7 +704,6 @@
 				  cistpl_cftable_entry_t *cfg,
 				  void *priv_data)
 {
-	p_dev->conf.ConfigIndex = cfg->index;
 	p_dev->io.BasePort1 = cfg->io.win[0].base;
 	p_dev->io.NumPorts1 = cfg->io.win[0].len;
 
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c
index ac60cd2..6937381 100644
--- a/drivers/serial/serial_cs.c
+++ b/drivers/serial/serial_cs.c
@@ -454,7 +454,6 @@
 
 	if ((cf->io.nwin > 0) && (cf->io.win[0].len == size_table[(*try >> 1)])
 	    && (cf->io.win[0].base != 0)) {
-		p_dev->conf.ConfigIndex = cf->index;
 		p_dev->io.BasePort1 = cf->io.win[0].base;
 		p_dev->io.IOAddrLines = ((*try & 0x1) == 0) ?
 			16 : cf->io.flags & CISTPL_IO_LINES_MASK;
@@ -472,7 +471,6 @@
 	int j;
 
 	if ((cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
-		p_dev->conf.ConfigIndex = cf->index;
 		for (j = 0; j < 5; j++) {
 			p_dev->io.BasePort1 = base[j];
 			p_dev->io.IOAddrLines = base[j] ? 16 : 3;
@@ -555,7 +553,6 @@
 	/* The quad port cards have bad CIS's, so just look for a
 	   window larger than 8 ports and assume it will be right */
 	if ((cf->io.nwin == 1) && (cf->io.win[0].len > 8)) {
-		p_dev->conf.ConfigIndex = cf->index;
 		p_dev->io.BasePort1 = cf->io.win[0].base;
 		p_dev->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK;
 		if (!pcmcia_request_io(p_dev, &p_dev->io)) {
@@ -573,7 +570,6 @@
 	int *base2 = priv_data;
 
 	if (cf->io.nwin == 2) {
-		p_dev->conf.ConfigIndex = cf->index;
 		p_dev->io.BasePort1 = cf->io.win[0].base;
 		p_dev->io.BasePort2 = cf->io.win[1].base;
 		p_dev->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK;
diff --git a/drivers/telephony/ixj_pcmcia.c b/drivers/telephony/ixj_pcmcia.c
index 89c5e40c..ba2c7a2 100644
--- a/drivers/telephony/ixj_pcmcia.c
+++ b/drivers/telephony/ixj_pcmcia.c
@@ -132,7 +132,6 @@
 
 	if ((cfg->io.nwin > 0) || (dflt->io.nwin > 0)) {
 		cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &dflt->io;
-		p_dev->conf.ConfigIndex = cfg->index;
 		p_dev->io.BasePort1 = io->win[0].base;
 		p_dev->io.NumPorts1 = io->win[0].len;
 		if (io->nwin == 2) {
diff --git a/drivers/usb/host/sl811_cs.c b/drivers/usb/host/sl811_cs.c
index 9773601..5b55c72 100644
--- a/drivers/usb/host/sl811_cs.c
+++ b/drivers/usb/host/sl811_cs.c
@@ -172,8 +172,6 @@
 	if (cfg->index == 0)
 		return -ENODEV;
 
-	p_dev->conf.ConfigIndex = cfg->index;
-
 	/* Use power settings for Vcc and Vpp if present */
 	/*  Note that the CIS values need to be rescaled */
 	if (cfg->vcc.present & (1<<CISTPL_POWER_VNOM)) {