aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.net>2006-01-15 06:43:16 -0500
committerDominik Brodowski <linux@dominikbrodowski.net>2006-03-31 10:15:55 -0500
commit70294b468302fd7a0a99dad935c7ba5322989345 (patch)
treee54b0b7c85517ef717f3755e06ca08fbb0f5937e
parent4bbed5231468014b500b048d7370a1c6c349231a (diff)
[PATCH] pcmcia: remove unneeded Vcc pseudo setting
As we do not allow setting Vcc in the pcmcia core, and Vpp1 and Vpp2 can only be set to the same value, a lot of code can be streamlined. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
-rw-r--r--drivers/bluetooth/bluecard_cs.c4
-rw-r--r--drivers/bluetooth/bt3c_cs.c6
-rw-r--r--drivers/bluetooth/btuart_cs.c6
-rw-r--r--drivers/bluetooth/dtl1_cs.c4
-rw-r--r--drivers/char/pcmcia/cm4000_cs.c7
-rw-r--r--drivers/char/pcmcia/cm4040_cs.c7
-rw-r--r--drivers/char/pcmcia/synclink_cs.c7
-rw-r--r--drivers/ide/legacy/ide-cs.c11
-rw-r--r--drivers/isdn/hardware/avm/avm_cs.c1
-rw-r--r--drivers/isdn/hisax/avma1_cs.c1
-rw-r--r--drivers/isdn/hisax/elsa_cs.c8
-rw-r--r--drivers/isdn/hisax/sedlbauer_cs.c16
-rw-r--r--drivers/isdn/hisax/teles_cs.c8
-rw-r--r--drivers/mtd/maps/pcmciamtd.c7
-rw-r--r--drivers/net/pcmcia/3c574_cs.c1
-rw-r--r--drivers/net/pcmcia/3c589_cs.c1
-rw-r--r--drivers/net/pcmcia/axnet_cs.c5
-rw-r--r--drivers/net/pcmcia/com20020_cs.c1
-rw-r--r--drivers/net/pcmcia/fmvj18x_cs.c8
-rw-r--r--drivers/net/pcmcia/ibmtr_cs.c1
-rw-r--r--drivers/net/pcmcia/nmclan_cs.c1
-rw-r--r--drivers/net/pcmcia/pcnet_cs.c5
-rw-r--r--drivers/net/pcmcia/smc91c92_cs.c1
-rw-r--r--drivers/net/pcmcia/xirc2ps_cs.c1
-rw-r--r--drivers/net/wireless/airo_cs.c19
-rw-r--r--drivers/net/wireless/atmel_cs.c10
-rw-r--r--drivers/net/wireless/hostap/hostap_cs.c19
-rw-r--r--drivers/net/wireless/netwave_cs.c1
-rw-r--r--drivers/net/wireless/orinoco_cs.c18
-rw-r--r--drivers/net/wireless/ray_cs.c1
-rw-r--r--drivers/net/wireless/spectrum_cs.c16
-rw-r--r--drivers/net/wireless/wavelan_cs.c1
-rw-r--r--drivers/net/wireless/wl3501_cs.c1
-rw-r--r--drivers/parport/parport_cs.c5
-rw-r--r--drivers/pcmcia/pcmcia_resource.c6
-rw-r--r--drivers/scsi/pcmcia/aha152x_stub.c1
-rw-r--r--drivers/scsi/pcmcia/fdomain_stub.c1
-rw-r--r--drivers/scsi/pcmcia/nsp_cs.c15
-rw-r--r--drivers/scsi/pcmcia/qlogic_stub.c1
-rw-r--r--drivers/scsi/pcmcia/sym53c500_cs.c1
-rw-r--r--drivers/serial/serial_cs.c12
-rw-r--r--drivers/telephony/ixj_pcmcia.c3
-rw-r--r--drivers/usb/host/sl811_cs.c15
-rw-r--r--include/pcmcia/cs.h2
-rw-r--r--sound/pcmcia/pdaudiocf/pdaudiocf.c4
-rw-r--r--sound/pcmcia/vx/vxpocket.c1
46 files changed, 64 insertions, 207 deletions
diff --git a/drivers/bluetooth/bluecard_cs.c b/drivers/bluetooth/bluecard_cs.c
index bb833b251b68..8e23f9ad3e63 100644
--- a/drivers/bluetooth/bluecard_cs.c
+++ b/drivers/bluetooth/bluecard_cs.c
@@ -878,7 +878,6 @@ static int bluecard_attach(struct pcmcia_device *p_dev)
878 link->irq.Instance = info; 878 link->irq.Instance = info;
879 879
880 link->conf.Attributes = CONF_ENABLE_IRQ; 880 link->conf.Attributes = CONF_ENABLE_IRQ;
881 link->conf.Vcc = 50;
882 link->conf.IntType = INT_MEMORY_AND_IO; 881 link->conf.IntType = INT_MEMORY_AND_IO;
883 882
884 link->handle = p_dev; 883 link->handle = p_dev;
@@ -925,7 +924,6 @@ static void bluecard_config(dev_link_t *link)
925 tuple_t tuple; 924 tuple_t tuple;
926 u_short buf[256]; 925 u_short buf[256];
927 cisparse_t parse; 926 cisparse_t parse;
928 config_info_t config;
929 int i, n, last_ret, last_fn; 927 int i, n, last_ret, last_fn;
930 928
931 tuple.TupleData = (cisdata_t *)buf; 929 tuple.TupleData = (cisdata_t *)buf;
@@ -945,8 +943,6 @@ static void bluecard_config(dev_link_t *link)
945 943
946 /* Configure card */ 944 /* Configure card */
947 link->state |= DEV_CONFIG; 945 link->state |= DEV_CONFIG;
948 i = pcmcia_get_configuration_info(handle, &config);
949 link->conf.Vcc = config.Vcc;
950 946
951 link->conf.ConfigIndex = 0x20; 947 link->conf.ConfigIndex = 0x20;
952 link->io.NumPorts1 = 64; 948 link->io.NumPorts1 = 64;
diff --git a/drivers/bluetooth/bt3c_cs.c b/drivers/bluetooth/bt3c_cs.c
index 7b0f4f0beada..0b848050b0cc 100644
--- a/drivers/bluetooth/bt3c_cs.c
+++ b/drivers/bluetooth/bt3c_cs.c
@@ -670,7 +670,6 @@ static int bt3c_attach(struct pcmcia_device *p_dev)
670 link->irq.Instance = info; 670 link->irq.Instance = info;
671 671
672 link->conf.Attributes = CONF_ENABLE_IRQ; 672 link->conf.Attributes = CONF_ENABLE_IRQ;
673 link->conf.Vcc = 50;
674 link->conf.IntType = INT_MEMORY_AND_IO; 673 link->conf.IntType = INT_MEMORY_AND_IO;
675 674
676 link->handle = p_dev; 675 link->handle = p_dev;
@@ -728,7 +727,6 @@ static void bt3c_config(dev_link_t *link)
728 u_short buf[256]; 727 u_short buf[256];
729 cisparse_t parse; 728 cisparse_t parse;
730 cistpl_cftable_entry_t *cf = &parse.cftable_entry; 729 cistpl_cftable_entry_t *cf = &parse.cftable_entry;
731 config_info_t config;
732 int i, j, try, last_ret, last_fn; 730 int i, j, try, last_ret, last_fn;
733 731
734 tuple.TupleData = (cisdata_t *)buf; 732 tuple.TupleData = (cisdata_t *)buf;
@@ -748,8 +746,6 @@ static void bt3c_config(dev_link_t *link)
748 746
749 /* Configure card */ 747 /* Configure card */
750 link->state |= DEV_CONFIG; 748 link->state |= DEV_CONFIG;
751 i = pcmcia_get_configuration_info(handle, &config);
752 link->conf.Vcc = config.Vcc;
753 749
754 /* First pass: look for a config entry that looks normal. */ 750 /* First pass: look for a config entry that looks normal. */
755 tuple.TupleData = (cisdata_t *)buf; 751 tuple.TupleData = (cisdata_t *)buf;
@@ -764,7 +760,7 @@ static void bt3c_config(dev_link_t *link)
764 if (i != CS_SUCCESS) 760 if (i != CS_SUCCESS)
765 goto next_entry; 761 goto next_entry;
766 if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM)) 762 if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
767 link->conf.Vpp1 = link->conf.Vpp2 = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000; 763 link->conf.Vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
768 if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) { 764 if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) {
769 link->conf.ConfigIndex = cf->index; 765 link->conf.ConfigIndex = cf->index;
770 link->io.BasePort1 = cf->io.win[0].base; 766 link->io.BasePort1 = cf->io.win[0].base;
diff --git a/drivers/bluetooth/btuart_cs.c b/drivers/bluetooth/btuart_cs.c
index 9a507bdb8bc6..ec19a577b429 100644
--- a/drivers/bluetooth/btuart_cs.c
+++ b/drivers/bluetooth/btuart_cs.c
@@ -598,7 +598,6 @@ static int btuart_attach(struct pcmcia_device *p_dev)
598 link->irq.Instance = info; 598 link->irq.Instance = info;
599 599
600 link->conf.Attributes = CONF_ENABLE_IRQ; 600 link->conf.Attributes = CONF_ENABLE_IRQ;
601 link->conf.Vcc = 50;
602 link->conf.IntType = INT_MEMORY_AND_IO; 601 link->conf.IntType = INT_MEMORY_AND_IO;
603 602
604 link->handle = p_dev; 603 link->handle = p_dev;
@@ -656,7 +655,6 @@ static void btuart_config(dev_link_t *link)
656 u_short buf[256]; 655 u_short buf[256];
657 cisparse_t parse; 656 cisparse_t parse;
658 cistpl_cftable_entry_t *cf = &parse.cftable_entry; 657 cistpl_cftable_entry_t *cf = &parse.cftable_entry;
659 config_info_t config;
660 int i, j, try, last_ret, last_fn; 658 int i, j, try, last_ret, last_fn;
661 659
662 tuple.TupleData = (cisdata_t *)buf; 660 tuple.TupleData = (cisdata_t *)buf;
@@ -676,8 +674,6 @@ static void btuart_config(dev_link_t *link)
676 674
677 /* Configure card */ 675 /* Configure card */
678 link->state |= DEV_CONFIG; 676 link->state |= DEV_CONFIG;
679 i = pcmcia_get_configuration_info(handle, &config);
680 link->conf.Vcc = config.Vcc;
681 677
682 /* First pass: look for a config entry that looks normal. */ 678 /* First pass: look for a config entry that looks normal. */
683 tuple.TupleData = (cisdata_t *) buf; 679 tuple.TupleData = (cisdata_t *) buf;
@@ -692,7 +688,7 @@ static void btuart_config(dev_link_t *link)
692 if (i != CS_SUCCESS) 688 if (i != CS_SUCCESS)
693 goto next_entry; 689 goto next_entry;
694 if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM)) 690 if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
695 link->conf.Vpp1 = link->conf.Vpp2 = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000; 691 link->conf.Vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
696 if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) { 692 if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) {
697 link->conf.ConfigIndex = cf->index; 693 link->conf.ConfigIndex = cf->index;
698 link->io.BasePort1 = cf->io.win[0].base; 694 link->io.BasePort1 = cf->io.win[0].base;
diff --git a/drivers/bluetooth/dtl1_cs.c b/drivers/bluetooth/dtl1_cs.c
index 39dbe7300d0f..86617ee80e59 100644
--- a/drivers/bluetooth/dtl1_cs.c
+++ b/drivers/bluetooth/dtl1_cs.c
@@ -577,7 +577,6 @@ static int dtl1_attach(struct pcmcia_device *p_dev)
577 link->irq.Instance = info; 577 link->irq.Instance = info;
578 578
579 link->conf.Attributes = CONF_ENABLE_IRQ; 579 link->conf.Attributes = CONF_ENABLE_IRQ;
580 link->conf.Vcc = 50;
581 link->conf.IntType = INT_MEMORY_AND_IO; 580 link->conf.IntType = INT_MEMORY_AND_IO;
582 581
583 link->handle = p_dev; 582 link->handle = p_dev;
@@ -634,7 +633,6 @@ static void dtl1_config(dev_link_t *link)
634 u_short buf[256]; 633 u_short buf[256];
635 cisparse_t parse; 634 cisparse_t parse;
636 cistpl_cftable_entry_t *cf = &parse.cftable_entry; 635 cistpl_cftable_entry_t *cf = &parse.cftable_entry;
637 config_info_t config;
638 int i, last_ret, last_fn; 636 int i, last_ret, last_fn;
639 637
640 tuple.TupleData = (cisdata_t *)buf; 638 tuple.TupleData = (cisdata_t *)buf;
@@ -654,8 +652,6 @@ static void dtl1_config(dev_link_t *link)
654 652
655 /* Configure card */ 653 /* Configure card */
656 link->state |= DEV_CONFIG; 654 link->state |= DEV_CONFIG;
657 i = pcmcia_get_configuration_info(handle, &config);
658 link->conf.Vcc = config.Vcc;
659 655
660 tuple.TupleData = (cisdata_t *)buf; 656 tuple.TupleData = (cisdata_t *)buf;
661 tuple.TupleOffset = 0; 657 tuple.TupleOffset = 0;
diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c
index 870decbdf7ca..c996ae1375be 100644
--- a/drivers/char/pcmcia/cm4000_cs.c
+++ b/drivers/char/pcmcia/cm4000_cs.c
@@ -1765,7 +1765,6 @@ static void cm4000_config(dev_link_t * link, int devno)
1765 struct cm4000_dev *dev; 1765 struct cm4000_dev *dev;
1766 tuple_t tuple; 1766 tuple_t tuple;
1767 cisparse_t parse; 1767 cisparse_t parse;
1768 config_info_t conf;
1769 u_char buf[64]; 1768 u_char buf[64];
1770 int fail_fn, fail_rc; 1769 int fail_fn, fail_rc;
1771 int rc; 1770 int rc;
@@ -1790,16 +1789,10 @@ static void cm4000_config(dev_link_t * link, int devno)
1790 fail_fn = ParseTuple; 1789 fail_fn = ParseTuple;
1791 goto cs_failed; 1790 goto cs_failed;
1792 } 1791 }
1793 if ((fail_rc =
1794 pcmcia_get_configuration_info(handle, &conf)) != CS_SUCCESS) {
1795 fail_fn = GetConfigurationInfo;
1796 goto cs_failed;
1797 }
1798 1792
1799 link->state |= DEV_CONFIG; 1793 link->state |= DEV_CONFIG;
1800 link->conf.ConfigBase = parse.config.base; 1794 link->conf.ConfigBase = parse.config.base;
1801 link->conf.Present = parse.config.rmask[0]; 1795 link->conf.Present = parse.config.rmask[0];
1802 link->conf.Vcc = conf.Vcc;
1803 1796
1804 link->io.BasePort2 = 0; 1797 link->io.BasePort2 = 0;
1805 link->io.NumPorts2 = 0; 1798 link->io.NumPorts2 = 0;
diff --git a/drivers/char/pcmcia/cm4040_cs.c b/drivers/char/pcmcia/cm4040_cs.c
index 47f10c8b8886..94ecd0342b72 100644
--- a/drivers/char/pcmcia/cm4040_cs.c
+++ b/drivers/char/pcmcia/cm4040_cs.c
@@ -520,7 +520,6 @@ static void reader_config(dev_link_t *link, int devno)
520 struct reader_dev *dev; 520 struct reader_dev *dev;
521 tuple_t tuple; 521 tuple_t tuple;
522 cisparse_t parse; 522 cisparse_t parse;
523 config_info_t conf;
524 u_char buf[64]; 523 u_char buf[64];
525 int fail_fn, fail_rc; 524 int fail_fn, fail_rc;
526 int rc; 525 int rc;
@@ -546,16 +545,10 @@ static void reader_config(dev_link_t *link, int devno)
546 fail_fn = ParseTuple; 545 fail_fn = ParseTuple;
547 goto cs_failed; 546 goto cs_failed;
548 } 547 }
549 if ((fail_rc = pcmcia_get_configuration_info(handle, &conf))
550 != CS_SUCCESS) {
551 fail_fn = GetConfigurationInfo;
552 goto cs_failed;
553 }
554 548
555 link->state |= DEV_CONFIG; 549 link->state |= DEV_CONFIG;
556 link->conf.ConfigBase = parse.config.base; 550 link->conf.ConfigBase = parse.config.base;
557 link->conf.Present = parse.config.rmask[0]; 551 link->conf.Present = parse.config.rmask[0];
558 link->conf.Vcc = conf.Vcc;
559 552
560 link->io.BasePort2 = 0; 553 link->io.BasePort2 = 0;
561 link->io.NumPorts2 = 0; 554 link->io.NumPorts2 = 0;
diff --git a/drivers/char/pcmcia/synclink_cs.c b/drivers/char/pcmcia/synclink_cs.c
index d3ea53a5a50f..a6cbd3239921 100644
--- a/drivers/char/pcmcia/synclink_cs.c
+++ b/drivers/char/pcmcia/synclink_cs.c
@@ -576,7 +576,6 @@ static int mgslpc_attach(struct pcmcia_device *p_dev)
576 link->irq.Handler = NULL; 576 link->irq.Handler = NULL;
577 577
578 link->conf.Attributes = 0; 578 link->conf.Attributes = 0;
579 link->conf.Vcc = 50;
580 link->conf.IntType = INT_MEMORY_AND_IO; 579 link->conf.IntType = INT_MEMORY_AND_IO;
581 580
582 link->handle = p_dev; 581 link->handle = p_dev;
@@ -604,7 +603,6 @@ static void mgslpc_config(dev_link_t *link)
604 cisparse_t parse; 603 cisparse_t parse;
605 int last_fn, last_ret; 604 int last_fn, last_ret;
606 u_char buf[64]; 605 u_char buf[64];
607 config_info_t conf;
608 cistpl_cftable_entry_t dflt = { 0 }; 606 cistpl_cftable_entry_t dflt = { 0 };
609 cistpl_cftable_entry_t *cfg; 607 cistpl_cftable_entry_t *cfg;
610 608
@@ -626,10 +624,6 @@ static void mgslpc_config(dev_link_t *link)
626 /* Configure card */ 624 /* Configure card */
627 link->state |= DEV_CONFIG; 625 link->state |= DEV_CONFIG;
628 626
629 /* Look up the current Vcc */
630 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &conf));
631 link->conf.Vcc = conf.Vcc;
632
633 /* get CIS configuration entry */ 627 /* get CIS configuration entry */
634 628
635 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; 629 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
@@ -662,7 +656,6 @@ static void mgslpc_config(dev_link_t *link)
662 } 656 }
663 657
664 link->conf.Attributes = CONF_ENABLE_IRQ; 658 link->conf.Attributes = CONF_ENABLE_IRQ;
665 link->conf.Vcc = 50;
666 link->conf.IntType = INT_MEMORY_AND_IO; 659 link->conf.IntType = INT_MEMORY_AND_IO;
667 link->conf.ConfigIndex = 8; 660 link->conf.ConfigIndex = 8;
668 link->conf.Present = PRESENT_OPTION; 661 link->conf.Present = PRESENT_OPTION;
diff --git a/drivers/ide/legacy/ide-cs.c b/drivers/ide/legacy/ide-cs.c
index 7ad8a95969fb..3b5b55f85e23 100644
--- a/drivers/ide/legacy/ide-cs.c
+++ b/drivers/ide/legacy/ide-cs.c
@@ -122,7 +122,6 @@ static int ide_attach(struct pcmcia_device *p_dev)
122 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; 122 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
123 link->irq.IRQInfo1 = IRQ_LEVEL_ID; 123 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
124 link->conf.Attributes = CONF_ENABLE_IRQ; 124 link->conf.Attributes = CONF_ENABLE_IRQ;
125 link->conf.Vcc = 50;
126 link->conf.IntType = INT_MEMORY_AND_IO; 125 link->conf.IntType = INT_MEMORY_AND_IO;
127 126
128 link->handle = p_dev; 127 link->handle = p_dev;
@@ -222,7 +221,6 @@ static void ide_config(dev_link_t *link)
222 221
223 /* Not sure if this is right... look up the current Vcc */ 222 /* Not sure if this is right... look up the current Vcc */
224 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &stk->conf)); 223 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &stk->conf));
225 link->conf.Vcc = stk->conf.Vcc;
226 224
227 pass = io_base = ctl_base = 0; 225 pass = io_base = ctl_base = 0;
228 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; 226 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
@@ -244,10 +242,10 @@ static void ide_config(dev_link_t *link)
244 } 242 }
245 243
246 if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM)) 244 if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM))
247 link->conf.Vpp1 = link->conf.Vpp2 = 245 link->conf.Vpp =
248 cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000; 246 cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000;
249 else if (stk->dflt.vpp1.present & (1 << CISTPL_POWER_VNOM)) 247 else if (stk->dflt.vpp1.present & (1 << CISTPL_POWER_VNOM))
250 link->conf.Vpp1 = link->conf.Vpp2 = 248 link->conf.Vpp =
251 stk->dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000; 249 stk->dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000;
252 250
253 if ((cfg->io.nwin > 0) || (stk->dflt.io.nwin > 0)) { 251 if ((cfg->io.nwin > 0) || (stk->dflt.io.nwin > 0)) {
@@ -329,9 +327,8 @@ static void ide_config(dev_link_t *link)
329 info->node.minor = 0; 327 info->node.minor = 0;
330 info->hd = hd; 328 info->hd = hd;
331 link->dev = &info->node; 329 link->dev = &info->node;
332 printk(KERN_INFO "ide-cs: %s: Vcc = %d.%d, Vpp = %d.%d\n", 330 printk(KERN_INFO "ide-cs: %s: Vpp = %d.%d\n",
333 info->node.dev_name, link->conf.Vcc / 10, link->conf.Vcc % 10, 331 info->node.dev_name, link->conf.Vpp / 10, link->conf.Vpp % 10);
334 link->conf.Vpp1 / 10, link->conf.Vpp1 % 10);
335 332
336 link->state &= ~DEV_CONFIG_PENDING; 333 link->state &= ~DEV_CONFIG_PENDING;
337 kfree(stk); 334 kfree(stk);
diff --git a/drivers/isdn/hardware/avm/avm_cs.c b/drivers/isdn/hardware/avm/avm_cs.c
index ae70247d5157..0c504dc49acf 100644
--- a/drivers/isdn/hardware/avm/avm_cs.c
+++ b/drivers/isdn/hardware/avm/avm_cs.c
@@ -123,7 +123,6 @@ static int avmcs_attach(struct pcmcia_device *p_dev)
123 123
124 /* General socket configuration */ 124 /* General socket configuration */
125 link->conf.Attributes = CONF_ENABLE_IRQ; 125 link->conf.Attributes = CONF_ENABLE_IRQ;
126 link->conf.Vcc = 50;
127 link->conf.IntType = INT_MEMORY_AND_IO; 126 link->conf.IntType = INT_MEMORY_AND_IO;
128 link->conf.ConfigIndex = 1; 127 link->conf.ConfigIndex = 1;
129 link->conf.Present = PRESENT_OPTION; 128 link->conf.Present = PRESENT_OPTION;
diff --git a/drivers/isdn/hisax/avma1_cs.c b/drivers/isdn/hisax/avma1_cs.c
index 5e847cfb96f8..8d23e5ab8d01 100644
--- a/drivers/isdn/hisax/avma1_cs.c
+++ b/drivers/isdn/hisax/avma1_cs.c
@@ -153,7 +153,6 @@ static int avma1cs_attach(struct pcmcia_device *p_dev)
153 153
154 /* General socket configuration */ 154 /* General socket configuration */
155 link->conf.Attributes = CONF_ENABLE_IRQ; 155 link->conf.Attributes = CONF_ENABLE_IRQ;
156 link->conf.Vcc = 50;
157 link->conf.IntType = INT_MEMORY_AND_IO; 156 link->conf.IntType = INT_MEMORY_AND_IO;
158 link->conf.ConfigIndex = 1; 157 link->conf.ConfigIndex = 1;
159 link->conf.Present = PRESENT_OPTION; 158 link->conf.Present = PRESENT_OPTION;
diff --git a/drivers/isdn/hisax/elsa_cs.c b/drivers/isdn/hisax/elsa_cs.c
index b76b303ebf6b..00835d537c10 100644
--- a/drivers/isdn/hisax/elsa_cs.c
+++ b/drivers/isdn/hisax/elsa_cs.c
@@ -170,7 +170,6 @@ static int elsa_cs_attach(struct pcmcia_device *p_dev)
170 link->io.IOAddrLines = 3; 170 link->io.IOAddrLines = 3;
171 171
172 link->conf.Attributes = CONF_ENABLE_IRQ; 172 link->conf.Attributes = CONF_ENABLE_IRQ;
173 link->conf.Vcc = 50;
174 link->conf.IntType = INT_MEMORY_AND_IO; 173 link->conf.IntType = INT_MEMORY_AND_IO;
175 174
176 link->handle = p_dev; 175 link->handle = p_dev;
@@ -324,11 +323,8 @@ static void elsa_cs_config(dev_link_t *link)
324 link->dev = &dev->node; 323 link->dev = &dev->node;
325 324
326 /* Finally, report what we've done */ 325 /* Finally, report what we've done */
327 printk(KERN_INFO "%s: index 0x%02x: Vcc %d.%d", 326 printk(KERN_INFO "%s: index 0x%02x: ",
328 dev->node.dev_name, link->conf.ConfigIndex, 327 dev->node.dev_name, link->conf.ConfigIndex);
329 link->conf.Vcc/10, link->conf.Vcc%10);
330 if (link->conf.Vpp1)
331 printk(", Vpp %d.%d", link->conf.Vpp1/10, link->conf.Vpp1%10);
332 if (link->conf.Attributes & CONF_ENABLE_IRQ) 328 if (link->conf.Attributes & CONF_ENABLE_IRQ)
333 printk(", irq %d", link->irq.AssignedIRQ); 329 printk(", irq %d", link->irq.AssignedIRQ);
334 if (link->io.NumPorts1) 330 if (link->io.NumPorts1)
diff --git a/drivers/isdn/hisax/sedlbauer_cs.c b/drivers/isdn/hisax/sedlbauer_cs.c
index 5745eb1afe35..a3cd1c556352 100644
--- a/drivers/isdn/hisax/sedlbauer_cs.c
+++ b/drivers/isdn/hisax/sedlbauer_cs.c
@@ -184,7 +184,6 @@ static int sedlbauer_attach(struct pcmcia_device *p_dev)
184 184
185 185
186 link->conf.Attributes = 0; 186 link->conf.Attributes = 0;
187 link->conf.Vcc = 50;
188 link->conf.IntType = INT_MEMORY_AND_IO; 187 link->conf.IntType = INT_MEMORY_AND_IO;
189 188
190 link->handle = p_dev; 189 link->handle = p_dev;
@@ -263,9 +262,7 @@ static void sedlbauer_config(dev_link_t *link)
263 /* Configure card */ 262 /* Configure card */
264 link->state |= DEV_CONFIG; 263 link->state |= DEV_CONFIG;
265 264
266 /* Look up the current Vcc */
267 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &conf)); 265 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &conf));
268 link->conf.Vcc = conf.Vcc;
269 266
270 /* 267 /*
271 In this loop, we scan the CIS for configuration table entries, 268 In this loop, we scan the CIS for configuration table entries,
@@ -309,10 +306,10 @@ static void sedlbauer_config(dev_link_t *link)
309 } 306 }
310 307
311 if (cfg->vpp1.present & (1<<CISTPL_POWER_VNOM)) 308 if (cfg->vpp1.present & (1<<CISTPL_POWER_VNOM))
312 link->conf.Vpp1 = link->conf.Vpp2 = 309 link->conf.Vpp =
313 cfg->vpp1.param[CISTPL_POWER_VNOM]/10000; 310 cfg->vpp1.param[CISTPL_POWER_VNOM]/10000;
314 else if (dflt.vpp1.present & (1<<CISTPL_POWER_VNOM)) 311 else if (dflt.vpp1.present & (1<<CISTPL_POWER_VNOM))
315 link->conf.Vpp1 = link->conf.Vpp2 = 312 link->conf.Vpp =
316 dflt.vpp1.param[CISTPL_POWER_VNOM]/10000; 313 dflt.vpp1.param[CISTPL_POWER_VNOM]/10000;
317 314
318 /* Do we need to allocate an interrupt? */ 315 /* Do we need to allocate an interrupt? */
@@ -403,11 +400,10 @@ static void sedlbauer_config(dev_link_t *link)
403 link->dev = &dev->node; 400 link->dev = &dev->node;
404 401
405 /* Finally, report what we've done */ 402 /* Finally, report what we've done */
406 printk(KERN_INFO "%s: index 0x%02x: Vcc %d.%d", 403 printk(KERN_INFO "%s: index 0x%02x:",
407 dev->node.dev_name, link->conf.ConfigIndex, 404 dev->node.dev_name, link->conf.ConfigIndex);
408 link->conf.Vcc/10, link->conf.Vcc%10); 405 if (link->conf.Vpp)
409 if (link->conf.Vpp1) 406 printk(", Vpp %d.%d", link->conf.Vpp/10, link->conf.Vpp%10);
410 printk(", Vpp %d.%d", link->conf.Vpp1/10, link->conf.Vpp1%10);
411 if (link->conf.Attributes & CONF_ENABLE_IRQ) 407 if (link->conf.Attributes & CONF_ENABLE_IRQ)
412 printk(", irq %d", link->irq.AssignedIRQ); 408 printk(", irq %d", link->irq.AssignedIRQ);
413 if (link->io.NumPorts1) 409 if (link->io.NumPorts1)
diff --git a/drivers/isdn/hisax/teles_cs.c b/drivers/isdn/hisax/teles_cs.c
index 929507eb63af..040f098d4b26 100644
--- a/drivers/isdn/hisax/teles_cs.c
+++ b/drivers/isdn/hisax/teles_cs.c
@@ -161,7 +161,6 @@ static int teles_attach(struct pcmcia_device *p_dev)
161 link->io.IOAddrLines = 5; 161 link->io.IOAddrLines = 5;
162 162
163 link->conf.Attributes = CONF_ENABLE_IRQ; 163 link->conf.Attributes = CONF_ENABLE_IRQ;
164 link->conf.Vcc = 50;
165 link->conf.IntType = INT_MEMORY_AND_IO; 164 link->conf.IntType = INT_MEMORY_AND_IO;
166 165
167 link->handle = p_dev; 166 link->handle = p_dev;
@@ -315,11 +314,8 @@ static void teles_cs_config(dev_link_t *link)
315 link->dev = &dev->node; 314 link->dev = &dev->node;
316 315
317 /* Finally, report what we've done */ 316 /* Finally, report what we've done */
318 printk(KERN_INFO "%s: index 0x%02x: Vcc %d.%d", 317 printk(KERN_INFO "%s: index 0x%02x:",
319 dev->node.dev_name, link->conf.ConfigIndex, 318 dev->node.dev_name, link->conf.ConfigIndex);
320 link->conf.Vcc/10, link->conf.Vcc%10);
321 if (link->conf.Vpp1)
322 printk(", Vpp %d.%d", link->conf.Vpp1/10, link->conf.Vpp1%10);
323 if (link->conf.Attributes & CONF_ENABLE_IRQ) 319 if (link->conf.Attributes & CONF_ENABLE_IRQ)
324 printk(", irq %d", link->irq.AssignedIRQ); 320 printk(", irq %d", link->irq.AssignedIRQ);
325 if (link->io.NumPorts1) 321 if (link->io.NumPorts1)
diff --git a/drivers/mtd/maps/pcmciamtd.c b/drivers/mtd/maps/pcmciamtd.c
index f45ff2581dd3..0026460be153 100644
--- a/drivers/mtd/maps/pcmciamtd.c
+++ b/drivers/mtd/maps/pcmciamtd.c
@@ -587,13 +587,10 @@ static void pcmciamtd_config(dev_link_t *link)
587 DEBUG(2, "Vcc = %d Vpp1 = %d Vpp2 = %d", t.Vcc, t.Vpp1, t.Vpp2); 587 DEBUG(2, "Vcc = %d Vpp1 = %d Vpp2 = %d", t.Vcc, t.Vpp1, t.Vpp2);
588 dev->vpp = (vpp) ? vpp : t.Vpp1; 588 dev->vpp = (vpp) ? vpp : t.Vpp1;
589 link->conf.Attributes = 0; 589 link->conf.Attributes = 0;
590 link->conf.Vcc = t.Vcc;
591 if(setvpp == 2) { 590 if(setvpp == 2) {
592 link->conf.Vpp1 = dev->vpp; 591 link->conf.Vpp = dev->vpp;
593 link->conf.Vpp2 = dev->vpp;
594 } else { 592 } else {
595 link->conf.Vpp1 = 0; 593 link->conf.Vpp = 0;
596 link->conf.Vpp2 = 0;
597 } 594 }
598 595
599 link->conf.IntType = INT_MEMORY; 596 link->conf.IntType = INT_MEMORY;
diff --git a/drivers/net/pcmcia/3c574_cs.c b/drivers/net/pcmcia/3c574_cs.c
index 8dfa30b3c70a..179c9b7ad044 100644
--- a/drivers/net/pcmcia/3c574_cs.c
+++ b/drivers/net/pcmcia/3c574_cs.c
@@ -280,7 +280,6 @@ static int tc574_attach(struct pcmcia_device *p_dev)
280 link->irq.Handler = &el3_interrupt; 280 link->irq.Handler = &el3_interrupt;
281 link->irq.Instance = dev; 281 link->irq.Instance = dev;
282 link->conf.Attributes = CONF_ENABLE_IRQ; 282 link->conf.Attributes = CONF_ENABLE_IRQ;
283 link->conf.Vcc = 50;
284 link->conf.IntType = INT_MEMORY_AND_IO; 283 link->conf.IntType = INT_MEMORY_AND_IO;
285 link->conf.ConfigIndex = 1; 284 link->conf.ConfigIndex = 1;
286 link->conf.Present = PRESENT_OPTION; 285 link->conf.Present = PRESENT_OPTION;
diff --git a/drivers/net/pcmcia/3c589_cs.c b/drivers/net/pcmcia/3c589_cs.c
index b15066be26f8..7e8036f2e19e 100644
--- a/drivers/net/pcmcia/3c589_cs.c
+++ b/drivers/net/pcmcia/3c589_cs.c
@@ -194,7 +194,6 @@ static int tc589_attach(struct pcmcia_device *p_dev)
194 link->irq.Handler = &el3_interrupt; 194 link->irq.Handler = &el3_interrupt;
195 link->irq.Instance = dev; 195 link->irq.Instance = dev;
196 link->conf.Attributes = CONF_ENABLE_IRQ; 196 link->conf.Attributes = CONF_ENABLE_IRQ;
197 link->conf.Vcc = 50;
198 link->conf.IntType = INT_MEMORY_AND_IO; 197 link->conf.IntType = INT_MEMORY_AND_IO;
199 link->conf.ConfigIndex = 1; 198 link->conf.ConfigIndex = 1;
200 link->conf.Present = PRESENT_OPTION; 199 link->conf.Present = PRESENT_OPTION;
diff --git a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c
index c34547c79245..5ca0d5718583 100644
--- a/drivers/net/pcmcia/axnet_cs.c
+++ b/drivers/net/pcmcia/axnet_cs.c
@@ -302,7 +302,6 @@ static void axnet_config(dev_link_t *link)
302 cisparse_t parse; 302 cisparse_t parse;
303 int i, j, last_ret, last_fn; 303 int i, j, last_ret, last_fn;
304 u_short buf[64]; 304 u_short buf[64];
305 config_info_t conf;
306 305
307 DEBUG(0, "axnet_config(0x%p)\n", link); 306 DEBUG(0, "axnet_config(0x%p)\n", link);
308 307
@@ -321,10 +320,6 @@ static void axnet_config(dev_link_t *link)
321 /* Configure card */ 320 /* Configure card */
322 link->state |= DEV_CONFIG; 321 link->state |= DEV_CONFIG;
323 322
324 /* Look up current Vcc */
325 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &conf));
326 link->conf.Vcc = conf.Vcc;
327
328 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; 323 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
329 tuple.Attributes = 0; 324 tuple.Attributes = 0;
330 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); 325 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple));
diff --git a/drivers/net/pcmcia/com20020_cs.c b/drivers/net/pcmcia/com20020_cs.c
index 0748c3d49544..e14d3d18b97d 100644
--- a/drivers/net/pcmcia/com20020_cs.c
+++ b/drivers/net/pcmcia/com20020_cs.c
@@ -178,7 +178,6 @@ static int com20020_attach(struct pcmcia_device *p_dev)
178 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; 178 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
179 link->irq.IRQInfo1 = IRQ_LEVEL_ID; 179 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
180 link->conf.Attributes = CONF_ENABLE_IRQ; 180 link->conf.Attributes = CONF_ENABLE_IRQ;
181 link->conf.Vcc = 50;
182 link->conf.IntType = INT_MEMORY_AND_IO; 181 link->conf.IntType = INT_MEMORY_AND_IO;
183 link->conf.Present = PRESENT_OPTION; 182 link->conf.Present = PRESENT_OPTION;
184 183
diff --git a/drivers/net/pcmcia/fmvj18x_cs.c b/drivers/net/pcmcia/fmvj18x_cs.c
index 62efbc7c2dca..34bf963b1296 100644
--- a/drivers/net/pcmcia/fmvj18x_cs.c
+++ b/drivers/net/pcmcia/fmvj18x_cs.c
@@ -257,7 +257,6 @@ static int fmvj18x_attach(struct pcmcia_device *p_dev)
257 257
258 /* General socket configuration */ 258 /* General socket configuration */
259 link->conf.Attributes = CONF_ENABLE_IRQ; 259 link->conf.Attributes = CONF_ENABLE_IRQ;
260 link->conf.Vcc = 50;
261 link->conf.IntType = INT_MEMORY_AND_IO; 260 link->conf.IntType = INT_MEMORY_AND_IO;
262 261
263 /* The FMVJ18x specific entries in the device structure. */ 262 /* The FMVJ18x specific entries in the device structure. */
@@ -396,12 +395,7 @@ static void fmvj18x_config(dev_link_t *link)
396 switch (le16_to_cpu(buf[0])) { 395 switch (le16_to_cpu(buf[0])) {
397 case MANFID_TDK: 396 case MANFID_TDK:
398 cardtype = TDK; 397 cardtype = TDK;
399 if (le16_to_cpu(buf[1]) == PRODID_TDK_CF010) { 398 if (le16_to_cpu(buf[1]) == PRODID_TDK_GN3410
400 cs_status_t status;
401 pcmcia_get_status(handle, &status);
402 if (status.CardState & CS_EVENT_3VCARD)
403 link->conf.Vcc = 33; /* inserted in 3.3V slot */
404 } else if (le16_to_cpu(buf[1]) == PRODID_TDK_GN3410
405 || le16_to_cpu(buf[1]) == PRODID_TDK_NP9610 399 || le16_to_cpu(buf[1]) == PRODID_TDK_NP9610
406 || le16_to_cpu(buf[1]) == PRODID_TDK_MN3200) { 400 || le16_to_cpu(buf[1]) == PRODID_TDK_MN3200) {
407 /* MultiFunction Card */ 401 /* MultiFunction Card */
diff --git a/drivers/net/pcmcia/ibmtr_cs.c b/drivers/net/pcmcia/ibmtr_cs.c
index 6d7f8f52e175..904c5cb04e71 100644
--- a/drivers/net/pcmcia/ibmtr_cs.c
+++ b/drivers/net/pcmcia/ibmtr_cs.c
@@ -167,7 +167,6 @@ static int ibmtr_attach(struct pcmcia_device *p_dev)
167 link->irq.IRQInfo1 = IRQ_LEVEL_ID; 167 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
168 link->irq.Handler = &tok_interrupt; 168 link->irq.Handler = &tok_interrupt;
169 link->conf.Attributes = CONF_ENABLE_IRQ; 169 link->conf.Attributes = CONF_ENABLE_IRQ;
170 link->conf.Vcc = 50;
171 link->conf.IntType = INT_MEMORY_AND_IO; 170 link->conf.IntType = INT_MEMORY_AND_IO;
172 link->conf.Present = PRESENT_OPTION; 171 link->conf.Present = PRESENT_OPTION;
173 172
diff --git a/drivers/net/pcmcia/nmclan_cs.c b/drivers/net/pcmcia/nmclan_cs.c
index cf2a50c015da..c25d9451d574 100644
--- a/drivers/net/pcmcia/nmclan_cs.c
+++ b/drivers/net/pcmcia/nmclan_cs.c
@@ -469,7 +469,6 @@ static int nmclan_attach(struct pcmcia_device *p_dev)
469 link->irq.Handler = &mace_interrupt; 469 link->irq.Handler = &mace_interrupt;
470 link->irq.Instance = dev; 470 link->irq.Instance = dev;
471 link->conf.Attributes = CONF_ENABLE_IRQ; 471 link->conf.Attributes = CONF_ENABLE_IRQ;
472 link->conf.Vcc = 50;
473 link->conf.IntType = INT_MEMORY_AND_IO; 472 link->conf.IntType = INT_MEMORY_AND_IO;
474 link->conf.ConfigIndex = 1; 473 link->conf.ConfigIndex = 1;
475 link->conf.Present = PRESENT_OPTION; 474 link->conf.Present = PRESENT_OPTION;
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c
index 3a2b731eeb3c..5a7e58af0b3b 100644
--- a/drivers/net/pcmcia/pcnet_cs.c
+++ b/drivers/net/pcmcia/pcnet_cs.c
@@ -531,7 +531,6 @@ static void pcnet_config(dev_link_t *link)
531 int i, last_ret, last_fn, start_pg, stop_pg, cm_offset; 531 int i, last_ret, last_fn, start_pg, stop_pg, cm_offset;
532 int manfid = 0, prodid = 0, has_shmem = 0; 532 int manfid = 0, prodid = 0, has_shmem = 0;
533 u_short buf[64]; 533 u_short buf[64];
534 config_info_t conf;
535 hw_info_t *hw_info; 534 hw_info_t *hw_info;
536 535
537 DEBUG(0, "pcnet_config(0x%p)\n", link); 536 DEBUG(0, "pcnet_config(0x%p)\n", link);
@@ -550,10 +549,6 @@ static void pcnet_config(dev_link_t *link)
550 /* Configure card */ 549 /* Configure card */
551 link->state |= DEV_CONFIG; 550 link->state |= DEV_CONFIG;
552 551
553 /* Look up current Vcc */
554 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &conf));
555 link->conf.Vcc = conf.Vcc;
556
557 tuple.DesiredTuple = CISTPL_MANFID; 552 tuple.DesiredTuple = CISTPL_MANFID;
558 tuple.Attributes = TUPLE_RETURN_COMMON; 553 tuple.Attributes = TUPLE_RETURN_COMMON;
559 if ((pcmcia_get_first_tuple(handle, &tuple) == CS_SUCCESS) && 554 if ((pcmcia_get_first_tuple(handle, &tuple) == CS_SUCCESS) &&
diff --git a/drivers/net/pcmcia/smc91c92_cs.c b/drivers/net/pcmcia/smc91c92_cs.c
index 86942c09d8da..b46b7e148390 100644
--- a/drivers/net/pcmcia/smc91c92_cs.c
+++ b/drivers/net/pcmcia/smc91c92_cs.c
@@ -334,7 +334,6 @@ static int smc91c92_attach(struct pcmcia_device *p_dev)
334 link->irq.Handler = &smc_interrupt; 334 link->irq.Handler = &smc_interrupt;
335 link->irq.Instance = dev; 335 link->irq.Instance = dev;
336 link->conf.Attributes = CONF_ENABLE_IRQ; 336 link->conf.Attributes = CONF_ENABLE_IRQ;
337 link->conf.Vcc = 50;
338 link->conf.IntType = INT_MEMORY_AND_IO; 337 link->conf.IntType = INT_MEMORY_AND_IO;
339 338
340 /* The SMC91c92-specific entries in the device structure. */ 339 /* The SMC91c92-specific entries in the device structure. */
diff --git a/drivers/net/pcmcia/xirc2ps_cs.c b/drivers/net/pcmcia/xirc2ps_cs.c
index 19347bcb2f15..f5fa86d046d4 100644
--- a/drivers/net/pcmcia/xirc2ps_cs.c
+++ b/drivers/net/pcmcia/xirc2ps_cs.c
@@ -571,7 +571,6 @@ xirc2ps_attach(struct pcmcia_device *p_dev)
571 571
572 /* General socket configuration */ 572 /* General socket configuration */
573 link->conf.Attributes = CONF_ENABLE_IRQ; 573 link->conf.Attributes = CONF_ENABLE_IRQ;
574 link->conf.Vcc = 50;
575 link->conf.IntType = INT_MEMORY_AND_IO; 574 link->conf.IntType = INT_MEMORY_AND_IO;
576 link->conf.ConfigIndex = 1; 575 link->conf.ConfigIndex = 1;
577 link->conf.Present = PRESENT_OPTION; 576 link->conf.Present = PRESENT_OPTION;
diff --git a/drivers/net/wireless/airo_cs.c b/drivers/net/wireless/airo_cs.c
index adb90b679d7d..2216c04a02af 100644
--- a/drivers/net/wireless/airo_cs.c
+++ b/drivers/net/wireless/airo_cs.c
@@ -168,7 +168,6 @@ static int airo_attach(struct pcmcia_device *p_dev)
168 device, and can be hard-wired here. 168 device, and can be hard-wired here.
169 */ 169 */
170 link->conf.Attributes = 0; 170 link->conf.Attributes = 0;
171 link->conf.Vcc = 50;
172 link->conf.IntType = INT_MEMORY_AND_IO; 171 link->conf.IntType = INT_MEMORY_AND_IO;
173 172
174 /* Allocate space for private device-specific data */ 173 /* Allocate space for private device-specific data */
@@ -294,16 +293,11 @@ static void airo_config(dev_link_t *link)
294 293
295 /* Use power settings for Vcc and Vpp if present */ 294 /* Use power settings for Vcc and Vpp if present */
296 /* Note that the CIS values need to be rescaled */ 295 /* Note that the CIS values need to be rescaled */
297 if (cfg->vcc.present & (1<<CISTPL_POWER_VNOM))
298 link->conf.Vcc = cfg->vcc.param[CISTPL_POWER_VNOM]/10000;
299 else if (dflt.vcc.present & (1<<CISTPL_POWER_VNOM))
300 link->conf.Vcc = dflt.vcc.param[CISTPL_POWER_VNOM]/10000;
301
302 if (cfg->vpp1.present & (1<<CISTPL_POWER_VNOM)) 296 if (cfg->vpp1.present & (1<<CISTPL_POWER_VNOM))
303 link->conf.Vpp1 = link->conf.Vpp2 = 297 link->conf.Vpp =
304 cfg->vpp1.param[CISTPL_POWER_VNOM]/10000; 298 cfg->vpp1.param[CISTPL_POWER_VNOM]/10000;
305 else if (dflt.vpp1.present & (1<<CISTPL_POWER_VNOM)) 299 else if (dflt.vpp1.present & (1<<CISTPL_POWER_VNOM))
306 link->conf.Vpp1 = link->conf.Vpp2 = 300 link->conf.Vpp =
307 dflt.vpp1.param[CISTPL_POWER_VNOM]/10000; 301 dflt.vpp1.param[CISTPL_POWER_VNOM]/10000;
308 302
309 /* Do we need to allocate an interrupt? */ 303 /* Do we need to allocate an interrupt? */
@@ -391,11 +385,10 @@ static void airo_config(dev_link_t *link)
391 link->dev = &dev->node; 385 link->dev = &dev->node;
392 386
393 /* Finally, report what we've done */ 387 /* Finally, report what we've done */
394 printk(KERN_INFO "%s: index 0x%02x: Vcc %d.%d", 388 printk(KERN_INFO "%s: index 0x%02x: ",
395 dev->node.dev_name, link->conf.ConfigIndex, 389 dev->node.dev_name, link->conf.ConfigIndex);
396 link->conf.Vcc/10, link->conf.Vcc%10); 390 if (link->conf.Vpp)
397 if (link->conf.Vpp1) 391 printk(", Vpp %d.%d", link->conf.Vpp/10, link->conf.Vpp%10);
398 printk(", Vpp %d.%d", link->conf.Vpp1/10, link->conf.Vpp1%10);
399 if (link->conf.Attributes & CONF_ENABLE_IRQ) 392 if (link->conf.Attributes & CONF_ENABLE_IRQ)
400 printk(", irq %d", link->irq.AssignedIRQ); 393 printk(", irq %d", link->irq.AssignedIRQ);
401 if (link->io.NumPorts1) 394 if (link->io.NumPorts1)
diff --git a/drivers/net/wireless/atmel_cs.c b/drivers/net/wireless/atmel_cs.c
index 89dbc783ff80..53fdaa22226d 100644
--- a/drivers/net/wireless/atmel_cs.c
+++ b/drivers/net/wireless/atmel_cs.c
@@ -179,7 +179,6 @@ static int atmel_attach(struct pcmcia_device *p_dev)
179 device, and can be hard-wired here. 179 device, and can be hard-wired here.
180 */ 180 */
181 link->conf.Attributes = 0; 181 link->conf.Attributes = 0;
182 link->conf.Vcc = 50;
183 link->conf.IntType = INT_MEMORY_AND_IO; 182 link->conf.IntType = INT_MEMORY_AND_IO;
184 183
185 /* Allocate space for private device-specific data */ 184 /* Allocate space for private device-specific data */
@@ -314,16 +313,11 @@ static void atmel_config(dev_link_t *link)
314 313
315 /* Use power settings for Vcc and Vpp if present */ 314 /* Use power settings for Vcc and Vpp if present */
316 /* Note that the CIS values need to be rescaled */ 315 /* Note that the CIS values need to be rescaled */
317 if (cfg->vcc.present & (1<<CISTPL_POWER_VNOM))
318 link->conf.Vcc = cfg->vcc.param[CISTPL_POWER_VNOM]/10000;
319 else if (dflt.vcc.present & (1<<CISTPL_POWER_VNOM))
320 link->conf.Vcc = dflt.vcc.param[CISTPL_POWER_VNOM]/10000;
321
322 if (cfg->vpp1.present & (1<<CISTPL_POWER_VNOM)) 316 if (cfg->vpp1.present & (1<<CISTPL_POWER_VNOM))
323 link->conf.Vpp1 = link->conf.Vpp2 = 317 link->conf.Vpp =
324 cfg->vpp1.param[CISTPL_POWER_VNOM]/10000; 318 cfg->vpp1.param[CISTPL_POWER_VNOM]/10000;
325 else if (dflt.vpp1.present & (1<<CISTPL_POWER_VNOM)) 319 else if (dflt.vpp1.present & (1<<CISTPL_POWER_VNOM))
326 link->conf.Vpp1 = link->conf.Vpp2 = 320 link->conf.Vpp =
327 dflt.vpp1.param[CISTPL_POWER_VNOM]/10000; 321 dflt.vpp1.param[CISTPL_POWER_VNOM]/10000;
328 322
329 /* Do we need to allocate an interrupt? */ 323 /* Do we need to allocate an interrupt? */
diff --git a/drivers/net/wireless/hostap/hostap_cs.c b/drivers/net/wireless/hostap/hostap_cs.c
index 0fb625185452..69024bfb5bba 100644
--- a/drivers/net/wireless/hostap/hostap_cs.c
+++ b/drivers/net/wireless/hostap/hostap_cs.c
@@ -512,7 +512,6 @@ static int prism2_attach(struct pcmcia_device *p_dev)
512 memset(link, 0, sizeof(dev_link_t)); 512 memset(link, 0, sizeof(dev_link_t));
513 513
514 PDEBUG(DEBUG_HW, "%s: setting Vcc=33 (constant)\n", dev_info); 514 PDEBUG(DEBUG_HW, "%s: setting Vcc=33 (constant)\n", dev_info);
515 link->conf.Vcc = 33;
516 link->conf.IntType = INT_MEMORY_AND_IO; 515 link->conf.IntType = INT_MEMORY_AND_IO;
517 516
518 link->handle = p_dev; 517 link->handle = p_dev;
@@ -603,9 +602,6 @@ static int prism2_config(dev_link_t *link)
603 602
604 CS_CHECK(GetConfigurationInfo, 603 CS_CHECK(GetConfigurationInfo,
605 pcmcia_get_configuration_info(link->handle, &conf)); 604 pcmcia_get_configuration_info(link->handle, &conf));
606 PDEBUG(DEBUG_HW, "%s: %s Vcc=%d (from config)\n", dev_info,
607 ignore_cis_vcc ? "ignoring" : "setting", conf.Vcc);
608 link->conf.Vcc = conf.Vcc;
609 605
610 /* Look for an appropriate configuration table entry in the CIS */ 606 /* Look for an appropriate configuration table entry in the CIS */
611 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; 607 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
@@ -650,10 +646,10 @@ static int prism2_config(dev_link_t *link)
650 } 646 }
651 647
652 if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM)) 648 if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM))
653 link->conf.Vpp1 = link->conf.Vpp2 = 649 link->conf.Vpp =
654 cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000; 650 cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000;
655 else if (dflt.vpp1.present & (1 << CISTPL_POWER_VNOM)) 651 else if (dflt.vpp1.present & (1 << CISTPL_POWER_VNOM))
656 link->conf.Vpp1 = link->conf.Vpp2 = 652 link->conf.Vpp =
657 dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000; 653 dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000;
658 654
659 /* Do we need to allocate an interrupt? */ 655 /* Do we need to allocate an interrupt? */
@@ -745,12 +741,11 @@ static int prism2_config(dev_link_t *link)
745 dev->base_addr = link->io.BasePort1; 741 dev->base_addr = link->io.BasePort1;
746 742
747 /* Finally, report what we've done */ 743 /* Finally, report what we've done */
748 printk(KERN_INFO "%s: index 0x%02x: Vcc %d.%d", 744 printk(KERN_INFO "%s: index 0x%02x: ",
749 dev_info, link->conf.ConfigIndex, 745 dev_info, link->conf.ConfigIndex);
750 link->conf.Vcc / 10, link->conf.Vcc % 10); 746 if (link->conf.Vpp)
751 if (link->conf.Vpp1) 747 printk(", Vpp %d.%d", link->conf.Vpp / 10,
752 printk(", Vpp %d.%d", link->conf.Vpp1 / 10, 748 link->conf.Vpp % 10);
753 link->conf.Vpp1 % 10);
754 if (link->conf.Attributes & CONF_ENABLE_IRQ) 749 if (link->conf.Attributes & CONF_ENABLE_IRQ)
755 printk(", irq %d", link->irq.AssignedIRQ); 750 printk(", irq %d", link->irq.AssignedIRQ);
756 if (link->io.NumPorts1) 751 if (link->io.NumPorts1)
diff --git a/drivers/net/wireless/netwave_cs.c b/drivers/net/wireless/netwave_cs.c
index 545717b5e1e5..23d6b3376e6e 100644
--- a/drivers/net/wireless/netwave_cs.c
+++ b/drivers/net/wireless/netwave_cs.c
@@ -406,7 +406,6 @@ static int netwave_attach(struct pcmcia_device *p_dev)
406 406
407 /* General socket configuration */ 407 /* General socket configuration */
408 link->conf.Attributes = CONF_ENABLE_IRQ; 408 link->conf.Attributes = CONF_ENABLE_IRQ;
409 link->conf.Vcc = 50;
410 link->conf.IntType = INT_MEMORY_AND_IO; 409 link->conf.IntType = INT_MEMORY_AND_IO;
411 link->conf.ConfigIndex = 1; 410 link->conf.ConfigIndex = 1;
412 link->conf.Present = PRESENT_OPTION; 411 link->conf.Present = PRESENT_OPTION;
diff --git a/drivers/net/wireless/orinoco_cs.c b/drivers/net/wireless/orinoco_cs.c
index 89e16cd1be8c..75981d88a1e2 100644
--- a/drivers/net/wireless/orinoco_cs.c
+++ b/drivers/net/wireless/orinoco_cs.c
@@ -218,8 +218,7 @@ orinoco_cs_config(dev_link_t *link)
218 218
219 /* Look up the current Vcc */ 219 /* Look up the current Vcc */
220 CS_CHECK(GetConfigurationInfo, 220 CS_CHECK(GetConfigurationInfo,
221 pcmcia_get_configuration_info(handle, &conf)); 221 pcmcia_get_configuration_info(link->handle, &conf));
222 link->conf.Vcc = conf.Vcc;
223 222
224 /* 223 /*
225 * In this loop, we scan the CIS for configuration table 224 * In this loop, we scan the CIS for configuration table
@@ -274,10 +273,10 @@ orinoco_cs_config(dev_link_t *link)
274 } 273 }
275 274
276 if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM)) 275 if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM))
277 link->conf.Vpp1 = link->conf.Vpp2 = 276 link->conf.Vpp =
278 cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000; 277 cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000;
279 else if (dflt.vpp1.present & (1 << CISTPL_POWER_VNOM)) 278 else if (dflt.vpp1.present & (1 << CISTPL_POWER_VNOM))
280 link->conf.Vpp1 = link->conf.Vpp2 = 279 link->conf.Vpp =
281 dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000; 280 dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000;
282 281
283 /* Do we need to allocate an interrupt? */ 282 /* Do we need to allocate an interrupt? */
@@ -373,12 +372,11 @@ orinoco_cs_config(dev_link_t *link)
373 link->state &= ~DEV_CONFIG_PENDING; 372 link->state &= ~DEV_CONFIG_PENDING;
374 373
375 /* Finally, report what we've done */ 374 /* Finally, report what we've done */
376 printk(KERN_DEBUG "%s: index 0x%02x: Vcc %d.%d", 375 printk(KERN_DEBUG "%s: index 0x%02x: ",
377 dev->name, link->conf.ConfigIndex, 376 dev->name, link->conf.ConfigIndex);
378 link->conf.Vcc / 10, link->conf.Vcc % 10); 377 if (link->conf.Vpp)
379 if (link->conf.Vpp1) 378 printk(", Vpp %d.%d", link->conf.Vpp / 10,
380 printk(", Vpp %d.%d", link->conf.Vpp1 / 10, 379 link->conf.Vpp % 10);
381 link->conf.Vpp1 % 10);
382 printk(", irq %d", link->irq.AssignedIRQ); 380 printk(", irq %d", link->irq.AssignedIRQ);
383 if (link->io.NumPorts1) 381 if (link->io.NumPorts1)
384 printk(", io 0x%04x-0x%04x", link->io.BasePort1, 382 printk(", io 0x%04x-0x%04x", link->io.BasePort1,
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c
index ed4bf5013f1a..7d95587d09db 100644
--- a/drivers/net/wireless/ray_cs.c
+++ b/drivers/net/wireless/ray_cs.c
@@ -342,7 +342,6 @@ static int ray_attach(struct pcmcia_device *p_dev)
342 342
343 /* General socket configuration */ 343 /* General socket configuration */
344 link->conf.Attributes = CONF_ENABLE_IRQ; 344 link->conf.Attributes = CONF_ENABLE_IRQ;
345 link->conf.Vcc = 50;
346 link->conf.IntType = INT_MEMORY_AND_IO; 345 link->conf.IntType = INT_MEMORY_AND_IO;
347 link->conf.ConfigIndex = 1; 346 link->conf.ConfigIndex = 1;
348 link->conf.Present = PRESENT_OPTION; 347 link->conf.Present = PRESENT_OPTION;
diff --git a/drivers/net/wireless/spectrum_cs.c b/drivers/net/wireless/spectrum_cs.c
index 0429f1dc7fad..7a4a80b01f9c 100644
--- a/drivers/net/wireless/spectrum_cs.c
+++ b/drivers/net/wireless/spectrum_cs.c
@@ -692,7 +692,6 @@ spectrum_cs_config(dev_link_t *link)
692 /* Look up the current Vcc */ 692 /* Look up the current Vcc */
693 CS_CHECK(GetConfigurationInfo, 693 CS_CHECK(GetConfigurationInfo,
694 pcmcia_get_configuration_info(handle, &conf)); 694 pcmcia_get_configuration_info(handle, &conf));
695 link->conf.Vcc = conf.Vcc;
696 695
697 /* 696 /*
698 * In this loop, we scan the CIS for configuration table 697 * In this loop, we scan the CIS for configuration table
@@ -747,10 +746,10 @@ spectrum_cs_config(dev_link_t *link)
747 } 746 }
748 747
749 if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM)) 748 if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM))
750 link->conf.Vpp1 = link->conf.Vpp2 = 749 link->conf.Vpp =
751 cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000; 750 cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000;
752 else if (dflt.vpp1.present & (1 << CISTPL_POWER_VNOM)) 751 else if (dflt.vpp1.present & (1 << CISTPL_POWER_VNOM))
753 link->conf.Vpp1 = link->conf.Vpp2 = 752 link->conf.Vpp =
754 dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000; 753 dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000;
755 754
756 /* Do we need to allocate an interrupt? */ 755 /* Do we need to allocate an interrupt? */
@@ -851,12 +850,11 @@ spectrum_cs_config(dev_link_t *link)
851 link->state &= ~DEV_CONFIG_PENDING; 850 link->state &= ~DEV_CONFIG_PENDING;
852 851
853 /* Finally, report what we've done */ 852 /* Finally, report what we've done */
854 printk(KERN_DEBUG "%s: index 0x%02x: Vcc %d.%d", 853 printk(KERN_DEBUG "%s: index 0x%02x: ",
855 dev->name, link->conf.ConfigIndex, 854 dev->name, link->conf.ConfigIndex);
856 link->conf.Vcc / 10, link->conf.Vcc % 10); 855 if (link->conf.Vpp)
857 if (link->conf.Vpp1) 856 printk(", Vpp %d.%d", link->conf.Vpp / 10,
858 printk(", Vpp %d.%d", link->conf.Vpp1 / 10, 857 link->conf.Vpp % 10);
859 link->conf.Vpp1 % 10);
860 printk(", irq %d", link->irq.AssignedIRQ); 858 printk(", irq %d", link->irq.AssignedIRQ);
861 if (link->io.NumPorts1) 859 if (link->io.NumPorts1)
862 printk(", io 0x%04x-0x%04x", link->io.BasePort1, 860 printk(", io 0x%04x-0x%04x", link->io.BasePort1,
diff --git a/drivers/net/wireless/wavelan_cs.c b/drivers/net/wireless/wavelan_cs.c
index 8cabcfe3a654..daa17dc34320 100644
--- a/drivers/net/wireless/wavelan_cs.c
+++ b/drivers/net/wireless/wavelan_cs.c
@@ -4607,7 +4607,6 @@ wavelan_attach(struct pcmcia_device *p_dev)
4607 4607
4608 /* General socket configuration */ 4608 /* General socket configuration */
4609 link->conf.Attributes = CONF_ENABLE_IRQ; 4609 link->conf.Attributes = CONF_ENABLE_IRQ;
4610 link->conf.Vcc = 50;
4611 link->conf.IntType = INT_MEMORY_AND_IO; 4610 link->conf.IntType = INT_MEMORY_AND_IO;
4612 4611
4613 /* Chain drivers */ 4612 /* Chain drivers */
diff --git a/drivers/net/wireless/wl3501_cs.c b/drivers/net/wireless/wl3501_cs.c
index 3a93a8bb2e1f..393b5cb7a52c 100644
--- a/drivers/net/wireless/wl3501_cs.c
+++ b/drivers/net/wireless/wl3501_cs.c
@@ -1976,7 +1976,6 @@ static int wl3501_attach(struct pcmcia_device *p_dev)
1976 1976
1977 /* General socket configuration */ 1977 /* General socket configuration */
1978 link->conf.Attributes = CONF_ENABLE_IRQ; 1978 link->conf.Attributes = CONF_ENABLE_IRQ;
1979 link->conf.Vcc = 50;
1980 link->conf.IntType = INT_MEMORY_AND_IO; 1979 link->conf.IntType = INT_MEMORY_AND_IO;
1981 link->conf.ConfigIndex = 1; 1980 link->conf.ConfigIndex = 1;
1982 link->conf.Present = PRESENT_OPTION; 1981 link->conf.Present = PRESENT_OPTION;
diff --git a/drivers/parport/parport_cs.c b/drivers/parport/parport_cs.c
index 5e12ed2f1b6e..8d60146c7213 100644
--- a/drivers/parport/parport_cs.c
+++ b/drivers/parport/parport_cs.c
@@ -117,7 +117,6 @@ static int parport_attach(struct pcmcia_device *p_dev)
117 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; 117 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
118 link->irq.IRQInfo1 = IRQ_LEVEL_ID; 118 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
119 link->conf.Attributes = CONF_ENABLE_IRQ; 119 link->conf.Attributes = CONF_ENABLE_IRQ;
120 link->conf.Vcc = 50;
121 link->conf.IntType = INT_MEMORY_AND_IO; 120 link->conf.IntType = INT_MEMORY_AND_IO;
122 121
123 link->handle = p_dev; 122 link->handle = p_dev;
@@ -168,7 +167,6 @@ void parport_config(dev_link_t *link)
168 tuple_t tuple; 167 tuple_t tuple;
169 u_short buf[128]; 168 u_short buf[128];
170 cisparse_t parse; 169 cisparse_t parse;
171 config_info_t conf;
172 cistpl_cftable_entry_t *cfg = &parse.cftable_entry; 170 cistpl_cftable_entry_t *cfg = &parse.cftable_entry;
173 cistpl_cftable_entry_t dflt = { 0 }; 171 cistpl_cftable_entry_t dflt = { 0 };
174 struct parport *p; 172 struct parport *p;
@@ -189,9 +187,6 @@ void parport_config(dev_link_t *link)
189 /* Configure card */ 187 /* Configure card */
190 link->state |= DEV_CONFIG; 188 link->state |= DEV_CONFIG;
191 189
192 /* Not sure if this is right... look up the current Vcc */
193 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &conf));
194
195 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; 190 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
196 tuple.Attributes = 0; 191 tuple.Attributes = 0;
197 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); 192 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple));
diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c
index 16504f852af2..17e2fbf26e14 100644
--- a/drivers/pcmcia/pcmcia_resource.c
+++ b/drivers/pcmcia/pcmcia_resource.c
@@ -618,11 +618,7 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev,
618 return CS_CONFIGURATION_LOCKED; 618 return CS_CONFIGURATION_LOCKED;
619 619
620 /* Do power control. We don't allow changes in Vcc. */ 620 /* Do power control. We don't allow changes in Vcc. */
621 if (s->socket.Vcc != req->Vcc) 621 s->socket.Vpp = req->Vpp;
622 return CS_BAD_VCC;
623 if (req->Vpp1 != req->Vpp2)
624 return CS_BAD_VPP;
625 s->socket.Vpp = req->Vpp1;
626 if (s->ops->set_socket(s, &s->socket)) 622 if (s->ops->set_socket(s, &s->socket))
627 return CS_BAD_VPP; 623 return CS_BAD_VPP;
628 624
diff --git a/drivers/scsi/pcmcia/aha152x_stub.c b/drivers/scsi/pcmcia/aha152x_stub.c
index 7fbef1e51685..12ec94d6ef14 100644
--- a/drivers/scsi/pcmcia/aha152x_stub.c
+++ b/drivers/scsi/pcmcia/aha152x_stub.c
@@ -119,7 +119,6 @@ static int aha152x_attach(struct pcmcia_device *p_dev)
119 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; 119 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
120 link->irq.IRQInfo1 = IRQ_LEVEL_ID; 120 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
121 link->conf.Attributes = CONF_ENABLE_IRQ; 121 link->conf.Attributes = CONF_ENABLE_IRQ;
122 link->conf.Vcc = 50;
123 link->conf.IntType = INT_MEMORY_AND_IO; 122 link->conf.IntType = INT_MEMORY_AND_IO;
124 link->conf.Present = PRESENT_OPTION; 123 link->conf.Present = PRESENT_OPTION;
125 124
diff --git a/drivers/scsi/pcmcia/fdomain_stub.c b/drivers/scsi/pcmcia/fdomain_stub.c
index 20b9b27c60dd..b3cd206ad652 100644
--- a/drivers/scsi/pcmcia/fdomain_stub.c
+++ b/drivers/scsi/pcmcia/fdomain_stub.c
@@ -101,7 +101,6 @@ static int fdomain_attach(struct pcmcia_device *p_dev)
101 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; 101 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
102 link->irq.IRQInfo1 = IRQ_LEVEL_ID; 102 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
103 link->conf.Attributes = CONF_ENABLE_IRQ; 103 link->conf.Attributes = CONF_ENABLE_IRQ;
104 link->conf.Vcc = 50;
105 link->conf.IntType = INT_MEMORY_AND_IO; 104 link->conf.IntType = INT_MEMORY_AND_IO;
106 link->conf.Present = PRESENT_OPTION; 105 link->conf.Present = PRESENT_OPTION;
107 106
diff --git a/drivers/scsi/pcmcia/nsp_cs.c b/drivers/scsi/pcmcia/nsp_cs.c
index e313b40b7043..e41e1febe895 100644
--- a/drivers/scsi/pcmcia/nsp_cs.c
+++ b/drivers/scsi/pcmcia/nsp_cs.c
@@ -1627,7 +1627,6 @@ static int nsp_cs_attach(struct pcmcia_device *p_dev)
1627 1627
1628 /* General socket configuration */ 1628 /* General socket configuration */
1629 link->conf.Attributes = CONF_ENABLE_IRQ; 1629 link->conf.Attributes = CONF_ENABLE_IRQ;
1630 link->conf.Vcc = 50;
1631 link->conf.IntType = INT_MEMORY_AND_IO; 1630 link->conf.IntType = INT_MEMORY_AND_IO;
1632 link->conf.Present = PRESENT_OPTION; 1631 link->conf.Present = PRESENT_OPTION;
1633 1632
@@ -1709,7 +1708,6 @@ static void nsp_cs_config(dev_link_t *link)
1709 1708
1710 /* Look up the current Vcc */ 1709 /* Look up the current Vcc */
1711 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &conf)); 1710 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &conf));
1712 link->conf.Vcc = conf.Vcc;
1713 1711
1714 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; 1712 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
1715 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); 1713 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple));
@@ -1743,10 +1741,10 @@ static void nsp_cs_config(dev_link_t *link)
1743 } 1741 }
1744 1742
1745 if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM)) { 1743 if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM)) {
1746 link->conf.Vpp1 = link->conf.Vpp2 = 1744 link->conf.Vpp =
1747 cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000; 1745 cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000;
1748 } else if (dflt.vpp1.present & (1 << CISTPL_POWER_VNOM)) { 1746 } else if (dflt.vpp1.present & (1 << CISTPL_POWER_VNOM)) {
1749 link->conf.Vpp1 = link->conf.Vpp2 = 1747 link->conf.Vpp =
1750 dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000; 1748 dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000;
1751 } 1749 }
1752 1750
@@ -1905,11 +1903,10 @@ static void nsp_cs_config(dev_link_t *link)
1905#endif 1903#endif
1906 1904
1907 /* Finally, report what we've done */ 1905 /* Finally, report what we've done */
1908 printk(KERN_INFO "nsp_cs: index 0x%02x: Vcc %d.%d", 1906 printk(KERN_INFO "nsp_cs: index 0x%02x: ",
1909 link->conf.ConfigIndex, 1907 link->conf.ConfigIndex);
1910 link->conf.Vcc/10, link->conf.Vcc%10); 1908 if (link->conf.Vpp) {
1911 if (link->conf.Vpp1) { 1909 printk(", Vpp %d.%d", link->conf.Vpp/10, link->conf.Vpp%10);
1912 printk(", Vpp %d.%d", link->conf.Vpp1/10, link->conf.Vpp1%10);
1913 } 1910 }
1914 if (link->conf.Attributes & CONF_ENABLE_IRQ) { 1911 if (link->conf.Attributes & CONF_ENABLE_IRQ) {
1915 printk(", irq %d", link->irq.AssignedIRQ); 1912 printk(", irq %d", link->irq.AssignedIRQ);
diff --git a/drivers/scsi/pcmcia/qlogic_stub.c b/drivers/scsi/pcmcia/qlogic_stub.c
index 5a8da5143bd1..4f28589bbf34 100644
--- a/drivers/scsi/pcmcia/qlogic_stub.c
+++ b/drivers/scsi/pcmcia/qlogic_stub.c
@@ -176,7 +176,6 @@ static int qlogic_attach(struct pcmcia_device *p_dev)
176 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; 176 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
177 link->irq.IRQInfo1 = IRQ_LEVEL_ID; 177 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
178 link->conf.Attributes = CONF_ENABLE_IRQ; 178 link->conf.Attributes = CONF_ENABLE_IRQ;
179 link->conf.Vcc = 50;
180 link->conf.IntType = INT_MEMORY_AND_IO; 179 link->conf.IntType = INT_MEMORY_AND_IO;
181 link->conf.Present = PRESENT_OPTION; 180 link->conf.Present = PRESENT_OPTION;
182 181
diff --git a/drivers/scsi/pcmcia/sym53c500_cs.c b/drivers/scsi/pcmcia/sym53c500_cs.c
index 4a6988567de5..2bce7b070a4e 100644
--- a/drivers/scsi/pcmcia/sym53c500_cs.c
+++ b/drivers/scsi/pcmcia/sym53c500_cs.c
@@ -916,7 +916,6 @@ SYM53C500_attach(struct pcmcia_device *p_dev)
916 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; 916 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;
917 link->irq.IRQInfo1 = IRQ_LEVEL_ID; 917 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
918 link->conf.Attributes = CONF_ENABLE_IRQ; 918 link->conf.Attributes = CONF_ENABLE_IRQ;
919 link->conf.Vcc = 50;
920 link->conf.IntType = INT_MEMORY_AND_IO; 919 link->conf.IntType = INT_MEMORY_AND_IO;
921 link->conf.Present = PRESENT_OPTION; 920 link->conf.Present = PRESENT_OPTION;
922 921
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c
index b6b460fa693f..1e6889f52b38 100644
--- a/drivers/serial/serial_cs.c
+++ b/drivers/serial/serial_cs.c
@@ -358,7 +358,6 @@ static int simple_config(dev_link_t *link)
358 return setup_serial(handle, info, port, config.AssignedIRQ); 358 return setup_serial(handle, info, port, config.AssignedIRQ);
359 } 359 }
360 } 360 }
361 link->conf.Vcc = config.Vcc;
362 361
363 /* First pass: look for a config entry that looks normal. */ 362 /* First pass: look for a config entry that looks normal. */
364 tuple->TupleData = (cisdata_t *) buf; 363 tuple->TupleData = (cisdata_t *) buf;
@@ -374,7 +373,7 @@ static int simple_config(dev_link_t *link)
374 if (i != CS_SUCCESS) 373 if (i != CS_SUCCESS)
375 goto next_entry; 374 goto next_entry;
376 if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM)) 375 if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
377 link->conf.Vpp1 = link->conf.Vpp2 = 376 link->conf.Vpp =
378 cf->vpp1.param[CISTPL_POWER_VNOM] / 10000; 377 cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
379 if ((cf->io.nwin > 0) && (cf->io.win[0].len == size_table[s]) && 378 if ((cf->io.nwin > 0) && (cf->io.win[0].len == size_table[s]) &&
380 (cf->io.win[0].base != 0)) { 379 (cf->io.win[0].base != 0)) {
@@ -445,7 +444,6 @@ static int multi_config(dev_link_t * link)
445 u_char *buf; 444 u_char *buf;
446 cisparse_t *parse; 445 cisparse_t *parse;
447 cistpl_cftable_entry_t *cf; 446 cistpl_cftable_entry_t *cf;
448 config_info_t config;
449 int i, rc, base2 = 0; 447 int i, rc, base2 = 0;
450 448
451 cfg_mem = kmalloc(sizeof(struct serial_cfg_mem), GFP_KERNEL); 449 cfg_mem = kmalloc(sizeof(struct serial_cfg_mem), GFP_KERNEL);
@@ -456,14 +454,6 @@ static int multi_config(dev_link_t * link)
456 cf = &parse->cftable_entry; 454 cf = &parse->cftable_entry;
457 buf = cfg_mem->buf; 455 buf = cfg_mem->buf;
458 456
459 i = pcmcia_get_configuration_info(handle, &config);
460 if (i != CS_SUCCESS) {
461 cs_error(handle, GetConfigurationInfo, i);
462 rc = -1;
463 goto free_cfg_mem;
464 }
465 link->conf.Vcc = config.Vcc;
466
467 tuple->TupleData = (cisdata_t *) buf; 457 tuple->TupleData = (cisdata_t *) buf;
468 tuple->TupleOffset = 0; 458 tuple->TupleOffset = 0;
469 tuple->TupleDataMax = 255; 459 tuple->TupleDataMax = 255;
diff --git a/drivers/telephony/ixj_pcmcia.c b/drivers/telephony/ixj_pcmcia.c
index 509465586ded..de794b21d7ff 100644
--- a/drivers/telephony/ixj_pcmcia.c
+++ b/drivers/telephony/ixj_pcmcia.c
@@ -51,7 +51,6 @@ static int ixj_attach(struct pcmcia_device *p_dev)
51 link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; 51 link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
52 link->io.Attributes2 = IO_DATA_PATH_WIDTH_8; 52 link->io.Attributes2 = IO_DATA_PATH_WIDTH_8;
53 link->io.IOAddrLines = 3; 53 link->io.IOAddrLines = 3;
54 link->conf.Vcc = 50;
55 link->conf.IntType = INT_MEMORY_AND_IO; 54 link->conf.IntType = INT_MEMORY_AND_IO;
56 link->priv = kmalloc(sizeof(struct ixj_info_t), GFP_KERNEL); 55 link->priv = kmalloc(sizeof(struct ixj_info_t), GFP_KERNEL);
57 if (!link->priv) { 56 if (!link->priv) {
@@ -157,7 +156,6 @@ static void ixj_config(dev_link_t * link)
157 tuple_t tuple; 156 tuple_t tuple;
158 u_short buf[128]; 157 u_short buf[128];
159 cisparse_t parse; 158 cisparse_t parse;
160 config_info_t conf;
161 cistpl_cftable_entry_t *cfg = &parse.cftable_entry; 159 cistpl_cftable_entry_t *cfg = &parse.cftable_entry;
162 cistpl_cftable_entry_t dflt = 160 cistpl_cftable_entry_t dflt =
163 { 161 {
@@ -178,7 +176,6 @@ static void ixj_config(dev_link_t * link)
178 link->conf.ConfigBase = parse.config.base; 176 link->conf.ConfigBase = parse.config.base;
179 link->conf.Present = parse.config.rmask[0]; 177 link->conf.Present = parse.config.rmask[0];
180 link->state |= DEV_CONFIG; 178 link->state |= DEV_CONFIG;
181 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &conf));
182 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; 179 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
183 tuple.Attributes = 0; 180 tuple.Attributes = 0;
184 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); 181 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple));
diff --git a/drivers/usb/host/sl811_cs.c b/drivers/usb/host/sl811_cs.c
index ca3fc336d3d7..c6f1baf541ab 100644
--- a/drivers/usb/host/sl811_cs.c
+++ b/drivers/usb/host/sl811_cs.c
@@ -191,7 +191,6 @@ static void sl811_cs_config(dev_link_t *link)
191 /* Look up the current Vcc */ 191 /* Look up the current Vcc */
192 CS_CHECK(GetConfigurationInfo, 192 CS_CHECK(GetConfigurationInfo,
193 pcmcia_get_configuration_info(handle, &conf)); 193 pcmcia_get_configuration_info(handle, &conf));
194 link->conf.Vcc = conf.Vcc;
195 194
196 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; 195 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
197 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); 196 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple));
@@ -225,10 +224,10 @@ static void sl811_cs_config(dev_link_t *link)
225 } 224 }
226 225
227 if (cfg->vpp1.present & (1<<CISTPL_POWER_VNOM)) 226 if (cfg->vpp1.present & (1<<CISTPL_POWER_VNOM))
228 link->conf.Vpp1 = link->conf.Vpp2 = 227 link->conf.Vpp =
229 cfg->vpp1.param[CISTPL_POWER_VNOM]/10000; 228 cfg->vpp1.param[CISTPL_POWER_VNOM]/10000;
230 else if (dflt.vpp1.present & (1<<CISTPL_POWER_VNOM)) 229 else if (dflt.vpp1.present & (1<<CISTPL_POWER_VNOM))
231 link->conf.Vpp1 = link->conf.Vpp2 = 230 link->conf.Vpp =
232 dflt.vpp1.param[CISTPL_POWER_VNOM]/10000; 231 dflt.vpp1.param[CISTPL_POWER_VNOM]/10000;
233 232
234 /* we need an interrupt */ 233 /* we need an interrupt */
@@ -271,11 +270,10 @@ next_entry:
271 dev->node.major = dev->node.minor = 0; 270 dev->node.major = dev->node.minor = 0;
272 link->dev = &dev->node; 271 link->dev = &dev->node;
273 272
274 printk(KERN_INFO "%s: index 0x%02x: Vcc %d.%d", 273 printk(KERN_INFO "%s: index 0x%02x: ",
275 dev->node.dev_name, link->conf.ConfigIndex, 274 dev->node.dev_name, link->conf.ConfigIndex);
276 link->conf.Vcc/10, link->conf.Vcc%10); 275 if (link->conf.Vpp)
277 if (link->conf.Vpp1) 276 printk(", Vpp %d.%d", link->conf.Vpp/10, link->conf.Vpp%10);
278 printk(", Vpp %d.%d", link->conf.Vpp1/10, link->conf.Vpp1%10);
279 printk(", irq %d", link->irq.AssignedIRQ); 277 printk(", irq %d", link->irq.AssignedIRQ);
280 printk(", io 0x%04x-0x%04x", link->io.BasePort1, 278 printk(", io 0x%04x-0x%04x", link->io.BasePort1,
281 link->io.BasePort1+link->io.NumPorts1-1); 279 link->io.BasePort1+link->io.NumPorts1-1);
@@ -311,7 +309,6 @@ static int sl811_cs_attach(struct pcmcia_device *p_dev)
311 link->irq.Handler = NULL; 309 link->irq.Handler = NULL;
312 310
313 link->conf.Attributes = 0; 311 link->conf.Attributes = 0;
314 link->conf.Vcc = 33;
315 link->conf.IntType = INT_MEMORY_AND_IO; 312 link->conf.IntType = INT_MEMORY_AND_IO;
316 313
317 link->handle = p_dev; 314 link->handle = p_dev;
diff --git a/include/pcmcia/cs.h b/include/pcmcia/cs.h
index 087b3bc0489c..e0835d612b7a 100644
--- a/include/pcmcia/cs.h
+++ b/include/pcmcia/cs.h
@@ -125,7 +125,7 @@ typedef struct modconf_t {
125/* For RequestConfiguration */ 125/* For RequestConfiguration */
126typedef struct config_req_t { 126typedef struct config_req_t {
127 u_int Attributes; 127 u_int Attributes;
128 u_int Vcc, Vpp1, Vpp2; 128 u_int Vpp; /* both Vpp1 and Vpp2 */
129 u_int IntType; 129 u_int IntType;
130 u_int ConfigBase; 130 u_int ConfigBase;
131 u_char Status, Pin, Copy, ExtStatus; 131 u_char Status, Pin, Copy, ExtStatus;
diff --git a/sound/pcmcia/pdaudiocf/pdaudiocf.c b/sound/pcmcia/pdaudiocf/pdaudiocf.c
index 31f4bdc46ce6..7c4091a57b69 100644
--- a/sound/pcmcia/pdaudiocf/pdaudiocf.c
+++ b/sound/pcmcia/pdaudiocf/pdaudiocf.c
@@ -230,7 +230,6 @@ static void pdacf_config(dev_link_t *link)
230 struct snd_pdacf *pdacf = link->priv; 230 struct snd_pdacf *pdacf = link->priv;
231 tuple_t tuple; 231 tuple_t tuple;
232 cisparse_t *parse = NULL; 232 cisparse_t *parse = NULL;
233 config_info_t conf;
234 u_short buf[32]; 233 u_short buf[32];
235 int last_fn, last_ret; 234 int last_fn, last_ret;
236 235
@@ -253,9 +252,6 @@ static void pdacf_config(dev_link_t *link)
253 link->conf.ConfigIndex = 0x5; 252 link->conf.ConfigIndex = 0x5;
254 kfree(parse); 253 kfree(parse);
255 254
256 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &conf));
257 link->conf.Vcc = conf.Vcc;
258
259 /* Configure card */ 255 /* Configure card */
260 link->state |= DEV_CONFIG; 256 link->state |= DEV_CONFIG;
261 257
diff --git a/sound/pcmcia/vx/vxpocket.c b/sound/pcmcia/vx/vxpocket.c
index e101e05afac3..ff2f927559fc 100644
--- a/sound/pcmcia/vx/vxpocket.c
+++ b/sound/pcmcia/vx/vxpocket.c
@@ -161,7 +161,6 @@ static struct snd_vxpocket *snd_vxpocket_new(struct snd_card *card, int ibl)
161 link->irq.Instance = chip; 161 link->irq.Instance = chip;
162 162
163 link->conf.Attributes = CONF_ENABLE_IRQ; 163 link->conf.Attributes = CONF_ENABLE_IRQ;
164 link->conf.Vcc = 50;
165 link->conf.IntType = INT_MEMORY_AND_IO; 164 link->conf.IntType = INT_MEMORY_AND_IO;
166 link->conf.ConfigIndex = 1; 165 link->conf.ConfigIndex = 1;
167 link->conf.Present = PRESENT_OPTION; 166 link->conf.Present = PRESENT_OPTION;