diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-07-29 09:54:54 -0400 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-09-29 11:20:21 -0400 |
commit | 1a4a046030ade0f57b8f3b476d61c7c35d894b66 (patch) | |
tree | 07496ee2340444c87740745b140957347b4da1c3 /drivers | |
parent | e8405f0f617856de0ceb7d04e65b663051451544 (diff) |
pcmcia: remove Pin, Copy configuration register access
The "Pin" and "Copy" configuration registers (CISREG_SCR, CISREG_PPR)
do not seem to be utilized anywhere. If a device would request a
write to these registers, "0" would be written. Continue to do so, but
warn of unexpected behavior -- and remove the "Pin" and "Copy" entries
from config_req_t.
Tested-by: Wolfram Sang <w.sang@pengutronix.de>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/pcmcia/cs_internal.h | 2 | ||||
-rw-r--r-- | drivers/pcmcia/pcmcia_resource.c | 14 |
2 files changed, 9 insertions, 7 deletions
diff --git a/drivers/pcmcia/cs_internal.h b/drivers/pcmcia/cs_internal.h index da055dc14d98..9487340deaf0 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, Pin, Copy, Option, ExtStatus; | 39 | unsigned char Status, Option, ExtStatus; |
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 817d00adfc89..28717eea7c57 100644 --- a/drivers/pcmcia/pcmcia_resource.c +++ b/drivers/pcmcia/pcmcia_resource.c | |||
@@ -489,8 +489,14 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev, | |||
489 | base = c->ConfigBase = req->ConfigBase; | 489 | base = c->ConfigBase = req->ConfigBase; |
490 | c->CardValues = req->Present; | 490 | c->CardValues = req->Present; |
491 | if (req->Present & PRESENT_COPY) { | 491 | if (req->Present & PRESENT_COPY) { |
492 | c->Copy = req->Copy; | 492 | u16 tmp = 0; |
493 | pcmcia_write_cis_mem(s, 1, (base + CISREG_SCR)>>1, 1, &c->Copy); | 493 | dev_dbg(&p_dev->dev, "clearing CISREG_SCR\n"); |
494 | pcmcia_write_cis_mem(s, 1, (base + CISREG_SCR)>>1, 1, &tmp); | ||
495 | } | ||
496 | if (req->Present & PRESENT_PIN_REPLACE) { | ||
497 | u16 tmp = 0; | ||
498 | dev_dbg(&p_dev->dev, "clearing CISREG_PRR\n"); | ||
499 | pcmcia_write_cis_mem(s, 1, (base + CISREG_PRR)>>1, 1, &tmp); | ||
494 | } | 500 | } |
495 | if (req->Present & PRESENT_OPTION) { | 501 | if (req->Present & PRESENT_OPTION) { |
496 | if (s->functions == 1) { | 502 | if (s->functions == 1) { |
@@ -511,10 +517,6 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev, | |||
511 | c->Status = req->Status; | 517 | c->Status = req->Status; |
512 | pcmcia_write_cis_mem(s, 1, (base + CISREG_CCSR)>>1, 1, &c->Status); | 518 | pcmcia_write_cis_mem(s, 1, (base + CISREG_CCSR)>>1, 1, &c->Status); |
513 | } | 519 | } |
514 | if (req->Present & PRESENT_PIN_REPLACE) { | ||
515 | c->Pin = req->Pin; | ||
516 | pcmcia_write_cis_mem(s, 1, (base + CISREG_PRR)>>1, 1, &c->Pin); | ||
517 | } | ||
518 | if (req->Present & PRESENT_EXT_STATUS) { | 520 | if (req->Present & PRESENT_EXT_STATUS) { |
519 | c->ExtStatus = req->ExtStatus; | 521 | c->ExtStatus = req->ExtStatus; |
520 | pcmcia_write_cis_mem(s, 1, (base + CISREG_ESR)>>1, 1, &c->ExtStatus); | 522 | pcmcia_write_cis_mem(s, 1, (base + CISREG_ESR)>>1, 1, &c->ExtStatus); |