Lines Matching refs:res

64 static void release_io_space(struct pcmcia_socket *s, struct resource *res)  in release_io_space()  argument
66 resource_size_t num = resource_size(res); in release_io_space()
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()
77 if (res->parent) in release_io_space()
78 release_resource(res); in release_io_space()
79 res->start = res->end = 0; in release_io_space()
80 res->flags = IORESOURCE_IO; 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
104 unsigned int base = res->start; in alloc_io_space()
105 unsigned int num = res->end; in alloc_io_space()
108 res->flags |= IORESOURCE_IO; in alloc_io_space()
111 res, lines); in alloc_io_space()
127 ret = s->resource_ops->find_io(s, res->flags, &base, num, align, in alloc_io_space()
128 &res->parent); in alloc_io_space()
134 res->start = base; in alloc_io_space()
135 res->end = res->start + num - 1; in alloc_io_space()
137 if (res->parent) { in alloc_io_space()
138 ret = request_resource(res->parent, res); in alloc_io_space()
141 "request_resource %pR failed: %d\n", res, ret); in alloc_io_space()
142 res->parent = NULL; 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()
227 int pcmcia_map_mem_page(struct pcmcia_device *p_dev, struct resource *res, in pcmcia_map_mem_page() argument
234 w = ((res->flags & IORESOURCE_BITS & WIN_FLAGS_REQ) >> 2) - 1; in pcmcia_map_mem_page()
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()
372 if (!s->io[i].res) in pcmcia_release_configuration()
432 int pcmcia_release_window(struct pcmcia_device *p_dev, struct resource *res) in pcmcia_release_window() argument
438 dev_dbg(&p_dev->dev, "releasing window %pR\n", res); in pcmcia_release_window()
440 w = ((res->flags & IORESOURCE_BITS & WIN_FLAGS_REQ) >> 2) - 1; in pcmcia_release_window()
459 if (win->res) { in pcmcia_release_window()
460 release_resource(res); in pcmcia_release_window()
461 release_resource(win->res); in pcmcia_release_window()
462 kfree(win->res); in pcmcia_release_window()
463 win->res = NULL; in pcmcia_release_window()
465 res->start = res->end = 0; in pcmcia_release_window()
466 res->flags = IORESOURCE_MEM; in pcmcia_release_window()
594 if (s->io[i].res) { in pcmcia_enable_device()
597 switch (s->io[i].res->flags & IO_DATA_PATH_WIDTH) { in pcmcia_enable_device()
605 iomap.start = s->io[i].res->start; in pcmcia_enable_device()
606 iomap.stop = s->io[i].res->end; in pcmcia_enable_device()
875 int pcmcia_request_window(struct pcmcia_device *p_dev, struct resource *res, in pcmcia_request_window() argument
883 dev_dbg(&p_dev->dev, "request_window %pR %d\n", res, speed); in pcmcia_request_window()
891 if (res->end == 0) in pcmcia_request_window()
892 res->end = s->map_size; in pcmcia_request_window()
893 align = (s->features & SS_CAP_MEM_ALIGN) ? res->end : s->map_size; in pcmcia_request_window()
894 if (res->end & (s->map_size-1)) { in pcmcia_request_window()
898 if ((res->start && (s->features & SS_CAP_STATIC_MAP)) || in pcmcia_request_window()
899 (res->start & (align-1))) { in pcmcia_request_window()
903 if (res->start) in pcmcia_request_window()
920 win->res = pcmcia_find_mem_region(res->start, res->end, align, in pcmcia_request_window()
922 if (!win->res) { in pcmcia_request_window()
932 win->flags = res->flags & WIN_FLAGS_MAP; in pcmcia_request_window()
945 res->start = win->static_start; in pcmcia_request_window()
947 res->start = win->res->start; in pcmcia_request_window()
950 res->end += res->start - 1; in pcmcia_request_window()
951 res->flags &= ~WIN_FLAGS_REQ; in pcmcia_request_window()
952 res->flags |= (win->map << 2) | IORESOURCE_MEM; in pcmcia_request_window()
953 res->parent = win->res; in pcmcia_request_window()
954 if (win->res) in pcmcia_request_window()
955 request_resource(&iomem_resource, res); in pcmcia_request_window()
957 dev_dbg(&p_dev->dev, "request_window results in %pR\n", res); in pcmcia_request_window()
985 struct resource *res = p_dev->resource[MAX_IO_WIN + i]; in pcmcia_disable_device() local
986 if (res->flags & WIN_FLAGS_REQ) in pcmcia_disable_device()
987 pcmcia_release_window(p_dev, res); in pcmcia_disable_device()