Lines Matching refs:skt
73 struct pcmcia_socket *pcmcia_get_socket(struct pcmcia_socket *skt)
75 struct device *dev = get_device(&skt->dev);
83 void pcmcia_put_socket(struct pcmcia_socket *skt)
85 put_device(&skt->dev);
249 static int socket_reset(struct pcmcia_socket *skt)
253 dev_dbg(&skt->dev, "reset\n");
255 skt->socket.flags |= SS_OUTPUT_ENA | SS_RESET;
256 skt->ops->set_socket(skt, &skt->socket);
259 skt->socket.flags &= ~SS_RESET;
260 skt->ops->set_socket(skt, &skt->socket);
264 skt->ops->get_status(skt, &status);
275 dev_err(&skt->dev, "time out after reset\n");
332 static int socket_setup(struct pcmcia_socket *skt, int initial_delay)
336 dev_dbg(&skt->dev, "setup\n");
338 skt->ops->get_status(skt, &status);
345 skt->ops->get_status(skt, &status);
356 dev_err(&skt->dev, "voltage interrogation timed out\n");
361 if (!(skt->features & SS_CAP_CARDBUS)) {
362 dev_err(&skt->dev, "cardbus cards are not supported\n");
365 skt->state |= SOCKET_CARDBUS;
367 skt->state &= ~SOCKET_CARDBUS;
373 skt->socket.Vcc = skt->socket.Vpp = 33;
375 skt->socket.Vcc = skt->socket.Vpp = 50;
377 dev_err(&skt->dev, "unsupported voltage key\n");
381 if (skt->power_hook)
382 skt->power_hook(skt, HOOK_POWER_PRE);
384 skt->socket.flags = 0;
385 skt->ops->set_socket(skt, &skt->socket);
392 skt->ops->get_status(skt, &status);
394 dev_err(&skt->dev, "unable to apply power\n");
398 status = socket_reset(skt);
400 if (skt->power_hook)
401 skt->power_hook(skt, HOOK_POWER_POST);
410 static int socket_insert(struct pcmcia_socket *skt)
414 dev_dbg(&skt->dev, "insert\n");
416 mutex_lock(&skt->ops_mutex);
417 if (skt->state & SOCKET_INUSE) {
418 mutex_unlock(&skt->ops_mutex);
421 skt->state |= SOCKET_INUSE;
423 ret = socket_setup(skt, setup_delay);
425 skt->state |= SOCKET_PRESENT;
427 dev_notice(&skt->dev, "pccard: %s card inserted into slot %d\n",
428 (skt->state & SOCKET_CARDBUS) ? "CardBus" : "PCMCIA",
429 skt->sock);
432 if (skt->state & SOCKET_CARDBUS) {
433 cb_alloc(skt);
434 skt->state |= SOCKET_CARDBUS_CONFIG;
437 dev_dbg(&skt->dev, "insert done\n");
438 mutex_unlock(&skt->ops_mutex);
440 if (!(skt->state & SOCKET_CARDBUS) && (skt->callback))
441 skt->callback->add(skt);
443 mutex_unlock(&skt->ops_mutex);
444 socket_shutdown(skt);
450 static int socket_suspend(struct pcmcia_socket *skt)
452 if ((skt->state & SOCKET_SUSPEND) && !(skt->state & SOCKET_IN_RESUME))
455 mutex_lock(&skt->ops_mutex);
457 if (!(skt->state & SOCKET_IN_RESUME))
458 skt->suspended_state = skt->state;
460 skt->socket = dead_socket;
461 skt->ops->set_socket(skt, &skt->socket);
462 if (skt->ops->suspend)
463 skt->ops->suspend(skt);
464 skt->state |= SOCKET_SUSPEND;
465 skt->state &= ~SOCKET_IN_RESUME;
466 mutex_unlock(&skt->ops_mutex);
470 static int socket_early_resume(struct pcmcia_socket *skt)
472 mutex_lock(&skt->ops_mutex);
473 skt->socket = dead_socket;
474 skt->ops->init(skt);
475 skt->ops->set_socket(skt, &skt->socket);
476 if (skt->state & SOCKET_PRESENT)
477 skt->resume_status = socket_setup(skt, resume_delay);
478 skt->state |= SOCKET_IN_RESUME;
479 mutex_unlock(&skt->ops_mutex);
483 static int socket_late_resume(struct pcmcia_socket *skt)
487 mutex_lock(&skt->ops_mutex);
488 skt->state &= ~(SOCKET_SUSPEND | SOCKET_IN_RESUME);
489 mutex_unlock(&skt->ops_mutex);
491 if (!(skt->state & SOCKET_PRESENT)) {
492 ret = socket_insert(skt);
498 if (skt->resume_status) {
499 socket_shutdown(skt);
503 if (skt->suspended_state != skt->state) {
504 dev_dbg(&skt->dev,
506 skt->suspended_state, skt->state);
508 socket_shutdown(skt);
509 return socket_insert(skt);
512 if (!(skt->state & SOCKET_CARDBUS) && (skt->callback))
513 ret = skt->callback->early_resume(skt);
522 static int socket_complete_resume(struct pcmcia_socket *skt)
526 if (skt->state & SOCKET_CARDBUS) {
530 cb_free(skt);
531 ret = cb_alloc(skt);
533 cb_free(skt);
544 static int socket_resume(struct pcmcia_socket *skt)
547 if (!(skt->state & SOCKET_SUSPEND))
550 socket_early_resume(skt);
551 err = socket_late_resume(skt);
553 err = socket_complete_resume(skt);
557 static void socket_remove(struct pcmcia_socket *skt)
559 dev_notice(&skt->dev, "pccard: card ejected from slot %d\n", skt->sock);
560 socket_shutdown(skt);
574 static void socket_detect_change(struct pcmcia_socket *skt)
576 if (!(skt->state & SOCKET_SUSPEND)) {
579 if (!(skt->state & SOCKET_PRESENT))
582 skt->ops->get_status(skt, &status);
583 if ((skt->state & SOCKET_PRESENT) &&
585 socket_remove(skt);
586 if (!(skt->state & SOCKET_PRESENT) &&
588 socket_insert(skt);
594 struct pcmcia_socket *skt = __skt;
597 skt->thread = current;
598 skt->socket = dead_socket;
599 skt->ops->init(skt);
600 skt->ops->set_socket(skt, &skt->socket);
603 ret = device_register(&skt->dev);
605 dev_warn(&skt->dev, "PCMCIA: unable to register socket\n");
606 skt->thread = NULL;
607 complete(&skt->thread_done);
608 put_device(&skt->dev);
611 ret = pccard_sysfs_add_socket(&skt->dev);
613 dev_warn(&skt->dev, "err %d adding socket attributes\n", ret);
615 complete(&skt->thread_done);
626 spin_lock_irqsave(&skt->thread_lock, flags);
627 events = skt->thread_events;
628 skt->thread_events = 0;
629 sysfs_events = skt->sysfs_events;
630 skt->sysfs_events = 0;
631 spin_unlock_irqrestore(&skt->thread_lock, flags);
633 mutex_lock(&skt->skt_mutex);
635 socket_detect_change(skt);
639 socket_remove(skt);
641 socket_insert(skt);
643 !(skt->state & SOCKET_CARDBUS)) {
644 if (skt->callback)
645 ret = skt->callback->suspend(skt);
649 socket_suspend(skt);
654 !(skt->state & SOCKET_CARDBUS)) {
655 ret = socket_resume(skt);
656 if (!ret && skt->callback)
657 skt->callback->resume(skt);
660 !(skt->state & SOCKET_CARDBUS)) {
661 if (!ret && skt->callback)
662 skt->callback->requery(skt);
665 mutex_unlock(&skt->skt_mutex);
682 if (skt->state & SOCKET_PRESENT) {
683 mutex_lock(&skt->skt_mutex);
684 socket_remove(skt);
685 mutex_unlock(&skt->skt_mutex);
689 pccard_sysfs_remove_socket(&skt->dev);
690 device_unregister(&skt->dev);
773 int pcmcia_reset_card(struct pcmcia_socket *skt)
777 dev_dbg(&skt->dev, "resetting socket\n");
779 mutex_lock(&skt->skt_mutex);
781 if (!(skt->state & SOCKET_PRESENT)) {
782 dev_dbg(&skt->dev, "can't reset, not present\n");
786 if (skt->state & SOCKET_SUSPEND) {
787 dev_dbg(&skt->dev, "can't reset, suspended\n");
791 if (skt->state & SOCKET_CARDBUS) {
792 dev_dbg(&skt->dev, "can't reset, is cardbus\n");
797 if (skt->callback)
798 skt->callback->suspend(skt);
799 mutex_lock(&skt->ops_mutex);
800 ret = socket_reset(skt);
801 mutex_unlock(&skt->ops_mutex);
802 if ((ret == 0) && (skt->callback))
803 skt->callback->resume(skt);
807 mutex_unlock(&skt->skt_mutex);
837 int (*callback) (struct pcmcia_socket *skt))