Lines Matching refs:card
31 static int memstick_dev_match(struct memstick_dev *card, in memstick_dev_match() argument
35 if ((id->type == card->id.type) in memstick_dev_match()
36 && (id->category == card->id.category) in memstick_dev_match()
37 && (id->class == card->id.class)) in memstick_dev_match()
46 struct memstick_dev *card = container_of(dev, struct memstick_dev, in memstick_bus_match() local
55 if (memstick_dev_match(card, ids)) in memstick_bus_match()
65 struct memstick_dev *card = container_of(dev, struct memstick_dev, in memstick_uevent() local
68 if (add_uevent_var(env, "MEMSTICK_TYPE=%02X", card->id.type)) in memstick_uevent()
71 if (add_uevent_var(env, "MEMSTICK_CATEGORY=%02X", card->id.category)) in memstick_uevent()
74 if (add_uevent_var(env, "MEMSTICK_CLASS=%02X", card->id.class)) in memstick_uevent()
82 struct memstick_dev *card = container_of(dev, struct memstick_dev, in memstick_device_probe() local
90 rc = drv->probe(card); in memstick_device_probe()
99 struct memstick_dev *card = container_of(dev, struct memstick_dev, in memstick_device_remove() local
106 drv->remove(card); in memstick_device_remove()
107 card->dev.driver = NULL; in memstick_device_remove()
118 struct memstick_dev *card = container_of(dev, struct memstick_dev, in memstick_device_suspend() local
125 return drv->suspend(card, state); in memstick_device_suspend()
131 struct memstick_dev *card = container_of(dev, struct memstick_dev, in memstick_device_resume() local
138 return drv->resume(card); in memstick_device_resume()
153 struct memstick_dev *card = container_of(dev, struct memstick_dev, \
155 return sprintf(buf, format, card->id.name); \
196 struct memstick_dev *card = container_of(dev, struct memstick_dev, in memstick_free_card() local
198 kfree(card); in memstick_free_card()
201 static int memstick_dummy_check(struct memstick_dev *card) in memstick_dummy_check() argument
236 if (host->card && host->card->next_request) in memstick_next_req()
237 rc = host->card->next_request(host->card, mrq); in memstick_next_req()
254 if (host->card) { in memstick_new_req()
256 reinit_completion(&host->card->mrq_complete); in memstick_new_req()
327 static int h_memstick_read_dev_id(struct memstick_dev *card, in h_memstick_read_dev_id() argument
333 memstick_init_req(&card->current_mrq, MS_TPC_READ_REG, NULL, in h_memstick_read_dev_id()
335 *mrq = &card->current_mrq; in h_memstick_read_dev_id()
340 card->id.match_flags = MEMSTICK_MATCH_ALL; in h_memstick_read_dev_id()
341 card->id.type = id_reg.type; in h_memstick_read_dev_id()
342 card->id.category = id_reg.category; in h_memstick_read_dev_id()
343 card->id.class = id_reg.class; in h_memstick_read_dev_id()
344 dev_dbg(&card->dev, "if_mode = %02x\n", id_reg.if_mode); in h_memstick_read_dev_id()
346 complete(&card->mrq_complete); in h_memstick_read_dev_id()
351 static int h_memstick_set_rw_addr(struct memstick_dev *card, in h_memstick_set_rw_addr() argument
355 memstick_init_req(&card->current_mrq, MS_TPC_SET_RW_REG_ADRS, in h_memstick_set_rw_addr()
356 (char *)&card->reg_addr, in h_memstick_set_rw_addr()
357 sizeof(card->reg_addr)); in h_memstick_set_rw_addr()
358 *mrq = &card->current_mrq; in h_memstick_set_rw_addr()
361 complete(&card->mrq_complete); in h_memstick_set_rw_addr()
371 int memstick_set_rw_addr(struct memstick_dev *card) in memstick_set_rw_addr() argument
373 card->next_request = h_memstick_set_rw_addr; in memstick_set_rw_addr()
374 memstick_new_req(card->host); in memstick_set_rw_addr()
375 wait_for_completion(&card->mrq_complete); in memstick_set_rw_addr()
377 return card->current_mrq.error; in memstick_set_rw_addr()
383 struct memstick_dev *card = kzalloc(sizeof(struct memstick_dev), in memstick_alloc_card() local
385 struct memstick_dev *old_card = host->card; in memstick_alloc_card()
388 if (card) { in memstick_alloc_card()
389 card->host = host; in memstick_alloc_card()
390 dev_set_name(&card->dev, "%s", dev_name(&host->dev)); in memstick_alloc_card()
391 card->dev.parent = &host->dev; in memstick_alloc_card()
392 card->dev.bus = &memstick_bus_type; in memstick_alloc_card()
393 card->dev.release = memstick_free_card; in memstick_alloc_card()
394 card->check = memstick_dummy_check; in memstick_alloc_card()
396 card->reg_addr.r_offset = offsetof(struct ms_register, id); in memstick_alloc_card()
397 card->reg_addr.r_length = sizeof(id_reg); in memstick_alloc_card()
398 card->reg_addr.w_offset = offsetof(struct ms_register, id); in memstick_alloc_card()
399 card->reg_addr.w_length = sizeof(id_reg); in memstick_alloc_card()
401 init_completion(&card->mrq_complete); in memstick_alloc_card()
403 host->card = card; in memstick_alloc_card()
404 if (memstick_set_rw_addr(card)) in memstick_alloc_card()
407 card->next_request = h_memstick_read_dev_id; in memstick_alloc_card()
409 wait_for_completion(&card->mrq_complete); in memstick_alloc_card()
411 if (card->current_mrq.error) in memstick_alloc_card()
414 host->card = old_card; in memstick_alloc_card()
415 return card; in memstick_alloc_card()
417 host->card = old_card; in memstick_alloc_card()
418 kfree(card); in memstick_alloc_card()
436 struct memstick_dev *card; in memstick_check() local
440 if (!host->card) { in memstick_check()
443 } else if (host->card->stop) in memstick_check()
444 host->card->stop(host->card); in memstick_check()
446 card = memstick_alloc_card(host); in memstick_check()
448 if (!card) { in memstick_check()
449 if (host->card) { in memstick_check()
450 device_unregister(&host->card->dev); in memstick_check()
451 host->card = NULL; in memstick_check()
455 card->id.type, card->id.category, card->id.class); in memstick_check()
456 if (host->card) { in memstick_check()
457 if (memstick_set_rw_addr(host->card) in memstick_check()
458 || !memstick_dev_match(host->card, &card->id) in memstick_check()
459 || !(host->card->check(host->card))) { in memstick_check()
460 device_unregister(&host->card->dev); in memstick_check()
461 host->card = NULL; in memstick_check()
462 } else if (host->card->start) in memstick_check()
463 host->card->start(host->card); in memstick_check()
466 if (!host->card) { in memstick_check()
467 host->card = card; in memstick_check()
468 if (device_register(&card->dev)) { in memstick_check()
469 put_device(&card->dev); in memstick_check()
470 kfree(host->card); in memstick_check()
471 host->card = NULL; in memstick_check()
474 kfree(card); in memstick_check()
478 if (!host->card) in memstick_check()
551 if (host->card) in memstick_remove_host()
552 device_unregister(&host->card->dev); in memstick_remove_host()
553 host->card = NULL; in memstick_remove_host()
596 if (host->card) in memstick_resume_host()