108 if (s->cb_cis_res)
109 cb_release_cis_mem(s);
110
111 start = res->start;
112 size = res->end - start + 1;
113 s->cb_cis_virt = ioremap(start, size);
114
115 if (!s->cb_cis_virt)
116 return -1;
117
118 s->cb_cis_res = res;
119
120 return 0;
121}
122
123
124
125
126
127
128
129
130int read_cb_mem(struct pcmcia_socket * s, int space, u_int addr, u_int len, void *ptr)
131{
132 struct pci_dev *dev;
133 struct resource *res;
134
135 cs_dbg(s, 3, "read_cb_mem(%d, %#x, %u)\n", space, addr, len);
136
137 dev = pci_get_slot(s->cb_dev->subordinate, 0);
138 if (!dev)
139 goto fail;
140
141
142 if (space == 0) {
143 if (addr + len > 0x100)
144 goto failput;
145 for (; len; addr++, ptr++, len--)
146 pci_read_config_byte(dev, addr, ptr);
147 return 0;
148 }