Lines Matching refs:host

184 	struct memstick_host *host = container_of(dev, struct memstick_host,  in memstick_free()  local
186 kfree(host); in memstick_free()
210 void memstick_detect_change(struct memstick_host *host) in memstick_detect_change() argument
212 queue_work(workqueue, &host->media_checker); in memstick_detect_change()
226 int memstick_next_req(struct memstick_host *host, struct memstick_request **mrq) in memstick_next_req() argument
230 if ((*mrq) && (*mrq)->error && host->retries) { in memstick_next_req()
232 host->retries--; in memstick_next_req()
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()
240 host->retries = cmd_retries > 1 ? cmd_retries - 1 : 1; in memstick_next_req()
252 void memstick_new_req(struct memstick_host *host) in memstick_new_req() argument
254 if (host->card) { in memstick_new_req()
255 host->retries = cmd_retries; in memstick_new_req()
256 reinit_completion(&host->card->mrq_complete); in memstick_new_req()
257 host->request(host); in memstick_new_req()
374 memstick_new_req(card->host); in memstick_set_rw_addr()
381 static struct memstick_dev *memstick_alloc_card(struct memstick_host *host) in memstick_alloc_card() argument
385 struct memstick_dev *old_card = host->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()
403 host->card = card; in memstick_alloc_card()
408 memstick_new_req(host); in memstick_alloc_card()
414 host->card = old_card; in memstick_alloc_card()
417 host->card = old_card; in memstick_alloc_card()
422 static int memstick_power_on(struct memstick_host *host) in memstick_power_on() argument
424 int rc = host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON); in memstick_power_on()
427 rc = host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_SERIAL); in memstick_power_on()
434 struct memstick_host *host = container_of(work, struct memstick_host, in memstick_check() local
438 dev_dbg(&host->dev, "memstick_check started\n"); in memstick_check()
439 mutex_lock(&host->lock); in memstick_check()
440 if (!host->card) { in memstick_check()
441 if (memstick_power_on(host)) 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()
449 if (host->card) { in memstick_check()
450 device_unregister(&host->card->dev); in memstick_check()
451 host->card = NULL; in memstick_check()
454 dev_dbg(&host->dev, "new card %02x, %02x, %02x\n", 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()
470 kfree(host->card); in memstick_check()
471 host->card = NULL; in memstick_check()
478 if (!host->card) in memstick_check()
479 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_OFF); in memstick_check()
481 mutex_unlock(&host->lock); in memstick_check()
482 dev_dbg(&host->dev, "memstick_check finished\n"); in memstick_check()
493 struct memstick_host *host; in memstick_alloc_host() local
495 host = kzalloc(sizeof(struct memstick_host) + extra, GFP_KERNEL); in memstick_alloc_host()
496 if (host) { in memstick_alloc_host()
497 mutex_init(&host->lock); in memstick_alloc_host()
498 INIT_WORK(&host->media_checker, memstick_check); in memstick_alloc_host()
499 host->dev.class = &memstick_host_class; in memstick_alloc_host()
500 host->dev.parent = dev; in memstick_alloc_host()
501 device_initialize(&host->dev); in memstick_alloc_host()
503 return host; in memstick_alloc_host()
511 int memstick_add_host(struct memstick_host *host) in memstick_add_host() argument
518 rc = idr_alloc(&memstick_host_idr, host, 0, 0, GFP_NOWAIT); in memstick_add_host()
520 host->id = rc; in memstick_add_host()
527 dev_set_name(&host->dev, "memstick%u", host->id); in memstick_add_host()
529 rc = device_add(&host->dev); in memstick_add_host()
532 idr_remove(&memstick_host_idr, host->id); in memstick_add_host()
537 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_OFF); in memstick_add_host()
538 memstick_detect_change(host); in memstick_add_host()
547 void memstick_remove_host(struct memstick_host *host) in memstick_remove_host() argument
550 mutex_lock(&host->lock); in memstick_remove_host()
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()
554 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_OFF); in memstick_remove_host()
555 mutex_unlock(&host->lock); in memstick_remove_host()
558 idr_remove(&memstick_host_idr, host->id); in memstick_remove_host()
560 device_del(&host->dev); in memstick_remove_host()
568 void memstick_free_host(struct memstick_host *host) in memstick_free_host() argument
570 mutex_destroy(&host->lock); in memstick_free_host()
571 put_device(&host->dev); in memstick_free_host()
579 void memstick_suspend_host(struct memstick_host *host) in memstick_suspend_host() argument
581 mutex_lock(&host->lock); in memstick_suspend_host()
582 host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_OFF); in memstick_suspend_host()
583 mutex_unlock(&host->lock); in memstick_suspend_host()
591 void memstick_resume_host(struct memstick_host *host) in memstick_resume_host() argument
595 mutex_lock(&host->lock); in memstick_resume_host()
596 if (host->card) in memstick_resume_host()
597 rc = memstick_power_on(host); in memstick_resume_host()
598 mutex_unlock(&host->lock); in memstick_resume_host()
601 memstick_detect_change(host); in memstick_resume_host()