aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/isdn/hisax/sedlbauer_cs.c4
-rw-r--r--drivers/net/pcmcia/axnet_cs.c4
-rw-r--r--drivers/net/pcmcia/pcnet_cs.c5
-rw-r--r--drivers/net/pcmcia/smc91c92_cs.c2
-rw-r--r--drivers/net/pcmcia/xirc2ps_cs.c5
-rw-r--r--drivers/net/wireless/airo_cs.c4
-rw-r--r--drivers/net/wireless/atmel_cs.c4
-rw-r--r--drivers/net/wireless/hostap/hostap_cs.c4
-rw-r--r--drivers/pcmcia/cs_internal.h2
-rw-r--r--drivers/pcmcia/pcmcia_resource.c28
-rw-r--r--drivers/scsi/pcmcia/nsp_cs.c4
-rw-r--r--drivers/serial/serial_cs.c11
-rw-r--r--drivers/staging/comedi/drivers/ni_daq_700.c4
-rw-r--r--drivers/staging/comedi/drivers/ni_daq_dio24.c4
-rw-r--r--drivers/staging/comedi/drivers/ni_labpc_cs.c4
-rw-r--r--include/pcmcia/cs.h2
16 files changed, 38 insertions, 53 deletions
diff --git a/drivers/isdn/hisax/sedlbauer_cs.c b/drivers/isdn/hisax/sedlbauer_cs.c
index ad07d61dc09b..40001ad9f614 100644
--- a/drivers/isdn/hisax/sedlbauer_cs.c
+++ b/drivers/isdn/hisax/sedlbauer_cs.c
@@ -175,10 +175,8 @@ static int sedlbauer_config_check(struct pcmcia_device *p_dev,
175 return -ENODEV; 175 return -ENODEV;
176 176
177 /* Does this card need audio output? */ 177 /* Does this card need audio output? */
178 if (cfg->flags & CISTPL_CFTABLE_AUDIO) { 178 if (cfg->flags & CISTPL_CFTABLE_AUDIO)
179 p_dev->conf.Attributes |= CONF_ENABLE_SPKR; 179 p_dev->conf.Attributes |= CONF_ENABLE_SPKR;
180 p_dev->conf.Status = CCSR_AUDIO_ENA;
181 }
182 180
183 /* Use power settings for Vcc and Vpp if present */ 181 /* Use power settings for Vcc and Vpp if present */
184 /* Note that the CIS values need to be rescaled */ 182 /* Note that the CIS values need to be rescaled */
diff --git a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c
index 5f05ffb240cc..8734ed8f174d 100644
--- a/drivers/net/pcmcia/axnet_cs.c
+++ b/drivers/net/pcmcia/axnet_cs.c
@@ -334,10 +334,8 @@ static int axnet_config(struct pcmcia_device *link)
334 if (!link->irq) 334 if (!link->irq)
335 goto failed; 335 goto failed;
336 336
337 if (resource_size(link->resource[1]) == 8) { 337 if (resource_size(link->resource[1]) == 8)
338 link->conf.Attributes |= CONF_ENABLE_SPKR; 338 link->conf.Attributes |= CONF_ENABLE_SPKR;
339 link->conf.Status = CCSR_AUDIO_ENA;
340 }
341 339
342 ret = pcmcia_request_configuration(link, &link->conf); 340 ret = pcmcia_request_configuration(link, &link->conf);
343 if (ret) 341 if (ret)
diff --git a/drivers/net/pcmcia/pcnet_cs.c b/drivers/net/pcmcia/pcnet_cs.c
index aa6ee6b264cd..f3d7a149070a 100644
--- a/drivers/net/pcmcia/pcnet_cs.c
+++ b/drivers/net/pcmcia/pcnet_cs.c
@@ -560,10 +560,9 @@ static hw_info_t *pcnet_try_config(struct pcmcia_device *link,
560 if (!link->irq) 560 if (!link->irq)
561 return NULL; 561 return NULL;
562 562
563 if (resource_size(link->resource[1]) == 8) { 563 if (resource_size(link->resource[1]) == 8)
564 link->conf.Attributes |= CONF_ENABLE_SPKR; 564 link->conf.Attributes |= CONF_ENABLE_SPKR;
565 link->conf.Status = CCSR_AUDIO_ENA; 565
566 }
567 if ((link->manf_id == MANFID_IBM) && 566 if ((link->manf_id == MANFID_IBM) &&
568 (link->card_id == PRODID_IBM_HOME_AND_AWAY)) 567 (link->card_id == PRODID_IBM_HOME_AND_AWAY))
569 link->conf.ConfigIndex |= 0x10; 568 link->conf.ConfigIndex |= 0x10;
diff --git a/drivers/net/pcmcia/smc91c92_cs.c b/drivers/net/pcmcia/smc91c92_cs.c
index 395e586d7c0a..2031a27253d1 100644
--- a/drivers/net/pcmcia/smc91c92_cs.c
+++ b/drivers/net/pcmcia/smc91c92_cs.c
@@ -446,7 +446,6 @@ static int mhz_mfc_config(struct pcmcia_device *link)
446 int i; 446 int i;
447 447
448 link->conf.Attributes |= CONF_ENABLE_SPKR; 448 link->conf.Attributes |= CONF_ENABLE_SPKR;
449 link->conf.Status = CCSR_AUDIO_ENA;
450 link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8; 449 link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8;
451 link->resource[1]->end = 8; 450 link->resource[1]->end = 8;
452 451
@@ -640,7 +639,6 @@ static int osi_config(struct pcmcia_device *link)
640 int i, j; 639 int i, j;
641 640
642 link->conf.Attributes |= CONF_ENABLE_SPKR; 641 link->conf.Attributes |= CONF_ENABLE_SPKR;
643 link->conf.Status = CCSR_AUDIO_ENA;
644 link->resource[0]->end = 64; 642 link->resource[0]->end = 64;
645 link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8; 643 link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8;
646 link->resource[1]->end = 8; 644 link->resource[1]->end = 8;
diff --git a/drivers/net/pcmcia/xirc2ps_cs.c b/drivers/net/pcmcia/xirc2ps_cs.c
index 4308bda0e96d..59398a6f1344 100644
--- a/drivers/net/pcmcia/xirc2ps_cs.c
+++ b/drivers/net/pcmcia/xirc2ps_cs.c
@@ -812,10 +812,9 @@ xirc2ps_config(struct pcmcia_device * link)
812 if (local->modem) { 812 if (local->modem) {
813 int pass; 813 int pass;
814 814
815 if (do_sound) { 815 if (do_sound)
816 link->conf.Attributes |= CONF_ENABLE_SPKR; 816 link->conf.Attributes |= CONF_ENABLE_SPKR;
817 link->conf.Status |= CCSR_AUDIO_ENA; 817
818 }
819 link->resource[1]->end = 8; 818 link->resource[1]->end = 8;
820 link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8; 819 link->resource[1]->flags |= IO_DATA_PATH_WIDTH_8;
821 if (local->dingo) { 820 if (local->dingo) {
diff --git a/drivers/net/wireless/airo_cs.c b/drivers/net/wireless/airo_cs.c
index 488e7b45d54b..ab60f1084716 100644
--- a/drivers/net/wireless/airo_cs.c
+++ b/drivers/net/wireless/airo_cs.c
@@ -158,10 +158,8 @@ static int airo_cs_config_check(struct pcmcia_device *p_dev,
158 return -ENODEV; 158 return -ENODEV;
159 159
160 /* Does this card need audio output? */ 160 /* Does this card need audio output? */
161 if (cfg->flags & CISTPL_CFTABLE_AUDIO) { 161 if (cfg->flags & CISTPL_CFTABLE_AUDIO)
162 p_dev->conf.Attributes |= CONF_ENABLE_SPKR; 162 p_dev->conf.Attributes |= CONF_ENABLE_SPKR;
163 p_dev->conf.Status = CCSR_AUDIO_ENA;
164 }
165 163
166 /* Use power settings for Vcc and Vpp if present */ 164 /* Use power settings for Vcc and Vpp if present */
167 /* Note that the CIS values need to be rescaled */ 165 /* Note that the CIS values need to be rescaled */
diff --git a/drivers/net/wireless/atmel_cs.c b/drivers/net/wireless/atmel_cs.c
index 479f5084bac1..d6d585cb992a 100644
--- a/drivers/net/wireless/atmel_cs.c
+++ b/drivers/net/wireless/atmel_cs.c
@@ -175,10 +175,8 @@ static int atmel_config_check(struct pcmcia_device *p_dev,
175 return -ENODEV; 175 return -ENODEV;
176 176
177 /* Does this card need audio output? */ 177 /* Does this card need audio output? */
178 if (cfg->flags & CISTPL_CFTABLE_AUDIO) { 178 if (cfg->flags & CISTPL_CFTABLE_AUDIO)
179 p_dev->conf.Attributes |= CONF_ENABLE_SPKR; 179 p_dev->conf.Attributes |= CONF_ENABLE_SPKR;
180 p_dev->conf.Status = CCSR_AUDIO_ENA;
181 }
182 180
183 /* Use power settings for Vcc and Vpp if present */ 181 /* Use power settings for Vcc and Vpp if present */
184 /* Note that the CIS values need to be rescaled */ 182 /* Note that the CIS values need to be rescaled */
diff --git a/drivers/net/wireless/hostap/hostap_cs.c b/drivers/net/wireless/hostap/hostap_cs.c
index 3f35dd4438ca..3fa285b1bdd3 100644
--- a/drivers/net/wireless/hostap/hostap_cs.c
+++ b/drivers/net/wireless/hostap/hostap_cs.c
@@ -484,10 +484,8 @@ static int prism2_config_check(struct pcmcia_device *p_dev,
484 "(default 0x%02X)\n", cfg->index, dflt->index); 484 "(default 0x%02X)\n", cfg->index, dflt->index);
485 485
486 /* Does this card need audio output? */ 486 /* Does this card need audio output? */
487 if (cfg->flags & CISTPL_CFTABLE_AUDIO) { 487 if (cfg->flags & CISTPL_CFTABLE_AUDIO)
488 p_dev->conf.Attributes |= CONF_ENABLE_SPKR; 488 p_dev->conf.Attributes |= CONF_ENABLE_SPKR;
489 p_dev->conf.Status = CCSR_AUDIO_ENA;
490 }
491 489
492 /* Use power settings for Vcc and Vpp if present */ 490 /* Use power settings for Vcc and Vpp if present */
493 /* Note that the CIS values need to be rescaled */ 491 /* Note that the CIS values need to be rescaled */
diff --git a/drivers/pcmcia/cs_internal.h b/drivers/pcmcia/cs_internal.h
index 9487340deaf0..7ef464d40e91 100644
--- a/drivers/pcmcia/cs_internal.h
+++ b/drivers/pcmcia/cs_internal.h
@@ -36,7 +36,7 @@ typedef struct config_t {
36 unsigned int Attributes; 36 unsigned int Attributes;
37 unsigned int IntType; 37 unsigned int IntType;
38 unsigned int ConfigBase; 38 unsigned int ConfigBase;
39 unsigned char Status, Option, ExtStatus; 39 unsigned char Option;
40 unsigned int CardValues; 40 unsigned int CardValues;
41 41
42 struct resource io[MAX_IO_WIN]; /* io ports */ 42 struct resource io[MAX_IO_WIN]; /* io ports */
diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c
index 28717eea7c57..8834bb415d38 100644
--- a/drivers/pcmcia/pcmcia_resource.c
+++ b/drivers/pcmcia/pcmcia_resource.c
@@ -441,6 +441,8 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev,
441 struct pcmcia_socket *s = p_dev->socket; 441 struct pcmcia_socket *s = p_dev->socket;
442 config_t *c; 442 config_t *c;
443 pccard_io_map iomap; 443 pccard_io_map iomap;
444 unsigned char status = 0;
445 unsigned char ext_status = 0;
444 446
445 if (!(s->state & SOCKET_PRESENT)) 447 if (!(s->state & SOCKET_PRESENT))
446 return -ENODEV; 448 return -ENODEV;
@@ -476,12 +478,21 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev,
476 s->socket.flags |= SS_ZVCARD | SS_IOCARD; 478 s->socket.flags |= SS_ZVCARD | SS_IOCARD;
477 if (req->Attributes & CONF_ENABLE_DMA) 479 if (req->Attributes & CONF_ENABLE_DMA)
478 s->socket.flags |= SS_DMA_MODE; 480 s->socket.flags |= SS_DMA_MODE;
479 if (req->Attributes & CONF_ENABLE_SPKR) 481 if (req->Attributes & CONF_ENABLE_SPKR) {
480 s->socket.flags |= SS_SPKR_ENA; 482 s->socket.flags |= SS_SPKR_ENA;
483 status = CCSR_AUDIO_ENA;
484 if (!(req->Present & PRESENT_STATUS))
485 dev_warn(&p_dev->dev, "speaker requested, but "
486 "PRESENT_STATUS not set!\n");
487 }
481 if (req->Attributes & CONF_ENABLE_IRQ) 488 if (req->Attributes & CONF_ENABLE_IRQ)
482 s->socket.io_irq = s->pcmcia_irq; 489 s->socket.io_irq = s->pcmcia_irq;
483 else 490 else
484 s->socket.io_irq = 0; 491 s->socket.io_irq = 0;
492 if (req->Attributes & CONF_ENABLE_ESR) {
493 req->Present |= PRESENT_EXT_STATUS;
494 ext_status = ESR_REQ_ATTN_ENA;
495 }
485 s->ops->set_socket(s, &s->socket); 496 s->ops->set_socket(s, &s->socket);
486 s->lock_count++; 497 s->lock_count++;
487 498
@@ -513,14 +524,13 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev,
513 pcmcia_write_cis_mem(s, 1, (base + CISREG_COR)>>1, 1, &c->Option); 524 pcmcia_write_cis_mem(s, 1, (base + CISREG_COR)>>1, 1, &c->Option);
514 mdelay(40); 525 mdelay(40);
515 } 526 }
516 if (req->Present & PRESENT_STATUS) { 527 if (req->Present & PRESENT_STATUS)
517 c->Status = req->Status; 528 pcmcia_write_cis_mem(s, 1, (base + CISREG_CCSR)>>1, 1, &status);
518 pcmcia_write_cis_mem(s, 1, (base + CISREG_CCSR)>>1, 1, &c->Status); 529
519 } 530 if (req->Present & PRESENT_EXT_STATUS)
520 if (req->Present & PRESENT_EXT_STATUS) { 531 pcmcia_write_cis_mem(s, 1, (base + CISREG_ESR)>>1, 1,
521 c->ExtStatus = req->ExtStatus; 532 &ext_status);
522 pcmcia_write_cis_mem(s, 1, (base + CISREG_ESR)>>1, 1, &c->ExtStatus); 533
523 }
524 if (req->Present & PRESENT_IOBASE_0) { 534 if (req->Present & PRESENT_IOBASE_0) {
525 u8 b = c->io[0].start & 0xff; 535 u8 b = c->io[0].start & 0xff;
526 pcmcia_write_cis_mem(s, 1, (base + CISREG_IOBASE_0)>>1, 1, &b); 536 pcmcia_write_cis_mem(s, 1, (base + CISREG_IOBASE_0)>>1, 1, &b);
diff --git a/drivers/scsi/pcmcia/nsp_cs.c b/drivers/scsi/pcmcia/nsp_cs.c
index 50574e869418..b90cade36746 100644
--- a/drivers/scsi/pcmcia/nsp_cs.c
+++ b/drivers/scsi/pcmcia/nsp_cs.c
@@ -1608,10 +1608,8 @@ static int nsp_cs_config_check(struct pcmcia_device *p_dev,
1608 return -ENODEV; 1608 return -ENODEV;
1609 1609
1610 /* Does this card need audio output? */ 1610 /* Does this card need audio output? */
1611 if (cfg->flags & CISTPL_CFTABLE_AUDIO) { 1611 if (cfg->flags & CISTPL_CFTABLE_AUDIO)
1612 p_dev->conf.Attributes |= CONF_ENABLE_SPKR; 1612 p_dev->conf.Attributes |= CONF_ENABLE_SPKR;
1613 p_dev->conf.Status = CCSR_AUDIO_ENA;
1614 }
1615 1613
1616 /* Use power settings for Vcc and Vpp if present */ 1614 /* Use power settings for Vcc and Vpp if present */
1617 /* Note that the CIS values need to be rescaled */ 1615 /* Note that the CIS values need to be rescaled */
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c
index 9597442a0ac1..0460c0882b70 100644
--- a/drivers/serial/serial_cs.c
+++ b/drivers/serial/serial_cs.c
@@ -183,10 +183,8 @@ static void quirk_config_socket(struct pcmcia_device *link)
183{ 183{
184 struct serial_info *info = link->priv; 184 struct serial_info *info = link->priv;
185 185
186 if (info->multi) { 186 if (info->multi)
187 link->conf.Present |= PRESENT_EXT_STATUS; 187 link->conf.Attributes |= CONF_ENABLE_ESR;
188 link->conf.ExtStatus = ESR_REQ_ATTN_ENA;
189 }
190} 188}
191 189
192static const struct serial_quirk quirks[] = { 190static const struct serial_quirk quirks[] = {
@@ -336,10 +334,9 @@ static int serial_probe(struct pcmcia_device *link)
336 link->priv = info; 334 link->priv = info;
337 335
338 link->conf.Attributes = CONF_ENABLE_IRQ; 336 link->conf.Attributes = CONF_ENABLE_IRQ;
339 if (do_sound) { 337 if (do_sound)
340 link->conf.Attributes |= CONF_ENABLE_SPKR; 338 link->conf.Attributes |= CONF_ENABLE_SPKR;
341 link->conf.Status = CCSR_AUDIO_ENA; 339
342 }
343 link->conf.IntType = INT_MEMORY_AND_IO; 340 link->conf.IntType = INT_MEMORY_AND_IO;
344 341
345 return serial_config(link); 342 return serial_config(link);
diff --git a/drivers/staging/comedi/drivers/ni_daq_700.c b/drivers/staging/comedi/drivers/ni_daq_700.c
index cc15666e5cc1..8cf56cb0a3ff 100644
--- a/drivers/staging/comedi/drivers/ni_daq_700.c
+++ b/drivers/staging/comedi/drivers/ni_daq_700.c
@@ -550,10 +550,8 @@ static int dio700_pcmcia_config_loop(struct pcmcia_device *p_dev,
550 return -ENODEV; 550 return -ENODEV;
551 551
552 /* Does this card need audio output? */ 552 /* Does this card need audio output? */
553 if (cfg->flags & CISTPL_CFTABLE_AUDIO) { 553 if (cfg->flags & CISTPL_CFTABLE_AUDIO)
554 p_dev->conf.Attributes |= CONF_ENABLE_SPKR; 554 p_dev->conf.Attributes |= CONF_ENABLE_SPKR;
555 p_dev->conf.Status = CCSR_AUDIO_ENA;
556 }
557 555
558 /* Do we need to allocate an interrupt? */ 556 /* Do we need to allocate an interrupt? */
559 p_dev->conf.Attributes |= CONF_ENABLE_IRQ; 557 p_dev->conf.Attributes |= CONF_ENABLE_IRQ;
diff --git a/drivers/staging/comedi/drivers/ni_daq_dio24.c b/drivers/staging/comedi/drivers/ni_daq_dio24.c
index 773ae2044e0e..ba693435963e 100644
--- a/drivers/staging/comedi/drivers/ni_daq_dio24.c
+++ b/drivers/staging/comedi/drivers/ni_daq_dio24.c
@@ -302,10 +302,8 @@ static int dio24_pcmcia_config_loop(struct pcmcia_device *p_dev,
302 return -ENODEV; 302 return -ENODEV;
303 303
304 /* Does this card need audio output? */ 304 /* Does this card need audio output? */
305 if (cfg->flags & CISTPL_CFTABLE_AUDIO) { 305 if (cfg->flags & CISTPL_CFTABLE_AUDIO)
306 p_dev->conf.Attributes |= CONF_ENABLE_SPKR; 306 p_dev->conf.Attributes |= CONF_ENABLE_SPKR;
307 p_dev->conf.Status = CCSR_AUDIO_ENA;
308 }
309 307
310 /* Do we need to allocate an interrupt? */ 308 /* Do we need to allocate an interrupt? */
311 p_dev->conf.Attributes |= CONF_ENABLE_IRQ; 309 p_dev->conf.Attributes |= CONF_ENABLE_IRQ;
diff --git a/drivers/staging/comedi/drivers/ni_labpc_cs.c b/drivers/staging/comedi/drivers/ni_labpc_cs.c
index 68c4ecbd93ae..5d5f11f2b5c3 100644
--- a/drivers/staging/comedi/drivers/ni_labpc_cs.c
+++ b/drivers/staging/comedi/drivers/ni_labpc_cs.c
@@ -281,10 +281,8 @@ static int labpc_pcmcia_config_loop(struct pcmcia_device *p_dev,
281 return -ENODEV; 281 return -ENODEV;
282 282
283 /* Does this card need audio output? */ 283 /* Does this card need audio output? */
284 if (cfg->flags & CISTPL_CFTABLE_AUDIO) { 284 if (cfg->flags & CISTPL_CFTABLE_AUDIO)
285 p_dev->conf.Attributes |= CONF_ENABLE_SPKR; 285 p_dev->conf.Attributes |= CONF_ENABLE_SPKR;
286 p_dev->conf.Status = CCSR_AUDIO_ENA;
287 }
288 286
289 /* Do we need to allocate an interrupt? */ 287 /* Do we need to allocate an interrupt? */
290 p_dev->conf.Attributes |= CONF_ENABLE_IRQ | CONF_ENABLE_PULSE_IRQ; 288 p_dev->conf.Attributes |= CONF_ENABLE_IRQ | CONF_ENABLE_PULSE_IRQ;
diff --git a/include/pcmcia/cs.h b/include/pcmcia/cs.h
index e656abee1741..29d693f72ba9 100644
--- a/include/pcmcia/cs.h
+++ b/include/pcmcia/cs.h
@@ -24,7 +24,6 @@ typedef struct config_req_t {
24 u_int Attributes; 24 u_int Attributes;
25 u_int IntType; 25 u_int IntType;
26 u_int ConfigBase; 26 u_int ConfigBase;
27 u_char Status, ExtStatus;
28 u_char ConfigIndex; 27 u_char ConfigIndex;
29 u_int Present; 28 u_int Present;
30} config_req_t; 29} config_req_t;
@@ -34,6 +33,7 @@ typedef struct config_req_t {
34#define CONF_ENABLE_DMA 0x02 33#define CONF_ENABLE_DMA 0x02
35#define CONF_ENABLE_SPKR 0x04 34#define CONF_ENABLE_SPKR 0x04
36#define CONF_ENABLE_PULSE_IRQ 0x08 35#define CONF_ENABLE_PULSE_IRQ 0x08
36#define CONF_ENABLE_ESR 0x10
37#define CONF_VALID_CLIENT 0x100 37#define CONF_VALID_CLIENT 0x100
38 38
39/* IntType field */ 39/* IntType field */