diff options
author | Dominik Brodowski <linux@dominikbrodowski.de> | 2005-01-11 03:28:24 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-01-11 03:28:24 -0800 |
commit | 1b71fababfefb7b4477826789eaaad961e423b06 (patch) | |
tree | c12b1df06d02aedbffbdf26d0ee925e446cedac2 /drivers | |
parent | aa4cb19247959d6c3ee9f0274f1d299155791aae (diff) | |
download | history-1b71fababfefb7b4477826789eaaad961e423b06.tar.gz |
[PATCH] pcmcia: find_io_region only for non-statically mapped sockets
Calls to find_io_region only happen if !SS_CAP_STATIC_MAP.
Signed-off-by: Dominik Brodowski <linux@brodo.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/pcmcia/rsrc_mgr.c | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/drivers/pcmcia/rsrc_mgr.c b/drivers/pcmcia/rsrc_mgr.c index a97c971ad805df..de488824dbe654 100644 --- a/drivers/pcmcia/rsrc_mgr.c +++ b/drivers/pcmcia/rsrc_mgr.c @@ -504,13 +504,6 @@ static void pcmcia_nonstatic_validate_mem(struct pcmcia_socket *s) } } -void pcmcia_validate_mem(struct pcmcia_socket *s) -{ - if (s->resource_ops->validate_mem) - s->resource_ops->validate_mem(s); -} -EXPORT_SYMBOL(pcmcia_validate_mem); - struct pcmcia_align_data { unsigned long mask; unsigned long offset; @@ -599,14 +592,6 @@ static int nonstatic_adjust_io_region(struct resource *res, unsigned long r_star return ret; } -int adjust_io_region(struct resource *res, unsigned long r_start, - unsigned long r_end, struct pcmcia_socket *s) -{ - if (s->resource_ops->adjust_io_region) - return s->resource_ops->adjust_io_region(res, r_start, r_end, s); - return -ENOMEM; -} - /*====================================================================== These find ranges of I/O ports or memory addresses that are not @@ -620,7 +605,7 @@ int adjust_io_region(struct resource *res, unsigned long r_start, ======================================================================*/ -struct resource *find_io_region(unsigned long base, int num, +struct resource *nonstatic_find_io_region(unsigned long base, int num, unsigned long align, struct pcmcia_socket *s) { struct resource *res = make_resource(0, num, IORESOURCE_IO, s->dev.class_id); @@ -997,12 +982,38 @@ void release_resource_db(struct pcmcia_socket *s) } +void pcmcia_validate_mem(struct pcmcia_socket *s) +{ + if (s->resource_ops->validate_mem) + s->resource_ops->validate_mem(s); +} +EXPORT_SYMBOL(pcmcia_validate_mem); + +int adjust_io_region(struct resource *res, unsigned long r_start, + unsigned long r_end, struct pcmcia_socket *s) +{ + if (s->resource_ops->adjust_io_region) + return s->resource_ops->adjust_io_region(res, r_start, r_end, s); + return -ENOMEM; +} + +struct resource *find_io_region(unsigned long base, int num, + unsigned long align, struct pcmcia_socket *s) +{ + if (s->resource_ops->find_io) + return s->resource_ops->find_io(base, num, align, s); + return NULL; +} + + struct pccard_resource_ops pccard_static_ops = { .validate_mem = NULL, .adjust_io_region = NULL, + .find_io = NULL, }; struct pccard_resource_ops pccard_nonstatic_ops = { .validate_mem = pcmcia_nonstatic_validate_mem, .adjust_io_region = nonstatic_adjust_io_region, + .find_io = nonstatic_find_io_region, }; |