Lines Matching refs:s

41 int pcmcia_validate_mem(struct pcmcia_socket *s)  in pcmcia_validate_mem()  argument
43 if (s->resource_ops->validate_mem) in pcmcia_validate_mem()
44 return s->resource_ops->validate_mem(s); in pcmcia_validate_mem()
50 int low, struct pcmcia_socket *s) in pcmcia_find_mem_region() argument
52 if (s->resource_ops->find_mem) in pcmcia_find_mem_region()
53 return s->resource_ops->find_mem(base, num, align, low, s); in pcmcia_find_mem_region()
64 static void release_io_space(struct pcmcia_socket *s, struct resource *res) in release_io_space() argument
69 dev_dbg(&s->dev, "release_io_space for %pR\n", res); in release_io_space()
72 if (!s->io[i].res) in release_io_space()
74 if ((s->io[i].res->start <= res->start) && in release_io_space()
75 (s->io[i].res->end >= res->end)) { in release_io_space()
76 s->io[i].InUse -= num; in release_io_space()
82 if (s->io[i].InUse == 0) { in release_io_space()
83 release_resource(s->io[i].res); in release_io_space()
84 kfree(s->io[i].res); in release_io_space()
85 s->io[i].res = NULL; in release_io_space()
100 static int alloc_io_space(struct pcmcia_socket *s, struct resource *res, in alloc_io_space() argument
110 dev_dbg(&s->dev, "alloc_io_space request for %pR, %d lines\n", in alloc_io_space()
116 dev_dbg(&s->dev, "odd IO request\n"); in alloc_io_space()
123 dev_dbg(&s->dev, "odd IO request\n"); in alloc_io_space()
127 ret = s->resource_ops->find_io(s, res->flags, &base, num, align, in alloc_io_space()
130 dev_dbg(&s->dev, "alloc_io_space request failed (%d)\n", ret); in alloc_io_space()
140 dev_warn(&s->dev, in alloc_io_space()
143 release_io_space(s, res); in alloc_io_space()
146 dev_dbg(&s->dev, "alloc_io_space request result %d: %pR\n", ret, res); in alloc_io_space()
161 int (*accessf) (struct pcmcia_socket *s, in pcmcia_access_config()
165 struct pcmcia_socket *s; in pcmcia_access_config() local
170 s = p_dev->socket; in pcmcia_access_config()
172 mutex_lock(&s->ops_mutex); in pcmcia_access_config()
177 mutex_unlock(&s->ops_mutex); in pcmcia_access_config()
183 ret = accessf(s, 1, addr, 1, val); in pcmcia_access_config()
185 mutex_unlock(&s->ops_mutex); in pcmcia_access_config()
230 struct pcmcia_socket *s = p_dev->socket; in pcmcia_map_mem_page() local
238 mutex_lock(&s->ops_mutex); in pcmcia_map_mem_page()
239 s->win[w].card_start = offset; in pcmcia_map_mem_page()
240 ret = s->ops->set_mem_map(s, &s->win[w]); in pcmcia_map_mem_page()
243 mutex_unlock(&s->ops_mutex); in pcmcia_map_mem_page()
259 struct pcmcia_socket *s = p_dev->socket; in pcmcia_fixup_iowidth() local
264 mutex_lock(&s->ops_mutex); in pcmcia_fixup_iowidth()
268 if (!(s->state & SOCKET_PRESENT) || in pcmcia_fixup_iowidth()
277 if (!s->io[i].res) in pcmcia_fixup_iowidth()
283 io_on.start = s->io[i].res->start; in pcmcia_fixup_iowidth()
284 io_on.stop = s->io[i].res->end; in pcmcia_fixup_iowidth()
286 s->ops->set_io_map(s, &io_off); in pcmcia_fixup_iowidth()
288 s->ops->set_io_map(s, &io_on); in pcmcia_fixup_iowidth()
291 mutex_unlock(&s->ops_mutex); in pcmcia_fixup_iowidth()
309 struct pcmcia_socket *s = p_dev->socket; in pcmcia_fixup_vpp() local
312 mutex_lock(&s->ops_mutex); in pcmcia_fixup_vpp()
316 if (!(s->state & SOCKET_PRESENT) || in pcmcia_fixup_vpp()
323 s->socket.Vpp = new_vpp; in pcmcia_fixup_vpp()
324 if (s->ops->set_socket(s, &s->socket)) { in pcmcia_fixup_vpp()
332 mutex_unlock(&s->ops_mutex); in pcmcia_fixup_vpp()
353 struct pcmcia_socket *s = p_dev->socket; in pcmcia_release_configuration() local
357 mutex_lock(&s->ops_mutex); in pcmcia_release_configuration()
361 if (--(s->lock_count) == 0) { in pcmcia_release_configuration()
362 s->socket.flags = SS_OUTPUT_ENA; /* Is this correct? */ in pcmcia_release_configuration()
363 s->socket.Vpp = 0; in pcmcia_release_configuration()
364 s->socket.io_irq = 0; in pcmcia_release_configuration()
365 s->ops->set_socket(s, &s->socket); in pcmcia_release_configuration()
372 if (!s->io[i].res) in pcmcia_release_configuration()
374 s->io[i].Config--; in pcmcia_release_configuration()
375 if (s->io[i].Config != 0) in pcmcia_release_configuration()
378 s->ops->set_io_map(s, &io); in pcmcia_release_configuration()
381 mutex_unlock(&s->ops_mutex); in pcmcia_release_configuration()
399 struct pcmcia_socket *s = p_dev->socket; in pcmcia_release_io() local
403 mutex_lock(&s->ops_mutex); in pcmcia_release_io()
409 release_io_space(s, &c->io[0]); in pcmcia_release_io()
412 release_io_space(s, &c->io[1]); in pcmcia_release_io()
418 mutex_unlock(&s->ops_mutex); in pcmcia_release_io()
434 struct pcmcia_socket *s = p_dev->socket; in pcmcia_release_window() local
444 mutex_lock(&s->ops_mutex); in pcmcia_release_window()
445 win = &s->win[w]; in pcmcia_release_window()
449 mutex_unlock(&s->ops_mutex); in pcmcia_release_window()
455 s->ops->set_mem_map(s, win); in pcmcia_release_window()
456 s->state &= ~SOCKET_WIN_REQ(w); in pcmcia_release_window()
468 mutex_unlock(&s->ops_mutex); in pcmcia_release_window()
488 struct pcmcia_socket *s = p_dev->socket; in pcmcia_enable_device() local
496 if (!(s->state & SOCKET_PRESENT)) in pcmcia_enable_device()
499 mutex_lock(&s->ops_mutex); in pcmcia_enable_device()
502 mutex_unlock(&s->ops_mutex); in pcmcia_enable_device()
508 s->socket.Vpp = p_dev->vpp; in pcmcia_enable_device()
509 if (s->ops->set_socket(s, &s->socket)) { in pcmcia_enable_device()
510 mutex_unlock(&s->ops_mutex); in pcmcia_enable_device()
520 s->socket.flags |= SS_IOCARD; in pcmcia_enable_device()
522 s->socket.flags |= SS_ZVCARD | SS_IOCARD; in pcmcia_enable_device()
524 s->socket.flags |= SS_SPKR_ENA; in pcmcia_enable_device()
531 s->socket.io_irq = s->pcmcia_irq; in pcmcia_enable_device()
533 s->socket.io_irq = 0; in pcmcia_enable_device()
538 s->ops->set_socket(s, &s->socket); in pcmcia_enable_device()
539 s->lock_count++; in pcmcia_enable_device()
551 pcmcia_write_cis_mem(s, 1, (base + CISREG_SCR)>>1, 1, &tmp); in pcmcia_enable_device()
556 pcmcia_write_cis_mem(s, 1, (base + CISREG_PRR)>>1, 1, &tmp); in pcmcia_enable_device()
559 if (s->functions == 1) { in pcmcia_enable_device()
570 pcmcia_write_cis_mem(s, 1, (base + CISREG_COR)>>1, 1, &option); in pcmcia_enable_device()
574 pcmcia_write_cis_mem(s, 1, (base + CISREG_CCSR)>>1, 1, &status); in pcmcia_enable_device()
577 pcmcia_write_cis_mem(s, 1, (base + CISREG_ESR)>>1, 1, in pcmcia_enable_device()
582 pcmcia_write_cis_mem(s, 1, (base + CISREG_IOBASE_0)>>1, 1, &b); in pcmcia_enable_device()
584 pcmcia_write_cis_mem(s, 1, (base + CISREG_IOBASE_1)>>1, 1, &b); in pcmcia_enable_device()
588 pcmcia_write_cis_mem(s, 1, (base + CISREG_IOSIZE)>>1, 1, &b); in pcmcia_enable_device()
595 if (s->io[i].res) { in pcmcia_enable_device()
598 switch (s->io[i].res->flags & IO_DATA_PATH_WIDTH) { in pcmcia_enable_device()
606 iomap.start = s->io[i].res->start; in pcmcia_enable_device()
607 iomap.stop = s->io[i].res->end; in pcmcia_enable_device()
608 s->ops->set_io_map(s, &iomap); in pcmcia_enable_device()
609 s->io[i].Config++; in pcmcia_enable_device()
615 mutex_unlock(&s->ops_mutex); in pcmcia_enable_device()
633 struct pcmcia_socket *s = p_dev->socket; in pcmcia_request_io() local
637 mutex_lock(&s->ops_mutex); in pcmcia_request_io()
641 if (!(s->state & SOCKET_PRESENT)) { in pcmcia_request_io()
655 ret = alloc_io_space(s, &c->io[0], p_dev->io_lines); in pcmcia_request_io()
660 ret = alloc_io_space(s, &c->io[1], p_dev->io_lines); in pcmcia_request_io()
664 release_io_space(s, &c->io[0]); in pcmcia_request_io()
680 mutex_unlock(&s->ops_mutex); in pcmcia_request_io()
772 struct pcmcia_socket *s = p_dev->socket; in pcmcia_setup_isa_irq() local
774 u32 mask = s->irq_mask; in pcmcia_setup_isa_irq()
798 p_dev->irq = s->pcmcia_irq = irq; in pcmcia_setup_isa_irq()
807 void pcmcia_cleanup_irq(struct pcmcia_socket *s) in pcmcia_cleanup_irq() argument
809 pcmcia_used_irq[s->pcmcia_irq]--; in pcmcia_cleanup_irq()
810 s->pcmcia_irq = 0; in pcmcia_cleanup_irq()
820 void pcmcia_cleanup_irq(struct pcmcia_socket *s) in pcmcia_cleanup_irq() argument
822 s->pcmcia_irq = 0; in pcmcia_cleanup_irq()
837 struct pcmcia_socket *s = p_dev->socket; in pcmcia_setup_irq() local
843 if (s->pcmcia_irq) { in pcmcia_setup_irq()
844 p_dev->irq = s->pcmcia_irq; in pcmcia_setup_irq()
857 if (s->pci_irq) { in pcmcia_setup_irq()
858 p_dev->irq = s->pcmcia_irq = s->pci_irq; in pcmcia_setup_irq()
881 struct pcmcia_socket *s = p_dev->socket; in pcmcia_request_window() local
888 if (!(s->state & SOCKET_PRESENT)) { in pcmcia_request_window()
895 res->end = s->map_size; in pcmcia_request_window()
896 align = (s->features & SS_CAP_MEM_ALIGN) ? res->end : s->map_size; in pcmcia_request_window()
897 if (res->end & (s->map_size-1)) { in pcmcia_request_window()
901 if ((res->start && (s->features & SS_CAP_STATIC_MAP)) || in pcmcia_request_window()
910 mutex_lock(&s->ops_mutex); in pcmcia_request_window()
912 if (!(s->state & SOCKET_WIN_REQ(w))) in pcmcia_request_window()
916 mutex_unlock(&s->ops_mutex); in pcmcia_request_window()
920 win = &s->win[w]; in pcmcia_request_window()
922 if (!(s->features & SS_CAP_STATIC_MAP)) { in pcmcia_request_window()
924 0, s); in pcmcia_request_window()
927 mutex_unlock(&s->ops_mutex); in pcmcia_request_window()
939 if (s->ops->set_mem_map(s, win) != 0) { in pcmcia_request_window()
941 mutex_unlock(&s->ops_mutex); in pcmcia_request_window()
944 s->state |= SOCKET_WIN_REQ(w); in pcmcia_request_window()
947 if (s->features & SS_CAP_STATIC_MAP) in pcmcia_request_window()
962 mutex_unlock(&s->ops_mutex); in pcmcia_request_window()