pcmcia: pcmcia_config_loop() default CIS entry handling

Many drivers use the default CIS entry within their pcmcia_config_loop()
callback function. Therefore, factor the default CIS entry handling out.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
diff --git a/drivers/net/wireless/hostap/hostap_cs.c b/drivers/net/wireless/hostap/hostap_cs.c
index 2abaa90..f9595ca 100644
--- a/drivers/net/wireless/hostap/hostap_cs.c
+++ b/drivers/net/wireless/hostap/hostap_cs.c
@@ -537,23 +537,21 @@
  * socket and make the device available to the system */
 
 struct prism2_config_data {
-	cistpl_cftable_entry_t dflt;
 	config_info_t conf;
 };
 
 static int prism2_config_check(struct pcmcia_device *p_dev,
 			       cistpl_cftable_entry_t *cfg,
+			       cistpl_cftable_entry_t *dflt,
 			       void *priv_data)
 {
 	struct prism2_config_data *cfg_mem = priv_data;
 
-	if (cfg->flags & CISTPL_CFTABLE_DEFAULT)
-		cfg_mem->dflt = *cfg;
 	if (cfg->index == 0)
 		return -ENODEV;
 
 	PDEBUG(DEBUG_EXTRA, "Checking CFTABLE_ENTRY 0x%02X "
-	       "(default 0x%02X)\n", cfg->index, cfg_mem->dflt.index);
+	       "(default 0x%02X)\n", cfg->index, dflt->index);
 
 	/* Does this card need audio output? */
 	if (cfg->flags & CISTPL_CFTABLE_AUDIO) {
@@ -570,8 +568,8 @@
 			       " this entry\n");
 			return -ENODEV;
 		}
-	} else if (cfg_mem->dflt.vcc.present & (1 << CISTPL_POWER_VNOM)) {
-		if (cfg_mem->conf.Vcc != cfg_mem->dflt.vcc.param[CISTPL_POWER_VNOM] /
+	} else if (dflt->vcc.present & (1 << CISTPL_POWER_VNOM)) {
+		if (cfg_mem->conf.Vcc != dflt->vcc.param[CISTPL_POWER_VNOM] /
 		    10000 && !ignore_cis_vcc) {
 			PDEBUG(DEBUG_EXTRA, "  Vcc (default) mismatch "
 			       "- skipping this entry\n");
@@ -581,11 +579,11 @@
 
 	if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM))
 		p_dev->conf.Vpp = cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-	else if (cfg_mem->dflt.vpp1.present & (1 << CISTPL_POWER_VNOM))
-		p_dev->conf.Vpp = cfg_mem->dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000;
+	else if (dflt->vpp1.present & (1 << CISTPL_POWER_VNOM))
+		p_dev->conf.Vpp = dflt->vpp1.param[CISTPL_POWER_VNOM] / 10000;
 
 	/* Do we need to allocate an interrupt? */
-	if (cfg->irq.IRQInfo1 || cfg_mem->dflt.irq.IRQInfo1)
+	if (cfg->irq.IRQInfo1 || dflt->irq.IRQInfo1)
 		p_dev->conf.Attributes |= CONF_ENABLE_IRQ;
 	else if (!(p_dev->conf.Attributes & CONF_ENABLE_IRQ)) {
 		/* At least Compaq WL200 does not have IRQInfo1 set,
@@ -597,11 +595,11 @@
 
 	/* IO window settings */
 	PDEBUG(DEBUG_EXTRA, "IO window settings: cfg->io.nwin=%d "
-	       "cfg_mem->dflt.io.nwin=%d\n",
-	       cfg->io.nwin, cfg_mem->dflt.io.nwin);
+	       "dflt->io.nwin=%d\n",
+	       cfg->io.nwin, dflt->io.nwin);
 	p_dev->io.NumPorts1 = p_dev->io.NumPorts2 = 0;
-	if ((cfg->io.nwin > 0) || (cfg_mem->dflt.io.nwin > 0)) {
-		cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &cfg_mem->dflt.io;
+	if ((cfg->io.nwin > 0) || (dflt->io.nwin > 0)) {
+		cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &dflt->io;
 		p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
 		PDEBUG(DEBUG_EXTRA, "io->flags = 0x%04X, "
 		       "io.base=0x%04x, len=%d\n", io->flags,