Lines Matching full:card
28 static int memstick_dev_match(struct memstick_dev *card, in memstick_dev_match() argument
32 if ((id->type == card->id.type) in memstick_dev_match()
33 && (id->category == card->id.category) in memstick_dev_match()
34 && (id->class == card->id.class)) in memstick_dev_match()
43 struct memstick_dev *card = container_of(dev, struct memstick_dev, in memstick_bus_match() local
51 if (memstick_dev_match(card, ids)) in memstick_bus_match()
61 const struct memstick_dev *card = container_of_const(dev, struct memstick_dev, in memstick_uevent() local
64 if (add_uevent_var(env, "MEMSTICK_TYPE=%02X", card->id.type)) in memstick_uevent()
67 if (add_uevent_var(env, "MEMSTICK_CATEGORY=%02X", card->id.category)) in memstick_uevent()
70 if (add_uevent_var(env, "MEMSTICK_CLASS=%02X", card->id.class)) in memstick_uevent()
78 struct memstick_dev *card = container_of(dev, struct memstick_dev, in memstick_device_probe() local
86 rc = drv->probe(card); in memstick_device_probe()
95 struct memstick_dev *card = container_of(dev, struct memstick_dev, in memstick_device_remove() local
102 drv->remove(card); in memstick_device_remove()
103 card->dev.driver = NULL; in memstick_device_remove()
113 struct memstick_dev *card = container_of(dev, struct memstick_dev, in memstick_device_suspend() local
120 return drv->suspend(card, state); in memstick_device_suspend()
126 struct memstick_dev *card = container_of(dev, struct memstick_dev, in memstick_device_resume() local
133 return drv->resume(card); in memstick_device_resume()
148 struct memstick_dev *card = container_of(dev, struct memstick_dev, \
150 return sprintf(buf, format, card->id.name); \
191 struct memstick_dev *card = container_of(dev, struct memstick_dev, in memstick_free_card() local
193 kfree(card); in memstick_free_card()
196 static int memstick_dummy_check(struct memstick_dev *card) in memstick_dummy_check() argument
233 if (host->card && host->card->next_request) in memstick_next_req()
234 rc = host->card->next_request(host->card, mrq); in memstick_next_req()
251 if (host->card) { in memstick_new_req()
253 reinit_completion(&host->card->mrq_complete); in memstick_new_req()
324 static int h_memstick_read_dev_id(struct memstick_dev *card, in h_memstick_read_dev_id() argument
330 memstick_init_req(&card->current_mrq, MS_TPC_READ_REG, &id_reg, in h_memstick_read_dev_id()
332 *mrq = &card->current_mrq; in h_memstick_read_dev_id()
337 card->id.match_flags = MEMSTICK_MATCH_ALL; in h_memstick_read_dev_id()
338 card->id.type = id_reg.type; in h_memstick_read_dev_id()
339 card->id.category = id_reg.category; in h_memstick_read_dev_id()
340 card->id.class = id_reg.class; in h_memstick_read_dev_id()
341 dev_dbg(&card->dev, "if_mode = %02x\n", id_reg.if_mode); in h_memstick_read_dev_id()
343 complete(&card->mrq_complete); in h_memstick_read_dev_id()
347 static int h_memstick_set_rw_addr(struct memstick_dev *card, in h_memstick_set_rw_addr() argument
351 memstick_init_req(&card->current_mrq, MS_TPC_SET_RW_REG_ADRS, in h_memstick_set_rw_addr()
352 (char *)&card->reg_addr, in h_memstick_set_rw_addr()
353 sizeof(card->reg_addr)); in h_memstick_set_rw_addr()
354 *mrq = &card->current_mrq; in h_memstick_set_rw_addr()
357 complete(&card->mrq_complete); in h_memstick_set_rw_addr()
365 * @card: media device to use
369 int memstick_set_rw_addr(struct memstick_dev *card) in memstick_set_rw_addr() argument
371 card->next_request = h_memstick_set_rw_addr; in memstick_set_rw_addr()
372 memstick_new_req(card->host); in memstick_set_rw_addr()
373 if (!wait_for_completion_timeout(&card->mrq_complete, in memstick_set_rw_addr()
375 card->current_mrq.error = -ETIMEDOUT; in memstick_set_rw_addr()
377 return card->current_mrq.error; in memstick_set_rw_addr()
383 struct memstick_dev *card = kzalloc_obj(struct memstick_dev); in memstick_alloc_card() local
384 struct memstick_dev *old_card = host->card; in memstick_alloc_card()
387 if (card) { in memstick_alloc_card()
388 card->host = host; in memstick_alloc_card()
389 dev_set_name(&card->dev, "%s", dev_name(&host->dev)); in memstick_alloc_card()
390 card->dev.parent = &host->dev; in memstick_alloc_card()
391 card->dev.bus = &memstick_bus_type; in memstick_alloc_card()
392 card->dev.release = memstick_free_card; in memstick_alloc_card()
393 card->check = memstick_dummy_check; in memstick_alloc_card()
395 card->reg_addr.r_offset = offsetof(struct ms_register, id); in memstick_alloc_card()
396 card->reg_addr.r_length = sizeof(id_reg); in memstick_alloc_card()
397 card->reg_addr.w_offset = offsetof(struct ms_register, id); in memstick_alloc_card()
398 card->reg_addr.w_length = sizeof(id_reg); in memstick_alloc_card()
400 init_completion(&card->mrq_complete); in memstick_alloc_card()
402 host->card = card; in memstick_alloc_card()
403 if (memstick_set_rw_addr(card)) in memstick_alloc_card()
406 card->next_request = h_memstick_read_dev_id; in memstick_alloc_card()
408 if (!wait_for_completion_timeout(&card->mrq_complete, in memstick_alloc_card()
410 card->current_mrq.error = -ETIMEDOUT; in memstick_alloc_card()
412 if (card->current_mrq.error) in memstick_alloc_card()
415 host->card = old_card; in memstick_alloc_card()
416 return card; in memstick_alloc_card()
418 host->card = old_card; in memstick_alloc_card()
419 kfree_const(card->dev.kobj.name); in memstick_alloc_card()
420 kfree(card); in memstick_alloc_card()
438 struct memstick_dev *card; in memstick_check() local
443 if (!host->card) { in memstick_check()
446 } else if (host->card->stop) in memstick_check()
447 host->card->stop(host->card); in memstick_check()
452 card = memstick_alloc_card(host); in memstick_check()
454 if (!card) { in memstick_check()
455 if (host->card) { in memstick_check()
456 device_unregister(&host->card->dev); in memstick_check()
457 host->card = NULL; in memstick_check()
460 dev_dbg(&host->dev, "new card %02x, %02x, %02x\n", in memstick_check()
461 card->id.type, card->id.category, card->id.class); in memstick_check()
462 if (host->card) { in memstick_check()
463 if (memstick_set_rw_addr(host->card) in memstick_check()
464 || !memstick_dev_match(host->card, &card->id) in memstick_check()
465 || !(host->card->check(host->card))) { in memstick_check()
466 device_unregister(&host->card->dev); in memstick_check()
467 host->card = NULL; in memstick_check()
468 } else if (host->card->start) in memstick_check()
469 host->card->start(host->card); in memstick_check()
472 if (!host->card) { in memstick_check()
473 host->card = card; in memstick_check()
474 if (device_register(&card->dev)) { in memstick_check()
475 put_device(&card->dev); in memstick_check()
476 host->card = NULL; in memstick_check()
479 kfree_const(card->dev.kobj.name); in memstick_check()
480 kfree(card); in memstick_check()
485 if (!host->card) in memstick_check()
563 if (host->card) in memstick_remove_host()
564 device_unregister(&host->card->dev); in memstick_remove_host()
565 host->card = NULL; in memstick_remove_host()
608 if (host->card) in memstick_resume_host()