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_printk(KERN_INFO, &s->dev, "cs: IO port probe %#x-%#x:", in do_io_probe()
201 dev_printk(KERN_ERR, &s->dev, in do_io_probe()
206 res = claim_region(s, i, 8, IORESOURCE_IO, "PCMCIA ioprobe"); in do_io_probe()
223 res = claim_region(s, i, 8, IORESOURCE_IO, "PCMCIA ioprobe"); in do_io_probe()
268 static int readable(struct pcmcia_socket *s, struct resource *res, in readable() argument
273 if (s->fake_cis) { in readable()
274 dev_dbg(&s->dev, "fake CIS is being used: can't validate mem\n"); in readable()
278 s->cis_mem.res = res; in readable()
279 s->cis_virt = ioremap(res->start, s->map_size); in readable()
280 if (s->cis_virt) { in readable()
281 mutex_unlock(&s->ops_mutex); in readable()
283 if (s->callback->validate) in readable()
284 ret = s->callback->validate(s, count); in readable()
286 mutex_lock(&s->ops_mutex); in readable()
287 iounmap(s->cis_virt); in readable()
288 s->cis_virt = NULL; in readable()
290 s->cis_mem.res = NULL; in readable()
299 static int checksum(struct pcmcia_socket *s, struct resource *res, in checksum() argument
306 virt = ioremap(res->start, s->map_size); in checksum()
313 s->ops->set_mem_map(s, &map); in checksum()
316 for (i = 0; i < s->map_size; i += 44) { in checksum()
323 s->ops->set_mem_map(s, &map); in checksum()
349 static int do_validate_mem(struct pcmcia_socket *s, in do_validate_mem() argument
351 int validate (struct pcmcia_socket *s, in do_validate_mem() argument
355 struct socket_data *s_data = s->resource_data; in do_validate_mem()
360 res1 = claim_region(s, base, size/2, IORESOURCE_MEM, "PCMCIA memprobe"); in do_validate_mem()
361 res2 = claim_region(s, base + size/2, size/2, IORESOURCE_MEM, in do_validate_mem()
367 ret = validate(s, res1, &info1); in do_validate_mem()
368 ret += validate(s, res2, &info2); in do_validate_mem()
372 dev_dbg(&s->dev, "cs: memory probe 0x%06lx-0x%06lx: %p %p %u %u %u", in do_validate_mem()
381 if (validate && !s->fake_cis) { in do_validate_mem()
405 static int do_mem_probe(struct pcmcia_socket *s, u_long base, u_long num, in do_mem_probe() argument
406 int validate (struct pcmcia_socket *s, in do_mem_probe() argument
409 int fallback (struct pcmcia_socket *s, in do_mem_probe() argument
413 struct socket_data *s_data = s->resource_data; in do_mem_probe()
416 dev_printk(KERN_INFO, &s->dev, "cs: memory probe 0x%06lx-0x%06lx:", in do_mem_probe()
424 if (step < 2 * s->map_size) in do_mem_probe()
425 step = 2 * s->map_size; in do_mem_probe()
429 if (!do_validate_mem(s, j, step, validate)) in do_mem_probe()
436 if (!do_validate_mem(s, j, step, fallback)) in do_mem_probe()
459 static u_long inv_probe(struct resource_map *m, struct pcmcia_socket *s) in inv_probe() argument
461 struct socket_data *s_data = s->resource_data; in inv_probe()
465 ok = inv_probe(m->next, s); in inv_probe()
473 return do_mem_probe(s, m->base, m->num, readable, checksum); in inv_probe()
485 static int validate_mem(struct pcmcia_socket *s, unsigned int probe_mask) in validate_mem() argument
490 struct socket_data *s_data = s->resource_data; in validate_mem()
494 if (inv_probe(s_data->mem_db.next, s) > 0) in validate_mem()
498 dev_printk(KERN_NOTICE, &s->dev, in validate_mem()
509 ok += do_mem_probe(s, mm.base, mm.num, readable, in validate_mem()
520 ok += do_mem_probe(s, b, 0x10000, in validate_mem()
541 static int validate_mem(struct pcmcia_socket *s, unsigned int probe_mask) in validate_mem() argument
544 struct socket_data *s_data = s->resource_data; in validate_mem()
549 ok += do_mem_probe(s, mm.base, mm.num, readable, checksum); in validate_mem()
568 static int pcmcia_nonstatic_validate_mem(struct pcmcia_socket *s) in pcmcia_nonstatic_validate_mem() argument
570 struct socket_data *s_data = s->resource_data; in pcmcia_nonstatic_validate_mem()
574 if (!probe_mem || !(s->state & SOCKET_PRESENT)) in pcmcia_nonstatic_validate_mem()
577 if (s->features & SS_CAP_PAGE_REGS) in pcmcia_nonstatic_validate_mem()
580 ret = validate_mem(s, probe_mask); in pcmcia_nonstatic_validate_mem()
653 static int __nonstatic_adjust_io_region(struct pcmcia_socket *s, in __nonstatic_adjust_io_region() argument
658 struct socket_data *s_data = s->resource_data; in __nonstatic_adjust_io_region()
687 static struct resource *__nonstatic_find_io_region(struct pcmcia_socket *s, in __nonstatic_find_io_region() argument
692 dev_name(&s->dev)); in __nonstatic_find_io_region()
693 struct socket_data *s_data = s->resource_data; in __nonstatic_find_io_region()
703 if (s->cb_dev) { in __nonstatic_find_io_region()
704 ret = pci_bus_alloc_resource(s->cb_dev->bus, res, num, 1, in __nonstatic_find_io_region()
718 static int nonstatic_find_io(struct pcmcia_socket *s, unsigned int attr, in nonstatic_find_io() argument
729 if (!s->io[i].res) in nonstatic_find_io()
735 if ((s->io[i].res->start & (align-1)) == *base) in nonstatic_find_io()
740 struct resource *res = s->io[i].res; in nonstatic_find_io()
751 res = s->io[i].res = __nonstatic_find_io_region(s, in nonstatic_find_io()
758 s->io[i].res->flags = in nonstatic_find_io()
761 s->io[i].InUse = num; in nonstatic_find_io()
769 ret = __nonstatic_adjust_io_region(s, res->start, in nonstatic_find_io()
772 ret = adjust_resource(s->io[i].res, res->start, in nonstatic_find_io()
777 s->io[i].InUse += num; in nonstatic_find_io()
786 ret = __nonstatic_adjust_io_region(s, in nonstatic_find_io()
790 ret = adjust_resource(s->io[i].res, in nonstatic_find_io()
796 s->io[i].InUse += num; in nonstatic_find_io()
808 u_long align, int low, struct pcmcia_socket *s) in nonstatic_find_mem_region() argument
811 dev_name(&s->dev)); in nonstatic_find_mem_region()
812 struct socket_data *s_data = s->resource_data; in nonstatic_find_mem_region()
817 low = low || !(s->features & SS_CAP_PAGE_REGS); in nonstatic_find_mem_region()
834 if (s->cb_dev) { in nonstatic_find_mem_region()
835 ret = pci_bus_alloc_resource(s->cb_dev->bus, in nonstatic_find_mem_region()
862 static int adjust_memory(struct pcmcia_socket *s, unsigned int action, unsigned long start, unsigne… in adjust_memory() argument
864 struct socket_data *data = s->resource_data; in adjust_memory()
875 do_mem_probe(s, start, size, NULL, NULL); in adjust_memory()
888 static int adjust_io(struct pcmcia_socket *s, unsigned int action, unsigned long start, unsigned lo… in adjust_io() argument
890 struct socket_data *data = s->resource_data; in adjust_io()
917 do_io_probe(s, start, size); in adjust_io()
933 static int nonstatic_autoadd_resources(struct pcmcia_socket *s) argument
938 if (!s->cb_dev || !s->cb_dev->bus)
960 if (s->cb_dev->bus->number == 0)
964 res = s->cb_dev->bus->resource[i];
966 pci_bus_for_each_resource(s->cb_dev->bus, res, i) {
978 dev_printk(KERN_INFO, &s->cb_dev->dev,
981 if (!adjust_io(s, ADD_MANAGED_RESOURCE, res->start, res->end))
993 dev_printk(KERN_INFO, &s->cb_dev->dev,
996 if (!adjust_memory(s, ADD_MANAGED_RESOURCE, res->start, res->end))
1004 s->resource_setup_done = 1;
1011 static inline int nonstatic_autoadd_resources(struct pcmcia_socket *s) argument
1019 static int nonstatic_init(struct pcmcia_socket *s) argument
1031 s->resource_data = (void *) data;
1033 nonstatic_autoadd_resources(s);
1038 static void nonstatic_release_resource_db(struct pcmcia_socket *s) argument
1040 struct socket_data *data = s->resource_data;
1073 struct pcmcia_socket *s = dev_get_drvdata(dev); local
1078 mutex_lock(&s->ops_mutex);
1079 data = s->resource_data;
1090 mutex_unlock(&s->ops_mutex);
1098 struct pcmcia_socket *s = dev_get_drvdata(dev); local
1118 mutex_lock(&s->ops_mutex);
1119 ret = adjust_io(s, add, start_addr, end_addr);
1120 mutex_unlock(&s->ops_mutex);
1129 struct pcmcia_socket *s = dev_get_drvdata(dev); local
1134 mutex_lock(&s->ops_mutex);
1135 data = s->resource_data;
1156 mutex_unlock(&s->ops_mutex);
1164 struct pcmcia_socket *s = dev_get_drvdata(dev); local
1184 mutex_lock(&s->ops_mutex);
1185 ret = adjust_memory(s, add, start_addr, end_addr);
1186 mutex_unlock(&s->ops_mutex);
1205 struct pcmcia_socket *s = dev_get_drvdata(dev); local
1207 if (s->resource_ops != &pccard_nonstatic_ops)
1215 struct pcmcia_socket *s = dev_get_drvdata(dev); local
1217 if (s->resource_ops != &pccard_nonstatic_ops)