• Home
  • Raw
  • Download

Lines Matching refs:skt

76 struct pcmcia_socket *pcmcia_get_socket(struct pcmcia_socket *skt)  in pcmcia_get_socket()  argument
78 struct device *dev = get_device(&skt->dev); in pcmcia_get_socket()
86 void pcmcia_put_socket(struct pcmcia_socket *skt) in pcmcia_put_socket() argument
88 put_device(&skt->dev); in pcmcia_put_socket()
252 static int socket_reset(struct pcmcia_socket *skt) in socket_reset() argument
256 dev_dbg(&skt->dev, "reset\n"); in socket_reset()
258 skt->socket.flags |= SS_OUTPUT_ENA | SS_RESET; in socket_reset()
259 skt->ops->set_socket(skt, &skt->socket); in socket_reset()
262 skt->socket.flags &= ~SS_RESET; in socket_reset()
263 skt->ops->set_socket(skt, &skt->socket); in socket_reset()
267 skt->ops->get_status(skt, &status); in socket_reset()
278 dev_printk(KERN_ERR, &skt->dev, "time out after reset.\n"); in socket_reset()
335 static int socket_setup(struct pcmcia_socket *skt, int initial_delay) in socket_setup() argument
339 dev_dbg(&skt->dev, "setup\n"); in socket_setup()
341 skt->ops->get_status(skt, &status); in socket_setup()
348 skt->ops->get_status(skt, &status); in socket_setup()
359 dev_printk(KERN_ERR, &skt->dev, in socket_setup()
365 if (!(skt->features & SS_CAP_CARDBUS)) { in socket_setup()
366 dev_printk(KERN_ERR, &skt->dev, in socket_setup()
370 skt->state |= SOCKET_CARDBUS; in socket_setup()
372 skt->state &= ~SOCKET_CARDBUS; in socket_setup()
378 skt->socket.Vcc = skt->socket.Vpp = 33; in socket_setup()
380 skt->socket.Vcc = skt->socket.Vpp = 50; in socket_setup()
382 dev_printk(KERN_ERR, &skt->dev, "unsupported voltage key.\n"); in socket_setup()
386 if (skt->power_hook) in socket_setup()
387 skt->power_hook(skt, HOOK_POWER_PRE); in socket_setup()
389 skt->socket.flags = 0; in socket_setup()
390 skt->ops->set_socket(skt, &skt->socket); in socket_setup()
397 skt->ops->get_status(skt, &status); in socket_setup()
399 dev_printk(KERN_ERR, &skt->dev, "unable to apply power.\n"); in socket_setup()
403 status = socket_reset(skt); in socket_setup()
405 if (skt->power_hook) in socket_setup()
406 skt->power_hook(skt, HOOK_POWER_POST); in socket_setup()
415 static int socket_insert(struct pcmcia_socket *skt) in socket_insert() argument
419 dev_dbg(&skt->dev, "insert\n"); in socket_insert()
421 mutex_lock(&skt->ops_mutex); in socket_insert()
422 if (skt->state & SOCKET_INUSE) { in socket_insert()
423 mutex_unlock(&skt->ops_mutex); in socket_insert()
426 skt->state |= SOCKET_INUSE; in socket_insert()
428 ret = socket_setup(skt, setup_delay); in socket_insert()
430 skt->state |= SOCKET_PRESENT; in socket_insert()
432 dev_printk(KERN_NOTICE, &skt->dev, in socket_insert()
434 (skt->state & SOCKET_CARDBUS) ? "CardBus" : "PCMCIA", in socket_insert()
435 skt->sock); in socket_insert()
438 if (skt->state & SOCKET_CARDBUS) { in socket_insert()
439 cb_alloc(skt); in socket_insert()
440 skt->state |= SOCKET_CARDBUS_CONFIG; in socket_insert()
443 dev_dbg(&skt->dev, "insert done\n"); in socket_insert()
444 mutex_unlock(&skt->ops_mutex); in socket_insert()
446 if (!(skt->state & SOCKET_CARDBUS) && (skt->callback)) in socket_insert()
447 skt->callback->add(skt); in socket_insert()
449 mutex_unlock(&skt->ops_mutex); in socket_insert()
450 socket_shutdown(skt); in socket_insert()
456 static int socket_suspend(struct pcmcia_socket *skt) in socket_suspend() argument
458 if (skt->state & SOCKET_SUSPEND) in socket_suspend()
461 mutex_lock(&skt->ops_mutex); in socket_suspend()
462 skt->suspended_state = skt->state; in socket_suspend()
464 skt->socket = dead_socket; in socket_suspend()
465 skt->ops->set_socket(skt, &skt->socket); in socket_suspend()
466 if (skt->ops->suspend) in socket_suspend()
467 skt->ops->suspend(skt); in socket_suspend()
468 skt->state |= SOCKET_SUSPEND; in socket_suspend()
469 mutex_unlock(&skt->ops_mutex); in socket_suspend()
473 static int socket_early_resume(struct pcmcia_socket *skt) in socket_early_resume() argument
475 mutex_lock(&skt->ops_mutex); in socket_early_resume()
476 skt->socket = dead_socket; in socket_early_resume()
477 skt->ops->init(skt); in socket_early_resume()
478 skt->ops->set_socket(skt, &skt->socket); in socket_early_resume()
479 if (skt->state & SOCKET_PRESENT) in socket_early_resume()
480 skt->resume_status = socket_setup(skt, resume_delay); in socket_early_resume()
481 mutex_unlock(&skt->ops_mutex); in socket_early_resume()
485 static int socket_late_resume(struct pcmcia_socket *skt) in socket_late_resume() argument
489 mutex_lock(&skt->ops_mutex); in socket_late_resume()
490 skt->state &= ~SOCKET_SUSPEND; in socket_late_resume()
491 mutex_unlock(&skt->ops_mutex); in socket_late_resume()
493 if (!(skt->state & SOCKET_PRESENT)) { in socket_late_resume()
494 ret = socket_insert(skt); in socket_late_resume()
500 if (skt->resume_status) { in socket_late_resume()
501 socket_shutdown(skt); in socket_late_resume()
505 if (skt->suspended_state != skt->state) { in socket_late_resume()
506 dev_dbg(&skt->dev, in socket_late_resume()
508 skt->suspended_state, skt->state); in socket_late_resume()
510 socket_shutdown(skt); in socket_late_resume()
511 return socket_insert(skt); in socket_late_resume()
514 if (!(skt->state & SOCKET_CARDBUS) && (skt->callback)) in socket_late_resume()
515 ret = skt->callback->early_resume(skt); in socket_late_resume()
524 static int socket_complete_resume(struct pcmcia_socket *skt) in socket_complete_resume() argument
528 if (skt->state & SOCKET_CARDBUS) { in socket_complete_resume()
532 cb_free(skt); in socket_complete_resume()
533 ret = cb_alloc(skt); in socket_complete_resume()
535 cb_free(skt); in socket_complete_resume()
546 static int socket_resume(struct pcmcia_socket *skt) in socket_resume() argument
549 if (!(skt->state & SOCKET_SUSPEND)) in socket_resume()
552 socket_early_resume(skt); in socket_resume()
553 err = socket_late_resume(skt); in socket_resume()
555 err = socket_complete_resume(skt); in socket_resume()
559 static void socket_remove(struct pcmcia_socket *skt) in socket_remove() argument
561 dev_printk(KERN_NOTICE, &skt->dev, in socket_remove()
562 "pccard: card ejected from slot %d\n", skt->sock); in socket_remove()
563 socket_shutdown(skt); in socket_remove()
577 static void socket_detect_change(struct pcmcia_socket *skt) in socket_detect_change() argument
579 if (!(skt->state & SOCKET_SUSPEND)) { in socket_detect_change()
582 if (!(skt->state & SOCKET_PRESENT)) in socket_detect_change()
585 skt->ops->get_status(skt, &status); in socket_detect_change()
586 if ((skt->state & SOCKET_PRESENT) && in socket_detect_change()
588 socket_remove(skt); in socket_detect_change()
589 if (!(skt->state & SOCKET_PRESENT) && in socket_detect_change()
591 socket_insert(skt); in socket_detect_change()
597 struct pcmcia_socket *skt = __skt; in pccardd() local
600 skt->thread = current; in pccardd()
601 skt->socket = dead_socket; in pccardd()
602 skt->ops->init(skt); in pccardd()
603 skt->ops->set_socket(skt, &skt->socket); in pccardd()
606 ret = device_register(&skt->dev); in pccardd()
608 dev_printk(KERN_WARNING, &skt->dev, in pccardd()
610 skt->thread = NULL; in pccardd()
611 complete(&skt->thread_done); in pccardd()
614 ret = pccard_sysfs_add_socket(&skt->dev); in pccardd()
616 dev_warn(&skt->dev, "err %d adding socket attributes\n", ret); in pccardd()
618 complete(&skt->thread_done); in pccardd()
631 spin_lock_irqsave(&skt->thread_lock, flags); in pccardd()
632 events = skt->thread_events; in pccardd()
633 skt->thread_events = 0; in pccardd()
634 sysfs_events = skt->sysfs_events; in pccardd()
635 skt->sysfs_events = 0; in pccardd()
636 spin_unlock_irqrestore(&skt->thread_lock, flags); in pccardd()
638 mutex_lock(&skt->skt_mutex); in pccardd()
640 socket_detect_change(skt); in pccardd()
644 socket_remove(skt); in pccardd()
646 socket_insert(skt); in pccardd()
648 !(skt->state & SOCKET_CARDBUS)) { in pccardd()
649 if (skt->callback) in pccardd()
650 ret = skt->callback->suspend(skt); in pccardd()
654 socket_suspend(skt); in pccardd()
659 !(skt->state & SOCKET_CARDBUS)) { in pccardd()
660 ret = socket_resume(skt); in pccardd()
661 if (!ret && skt->callback) in pccardd()
662 skt->callback->resume(skt); in pccardd()
665 !(skt->state & SOCKET_CARDBUS)) { in pccardd()
666 if (!ret && skt->callback) in pccardd()
667 skt->callback->requery(skt); in pccardd()
670 mutex_unlock(&skt->skt_mutex); in pccardd()
685 if (skt->state & SOCKET_PRESENT) { in pccardd()
686 mutex_lock(&skt->skt_mutex); in pccardd()
687 socket_remove(skt); in pccardd()
688 mutex_unlock(&skt->skt_mutex); in pccardd()
692 pccard_sysfs_remove_socket(&skt->dev); in pccardd()
693 device_unregister(&skt->dev); in pccardd()
776 int pcmcia_reset_card(struct pcmcia_socket *skt) in pcmcia_reset_card() argument
780 dev_dbg(&skt->dev, "resetting socket\n"); in pcmcia_reset_card()
782 mutex_lock(&skt->skt_mutex); in pcmcia_reset_card()
784 if (!(skt->state & SOCKET_PRESENT)) { in pcmcia_reset_card()
785 dev_dbg(&skt->dev, "can't reset, not present\n"); in pcmcia_reset_card()
789 if (skt->state & SOCKET_SUSPEND) { in pcmcia_reset_card()
790 dev_dbg(&skt->dev, "can't reset, suspended\n"); in pcmcia_reset_card()
794 if (skt->state & SOCKET_CARDBUS) { in pcmcia_reset_card()
795 dev_dbg(&skt->dev, "can't reset, is cardbus\n"); in pcmcia_reset_card()
800 if (skt->callback) in pcmcia_reset_card()
801 skt->callback->suspend(skt); in pcmcia_reset_card()
802 mutex_lock(&skt->ops_mutex); in pcmcia_reset_card()
803 ret = socket_reset(skt); in pcmcia_reset_card()
804 mutex_unlock(&skt->ops_mutex); in pcmcia_reset_card()
805 if ((ret == 0) && (skt->callback)) in pcmcia_reset_card()
806 skt->callback->resume(skt); in pcmcia_reset_card()
810 mutex_unlock(&skt->skt_mutex); in pcmcia_reset_card()
840 int (*callback) (struct pcmcia_socket *skt)) in __pcmcia_pm_op()