Lines Matching refs:p_dev

215 static struct pcmcia_device *pcmcia_get_dev(struct pcmcia_device *p_dev)  in pcmcia_get_dev()  argument
218 tmp_dev = get_device(&p_dev->dev); in pcmcia_get_dev()
224 static void pcmcia_put_dev(struct pcmcia_device *p_dev) in pcmcia_put_dev() argument
226 if (p_dev) in pcmcia_put_dev()
227 put_device(&p_dev->dev); in pcmcia_put_dev()
239 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); in pcmcia_release_dev() local
242 pcmcia_put_socket(p_dev->socket); in pcmcia_release_dev()
244 kfree(p_dev->prod_id[i]); in pcmcia_release_dev()
245 kfree(p_dev->devname); in pcmcia_release_dev()
246 kref_put(&p_dev->function_config->ref, pcmcia_release_function); in pcmcia_release_dev()
247 kfree(p_dev); in pcmcia_release_dev()
253 struct pcmcia_device *p_dev; in pcmcia_device_probe() local
263 p_dev = to_pcmcia_dev(dev); in pcmcia_device_probe()
265 s = p_dev->socket; in pcmcia_device_probe()
269 if ((!p_drv->probe) || (!p_dev->function_config) || in pcmcia_device_probe()
276 ret = pccard_read_tuple(p_dev->socket, p_dev->func, CISTPL_CONFIG, in pcmcia_device_probe()
279 p_dev->config_base = cis_config.base; in pcmcia_device_probe()
280 p_dev->config_regs = cis_config.rmask[0]; in pcmcia_device_probe()
281 dev_dbg(dev, "base %x, regs %x", p_dev->config_base, in pcmcia_device_probe()
282 p_dev->config_regs); in pcmcia_device_probe()
286 p_dev->config_base = 0; in pcmcia_device_probe()
287 p_dev->config_regs = 0; in pcmcia_device_probe()
290 ret = p_drv->probe(p_dev); in pcmcia_device_probe()
297 p_dev->vpp/10, p_dev->vpp%10, p_dev->config_index, p_dev->irq); in pcmcia_device_probe()
299 p_dev->resource[0], p_dev->resource[1], p_dev->resource[2], in pcmcia_device_probe()
300 p_dev->resource[3], p_dev->resource[4]); in pcmcia_device_probe()
304 (p_dev->socket->device_count == 1) && (p_dev->device_no == 0)) in pcmcia_device_probe()
323 struct pcmcia_device *p_dev; in pcmcia_card_remove() local
338 list_for_each_entry_safe(p_dev, tmp, &s->devices_list, socket_device_list) { in pcmcia_card_remove()
339 if (p_dev == leftover) in pcmcia_card_remove()
343 list_del(&p_dev->socket_device_list); in pcmcia_card_remove()
346 dev_dbg(&p_dev->dev, "unregistering device\n"); in pcmcia_card_remove()
347 device_unregister(&p_dev->dev); in pcmcia_card_remove()
355 struct pcmcia_device *p_dev; in pcmcia_device_remove() local
359 p_dev = to_pcmcia_dev(dev); in pcmcia_device_remove()
368 if ((p_dev->socket->pcmcia_pfc) && in pcmcia_device_remove()
369 (p_dev->socket->device_count > 0) && in pcmcia_device_remove()
370 (p_dev->device_no == 0)) in pcmcia_device_remove()
371 pcmcia_card_remove(p_dev->socket, p_dev); in pcmcia_device_remove()
375 p_drv->remove(p_dev); in pcmcia_device_remove()
378 if (p_dev->_irq || p_dev->_io || p_dev->_locked) in pcmcia_device_remove()
384 if (p_dev->_win & CLIENT_WIN_REQ(i)) in pcmcia_device_remove()
390 pcmcia_put_dev(p_dev); in pcmcia_device_remove()
398 static int pcmcia_device_query(struct pcmcia_device *p_dev) in pcmcia_device_query() argument
409 if (!pccard_read_tuple(p_dev->socket, BIND_FN_ALL, in pcmcia_device_query()
411 mutex_lock(&p_dev->socket->ops_mutex); in pcmcia_device_query()
412 p_dev->manf_id = manf_id.manf; in pcmcia_device_query()
413 p_dev->card_id = manf_id.card; in pcmcia_device_query()
414 p_dev->has_manf_id = 1; in pcmcia_device_query()
415 p_dev->has_card_id = 1; in pcmcia_device_query()
416 mutex_unlock(&p_dev->socket->ops_mutex); in pcmcia_device_query()
419 if (!pccard_read_tuple(p_dev->socket, p_dev->func, in pcmcia_device_query()
421 mutex_lock(&p_dev->socket->ops_mutex); in pcmcia_device_query()
422 p_dev->func_id = func_id.func; in pcmcia_device_query()
423 p_dev->has_func_id = 1; in pcmcia_device_query()
424 mutex_unlock(&p_dev->socket->ops_mutex); in pcmcia_device_query()
436 if (!pccard_read_tuple(p_dev->socket, p_dev->func, in pcmcia_device_query()
438 dev_dbg(&p_dev->dev, in pcmcia_device_query()
441 mutex_lock(&p_dev->socket->ops_mutex); in pcmcia_device_query()
442 p_dev->func_id = CISTPL_FUNCID_MEMORY; in pcmcia_device_query()
443 p_dev->has_func_id = 1; in pcmcia_device_query()
444 mutex_unlock(&p_dev->socket->ops_mutex); in pcmcia_device_query()
449 if (!pccard_read_tuple(p_dev->socket, BIND_FN_ALL, CISTPL_VERS_1, in pcmcia_device_query()
451 mutex_lock(&p_dev->socket->ops_mutex); in pcmcia_device_query()
467 tmp = p_dev->prod_id[i]; in pcmcia_device_query()
468 p_dev->prod_id[i] = new; in pcmcia_device_query()
471 mutex_unlock(&p_dev->socket->ops_mutex); in pcmcia_device_query()
482 struct pcmcia_device *p_dev, *tmp_dev; in pcmcia_device_add() local
491 p_dev = kzalloc(sizeof(struct pcmcia_device), GFP_KERNEL); in pcmcia_device_add()
492 if (!p_dev) in pcmcia_device_add()
496 p_dev->device_no = (s->device_count++); in pcmcia_device_add()
500 if ((p_dev->device_no >= 2) && (function == 0)) in pcmcia_device_add()
504 if (p_dev->device_no >= 4) in pcmcia_device_add()
507 p_dev->socket = s; in pcmcia_device_add()
508 p_dev->func = function; in pcmcia_device_add()
510 p_dev->dev.bus = &pcmcia_bus_type; in pcmcia_device_add()
511 p_dev->dev.parent = s->dev.parent; in pcmcia_device_add()
512 p_dev->dev.release = pcmcia_release_dev; in pcmcia_device_add()
514 p_dev->dma_mask = 0; in pcmcia_device_add()
515 p_dev->dev.dma_mask = &p_dev->dma_mask; in pcmcia_device_add()
516 p_dev->devname = kasprintf(GFP_KERNEL, "pcmcia%s", dev_name(&p_dev->dev)); in pcmcia_device_add()
517 if (!p_dev->devname) in pcmcia_device_add()
519 dev_dbg(&p_dev->dev, "devname is %s\n", p_dev->devname); in pcmcia_device_add()
529 if (p_dev->func == tmp_dev->func) { in pcmcia_device_add()
530 p_dev->function_config = tmp_dev->function_config; in pcmcia_device_add()
531 p_dev->irq = tmp_dev->irq; in pcmcia_device_add()
532 kref_get(&p_dev->function_config->ref); in pcmcia_device_add()
536 list_add(&p_dev->socket_device_list, &s->devices_list); in pcmcia_device_add()
538 if (pcmcia_setup_irq(p_dev)) in pcmcia_device_add()
539 dev_warn(&p_dev->dev, in pcmcia_device_add()
542 if (!p_dev->function_config) { in pcmcia_device_add()
544 dev_dbg(&p_dev->dev, "creating config_t\n"); in pcmcia_device_add()
550 p_dev->function_config = c; in pcmcia_device_add()
553 c->io[i].name = p_dev->devname; in pcmcia_device_add()
557 c->mem[i].name = p_dev->devname; in pcmcia_device_add()
562 p_dev->resource[i] = &p_dev->function_config->io[i]; in pcmcia_device_add()
564 p_dev->resource[i] = &p_dev->function_config->mem[i-MAX_IO_WIN]; in pcmcia_device_add()
568 dev_notice(&p_dev->dev, "pcmcia: registering new device %s (IRQ: %d)\n", in pcmcia_device_add()
569 p_dev->devname, p_dev->irq); in pcmcia_device_add()
571 pcmcia_device_query(p_dev); in pcmcia_device_add()
573 dev_set_name(&p_dev->dev, "%d.%d", p_dev->socket->sock, p_dev->device_no); in pcmcia_device_add()
574 if (device_register(&p_dev->dev)) { in pcmcia_device_add()
576 list_del(&p_dev->socket_device_list); in pcmcia_device_add()
579 put_device(&p_dev->dev); in pcmcia_device_add()
583 return p_dev; in pcmcia_device_add()
587 list_del(&p_dev->socket_device_list); in pcmcia_device_add()
596 kfree(p_dev->prod_id[i]); in pcmcia_device_add()
597 kfree(p_dev->devname); in pcmcia_device_add()
598 kfree(p_dev); in pcmcia_device_add()
665 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); in pcmcia_requery_callback() local
666 if (!p_dev->dev.driver) { in pcmcia_requery_callback()
668 pcmcia_device_query(p_dev); in pcmcia_requery_callback()
905 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); in pcmcia_bus_match() local
914 if (pcmcia_devmatch(p_dev, &dynid->id)) { in pcmcia_bus_match()
924 if (pcmcia_devmatch(p_dev, did)) { in pcmcia_bus_match()
936 const struct pcmcia_device *p_dev; in pcmcia_bus_uevent() local
943 p_dev = to_pcmcia_dev(dev); in pcmcia_bus_uevent()
947 if (!p_dev->prod_id[i]) in pcmcia_bus_uevent()
949 hash[i] = crc32(0, p_dev->prod_id[i], strlen(p_dev->prod_id[i])); in pcmcia_bus_uevent()
952 if (add_uevent_var(env, "SOCKET_NO=%u", p_dev->socket->sock)) in pcmcia_bus_uevent()
955 if (add_uevent_var(env, "DEVICE_NO=%02X", p_dev->device_no)) in pcmcia_bus_uevent()
960 p_dev->has_manf_id ? p_dev->manf_id : 0, in pcmcia_bus_uevent()
961 p_dev->has_card_id ? p_dev->card_id : 0, in pcmcia_bus_uevent()
962 p_dev->has_func_id ? p_dev->func_id : 0, in pcmcia_bus_uevent()
963 p_dev->func, in pcmcia_bus_uevent()
964 p_dev->device_no, in pcmcia_bus_uevent()
1004 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); \
1005 return p_dev->test ? sysfs_emit(buf, format, p_dev->field) : -ENODEV; \
1012 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); \
1013 return p_dev->field ? sysfs_emit(buf, "%s\n", p_dev->field) : -ENODEV; \
1028 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); in function_show() local
1029 return p_dev->socket ? sysfs_emit(buf, "0x%02x\n", p_dev->func) : -ENODEV; in function_show()
1036 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); in resources_show() local
1040 at += sysfs_emit_at(buf, at, "%pr\n", p_dev->resource[i]); in resources_show()
1048 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); in pm_state_show() local
1050 if (p_dev->suspended) in pm_state_show()
1059 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); in pm_state_store() local
1065 if ((!p_dev->suspended) && !strncmp(buf, "off", 3)) in pm_state_store()
1067 else if (p_dev->suspended && !strncmp(buf, "on", 2)) in pm_state_store()
1076 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); in modalias_show() local
1082 if (!p_dev->prod_id[i]) in modalias_show()
1084 hash[i] = crc32(0, p_dev->prod_id[i], in modalias_show()
1085 strlen(p_dev->prod_id[i])); in modalias_show()
1088 p_dev->has_manf_id ? p_dev->manf_id : 0, in modalias_show()
1089 p_dev->has_card_id ? p_dev->card_id : 0, in modalias_show()
1090 p_dev->has_func_id ? p_dev->func_id : 0, in modalias_show()
1091 p_dev->func, p_dev->device_no, in modalias_show()
1099 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); in allow_func_id_match_store() local
1104 mutex_lock(&p_dev->socket->ops_mutex); in allow_func_id_match_store()
1105 p_dev->allow_func_id_match = 1; in allow_func_id_match_store()
1106 mutex_unlock(&p_dev->socket->ops_mutex); in allow_func_id_match_store()
1107 pcmcia_parse_uevents(p_dev->socket, PCMCIA_UEVENT_REQUERY); in allow_func_id_match_store()
1134 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); in pcmcia_dev_suspend() local
1138 mutex_lock(&p_dev->socket->ops_mutex); in pcmcia_dev_suspend()
1139 if (p_dev->suspended) { in pcmcia_dev_suspend()
1140 mutex_unlock(&p_dev->socket->ops_mutex); in pcmcia_dev_suspend()
1143 p_dev->suspended = 1; in pcmcia_dev_suspend()
1144 mutex_unlock(&p_dev->socket->ops_mutex); in pcmcia_dev_suspend()
1155 ret = p_drv->suspend(p_dev); in pcmcia_dev_suspend()
1159 p_dev->devname, p_drv->name, ret); in pcmcia_dev_suspend()
1160 mutex_lock(&p_dev->socket->ops_mutex); in pcmcia_dev_suspend()
1161 p_dev->suspended = 0; in pcmcia_dev_suspend()
1162 mutex_unlock(&p_dev->socket->ops_mutex); in pcmcia_dev_suspend()
1167 if (p_dev->device_no == p_dev->func) { in pcmcia_dev_suspend()
1169 pcmcia_release_configuration(p_dev); in pcmcia_dev_suspend()
1179 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); in pcmcia_dev_resume() local
1183 mutex_lock(&p_dev->socket->ops_mutex); in pcmcia_dev_resume()
1184 if (!p_dev->suspended) { in pcmcia_dev_resume()
1185 mutex_unlock(&p_dev->socket->ops_mutex); in pcmcia_dev_resume()
1188 p_dev->suspended = 0; in pcmcia_dev_resume()
1189 mutex_unlock(&p_dev->socket->ops_mutex); in pcmcia_dev_resume()
1199 if (p_dev->device_no == p_dev->func) { in pcmcia_dev_resume()
1201 ret = pcmcia_enable_device(p_dev); in pcmcia_dev_resume()
1207 ret = p_drv->resume(p_dev); in pcmcia_dev_resume()
1217 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); in pcmcia_bus_suspend_callback() local
1219 if (p_dev->socket != skt || p_dev->suspended) in pcmcia_bus_suspend_callback()
1228 struct pcmcia_device *p_dev = to_pcmcia_dev(dev); in pcmcia_bus_resume_callback() local
1230 if (p_dev->socket != skt || !p_dev->suspended) in pcmcia_bus_resume_callback()
1315 struct pcmcia_device *p_dev; in pcmcia_dev_present() local
1318 p_dev = pcmcia_get_dev(_p_dev); in pcmcia_dev_present()
1319 if (!p_dev) in pcmcia_dev_present()
1322 if (atomic_read(&p_dev->socket->present) != 0) in pcmcia_dev_present()
1323 ret = p_dev; in pcmcia_dev_present()
1325 pcmcia_put_dev(p_dev); in pcmcia_dev_present()