Lines Matching refs:s
76 claim_region(struct pcmcia_socket *s, resource_size_t base, in claim_region() argument
86 if (s && s->cb_dev) in claim_region()
87 parent = pci_find_parent_resource(s->cb_dev, res); in claim_region()
185 static void do_io_probe(struct pcmcia_socket *s, unsigned int base, in do_io_probe() argument
189 struct socket_data *s_data = s->resource_data; in do_io_probe()
194 dev_info(&s->dev, "cs: IO port probe %#x-%#x:", base, base+num-1); in do_io_probe()
200 dev_err(&s->dev, "do_io_probe: unable to kmalloc 256 bytes\n"); in do_io_probe()
204 res = claim_region(s, i, 8, IORESOURCE_IO, "PCMCIA ioprobe"); in do_io_probe()
221 res = claim_region(s, i, 8, IORESOURCE_IO, "PCMCIA ioprobe"); in do_io_probe()
266 static int readable(struct pcmcia_socket *s, struct resource *res, in readable() argument
271 if (s->fake_cis) { in readable()
272 dev_dbg(&s->dev, "fake CIS is being used: can't validate mem\n"); in readable()
276 s->cis_mem.res = res; in readable()
277 s->cis_virt = ioremap(res->start, s->map_size); in readable()
278 if (s->cis_virt) { in readable()
279 mutex_unlock(&s->ops_mutex); in readable()
281 if (s->callback->validate) in readable()
282 ret = s->callback->validate(s, count); in readable()
284 mutex_lock(&s->ops_mutex); in readable()
285 iounmap(s->cis_virt); in readable()
286 s->cis_virt = NULL; in readable()
288 s->cis_mem.res = NULL; in readable()
297 static int checksum(struct pcmcia_socket *s, struct resource *res, in checksum() argument
304 virt = ioremap(res->start, s->map_size); in checksum()
311 s->ops->set_mem_map(s, &map); in checksum()
314 for (i = 0; i < s->map_size; i += 44) { in checksum()
321 s->ops->set_mem_map(s, &map); in checksum()
347 static int do_validate_mem(struct pcmcia_socket *s, in do_validate_mem() argument
349 int validate (struct pcmcia_socket *s, in do_validate_mem() argument
353 struct socket_data *s_data = s->resource_data; in do_validate_mem()
358 res1 = claim_region(s, base, size/2, IORESOURCE_MEM, "PCMCIA memprobe"); in do_validate_mem()
359 res2 = claim_region(s, base + size/2, size/2, IORESOURCE_MEM, in do_validate_mem()
365 ret = validate(s, res1, &info1); in do_validate_mem()
366 ret += validate(s, res2, &info2); in do_validate_mem()
370 dev_dbg(&s->dev, "cs: memory probe 0x%06lx-0x%06lx: %p %p %u %u %u", in do_validate_mem()
379 if (validate && !s->fake_cis) { in do_validate_mem()
403 static int do_mem_probe(struct pcmcia_socket *s, u_long base, u_long num, in do_mem_probe() argument
404 int validate (struct pcmcia_socket *s, in do_mem_probe() argument
407 int fallback (struct pcmcia_socket *s, in do_mem_probe() argument
411 struct socket_data *s_data = s->resource_data; in do_mem_probe()
414 dev_info(&s->dev, "cs: memory probe 0x%06lx-0x%06lx:", in do_mem_probe()
422 if (step < 2 * s->map_size) in do_mem_probe()
423 step = 2 * s->map_size; in do_mem_probe()
427 if (!do_validate_mem(s, j, step, validate)) in do_mem_probe()
434 if (!do_validate_mem(s, j, step, fallback)) in do_mem_probe()
457 static u_long inv_probe(struct resource_map *m, struct pcmcia_socket *s) in inv_probe() argument
459 struct socket_data *s_data = s->resource_data; in inv_probe()
463 ok = inv_probe(m->next, s); in inv_probe()
471 return do_mem_probe(s, m->base, m->num, readable, checksum); in inv_probe()
483 static int validate_mem(struct pcmcia_socket *s, unsigned int probe_mask) in validate_mem() argument
488 struct socket_data *s_data = s->resource_data; in validate_mem()
492 if (inv_probe(s_data->mem_db.next, s) > 0) in validate_mem()
496 dev_notice(&s->dev, in validate_mem()
507 ok += do_mem_probe(s, mm.base, mm.num, readable, in validate_mem()
518 ok += do_mem_probe(s, b, 0x10000, in validate_mem()
539 static int validate_mem(struct pcmcia_socket *s, unsigned int probe_mask) in validate_mem() argument
542 struct socket_data *s_data = s->resource_data; in validate_mem()
547 ok += do_mem_probe(s, mm.base, mm.num, readable, checksum); in validate_mem()
566 static int pcmcia_nonstatic_validate_mem(struct pcmcia_socket *s) in pcmcia_nonstatic_validate_mem() argument
568 struct socket_data *s_data = s->resource_data; in pcmcia_nonstatic_validate_mem()
572 if (!probe_mem || !(s->state & SOCKET_PRESENT)) in pcmcia_nonstatic_validate_mem()
575 if (s->features & SS_CAP_PAGE_REGS) in pcmcia_nonstatic_validate_mem()
578 ret = validate_mem(s, probe_mask); in pcmcia_nonstatic_validate_mem()
651 static int __nonstatic_adjust_io_region(struct pcmcia_socket *s, in __nonstatic_adjust_io_region() argument
656 struct socket_data *s_data = s->resource_data; in __nonstatic_adjust_io_region()
685 static struct resource *__nonstatic_find_io_region(struct pcmcia_socket *s, in __nonstatic_find_io_region() argument
690 dev_name(&s->dev)); in __nonstatic_find_io_region()
691 struct socket_data *s_data = s->resource_data; in __nonstatic_find_io_region()
701 if (s->cb_dev) { in __nonstatic_find_io_region()
702 ret = pci_bus_alloc_resource(s->cb_dev->bus, res, num, 1, in __nonstatic_find_io_region()
716 static int nonstatic_find_io(struct pcmcia_socket *s, unsigned int attr, in nonstatic_find_io() argument
727 if (!s->io[i].res) in nonstatic_find_io()
733 if ((s->io[i].res->start & (align-1)) == *base) in nonstatic_find_io()
738 struct resource *res = s->io[i].res; in nonstatic_find_io()
749 res = s->io[i].res = __nonstatic_find_io_region(s, in nonstatic_find_io()
756 s->io[i].res->flags = in nonstatic_find_io()
759 s->io[i].InUse = num; in nonstatic_find_io()
767 ret = __nonstatic_adjust_io_region(s, res->start, in nonstatic_find_io()
770 ret = adjust_resource(s->io[i].res, res->start, in nonstatic_find_io()
775 s->io[i].InUse += num; in nonstatic_find_io()
784 ret = __nonstatic_adjust_io_region(s, in nonstatic_find_io()
788 ret = adjust_resource(s->io[i].res, in nonstatic_find_io()
794 s->io[i].InUse += num; in nonstatic_find_io()
806 u_long align, int low, struct pcmcia_socket *s) in nonstatic_find_mem_region() argument
809 dev_name(&s->dev)); in nonstatic_find_mem_region()
810 struct socket_data *s_data = s->resource_data; in nonstatic_find_mem_region()
815 low = low || !(s->features & SS_CAP_PAGE_REGS); in nonstatic_find_mem_region()
832 if (s->cb_dev) { in nonstatic_find_mem_region()
833 ret = pci_bus_alloc_resource(s->cb_dev->bus, in nonstatic_find_mem_region()
860 static int adjust_memory(struct pcmcia_socket *s, unsigned int action, unsigned long start, unsigne… in adjust_memory() argument
862 struct socket_data *data = s->resource_data; in adjust_memory()
873 do_mem_probe(s, start, size, NULL, NULL); in adjust_memory()
886 static int adjust_io(struct pcmcia_socket *s, unsigned int action, unsigned long start, unsigned lo… in adjust_io() argument
888 struct socket_data *data = s->resource_data; in adjust_io()
915 do_io_probe(s, start, size); in adjust_io()
931 static int nonstatic_autoadd_resources(struct pcmcia_socket *s) argument
936 if (!s->cb_dev || !s->cb_dev->bus)
958 if (s->cb_dev->bus->number == 0)
962 res = s->cb_dev->bus->resource[i];
964 pci_bus_for_each_resource(s->cb_dev->bus, res, i) {
976 dev_info(&s->cb_dev->dev,
979 if (!adjust_io(s, ADD_MANAGED_RESOURCE, res->start, res->end))
991 dev_info(&s->cb_dev->dev,
994 if (!adjust_memory(s, ADD_MANAGED_RESOURCE, res->start, res->end))
1002 s->resource_setup_done = 1;
1009 static inline int nonstatic_autoadd_resources(struct pcmcia_socket *s) argument
1017 static int nonstatic_init(struct pcmcia_socket *s) argument
1029 s->resource_data = (void *) data;
1031 nonstatic_autoadd_resources(s);
1036 static void nonstatic_release_resource_db(struct pcmcia_socket *s) argument
1038 struct socket_data *data = s->resource_data;
1071 struct pcmcia_socket *s = dev_get_drvdata(dev); local
1076 mutex_lock(&s->ops_mutex);
1077 data = s->resource_data;
1088 mutex_unlock(&s->ops_mutex);
1096 struct pcmcia_socket *s = dev_get_drvdata(dev); local
1116 mutex_lock(&s->ops_mutex);
1117 ret = adjust_io(s, add, start_addr, end_addr);
1118 mutex_unlock(&s->ops_mutex);
1127 struct pcmcia_socket *s = dev_get_drvdata(dev); local
1132 mutex_lock(&s->ops_mutex);
1133 data = s->resource_data;
1154 mutex_unlock(&s->ops_mutex);
1162 struct pcmcia_socket *s = dev_get_drvdata(dev); local
1182 mutex_lock(&s->ops_mutex);
1183 ret = adjust_memory(s, add, start_addr, end_addr);
1184 mutex_unlock(&s->ops_mutex);
1203 struct pcmcia_socket *s = dev_get_drvdata(dev); local
1205 if (s->resource_ops != &pccard_nonstatic_ops)
1213 struct pcmcia_socket *s = dev_get_drvdata(dev); local
1215 if (s->resource_ops != &pccard_nonstatic_ops)