Lines Matching refs:ipw
65 struct ipw_dev *ipw = container_of(work_reboot, struct ipw_dev,
67 struct pcmcia_device *link = ipw->link;
73 struct ipw_dev *ipw = (struct ipw_dev *) callback_data;
76 schedule_work(&ipw->work_reboot);
81 struct ipw_dev *ipw = priv_data;
113 ipw->is_v2_card = resource_size(p_dev->resource[2]) == 0x100;
115 ipw->common_memory = ioremap(p_dev->resource[2]->start,
117 if (!ipw->common_memory) {
139 ipw->attr_memory = ioremap(p_dev->resource[3]->start,
141 if (!ipw->attr_memory) {
155 iounmap(ipw->attr_memory);
160 iounmap(ipw->common_memory);
169 static int config_ipwireless(struct ipw_dev *ipw)
171 struct pcmcia_device *link = ipw->link;
174 ipw->is_v2_card = 0;
178 ret = pcmcia_loop_config(link, ipwireless_probe, ipw);
182 INIT_WORK(&ipw->work_reboot, signalled_reboot_work);
184 ipwireless_init_hardware_v1(ipw->hardware, link->resource[0]->start,
185 ipw->attr_memory, ipw->common_memory,
186 ipw->is_v2_card, signalled_reboot_callback,
187 ipw);
194 ipw->is_v2_card ? "V2/V3" : "V1");
198 if (ipw->attr_memory && ipw->common_memory)
204 ipw->network = ipwireless_network_create(ipw->hardware);
205 if (!ipw->network)
208 ipw->tty = ipwireless_tty_create(ipw->hardware, ipw->network);
209 if (!ipw->tty)
212 ipwireless_init_hardware_v2_v3(ipw->hardware);
225 if (ipw->common_memory) {
228 iounmap(ipw->common_memory);
230 if (ipw->attr_memory) {
233 iounmap(ipw->attr_memory);
239 static void release_ipwireless(struct ipw_dev *ipw)
241 release_region(ipw->link->resource[0]->start,
242 resource_size(ipw->link->resource[0]));
243 if (ipw->common_memory) {
244 release_mem_region(ipw->link->resource[2]->start,
245 resource_size(ipw->link->resource[2]));
246 iounmap(ipw->common_memory);
248 if (ipw->attr_memory) {
249 release_mem_region(ipw->link->resource[3]->start,
250 resource_size(ipw->link->resource[3]));
251 iounmap(ipw->attr_memory);
253 pcmcia_disable_device(ipw->link);
267 struct ipw_dev *ipw;
270 ipw = kzalloc(sizeof(struct ipw_dev), GFP_KERNEL);
271 if (!ipw)
274 ipw->link = link;
275 link->priv = ipw;
277 ipw->hardware = ipwireless_hardware_create();
278 if (!ipw->hardware) {
279 kfree(ipw);
284 ret = config_ipwireless(ipw);
302 struct ipw_dev *ipw = link->priv;
304 release_ipwireless(ipw);
306 if (ipw->tty != NULL)
307 ipwireless_tty_free(ipw->tty);
308 if (ipw->network != NULL)
309 ipwireless_network_free(ipw->network);
310 if (ipw->hardware != NULL)
311 ipwireless_hardware_free(ipw->hardware);
312 kfree(ipw);